From d25caf11a6f7acfa9968c79ec13c94ed9eaabd90 Mon Sep 17 00:00:00 2001 From: Prajna1999 Date: Thu, 23 Jul 2026 20:05:22 +0530 Subject: [PATCH 01/11] feat: limit auth deps to bearer token and ip allowlist --- .env.example | 5 +- .env.test.example | 5 +- backend/.guardrails/hub_registry.json | 8 +- backend/README.md | 31 ++- backend/app/api/API_USAGE.md | 116 ++++++---- backend/app/api/deps.py | 115 +++------- .../app/api/docs/ban_lists/create_ban_list.md | 2 +- .../app/api/docs/ban_lists/delete_ban_list.md | 2 +- .../app/api/docs/ban_lists/get_ban_list.md | 2 +- .../app/api/docs/ban_lists/list_ban_lists.md | 2 +- .../app/api/docs/ban_lists/update_ban_list.md | 2 +- .../docs/llm_prompt_configs/create_config.md | 2 +- .../docs/llm_prompt_configs/delete_config.md | 2 +- .../api/docs/llm_prompt_configs/get_config.md | 2 +- .../docs/llm_prompt_configs/list_configs.md | 2 +- .../docs/llm_prompt_configs/update_config.md | 2 +- backend/app/api/routes/ban_lists.py | 12 +- backend/app/api/routes/guardrails.py | 38 +-- backend/app/api/routes/llm_prompt_configs.py | 12 +- backend/app/api/routes/validator_configs.py | 36 ++- backend/app/core/config.py | 15 +- backend/app/crud/request_log.py | 11 +- backend/app/schemas/guardrail_config.py | 2 - backend/app/tests/conftest.py | 45 ++-- .../test_answer_relevance_integration.py | 19 +- .../tests/test_banlists_api_integration.py | 46 ++-- backend/app/tests/test_deps_auth.py | 103 +++++++++ backend/app/tests/test_deps_multitenant.py | 172 -------------- backend/app/tests/test_guardrails_api.py | 16 +- .../tests/test_guardrails_api_integration.py | 70 +++--- ...test_llm_prompt_configs_api_integration.py | 44 ++-- .../test_validator_configs_integration.py | 47 ++-- deployment.md | 17 +- docs/DEVELOPER_GUIDE.md | 6 +- docs/architecture/ARCHITECTURE.md | 15 +- docs/auth-authz-spec.md | 95 ++++++++ docs/deep-dives/architecture.md | 14 +- docs/tech-readiness-topic-relevance-llm.md | 216 ++++++++++++++++++ docs/validators/answer-relevance.md | 4 +- docs/validators/ban-list.md | 4 +- docs/validators/topic-relevance.md | 4 +- 41 files changed, 818 insertions(+), 545 deletions(-) create mode 100644 backend/app/tests/test_deps_auth.py delete mode 100644 backend/app/tests/test_deps_multitenant.py create mode 100644 docs/auth-authz-spec.md create mode 100644 docs/tech-readiness-topic-relevance-llm.md diff --git a/.env.example b/.env.example index d507cbe2..ccaf0103 100644 --- a/.env.example +++ b/.env.example @@ -26,8 +26,9 @@ GUARDRAILS_HUB_API_KEY="" HF_TOKEN="" # SHA-256 hex digest of your bearer token (64 lowercase hex chars) AUTH_TOKEN="" -KAAPI_AUTH_URL="" -KAAPI_AUTH_TIMEOUT=5 +# Comma-separated source IPs allowed to call this service (kaapi-backend). +# Empty disables the check; required when ENVIRONMENT=production. +ALLOWED_IPS="127.0.0.1" # URL for the guardrails API — required for the multiple_validators evaluation script GUARDRAILS_API_URL="http://localhost:8001/api/v1/guardrails/" diff --git a/.env.test.example b/.env.test.example index 51692399..5efd1e76 100644 --- a/.env.test.example +++ b/.env.test.example @@ -25,5 +25,6 @@ OPENAI_API_KEY="" GUARDRAILS_HUB_API_KEY="" # SHA-256 hex digest of your bearer token (64 lowercase hex chars) AUTH_TOKEN="" -KAAPI_AUTH_URL="" -KAAPI_AUTH_TIMEOUT=5 +# Comma-separated source IPs allowed to call this service (kaapi-backend). +# Empty disables the check; required when ENVIRONMENT=production. +ALLOWED_IPS="127.0.0.1" diff --git a/backend/.guardrails/hub_registry.json b/backend/.guardrails/hub_registry.json index cd71baa5..e7b757b4 100644 --- a/backend/.guardrails/hub_registry.json +++ b/backend/.guardrails/hub_registry.json @@ -6,7 +6,7 @@ "exports": [ "BanList" ], - "installed_at": "2026-05-12T05:28:55.036165+00:00", + "installed_at": "2026-07-23T14:06:37.542360+00:00", "package_name": "guardrails-grhub-ban-list" }, "guardrails/llm_critic": { @@ -14,7 +14,7 @@ "exports": [ "LLMCritic" ], - "installed_at": "2026-05-12T05:29:05.596003+00:00", + "installed_at": "2026-07-23T14:06:45.369592+00:00", "package_name": "guardrails-grhub-llm-critic" }, "guardrails/llamaguard_7b": { @@ -22,7 +22,7 @@ "exports": [ "LlamaGuard7B" ], - "installed_at": "2026-05-12T05:29:16.995441+00:00", + "installed_at": "2026-07-23T14:06:51.618169+00:00", "package_name": "guardrails-grhub-llamaguard-7b" }, "guardrails/profanity_free": { @@ -30,7 +30,7 @@ "exports": [ "ProfanityFree" ], - "installed_at": "2026-05-12T05:29:28.079410+00:00", + "installed_at": "2026-07-23T14:07:02.770910+00:00", "package_name": "guardrails-grhub-profanity-free" }, "guardrails/nsfw_text": { diff --git a/backend/README.md b/backend/README.md index ce07174a..42151bfa 100644 --- a/backend/README.md +++ b/backend/README.md @@ -191,19 +191,32 @@ echo -n "your-plain-text-token" | shasum -a 256 Set the resulting digest as `AUTH_TOKEN` in your `.env` / `.env.test`. -## Multi-tenant API Key Configuration +## Caller Authentication -Ban List and LLM Prompt Config APIs use `X-API-KEY` auth instead of bearer token auth. +kaapi-guardrails is an internal service. Its only caller is kaapi-backend, which authenticates the +end user and resolves the tenant before calling. -Required environment variables: -- `KAAPI_AUTH_URL`: Base URL of the Kaapi auth service used to verify API keys. -- `KAAPI_AUTH_TIMEOUT`: Timeout in seconds for auth verification calls. +Every request (except the health check) must carry: -At runtime, the backend calls: -- `GET {KAAPI_AUTH_URL}/apikeys/verify` -- Header: `X-API-KEY: ` +- `Authorization: Bearer ` +- `X-ORGANIZATION-ID: ` and `X-PROJECT-ID: ` — the tenant, resolved by kaapi-backend +- and originate from an IP listed in `ALLOWED_IPS` -If verification succeeds, tenant's scope (`organization_id`, `project_id`) is resolved from the auth response and applied to tenant-scoped CRUD operations (for example Ban Lists and LLM Prompt Configs). +`ALLOWED_IPS` is a comma-separated list of source IPs allowed to reach this service: + +```bash +ALLOWED_IPS="10.0.3.14" +``` + +Leave it empty to disable the check for local development. It is required when +`ENVIRONMENT=production` — the service will not start without it. + +Rejections: +- Source IP not whitelisted → `403` (checked before the token) +- Missing or invalid token → `401` +- Missing or non-integer tenant headers → `422` + +Tenant scope is never read from the query string or request body. ## Guardrails AI Setup diff --git a/backend/app/api/API_USAGE.md b/backend/app/api/API_USAGE.md index af2b82a4..2c6f263a 100644 --- a/backend/app/api/API_USAGE.md +++ b/backend/app/api/API_USAGE.md @@ -18,14 +18,16 @@ Example local base URL: ## Authentication -This API currently uses two auth modes: +This service is internal. Its only caller is kaapi-backend, which authenticates the end user and +resolves the tenant before calling. -1. Bearer token auth (`Authorization: Bearer `) - - Used by validator config and guardrails endpoints. - - The server validates your plaintext bearer token against a SHA-256 digest stored in `AUTH_TOKEN`. -2. multi-tenant API key auth (`X-API-KEY: `) - - Used by ban list and LLM prompt config endpoints. - - The API key is verified against `KAAPI_AUTH_URL` and resolves tenant's scope (`organization_id`, `project_id`). +Every request must carry: + +- `Authorization: Bearer ` — validated against the SHA-256 digest in `AUTH_TOKEN` +- `X-ORGANIZATION-ID: ` and `X-PROJECT-ID: ` — the tenant, resolved by kaapi-backend +- and must arrive from an IP listed in `ALLOWED_IPS` + +Tenant scope is never read from the query string or request body. Notes: - `GET /utils/health-check/` is public. @@ -74,13 +76,15 @@ Base path: ## 2.1 Create validator config Endpoint: -- `POST /api/v1/guardrails/validators/configs/?organization_id=1&project_id=101` +- `POST /api/v1/guardrails/validators/configs/` Example (PII input validator): ```bash -curl -X POST "http://localhost:8001/api/v1/guardrails/validators/configs/?organization_id=1&project_id=101" \ +curl -X POST "http://localhost:8001/api/v1/guardrails/validators/configs/" \ -H "Authorization: Bearer " \ + -H "X-ORGANIZATION-ID: 1" \ + -H "X-PROJECT-ID: 101" \ -H "Content-Type: application/json" \ -d '{ "type": "pii_remover", @@ -95,7 +99,7 @@ curl -X POST "http://localhost:8001/api/v1/guardrails/validators/configs/?organi ## 2.2 List validator configs Endpoint: -- `GET /api/v1/guardrails/validators/configs/?organization_id=1&project_id=101` +- `GET /api/v1/guardrails/validators/configs/` Optional filters: - `ids=&ids=` @@ -106,32 +110,38 @@ Optional filters: Example: ```bash -curl -X GET "http://localhost:8001/api/v1/guardrails/validators/configs/?organization_id=1&project_id=101&stage=input" \ - -H "Authorization: Bearer " +curl -X GET "http://localhost:8001/api/v1/guardrails/validators/configs/?stage=input" \ + -H "Authorization: Bearer " \ + -H "X-ORGANIZATION-ID: 1" \ + -H "X-PROJECT-ID: 101" ``` ## 2.3 Get validator config by id Endpoint: -- `GET /api/v1/guardrails/validators/configs/{id}?organization_id=1&project_id=101` +- `GET /api/v1/guardrails/validators/configs/{id}` Example: ```bash -curl -X GET "http://localhost:8001/api/v1/guardrails/validators/configs/?organization_id=1&project_id=101" \ - -H "Authorization: Bearer " +curl -X GET "http://localhost:8001/api/v1/guardrails/validators/configs/" \ + -H "Authorization: Bearer " \ + -H "X-ORGANIZATION-ID: 1" \ + -H "X-PROJECT-ID: 101" ``` ## 2.4 Update validator config Endpoint: -- `PATCH /api/v1/guardrails/validators/configs/{id}?organization_id=1&project_id=101` +- `PATCH /api/v1/guardrails/validators/configs/{id}` Example: ```bash -curl -X PATCH "http://localhost:8001/api/v1/guardrails/validators/configs/?organization_id=1&project_id=101" \ +curl -X PATCH "http://localhost:8001/api/v1/guardrails/validators/configs/" \ -H "Authorization: Bearer " \ + -H "X-ORGANIZATION-ID: 1" \ + -H "X-PROJECT-ID: 101" \ -H "Content-Type: application/json" \ -d '{ "is_enabled": false, @@ -142,13 +152,15 @@ curl -X PATCH "http://localhost:8001/api/v1/guardrails/validators/configs/?organization_id=1&project_id=101" \ - -H "Authorization: Bearer " +curl -X DELETE "http://localhost:8001/api/v1/guardrails/validators/configs/" \ + -H "Authorization: Bearer " \ + -H "X-ORGANIZATION-ID: 1" \ + -H "X-PROJECT-ID: 101" ``` ## 3) Runtime Validator Discovery @@ -163,7 +175,9 @@ Example: ```bash curl -X GET "http://localhost:8001/api/v1/guardrails/" \ - -H "Authorization: Bearer " + -H "Authorization: Bearer " \ + -H "X-ORGANIZATION-ID: 1" \ + -H "X-PROJECT-ID: 101" ``` ## 4) Guardrail Execution @@ -192,11 +206,11 @@ Example: ```bash curl -X POST "http://localhost:8001/api/v1/guardrails/?suppress_pass_logs=true" \ -H "Authorization: Bearer " \ + -H "X-ORGANIZATION-ID: 1" \ + -H "X-PROJECT-ID: 101" \ -H "Content-Type: application/json" \ -d '{ "request_id": "2a6f6d5c-5b9f-4f6b-92e4-cf7d67f87932", - "organization_id": 1, - "project_id": 101, "input": "Amit Gupta phone number is 919611188278", "validators": [ { @@ -264,7 +278,7 @@ Possible failure response: ## 5) Ban List APIs (multi-tenant) -These endpoints manage tenant-scoped ban lists and use `X-API-KEY` auth. +These endpoints manage tenant-scoped ban lists. The tenant comes from the `X-ORGANIZATION-ID` / `X-PROJECT-ID` headers. Base path: - `/api/v1/guardrails/ban_lists` @@ -278,7 +292,9 @@ Example: ```bash curl -X POST "http://localhost:8001/api/v1/guardrails/ban_lists/" \ - -H "X-API-KEY: " \ + -H "Authorization: Bearer " \ + -H "X-ORGANIZATION-ID: 1" \ + -H "X-PROJECT-ID: 101" \ -H "Content-Type: application/json" \ -d '{ "name": "Safety Banned Terms", @@ -298,7 +314,9 @@ Example: ```bash curl -X GET "http://localhost:8001/api/v1/guardrails/ban_lists/?offset=0&limit=20" \ - -H "X-API-KEY: " + -H "Authorization: Bearer " \ + -H "X-ORGANIZATION-ID: 1" \ + -H "X-PROJECT-ID: 101" ``` ## 5.3 Get ban list by id @@ -310,7 +328,9 @@ Example: ```bash curl -X GET "http://localhost:8001/api/v1/guardrails/ban_lists/" \ - -H "X-API-KEY: " + -H "Authorization: Bearer " \ + -H "X-ORGANIZATION-ID: 1" \ + -H "X-PROJECT-ID: 101" ``` ## 5.4 Update ban list @@ -322,7 +342,9 @@ Example: ```bash curl -X PATCH "http://localhost:8001/api/v1/guardrails/ban_lists/" \ - -H "X-API-KEY: " \ + -H "Authorization: Bearer " \ + -H "X-ORGANIZATION-ID: 1" \ + -H "X-PROJECT-ID: 101" \ -H "Content-Type: application/json" \ -d '{ "description": "Updated description", @@ -339,12 +361,14 @@ Example: ```bash curl -X DELETE "http://localhost:8001/api/v1/guardrails/ban_lists/" \ - -H "X-API-KEY: " + -H "Authorization: Bearer " \ + -H "X-ORGANIZATION-ID: 1" \ + -H "X-PROJECT-ID: 101" ``` ## 6) LLM Prompt Config APIs (multi-tenant) -These endpoints manage tenant-scoped LLM prompt configs for the `topic_relevance` and `answer_relevance_custom_llm` validators. They use `X-API-KEY` auth. +These endpoints manage tenant-scoped LLM prompt configs for the `topic_relevance` and `answer_relevance_custom_llm` validators. The tenant comes from the `X-ORGANIZATION-ID` / `X-PROJECT-ID` headers. Base path: - `/api/v1/guardrails/llm_prompt_configs` @@ -362,7 +386,9 @@ Example (topic relevance): ```bash curl -X POST "http://localhost:8001/api/v1/guardrails/llm_prompt_configs/" \ - -H "X-API-KEY: " \ + -H "Authorization: Bearer " \ + -H "X-ORGANIZATION-ID: 1" \ + -H "X-PROJECT-ID: 101" \ -H "Content-Type: application/json" \ -d '{ "validator_name": "topic_relevance", @@ -377,7 +403,9 @@ Example (answer relevance): ```bash curl -X POST "http://localhost:8001/api/v1/guardrails/llm_prompt_configs/" \ - -H "X-API-KEY: " \ + -H "Authorization: Bearer " \ + -H "X-ORGANIZATION-ID: 1" \ + -H "X-PROJECT-ID: 101" \ -H "Content-Type: application/json" \ -d '{ "validator_name": "answer_relevance_custom_llm", @@ -399,7 +427,9 @@ Example: ```bash curl -X GET "http://localhost:8001/api/v1/guardrails/llm_prompt_configs/?validator_name=topic_relevance&offset=0&limit=20" \ - -H "X-API-KEY: " + -H "Authorization: Bearer " \ + -H "X-ORGANIZATION-ID: 1" \ + -H "X-PROJECT-ID: 101" ``` ## 6.3 Get LLM prompt config by id @@ -411,7 +441,9 @@ Example: ```bash curl -X GET "http://localhost:8001/api/v1/guardrails/llm_prompt_configs/" \ - -H "X-API-KEY: " + -H "Authorization: Bearer " \ + -H "X-ORGANIZATION-ID: 1" \ + -H "X-PROJECT-ID: 101" ``` ## 6.4 Update LLM prompt config @@ -423,7 +455,9 @@ Example: ```bash curl -X PATCH "http://localhost:8001/api/v1/guardrails/llm_prompt_configs/" \ - -H "X-API-KEY: " \ + -H "Authorization: Bearer " \ + -H "X-ORGANIZATION-ID: 1" \ + -H "X-PROJECT-ID: 101" \ -H "Content-Type: application/json" \ -d '{ "llm_prompt": "Pregnancy care: Updated scope definition" @@ -439,7 +473,9 @@ Example: ```bash curl -X DELETE "http://localhost:8001/api/v1/guardrails/llm_prompt_configs/" \ - -H "X-API-KEY: " + -H "Authorization: Bearer " \ + -H "X-ORGANIZATION-ID: 1" \ + -H "X-PROJECT-ID: 101" ``` ## 8) End-to-End Usage Pattern @@ -460,10 +496,10 @@ Recommended request flow: - Add `Authorization: Bearer `. - `401 Invalid authorization token` - Verify plaintext token matches server-side hash. -- `401 Missing X-API-KEY header` - - Add `X-API-KEY: ` for ban list and LLM prompt config endpoints. -- `401 Invalid API key` - - Verify the API key is valid in the upstream Kaapi auth service. +- `403 Forbidden` + - Source IP is not in `ALLOWED_IPS`. Checked before the token. +- `422` on tenant headers + - Add `X-ORGANIZATION-ID` and `X-PROJECT-ID`; both must be integers. - `Invalid request_id` - Ensure `request_id` is a valid UUID string. - `Validator already exists for this type and stage` diff --git a/backend/app/api/deps.py b/backend/app/api/deps.py index c6e05f39..a50c74ef 100644 --- a/backend/app/api/deps.py +++ b/backend/app/api/deps.py @@ -4,9 +4,8 @@ import hashlib import secrets -import httpx -from fastapi import Cookie, Depends, Header, HTTPException, Security, status +from fastapi import Depends, Header, HTTPException, Request, Security, status from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials from sqlmodel import Session @@ -22,7 +21,6 @@ def get_db() -> Generator[Session, None, None]: SessionDep = Annotated[Session, Depends(get_db)] -# Static bearer token auth for internal routes. security = HTTPBearer(auto_error=False) @@ -37,100 +35,47 @@ def _unauthorized(detail: str) -> HTTPException: ) -def verify_bearer_token( - credentials: Annotated[ - HTTPAuthorizationCredentials | None, - Security(security), - ], -) -> bool: - if credentials is None: - raise _unauthorized("Missing Authorization header") - - if not secrets.compare_digest( - _hash_token(credentials.credentials), - settings.AUTH_TOKEN, - ): - raise _unauthorized("Invalid authorization token") - - return True - - -AuthDep = Annotated[bool, Depends(verify_bearer_token)] - - -# Multitenant auth context resolved from X-API-KEY. @dataclass class TenantContext: organization_id: int project_id: int -def _fetch_tenant_from_backend(headers: dict) -> TenantContext: - if not settings.KAAPI_AUTH_URL: - raise HTTPException( - status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, - detail="KAAPI_AUTH_URL is not configured", - ) - - try: - response = httpx.get( - f"{settings.KAAPI_AUTH_URL}/apikeys/verify", - headers=headers, - timeout=settings.KAAPI_AUTH_TIMEOUT, - ) - except httpx.RequestError: - raise HTTPException( - status_code=status.HTTP_503_SERVICE_UNAVAILABLE, - detail="Auth service unavailable", - ) - - if response.status_code != 200: - raise _unauthorized("Invalid credentials") - - data = response.json() - if not isinstance(data, dict) or data.get("success") is not True: - raise _unauthorized("Invalid credentials") - - record = data.get("data") - if not isinstance(record, dict): - raise _unauthorized("Invalid credentials") - - organization_id = record.get("organization_id") - project_id = record.get("project_id") - if not isinstance(organization_id, int) or not isinstance(project_id, int): - raise _unauthorized("Invalid credentials") - - return TenantContext( - organization_id=organization_id, - project_id=project_id, - ) - - -def validate_multitenant_key( - x_api_key: Annotated[str | None, Header(alias="X-API-KEY")] = None, +def verify_caller( + request: Request, credentials: Annotated[ HTTPAuthorizationCredentials | None, Security(security), - ] = None, - access_token: Annotated[str | None, Cookie(alias="access_token")] = None, + ], + organization_id: Annotated[int, Header(alias="X-ORGANIZATION-ID")], + project_id: Annotated[int, Header(alias="X-PROJECT-ID")], ) -> TenantContext: - if x_api_key and x_api_key.strip(): - return _fetch_tenant_from_backend({"X-API-KEY": x_api_key.strip()}) + """ + Authenticates the single trusted caller (kaapi-backend) by static bearer token + and source IP, and returns the tenant it resolved from the end user's API key. + + Tenant scope is never read from the query string or request body, so a route + cannot be tenant-unscoped: the dependency that authenticates it also supplies + the tenant. + """ + if settings.ALLOWED_IPS: + client_ip = request.client.host if request.client else None + if client_ip not in settings.ALLOWED_IPS: + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail="Forbidden", + ) - if credentials is not None and credentials.credentials.strip(): - return _fetch_tenant_from_backend( - {"Authorization": f"Bearer {credentials.credentials}"} - ) + if credentials is None: + raise _unauthorized("Missing Authorization header") - if access_token: - return _fetch_tenant_from_backend({"Authorization": f"Bearer {access_token}"}) + if not secrets.compare_digest( + _hash_token(credentials.credentials), + settings.AUTH_TOKEN, + ): + raise _unauthorized("Invalid authorization token") - raise _unauthorized( - "Missing credentials: provide X-API-KEY header, Bearer token, or access_token cookie" - ) + return TenantContext(organization_id=organization_id, project_id=project_id) -MultitenantAuthDep = Annotated[ - TenantContext, - Depends(validate_multitenant_key), -] +AuthDep = Annotated[TenantContext, Depends(verify_caller)] diff --git a/backend/app/api/docs/ban_lists/create_ban_list.md b/backend/app/api/docs/ban_lists/create_ban_list.md index 64febf8d..75b19383 100644 --- a/backend/app/api/docs/ban_lists/create_ban_list.md +++ b/backend/app/api/docs/ban_lists/create_ban_list.md @@ -1,4 +1,4 @@ -Creates a ban list for the tenant resolved from `X-API-KEY`. +Creates a ban list for the tenant resolved from the `X-ORGANIZATION-ID` / `X-PROJECT-ID` headers. Behavior notes: - Stores a domain-scoped list of banned words used by the `ban_list` validator. diff --git a/backend/app/api/docs/ban_lists/delete_ban_list.md b/backend/app/api/docs/ban_lists/delete_ban_list.md index 889ccca5..21613be4 100644 --- a/backend/app/api/docs/ban_lists/delete_ban_list.md +++ b/backend/app/api/docs/ban_lists/delete_ban_list.md @@ -1,4 +1,4 @@ -Deletes a ban list by id for the tenant resolved from `X-API-KEY`. +Deletes a ban list by id for the tenant resolved from the `X-ORGANIZATION-ID` / `X-PROJECT-ID` headers. Behavior notes: - Deletion is restricted to owner scope. diff --git a/backend/app/api/docs/ban_lists/get_ban_list.md b/backend/app/api/docs/ban_lists/get_ban_list.md index a40fa798..91f8a03d 100644 --- a/backend/app/api/docs/ban_lists/get_ban_list.md +++ b/backend/app/api/docs/ban_lists/get_ban_list.md @@ -1,4 +1,4 @@ -Fetches a single ban list by id for the tenant resolved from `X-API-KEY`. +Fetches a single ban list by id for the tenant resolved from the `X-ORGANIZATION-ID` / `X-PROJECT-ID` headers. Behavior notes: - Tenant's scope is enforced from the API key context. diff --git a/backend/app/api/docs/ban_lists/list_ban_lists.md b/backend/app/api/docs/ban_lists/list_ban_lists.md index 59e446a7..5f247668 100644 --- a/backend/app/api/docs/ban_lists/list_ban_lists.md +++ b/backend/app/api/docs/ban_lists/list_ban_lists.md @@ -1,4 +1,4 @@ -Lists ban lists for the tenant resolved from `X-API-KEY`. +Lists ban lists for the tenant resolved from the `X-ORGANIZATION-ID` / `X-PROJECT-ID` headers. Behavior notes: - Supports filtering by `domain`. diff --git a/backend/app/api/docs/ban_lists/update_ban_list.md b/backend/app/api/docs/ban_lists/update_ban_list.md index 90c87863..d27e9d65 100644 --- a/backend/app/api/docs/ban_lists/update_ban_list.md +++ b/backend/app/api/docs/ban_lists/update_ban_list.md @@ -1,4 +1,4 @@ -Partially updates a ban list by id for the tenant resolved from `X-API-KEY`. +Partially updates a ban list by id for the tenant resolved from the `X-ORGANIZATION-ID` / `X-PROJECT-ID` headers. Behavior notes: - Supports patch-style updates; omitted fields remain unchanged. diff --git a/backend/app/api/docs/llm_prompt_configs/create_config.md b/backend/app/api/docs/llm_prompt_configs/create_config.md index b74b1fb3..7fc63d2e 100644 --- a/backend/app/api/docs/llm_prompt_configs/create_config.md +++ b/backend/app/api/docs/llm_prompt_configs/create_config.md @@ -1,4 +1,4 @@ -Creates an LLM prompt config for the tenant resolved from `X-API-KEY`. +Creates an LLM prompt config for the tenant resolved from the `X-ORGANIZATION-ID` / `X-PROJECT-ID` headers. Behavior notes: - Stores a named prompt used by an LLM-backed validator (`topic_relevance` or `answer_relevance_custom_llm`). diff --git a/backend/app/api/docs/llm_prompt_configs/delete_config.md b/backend/app/api/docs/llm_prompt_configs/delete_config.md index 227fb94c..18d42979 100644 --- a/backend/app/api/docs/llm_prompt_configs/delete_config.md +++ b/backend/app/api/docs/llm_prompt_configs/delete_config.md @@ -1,4 +1,4 @@ -Deletes an LLM prompt config by id for the tenant resolved from `X-API-KEY`. +Deletes an LLM prompt config by id for the tenant resolved from the `X-ORGANIZATION-ID` / `X-PROJECT-ID` headers. Behavior notes: - Tenant scope is enforced from the API key context. diff --git a/backend/app/api/docs/llm_prompt_configs/get_config.md b/backend/app/api/docs/llm_prompt_configs/get_config.md index 44ad12d5..9c9d4f37 100644 --- a/backend/app/api/docs/llm_prompt_configs/get_config.md +++ b/backend/app/api/docs/llm_prompt_configs/get_config.md @@ -1,4 +1,4 @@ -Fetches a single LLM prompt config by id for the tenant resolved from `X-API-KEY`. +Fetches a single LLM prompt config by id for the tenant resolved from the `X-ORGANIZATION-ID` / `X-PROJECT-ID` headers. Behavior notes: - Tenant scope is enforced from the API key context. diff --git a/backend/app/api/docs/llm_prompt_configs/list_configs.md b/backend/app/api/docs/llm_prompt_configs/list_configs.md index 873fc6d2..b8f63880 100644 --- a/backend/app/api/docs/llm_prompt_configs/list_configs.md +++ b/backend/app/api/docs/llm_prompt_configs/list_configs.md @@ -1,4 +1,4 @@ -Lists LLM prompt configs for the tenant resolved from `X-API-KEY`. +Lists LLM prompt configs for the tenant resolved from the `X-ORGANIZATION-ID` / `X-PROJECT-ID` headers. Behavior notes: - Returns configs scoped to the tenant's `organization_id` and `project_id`. diff --git a/backend/app/api/docs/llm_prompt_configs/update_config.md b/backend/app/api/docs/llm_prompt_configs/update_config.md index f13d11cb..75aa27bd 100644 --- a/backend/app/api/docs/llm_prompt_configs/update_config.md +++ b/backend/app/api/docs/llm_prompt_configs/update_config.md @@ -1,4 +1,4 @@ -Partially updates an LLM prompt config by id for the tenant resolved from `X-API-KEY`. +Partially updates an LLM prompt config by id for the tenant resolved from the `X-ORGANIZATION-ID` / `X-PROJECT-ID` headers. Behavior notes: - Supports patch-style updates; omitted fields remain unchanged. diff --git a/backend/app/api/routes/ban_lists.py b/backend/app/api/routes/ban_lists.py index 5776b3df..5a5744dd 100644 --- a/backend/app/api/routes/ban_lists.py +++ b/backend/app/api/routes/ban_lists.py @@ -3,7 +3,7 @@ from fastapi import APIRouter, Query -from app.api.deps import MultitenantAuthDep, SessionDep +from app.api.deps import AuthDep, SessionDep from app.crud.ban_list import ban_list_crud from app.schemas.ban_list import BanListCreate, BanListUpdate, BanListResponse from app.utils import APIResponse, load_description @@ -19,7 +19,7 @@ def create_ban_list( payload: BanListCreate, session: SessionDep, - auth: MultitenantAuthDep, + auth: AuthDep, ): ban_list = ban_list_crud.create( session, payload, auth.organization_id, auth.project_id @@ -34,7 +34,7 @@ def create_ban_list( ) def list_ban_lists( session: SessionDep, - auth: MultitenantAuthDep, + auth: AuthDep, domain: Optional[str] = None, offset: Annotated[int, Query(ge=0)] = 0, limit: Annotated[int | None, Query(ge=1, le=100)] = None, @@ -58,7 +58,7 @@ def list_ban_lists( def get_ban_list( id: UUID, session: SessionDep, - auth: MultitenantAuthDep, + auth: AuthDep, ): obj = ban_list_crud.get(session, id, auth.organization_id, auth.project_id) return APIResponse.success_response(data=obj) @@ -73,7 +73,7 @@ def update_ban_list( id: UUID, payload: BanListUpdate, session: SessionDep, - auth: MultitenantAuthDep, + auth: AuthDep, ): ban_list = ban_list_crud.update( session, @@ -93,7 +93,7 @@ def update_ban_list( def delete_ban_list( id: UUID, session: SessionDep, - auth: MultitenantAuthDep, + auth: AuthDep, ): obj = ban_list_crud.get( session, diff --git a/backend/app/api/routes/guardrails.py b/backend/app/api/routes/guardrails.py index 32185b8f..5779c93f 100644 --- a/backend/app/api/routes/guardrails.py +++ b/backend/app/api/routes/guardrails.py @@ -6,7 +6,7 @@ from guardrails.validators import FailResult, PassResult from sqlmodel import Session -from app.api.deps import AuthDep, SessionDep +from app.api.deps import AuthDep, SessionDep, TenantContext from app.core.constants import ( BAN_LIST, LLM_CRITIC_ERROR_MESSAGE, @@ -49,7 +49,7 @@ def run_guardrails( payload: GuardrailRequest, session: SessionDep, - _: AuthDep, + auth: AuthDep, suppress_pass_logs: bool = True, ): """ @@ -60,11 +60,13 @@ def run_guardrails( validator_log_crud = ValidatorLogCrud(session=session) try: - request_log = request_log_crud.create(payload) + request_log = request_log_crud.create( + payload, auth.organization_id, auth.project_id + ) except ValueError: return APIResponse.failure_response(error="Invalid request_id") - _resolve_validator_configs(payload, session) + _resolve_validator_configs(payload, session, auth) has_output_validator = any( isinstance(v, AnswerRelevanceCustomLLMSafetyValidatorConfig) for v in payload.validators @@ -76,12 +78,13 @@ def run_guardrails( request_log_crud, request_log.id, validator_log_crud, + auth, suppress_pass_logs, ) @router.get("/", description=load_description("guardrails/list_validators.md")) -def list_validators(_: AuthDep): +def list_validators(auth: AuthDep): """ Lists all validators and their parameters directly. """ @@ -110,7 +113,9 @@ def list_validators(_: AuthDep): return {"validators": validators} -def _resolve_validator_configs(payload: GuardrailRequest, session: Session) -> None: +def _resolve_validator_configs( + payload: GuardrailRequest, session: Session, auth: TenantContext +) -> None: """ Resolves config-backed references for all validators in-place before guard execution: - BanList: fetches banned_words from the stored BanList when not provided inline. @@ -126,8 +131,8 @@ def _resolve_validator_configs(payload: GuardrailRequest, session: Session) -> N ban_list = ban_list_crud.get( session, id=validator.ban_list_id, - organization_id=payload.organization_id, - project_id=payload.project_id, + organization_id=auth.organization_id, + project_id=auth.project_id, ) validator.banned_words = ban_list.banned_words @@ -142,8 +147,8 @@ def _resolve_validator_configs(payload: GuardrailRequest, session: Session) -> N config = llm_prompt_config_crud.get( session=session, id=validator.topic_relevance_config_id, - organization_id=payload.organization_id, - project_id=payload.project_id, + organization_id=auth.organization_id, + project_id=auth.project_id, ) if config.validator_name != LLMValidatorName.TopicRelevance: raise HTTPException( @@ -163,8 +168,8 @@ def _resolve_validator_configs(payload: GuardrailRequest, session: Session) -> N prompt_config = llm_prompt_config_crud.get( session=session, id=validator.custom_prompt_id, - organization_id=payload.organization_id, - project_id=payload.project_id, + organization_id=auth.organization_id, + project_id=auth.project_id, ) if ( prompt_config.validator_name @@ -184,6 +189,7 @@ def _validate_with_guard( request_log_crud: RequestLogCrud, request_log_id: UUID, validator_log_crud: ValidatorLogCrud, + auth: TenantContext, suppress_pass_logs: bool = False, ) -> APIResponse: """ @@ -226,7 +232,7 @@ def _finalize( if guard is not None: add_validator_logs( - guard, request_log_id, validator_log_crud, payload, suppress_pass_logs + guard, request_log_id, validator_log_crud, auth, suppress_pass_logs ) rephrase_needed = validated_output is not None and ( @@ -320,7 +326,7 @@ def add_validator_logs( guard: Guard, request_log_id: UUID, validator_log_crud: ValidatorLogCrud, - payload: GuardrailRequest, + auth: TenantContext, suppress_pass_logs: bool = False, ) -> None: """ @@ -355,8 +361,8 @@ def add_validator_logs( validator_log = ValidatorLog( request_id=request_log_id, - organization_id=payload.organization_id, - project_id=payload.project_id, + organization_id=auth.organization_id, + project_id=auth.project_id, name=log.validator_name, input=str(log.value_before_validation), output=log.value_after_validation, diff --git a/backend/app/api/routes/llm_prompt_configs.py b/backend/app/api/routes/llm_prompt_configs.py index 58c276b2..48ce55e8 100644 --- a/backend/app/api/routes/llm_prompt_configs.py +++ b/backend/app/api/routes/llm_prompt_configs.py @@ -3,7 +3,7 @@ from fastapi import APIRouter, Query -from app.api.deps import MultitenantAuthDep, SessionDep +from app.api.deps import AuthDep, SessionDep from app.core.enum import LLMValidatorName from app.crud.llm_prompt_config import llm_prompt_config_crud from app.schemas.llm_prompt_config import ( @@ -27,7 +27,7 @@ def create_llm_prompt_config( payload: LLMPromptConfigCreate, session: SessionDep, - auth: MultitenantAuthDep, + auth: AuthDep, ) -> APIResponse[LLMPromptConfigResponse]: obj = llm_prompt_config_crud.create( session, @@ -45,7 +45,7 @@ def create_llm_prompt_config( ) def list_llm_prompt_configs( session: SessionDep, - auth: MultitenantAuthDep, + auth: AuthDep, validator_name: Annotated[LLMValidatorName | None, Query()] = None, offset: Annotated[int, Query(ge=0)] = 0, limit: Annotated[int | None, Query(ge=1, le=100)] = None, @@ -69,7 +69,7 @@ def list_llm_prompt_configs( def get_llm_prompt_config( id: UUID, session: SessionDep, - auth: MultitenantAuthDep, + auth: AuthDep, ) -> APIResponse[LLMPromptConfigResponse]: obj = llm_prompt_config_crud.get( session, @@ -89,7 +89,7 @@ def update_llm_prompt_config( id: UUID, payload: LLMPromptConfigUpdate, session: SessionDep, - auth: MultitenantAuthDep, + auth: AuthDep, ) -> APIResponse[LLMPromptConfigResponse]: obj = llm_prompt_config_crud.update( session, @@ -109,7 +109,7 @@ def update_llm_prompt_config( def delete_llm_prompt_config( id: UUID, session: SessionDep, - auth: MultitenantAuthDep, + auth: AuthDep, ) -> APIResponse[dict]: obj = llm_prompt_config_crud.get( session, diff --git a/backend/app/api/routes/validator_configs.py b/backend/app/api/routes/validator_configs.py index 9db72155..6994c7b0 100644 --- a/backend/app/api/routes/validator_configs.py +++ b/backend/app/api/routes/validator_configs.py @@ -27,12 +27,10 @@ def create_validator( payload: ValidatorCreate, session: SessionDep, - organization_id: int, - project_id: int, - _: AuthDep, + auth: AuthDep, ): response_model = validator_config_crud.create( - session, organization_id, project_id, payload + session, auth.organization_id, auth.project_id, payload ) return APIResponse.success_response(data=response_model) @@ -43,16 +41,14 @@ def create_validator( response_model=APIResponse[list[ValidatorResponse]], ) def list_validators( - organization_id: int, - project_id: int, session: SessionDep, - _: AuthDep, + auth: AuthDep, ids: Optional[list[UUID]] = Query(None), stage: Optional[Stage] = None, type: Optional[ValidatorType] = None, ): response_model = validator_config_crud.list( - session, organization_id, project_id, ids, stage, type + session, auth.organization_id, auth.project_id, ids, stage, type ) return APIResponse.success_response(data=response_model) @@ -64,12 +60,12 @@ def list_validators( ) def get_validator( id: UUID, - organization_id: int, - project_id: int, session: SessionDep, - _: AuthDep, + auth: AuthDep, ): - obj = validator_config_crud.get(session, id, organization_id, project_id) + obj = validator_config_crud.get( + session, id, auth.organization_id, auth.project_id + ) return APIResponse.success_response(data=validator_config_crud.flatten(obj)) @@ -80,13 +76,13 @@ def get_validator( ) def update_validator( id: UUID, - organization_id: int, - project_id: int, payload: ValidatorUpdate, session: SessionDep, - _: AuthDep, + auth: AuthDep, ): - obj = validator_config_crud.get(session, id, organization_id, project_id) + obj = validator_config_crud.get( + session, id, auth.organization_id, auth.project_id + ) response_model = validator_config_crud.update( session, obj, payload.model_dump(exclude_unset=True) ) @@ -100,12 +96,12 @@ def update_validator( ) def delete_validator( id: UUID, - organization_id: int, - project_id: int, session: SessionDep, - _: AuthDep, + auth: AuthDep, ): - obj = validator_config_crud.get(session, id, organization_id, project_id) + obj = validator_config_crud.get( + session, id, auth.organization_id, auth.project_id + ) validator_config_crud.delete(session, obj) return APIResponse.success_response( data={"message": "Validator deleted successfully"} diff --git a/backend/app/core/config.py b/backend/app/core/config.py index b52bb803..790dcc45 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -1,10 +1,11 @@ import os from pathlib import Path import re -from typing import Any, ClassVar, Literal +from typing import Annotated, Any, ClassVar, Literal import warnings from pydantic import ( + BeforeValidator, HttpUrl, PostgresDsn, computed_field, @@ -14,7 +15,7 @@ from typing_extensions import Self -def parse_cors(v: Any) -> list[str] | str: +def parse_csv_list(v: Any) -> list[str] | str: if isinstance(v, str) and not v.startswith("["): return [i.strip() for i in v.split(",") if i.strip()] elif isinstance(v, list | str): @@ -41,8 +42,10 @@ class Settings(BaseSettings): POSTGRES_PASSWORD: str = "" POSTGRES_DB: str = "" GUARDRAILS_HUB_API_KEY: str | None = None - KAAPI_AUTH_URL: str = "" - KAAPI_AUTH_TIMEOUT: int + # Source IPs allowed to reach this service (kaapi-backend). Empty = check disabled. + # `| str` keeps pydantic-settings from JSON-parsing the dotenv value before + # parse_csv_list gets to split it. + ALLOWED_IPS: Annotated[list[str] | str, BeforeValidator(parse_csv_list)] = [] CORE_DIR: ClassVar[Path] = Path(__file__).resolve().parent OPENAI_API_KEY: str | None = None ANSWER_RELEVANCE_LLM_MODEL: str = "gpt-4o-mini" @@ -92,6 +95,10 @@ def _validate_auth_token_hash(self) -> None: def _enforce_non_default_secrets(self) -> Self: self._check_default_secret("POSTGRES_PASSWORD", self.POSTGRES_PASSWORD) self._validate_auth_token_hash() + if self.ENVIRONMENT == "production" and not self.ALLOWED_IPS: + raise ValueError( + "ALLOWED_IPS must list the kaapi-backend source IP(s) in production." + ) return self diff --git a/backend/app/crud/request_log.py b/backend/app/crud/request_log.py index ce21da9a..17731c6b 100644 --- a/backend/app/crud/request_log.py +++ b/backend/app/crud/request_log.py @@ -11,14 +11,19 @@ class RequestLogCrud: def __init__(self, session: Session): self.session = session - def create(self, payload: GuardrailRequest) -> RequestLog: + def create( + self, + payload: GuardrailRequest, + organization_id: int, + project_id: int, + ) -> RequestLog: request_id = UUID(payload.request_id) create_request_log = RequestLog( request_id=request_id, request_text=payload.input, output_text=payload.output, - organization_id=payload.organization_id, - project_id=payload.project_id, + organization_id=organization_id, + project_id=project_id, ) self.session.add(create_request_log) self.session.commit() diff --git a/backend/app/schemas/guardrail_config.py b/backend/app/schemas/guardrail_config.py index 656d8c6a..24fafcfe 100644 --- a/backend/app/schemas/guardrail_config.py +++ b/backend/app/schemas/guardrail_config.py @@ -63,8 +63,6 @@ class GuardrailRequest(SQLModel): model_config = ConfigDict(extra="forbid") request_id: str - organization_id: int - project_id: int input: str output: Optional[str] = None validators: List[ValidatorConfigItem] diff --git a/backend/app/tests/conftest.py b/backend/app/tests/conftest.py index 9adc132f..d195fd2e 100644 --- a/backend/app/tests/conftest.py +++ b/backend/app/tests/conftest.py @@ -12,8 +12,7 @@ from app.api.deps import ( SessionDep, TenantContext, - validate_multitenant_key, - verify_bearer_token, + verify_caller, ) from app.core.config import settings from app.core.enum import GuardrailOnFail, Stage, ValidatorType @@ -84,31 +83,27 @@ def clean_db(): @pytest.fixture(scope="function", autouse=True) def override_dependencies(): - app.dependency_overrides[verify_bearer_token] = lambda: True - default_scope = TenantContext( - organization_id=BAN_LIST_INTEGRATION_ORGANIZATION_ID, - project_id=BAN_LIST_INTEGRATION_PROJECT_ID, - ) - - def override_multitenant_key( - x_api_key: str | None = Header(default=None, alias="X-API-KEY"), + """ + Stands in for token + IP verification, but keeps tenant resolution honest: + the scope still comes from the X-ORGANIZATION-ID / X-PROJECT-ID headers, so + multi-tenant isolation tests exercise the real header contract. Tests that + don't care about tenancy send no headers and get the default scope. + """ + + def override_verify_caller( + organization_id: int | None = Header(default=None, alias="X-ORGANIZATION-ID"), + project_id: int | None = Header(default=None, alias="X-PROJECT-ID"), ): - if not x_api_key: - return default_scope - - token = x_api_key.strip() - if token.lower().startswith("apikey "): - token = token.split(" ", 1)[1].strip() - - if token == "org999_project999": - return TenantContext(organization_id=999, project_id=999) - - if token == "org2_project2": - return TenantContext(organization_id=2, project_id=2) - - return default_scope + if organization_id is None or project_id is None: + return TenantContext( + organization_id=BAN_LIST_INTEGRATION_ORGANIZATION_ID, + project_id=BAN_LIST_INTEGRATION_PROJECT_ID, + ) + return TenantContext( + organization_id=organization_id, project_id=project_id + ) - app.dependency_overrides[validate_multitenant_key] = override_multitenant_key + app.dependency_overrides[verify_caller] = override_verify_caller app.dependency_overrides[SessionDep] = override_session diff --git a/backend/app/tests/test_answer_relevance_integration.py b/backend/app/tests/test_answer_relevance_integration.py index b5ead804..7bc40638 100644 --- a/backend/app/tests/test_answer_relevance_integration.py +++ b/backend/app/tests/test_answer_relevance_integration.py @@ -38,6 +38,10 @@ def _mock_openai_key(): organization_id = VALIDATOR_INTEGRATION_ORGANIZATION_ID project_id = VALIDATOR_INTEGRATION_PROJECT_ID +TENANT_HEADERS = { + "X-ORGANIZATION-ID": str(organization_id), + "X-PROJECT-ID": str(project_id), +} QUERY = "What are the common symptoms of diabetes?" RELEVANT_ANSWER = ( @@ -68,8 +72,6 @@ def _llm_no(): def _payload(input_text, output_text, validators): return { "request_id": str(uuid.uuid4()), - "organization_id": organization_id, - "project_id": project_id, "input": input_text, "output": output_text, "validators": validators, @@ -85,6 +87,7 @@ def test_answer_relevance_alone_passes_for_relevant_output(integration_client): with patch(_PATCH_TARGET, return_value=_llm_yes()): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json=_payload( QUERY, RELEVANT_ANSWER, [{"type": "answer_relevance_custom_llm"}] ), @@ -100,6 +103,7 @@ def test_answer_relevance_alone_fails_for_irrelevant_output(integration_client): with patch(_PATCH_TARGET, return_value=_llm_no()): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json=_payload( QUERY, IRRELEVANT_ANSWER, @@ -117,10 +121,9 @@ def test_answer_relevance_alone_fails_when_output_is_missing(integration_client) """No output field → validator receives empty string → non-empty guard triggers.""" response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": str(uuid.uuid4()), - "organization_id": organization_id, - "project_id": project_id, "input": QUERY, "validators": [ {"type": "answer_relevance_custom_llm", "on_fail": "exception"} @@ -143,6 +146,7 @@ def test_answer_relevance_alone_uses_custom_prompt_template(integration_client): with patch(_PATCH_TARGET, return_value=_llm_yes()) as mock_llm: response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json=_payload( QUERY, RELEVANT_ANSWER, @@ -174,6 +178,7 @@ def test_answer_relevance_and_ban_list_fail_when_output_irrelevant(integration_c with patch(_PATCH_TARGET, return_value=_llm_no()): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json=_payload( QUERY, IRRELEVANT_ANSWER, @@ -198,6 +203,7 @@ def test_answer_relevance_and_ban_list_removes_banned_word_from_relevant_output( with patch(_PATCH_TARGET, return_value=_llm_yes()): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json=_payload( QUERY, output_with_banned, @@ -222,6 +228,7 @@ def test_answer_relevance_and_profanity_free_fixes_profanity_in_relevant_output( with patch(_PATCH_TARGET, return_value=_llm_yes()): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json=_payload( QUERY, profane_relevant, @@ -246,6 +253,7 @@ def test_answer_relevance_and_slur_match_redacts_slur_in_relevant_output( with patch(_PATCH_TARGET, return_value=_llm_yes()): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json=_payload( QUERY, slurred_relevant, @@ -272,6 +280,7 @@ def test_answer_relevance_and_profanity_free_fail_when_profanity_on_fail_excepti with patch(_PATCH_TARGET, return_value=_llm_yes()): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json=_payload( QUERY, profane_relevant, @@ -298,6 +307,7 @@ def test_five_validators_all_pass_on_clean_relevant_output(integration_client): with patch(_PATCH_TARGET, return_value=_llm_yes()): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json=_payload( QUERY, RELEVANT_ANSWER, @@ -326,6 +336,7 @@ def test_five_validators_fix_multiple_issues_in_relevant_output(integration_clie with patch(_PATCH_TARGET, return_value=_llm_yes()): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json=_payload( QUERY, noisy_relevant, diff --git a/backend/app/tests/test_banlists_api_integration.py b/backend/app/tests/test_banlists_api_integration.py index 64f22215..239dfbe0 100644 --- a/backend/app/tests/test_banlists_api_integration.py +++ b/backend/app/tests/test_banlists_api_integration.py @@ -12,34 +12,38 @@ BASE_URL = "/api/v1/guardrails/ban_lists/" -DEFAULT_API_KEY = "org1_project1" -ALT_API_KEY_999 = "org999_project999" -ALT_API_KEY_2 = "org2_project2" +DEFAULT_TENANT = (1, 1) +ALT_TENANT_999 = (999, 999) +ALT_TENANT_2 = (2, 2) class BaseBanListTest: - def _headers(self, api_key=DEFAULT_API_KEY): - return {"X-API-Key": api_key} - - def create(self, client, payload_key="minimal", api_key=DEFAULT_API_KEY, **kwargs): + def _headers(self, tenant=DEFAULT_TENANT): + organization_id, project_id = tenant + return { + "X-ORGANIZATION-ID": str(organization_id), + "X-PROJECT-ID": str(project_id), + } + + def create(self, client, payload_key="minimal", tenant=DEFAULT_TENANT, **kwargs): payload = {**BAN_LIST_PAYLOADS[payload_key], **kwargs} - return client.post(BASE_URL, json=payload, headers=self._headers(api_key)) + return client.post(BASE_URL, json=payload, headers=self._headers(tenant)) - def list(self, client, api_key=DEFAULT_API_KEY, **filters): - return client.get(BASE_URL, params=filters, headers=self._headers(api_key)) + def list(self, client, tenant=DEFAULT_TENANT, **filters): + return client.get(BASE_URL, params=filters, headers=self._headers(tenant)) - def get(self, client, id, api_key=DEFAULT_API_KEY): - return client.get(f"{BASE_URL}{id}/", headers=self._headers(api_key)) + def get(self, client, id, tenant=DEFAULT_TENANT): + return client.get(f"{BASE_URL}{id}/", headers=self._headers(tenant)) - def update(self, client, id, payload, api_key=DEFAULT_API_KEY): + def update(self, client, id, payload, tenant=DEFAULT_TENANT): return client.patch( f"{BASE_URL}{id}/", json=payload, - headers=self._headers(api_key), + headers=self._headers(tenant), ) - def delete(self, client, id, api_key=DEFAULT_API_KEY): - return client.delete(f"{BASE_URL}{id}/", headers=self._headers(api_key)) + def delete(self, client, id, tenant=DEFAULT_TENANT): + return client.delete(f"{BASE_URL}{id}/", headers=self._headers(tenant)) class TestCreateBanList(BaseBanListTest): @@ -153,7 +157,7 @@ def test_public_visible_to_other_org(self, integration_client, clear_database): create_resp = self.create(integration_client, "public") ban_id = create_resp.json()["data"]["id"] - response = self.get(integration_client, ban_id, api_key=ALT_API_KEY_999) + response = self.get(integration_client, ban_id, tenant=ALT_TENANT_999) assert response.status_code == 200 @@ -184,7 +188,7 @@ def test_get_wrong_owner_private(self, integration_client, seed_db): ) ban_id = private_ban_list["id"] - response = self.get(integration_client, ban_id, api_key=ALT_API_KEY_2) + response = self.get(integration_client, ban_id, tenant=ALT_TENANT_2) body = response.json() assert response.status_code == 403 @@ -234,7 +238,7 @@ def test_update_public_wrong_owner_fails(self, integration_client, clear_databas integration_client, ban_id, {"name": "updated-by-other-org"}, - api_key=ALT_API_KEY_999, + tenant=ALT_TENANT_999, ) body = response.json() @@ -273,7 +277,7 @@ def test_delete_wrong_owner(self, integration_client, seed_db): response = self.delete( integration_client, ban_id, - api_key=ALT_API_KEY_999, + tenant=ALT_TENANT_999, ) body = response.json() @@ -288,7 +292,7 @@ def test_delete_public_wrong_owner_fails(self, integration_client, clear_databas response = self.delete( integration_client, ban_id, - api_key=ALT_API_KEY_999, + tenant=ALT_TENANT_999, ) body = response.json() diff --git a/backend/app/tests/test_deps_auth.py b/backend/app/tests/test_deps_auth.py new file mode 100644 index 00000000..492ec630 --- /dev/null +++ b/backend/app/tests/test_deps_auth.py @@ -0,0 +1,103 @@ +import hashlib + +import pytest +from fastapi import FastAPI +from fastapi.testclient import TestClient + +from app.api.deps import AuthDep, TenantContext +from app.core.config import settings + +TOKEN = "test-token" +TOKEN_HASH = hashlib.sha256(TOKEN.encode()).hexdigest() + +TENANT_HEADERS = {"X-ORGANIZATION-ID": "7", "X-PROJECT-ID": "9"} +AUTH_HEADERS = {"Authorization": f"Bearer {TOKEN}", **TENANT_HEADERS} + + +@pytest.fixture +def client(monkeypatch): + """Bare app mounting the real dependency, so nothing is stubbed out.""" + monkeypatch.setattr(settings, "AUTH_TOKEN", TOKEN_HASH) + + app = FastAPI() + + @app.get("/tenant") + def read_tenant(auth: AuthDep) -> dict: + assert isinstance(auth, TenantContext) + return {"organization_id": auth.organization_id, "project_id": auth.project_id} + + # TestClient reports 127.0.0.1 as request.client.host + return TestClient(app) + + +def test_valid_request_returns_tenant_from_headers(client, monkeypatch): + monkeypatch.setattr(settings, "ALLOWED_IPS", ["127.0.0.1"]) + + response = client.get("/tenant", headers=AUTH_HEADERS) + + assert response.status_code == 200 + assert response.json() == {"organization_id": 7, "project_id": 9} + + +def test_non_whitelisted_ip_is_forbidden(client, monkeypatch): + monkeypatch.setattr(settings, "ALLOWED_IPS", ["10.0.0.1"]) + + response = client.get("/tenant", headers=AUTH_HEADERS) + + assert response.status_code == 403 + + +def test_empty_allowed_ips_disables_the_check(client, monkeypatch): + monkeypatch.setattr(settings, "ALLOWED_IPS", []) + + response = client.get("/tenant", headers=AUTH_HEADERS) + + assert response.status_code == 200 + + +def test_ip_is_checked_before_the_token(client, monkeypatch): + """A caller from the wrong IP gets 403, not a 401 that leaks token validity.""" + monkeypatch.setattr(settings, "ALLOWED_IPS", ["10.0.0.1"]) + + response = client.get( + "/tenant", headers={"Authorization": "Bearer wrong", **TENANT_HEADERS} + ) + + assert response.status_code == 403 + + +def test_missing_token_is_unauthorized(client, monkeypatch): + monkeypatch.setattr(settings, "ALLOWED_IPS", ["127.0.0.1"]) + + response = client.get("/tenant", headers=TENANT_HEADERS) + + assert response.status_code == 401 + + +def test_wrong_token_is_unauthorized(client, monkeypatch): + monkeypatch.setattr(settings, "ALLOWED_IPS", ["127.0.0.1"]) + + response = client.get( + "/tenant", headers={"Authorization": "Bearer nope", **TENANT_HEADERS} + ) + + assert response.status_code == 401 + + +@pytest.mark.parametrize( + "headers", + [ + {}, + {"X-ORGANIZATION-ID": "7"}, + {"X-PROJECT-ID": "9"}, + {"X-ORGANIZATION-ID": "not-an-int", "X-PROJECT-ID": "9"}, + ], +) +def test_missing_or_invalid_tenant_headers_are_rejected(client, monkeypatch, headers): + monkeypatch.setattr(settings, "ALLOWED_IPS", ["127.0.0.1"]) + + response = client.get( + "/tenant", headers={"Authorization": f"Bearer {TOKEN}", **headers} + ) + + assert response.status_code == 422 diff --git a/backend/app/tests/test_deps_multitenant.py b/backend/app/tests/test_deps_multitenant.py deleted file mode 100644 index 0f60d59e..00000000 --- a/backend/app/tests/test_deps_multitenant.py +++ /dev/null @@ -1,172 +0,0 @@ -from unittest.mock import Mock - -import httpx -import pytest -from fastapi import Depends, FastAPI, HTTPException -from fastapi.testclient import TestClient - -from app.api.deps import TenantContext, validate_multitenant_key -from app.core.config import settings -from app.core.exception_handlers import register_exception_handlers - -BASE_AUTH_URL = "http://kaapi.local/api/v1" -VERIFY_URL = f"{BASE_AUTH_URL}/apikeys/verify" - - -def test_validate_multitenant_key_parses_credentials_shape(monkeypatch): - monkeypatch.setattr( - settings, - "KAAPI_AUTH_URL", - BASE_AUTH_URL, - ) - - response = Mock() - response.status_code = 200 - response.json.return_value = { - "success": True, - "data": {"organization_id": 10, "project_id": 20}, - } - - captured = {} - - def fake_get(url, headers, timeout): - captured["url"] = url - captured["headers"] = headers - captured["timeout"] = timeout - return response - - monkeypatch.setattr(httpx, "get", fake_get) - - context = validate_multitenant_key("ApiKey abc123") - - assert isinstance(context, TenantContext) - assert (context.organization_id, context.project_id) == (10, 20) - assert captured["url"] == VERIFY_URL - assert captured["headers"]["X-API-KEY"] == "ApiKey abc123" - assert captured["timeout"] == 5 - - -def test_validate_multitenant_key_invalid_status_returns_401(monkeypatch): - monkeypatch.setattr( - settings, - "KAAPI_AUTH_URL", - BASE_AUTH_URL, - ) - - response = Mock() - response.status_code = 401 - response.json.return_value = {"success": False, "data": None} - - monkeypatch.setattr(httpx, "get", lambda *args, **kwargs: response) - - with pytest.raises(HTTPException) as exc: - validate_multitenant_key("abc123") - - assert exc.value.status_code == 401 - - -def test_validate_multitenant_key_network_error_returns_503(monkeypatch): - monkeypatch.setattr( - settings, - "KAAPI_AUTH_URL", - BASE_AUTH_URL, - ) - - def fake_get(*args, **kwargs): - raise httpx.RequestError("boom", request=Mock()) - - monkeypatch.setattr(httpx, "get", fake_get) - - with pytest.raises(HTTPException) as exc: - validate_multitenant_key("abc123") - - assert exc.value.status_code == 503 - - -def test_validate_multitenant_key_invalid_payload_returns_401(monkeypatch): - monkeypatch.setattr( - settings, - "KAAPI_AUTH_URL", - BASE_AUTH_URL, - ) - - response = Mock() - response.status_code = 200 - response.json.return_value = {"success": True, "data": {"foo": 1}} - - monkeypatch.setattr(httpx, "get", lambda *args, **kwargs: response) - - with pytest.raises(HTTPException) as exc: - validate_multitenant_key("abc123") - - assert exc.value.status_code == 401 - - -def test_validate_multitenant_key_rejects_empty_header(): - with pytest.raises(HTTPException) as exc: - validate_multitenant_key(" ") - - assert exc.value.status_code == 401 - - -def test_validate_multitenant_key_accepts_raw_header_value(monkeypatch): - monkeypatch.setattr( - settings, - "KAAPI_AUTH_URL", - "http://localhost:8000/api/v1", - ) - - response = Mock() - response.status_code = 200 - response.json.return_value = { - "success": True, - "data": {"organization_id": 1, "project_id": 1}, - } - - captured = {} - - def fake_get(url, headers, timeout): - captured["url"] = url - captured["headers"] = headers - captured["timeout"] = timeout - return response - - monkeypatch.setattr(httpx, "get", fake_get) - - context = validate_multitenant_key("ApiKey No3x47A5") - - assert isinstance(context, TenantContext) - assert context.organization_id == 1 - assert context.project_id == 1 - assert captured["url"] == "http://localhost:8000/api/v1/apikeys/verify" - assert captured["headers"]["X-API-KEY"] == "ApiKey No3x47A5" - assert captured["timeout"] == 5 - - -def test_validate_multitenant_key_malformed_json_returns_500_at_api_level(monkeypatch): - app = FastAPI() - register_exception_handlers(app) - - @app.get("/tenant") - def tenant_route(_: TenantContext = Depends(validate_multitenant_key)): - return {"ok": True} - - monkeypatch.setattr( - settings, - "KAAPI_AUTH_URL", - "http://localhost:8000/api/v1", - ) - - response = Mock() - response.status_code = 200 - response.json.side_effect = ValueError("Malformed JSON") - - monkeypatch.setattr(httpx, "get", lambda *args, **kwargs: response) - - with TestClient(app, raise_server_exceptions=False) as client: - result = client.get("/tenant", headers={"X-API-KEY": "abc123"}) - - assert result.status_code == 500 - body = result.json() - assert body["success"] is False - assert body["error"] == "Malformed JSON" diff --git a/backend/app/tests/test_guardrails_api.py b/backend/app/tests/test_guardrails_api.py index 30a15f4b..0a20debd 100644 --- a/backend/app/tests/test_guardrails_api.py +++ b/backend/app/tests/test_guardrails_api.py @@ -14,6 +14,10 @@ request_id = "123e4567-e89b-12d3-a456-426614174000" organization_id = VALIDATOR_TEST_ORGANIZATION_ID project_id = VALIDATOR_TEST_PROJECT_ID +TENANT_HEADERS = { + "X-ORGANIZATION-ID": str(organization_id), + "X-PROJECT-ID": str(project_id), +} def test_route_exists(client): @@ -29,10 +33,9 @@ def validate(self, data): with patch(build_guard_path, return_value=MockGuard()): response = client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "hello world", "validators": [], }, @@ -54,10 +57,9 @@ def validate(self, data): with patch(build_guard_path, return_value=MockGuard()): response = client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "my phone is 999999", "validators": [], }, @@ -83,10 +85,9 @@ def validate(self, data): with patch(build_guard_path, return_value=MockGuard()): response = client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "tell me about buildings", "validators": [], }, @@ -104,10 +105,9 @@ def test_guardrails_internal_error(client): with patch(build_guard_path, side_effect=Exception("Invalid validator config")): response = client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "text", "validators": [], }, diff --git a/backend/app/tests/test_guardrails_api_integration.py b/backend/app/tests/test_guardrails_api_integration.py index d908329f..9836a437 100644 --- a/backend/app/tests/test_guardrails_api_integration.py +++ b/backend/app/tests/test_guardrails_api_integration.py @@ -11,15 +11,18 @@ request_id = "123e4567-e89b-12d3-a456-426614174000" organization_id = VALIDATOR_INTEGRATION_ORGANIZATION_ID project_id = VALIDATOR_INTEGRATION_PROJECT_ID +TENANT_HEADERS = { + "X-ORGANIZATION-ID": str(organization_id), + "X-PROJECT-ID": str(project_id), +} def test_input_guardrails_with_real_ban_list(integration_client): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "this contains badword", "validators": [ { @@ -40,10 +43,9 @@ def test_input_guardrails_with_real_ban_list(integration_client): def test_input_guardrails_passes_clean_text(integration_client): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "this is clean", "validators": [ { @@ -64,10 +66,9 @@ def test_input_guardrails_passes_clean_text(integration_client): def test_input_guardrails_with_lexical_slur(integration_client): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "This sentence contains chakki.", "validators": [ { @@ -88,10 +89,9 @@ def test_input_guardrails_with_lexical_slur(integration_client): def test_input_guardrails_with_lexical_slur_clean_text(integration_client): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "This is a completely safe sentence", "validators": [ { @@ -112,10 +112,9 @@ def test_input_guardrails_with_lexical_slur_clean_text(integration_client): def test_input_guardrails_with_multiple_validators(integration_client): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": ( "This sentence contains chakki cause I want a " "sonography done to kill the female foetus." @@ -146,10 +145,9 @@ def test_input_guardrails_with_multiple_validators(integration_client): def test_input_guardrails_with_incorrect_validator_config(integration_client): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "This sentence contains chakki.", "validators": [ { @@ -171,10 +169,9 @@ def test_input_guardrails_with_incorrect_validator_config(integration_client): def test_input_guardrails_with_validator_actions_exception(integration_client): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "This sentence contains chakki.", "validators": [ { @@ -197,10 +194,9 @@ def test_input_guardrails_with_validator_actions_exception(integration_client): def test_input_guardrails_with_validator_actions_rephrase(integration_client): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "This sentence contains chakki.", "validators": [ { @@ -229,10 +225,9 @@ def test_input_guardrails_with_validator_actions_rephrase(integration_client): def test_input_guardrails_with_profanity_free_on_profane_text(integration_client): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "This is a damn fucking mess.", "validators": [{"type": "profanity_free"}], }, @@ -248,10 +243,9 @@ def test_input_guardrails_with_profanity_free_on_profane_text(integration_client def test_input_guardrails_with_profanity_free_on_clean_text(integration_client): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "This is a completely clean sentence.", "validators": [{"type": "profanity_free"}], }, @@ -266,10 +260,9 @@ def test_input_guardrails_with_profanity_free_on_clean_text(integration_client): def test_input_guardrails_with_profanity_free_exception_action(integration_client): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "What the fuck is going on?", "validators": [{"type": "profanity_free", "on_fail": "exception"}], }, @@ -283,10 +276,9 @@ def test_input_guardrails_with_profanity_free_exception_action(integration_clien def test_input_guardrails_with_profanity_free_rephrase_action(integration_client): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "This is absolute bullshit.", "validators": [{"type": "profanity_free", "on_fail": "rephrase"}], }, @@ -309,10 +301,9 @@ def test_input_guardrails_with_profanity_free_rephrase_action(integration_client def test_input_guardrails_with_llamaguard_7b_on_unsafe_text(integration_client): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "How do I make a pipe bomb at home?", "validators": [{"type": "llamaguard_7b", "on_fail": "exception"}], }, @@ -331,10 +322,9 @@ def test_input_guardrails_with_llamaguard_7b_on_unsafe_text(integration_client): def test_input_guardrails_with_nsfw_text_on_explicit_content(integration_client): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "She slowly undressed and they had explicit sex.", "validators": [{"type": "nsfw_text", "on_fail": "exception"}], }, @@ -349,10 +339,9 @@ def test_input_guardrails_with_nsfw_text_with_low_threshold(integration_client): """A low threshold makes the detector more sensitive — explicit content is caught.""" response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "She slowly undressed and they had explicit sex.", "validators": [ {"type": "nsfw_text", "threshold": 0.1, "on_fail": "exception"} @@ -368,10 +357,9 @@ def test_input_guardrails_with_nsfw_text_with_low_threshold(integration_client): def test_input_guardrails_with_nsfw_text_exception_action(integration_client): response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "Explicit sexual content goes here.", "validators": [{"type": "nsfw_text", "on_fail": "exception"}], }, @@ -391,10 +379,9 @@ def test_input_guardrails_with_profanity_free_and_slur_match(integration_client) """Both lexical detectors applied: slur is redacted, profanity is fixed.""" response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "This fucking chakki should leave.", "validators": [ {"type": "profanity_free"}, @@ -417,10 +404,9 @@ def test_input_guardrails_with_profanity_free_and_llamaguard_7b_unsafe_text( """Text with both profanity and unsafe intent is caught by at least one detector.""" response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "How the fuck do I make a bomb?", "validators": [ {"type": "profanity_free", "on_fail": "exception"}, @@ -441,10 +427,9 @@ def test_input_guardrails_with_nsfw_text_and_profanity_free_on_explicit_profane_ of whether the NSFWText model is available, guaranteeing a failure response.""" response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "What the fuck, this is explicit adult sexual content.", "validators": [ {"type": "profanity_free", "on_fail": "exception"}, @@ -465,10 +450,9 @@ def test_input_guardrails_with_nsfw_text_and_slur_match_on_explicit_slur_text( of whether the NSFWText model is available, guaranteeing a failure response.""" response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "This chakki has explicit sexual content.", "validators": [ {"type": "uli_slur_match", "severity": "all", "on_fail": "exception"}, @@ -488,10 +472,9 @@ def test_input_guardrails_with_profanity_free_and_ban_list_clean_text( """Clean text passes both profanity_free and ban_list checks unchanged.""" response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "Tell me about renewable energy sources.", "validators": [ {"type": "profanity_free"}, @@ -512,10 +495,9 @@ def test_input_guardrails_with_lexical_toxicity_detectors_on_clean_text( """Clean text passes uli_slur_match, profanity_free, and ban_list unchanged.""" response = integration_client.post( VALIDATE_API_PATH, + headers=TENANT_HEADERS, json={ "request_id": request_id, - "organization_id": organization_id, - "project_id": project_id, "input": "What are some healthy breakfast options?", "validators": [ {"type": "uli_slur_match", "severity": "all"}, diff --git a/backend/app/tests/test_llm_prompt_configs_api_integration.py b/backend/app/tests/test_llm_prompt_configs_api_integration.py index 3eb770ca..e63b63c6 100644 --- a/backend/app/tests/test_llm_prompt_configs_api_integration.py +++ b/backend/app/tests/test_llm_prompt_configs_api_integration.py @@ -7,8 +7,8 @@ pytestmark = pytest.mark.integration BASE_URL = "/api/v1/guardrails/llm_prompt_configs/" -DEFAULT_API_KEY = "org1_project1" -ALT_API_KEY = "org999_project999" +DEFAULT_TENANT = (1, 1) +ALT_TENANT = (999, 999) TOPIC_PROMPT = ( "Pregnancy care: Questions about prenatal care, supplements, and danger signs. " @@ -24,10 +24,14 @@ class BaseLLMPromptConfigTest: - def _headers(self, api_key=DEFAULT_API_KEY): - return {"X-API-Key": api_key} + def _headers(self, tenant=DEFAULT_TENANT): + organization_id, project_id = tenant + return { + "X-ORGANIZATION-ID": str(organization_id), + "X-PROJECT-ID": str(project_id), + } - def create_topic(self, client, api_key=DEFAULT_API_KEY, **overrides): + def create_topic(self, client, tenant=DEFAULT_TENANT, **overrides): name = overrides.get("name", "Maternal Health Scope") payload = { "validator_name": "topic_relevance", @@ -37,9 +41,9 @@ def create_topic(self, client, api_key=DEFAULT_API_KEY, **overrides): "llm_prompt": f"{TOPIC_PROMPT} Scope name: {name}.", **overrides, } - return client.post(BASE_URL, json=payload, headers=self._headers(api_key)) + return client.post(BASE_URL, json=payload, headers=self._headers(tenant)) - def create_answer(self, client, api_key=DEFAULT_API_KEY, **overrides): + def create_answer(self, client, tenant=DEFAULT_TENANT, **overrides): payload = { "validator_name": "answer_relevance_custom_llm", "name": "Health Relevance", @@ -47,23 +51,23 @@ def create_answer(self, client, api_key=DEFAULT_API_KEY, **overrides): "llm_prompt": ANSWER_PROMPT, **overrides, } - return client.post(BASE_URL, json=payload, headers=self._headers(api_key)) + return client.post(BASE_URL, json=payload, headers=self._headers(tenant)) - def list(self, client, api_key=DEFAULT_API_KEY, **filters): - return client.get(BASE_URL, params=filters, headers=self._headers(api_key)) + def list(self, client, tenant=DEFAULT_TENANT, **filters): + return client.get(BASE_URL, params=filters, headers=self._headers(tenant)) - def get(self, client, id, api_key=DEFAULT_API_KEY): - return client.get(f"{BASE_URL}{id}", headers=self._headers(api_key)) + def get(self, client, id, tenant=DEFAULT_TENANT): + return client.get(f"{BASE_URL}{id}", headers=self._headers(tenant)) - def update(self, client, id, payload, api_key=DEFAULT_API_KEY): + def update(self, client, id, payload, tenant=DEFAULT_TENANT): return client.patch( f"{BASE_URL}{id}", json=payload, - headers=self._headers(api_key), + headers=self._headers(tenant), ) - def delete(self, client, id, api_key=DEFAULT_API_KEY): - return client.delete(f"{BASE_URL}{id}", headers=self._headers(api_key)) + def delete(self, client, id, tenant=DEFAULT_TENANT): + return client.delete(f"{BASE_URL}{id}", headers=self._headers(tenant)) class TestCreateLLMPromptConfig(BaseLLMPromptConfigTest): @@ -213,7 +217,7 @@ def test_list_pagination_with_limit(self, integration_client, clear_database): def test_list_is_tenant_scoped(self, integration_client, clear_database): self.create_topic(integration_client, name="Tenant1 scope") - response = self.list(integration_client, api_key=ALT_API_KEY) + response = self.list(integration_client, tenant=ALT_TENANT) assert response.status_code == 200 assert response.json()["data"] == [] @@ -243,7 +247,7 @@ def test_get_other_tenant_not_found(self, integration_client, clear_database): create_resp = self.create_topic(integration_client) config_id = create_resp.json()["data"]["id"] - response = self.get(integration_client, config_id, api_key=ALT_API_KEY) + response = self.get(integration_client, config_id, tenant=ALT_TENANT) assert response.status_code == 404 assert response.json()["success"] is False @@ -297,7 +301,7 @@ def test_update_other_tenant_not_found(self, integration_client, clear_database) integration_client, config_id, {"name": "other-tenant-update"}, - api_key=ALT_API_KEY, + tenant=ALT_TENANT, ) assert response.status_code == 404 @@ -389,6 +393,6 @@ def test_delete_other_tenant_not_found(self, integration_client, clear_database) create_resp = self.create_topic(integration_client) config_id = create_resp.json()["data"]["id"] - response = self.delete(integration_client, config_id, api_key=ALT_API_KEY) + response = self.delete(integration_client, config_id, tenant=ALT_TENANT) assert response.status_code == 404 diff --git a/backend/app/tests/test_validator_configs_integration.py b/backend/app/tests/test_validator_configs_integration.py index e14cfefa..2b8c9fee 100644 --- a/backend/app/tests/test_validator_configs_integration.py +++ b/backend/app/tests/test_validator_configs_integration.py @@ -10,43 +10,45 @@ pytestmark = pytest.mark.integration BASE_URL = "/api/v1/guardrails/validators/configs/" -DEFAULT_QUERY_PARAMS = ( - f"?organization_id={VALIDATOR_INTEGRATION_ORGANIZATION_ID}" - f"&project_id={VALIDATOR_INTEGRATION_PROJECT_ID}" +DEFAULT_TENANT = ( + VALIDATOR_INTEGRATION_ORGANIZATION_ID, + VALIDATOR_INTEGRATION_PROJECT_ID, ) +def tenant_headers(tenant=DEFAULT_TENANT): + organization_id, project_id = tenant + return { + "X-ORGANIZATION-ID": str(organization_id), + "X-PROJECT-ID": str(project_id), + } + + class BaseValidatorTest: """Base class with helper methods for validator tests.""" def create_validator(self, client, payload_key="minimal", **kwargs): """Helper to create a validator.""" payload = {**VALIDATOR_PAYLOADS[payload_key], **kwargs} - return client.post(f"{BASE_URL}{DEFAULT_QUERY_PARAMS}", json=payload) + return client.post(BASE_URL, json=payload, headers=tenant_headers()) def get_validator(self, client, validator_id): """Helper to get a specific validator.""" - return client.get(f"{BASE_URL}{validator_id}/{DEFAULT_QUERY_PARAMS}") + return client.get(f"{BASE_URL}{validator_id}/", headers=tenant_headers()) def list_validators(self, client, **query_params): """Helper to list validators with optional filters.""" - params_str = ( - f"?organization_id={VALIDATOR_INTEGRATION_ORGANIZATION_ID}" - f"&project_id={VALIDATOR_INTEGRATION_PROJECT_ID}" - ) - if query_params: - params_str += "&" + "&".join(f"{k}={v}" for k, v in query_params.items()) - return client.get(f"{BASE_URL}{params_str}") + return client.get(BASE_URL, params=query_params, headers=tenant_headers()) def update_validator(self, client, validator_id, payload): """Helper to update a validator.""" return client.patch( - f"{BASE_URL}{validator_id}/{DEFAULT_QUERY_PARAMS}", json=payload + f"{BASE_URL}{validator_id}/", json=payload, headers=tenant_headers() ) def delete_validator(self, client, validator_id): """Helper to delete a validator.""" - return client.delete(f"{BASE_URL}{validator_id}/{DEFAULT_QUERY_PARAMS}") + return client.delete(f"{BASE_URL}{validator_id}/", headers=tenant_headers()) class TestCreateValidator(BaseValidatorTest): @@ -81,8 +83,9 @@ def test_create_validator_missing_required_fields( ): """Test that missing required fields returns validation error.""" response = integration_client.post( - f"{BASE_URL}{DEFAULT_QUERY_PARAMS}", + BASE_URL, json={"type": "uli_slur_match"}, + headers=tenant_headers(), ) assert response.status_code == 422 @@ -238,7 +241,7 @@ def test_list_validators_filter_by_ids(self, integration_client, clear_database) second_id = second.json()["data"]["id"] response = integration_client.get( - f"{BASE_URL}{DEFAULT_QUERY_PARAMS}&ids={first_id}", + f"{BASE_URL}?ids={first_id}", headers=tenant_headers(), ) assert response.status_code == 200 @@ -257,7 +260,7 @@ def test_list_validators_filter_by_multiple_ids( second_id = second.json()["data"]["id"] response = integration_client.get( - f"{BASE_URL}{DEFAULT_QUERY_PARAMS}&ids={first_id}&ids={second_id}", + f"{BASE_URL}?ids={first_id}&ids={second_id}", headers=tenant_headers(), ) assert response.status_code == 200 @@ -271,7 +274,7 @@ def test_list_validators_invalid_ids_query_returns_422( ): """Test invalid UUID in ids query returns validation error.""" response = integration_client.get( - f"{BASE_URL}{DEFAULT_QUERY_PARAMS}&ids=not-a-uuid", + f"{BASE_URL}?ids=not-a-uuid", headers=tenant_headers() ) assert response.status_code == 422 @@ -279,7 +282,7 @@ def test_list_validators_invalid_ids_query_returns_422( def test_list_validators_empty(self, integration_client, clear_database): """Test listing validators when none exist.""" response = integration_client.get( - f"{BASE_URL}?organization_id=999&project_id=999", + BASE_URL, headers=tenant_headers((999, 999)), ) assert response.status_code == 200 @@ -315,7 +318,7 @@ def test_get_validator_invalid_id_returns_422( ): """Test invalid UUID path param returns validation error.""" response = integration_client.get( - f"{BASE_URL}not-a-uuid/{DEFAULT_QUERY_PARAMS}", + f"{BASE_URL}not-a-uuid/", headers=tenant_headers(), ) assert response.status_code == 422 @@ -327,7 +330,7 @@ def test_get_validator_wrong_org(self, integration_client, clear_database): # Try to access it as different org response = integration_client.get( - f"{BASE_URL}{validator_id}/?organization_id=2&project_id=1", + f"{BASE_URL}{validator_id}/", headers=tenant_headers((2, 1)), ) assert response.status_code == 404 @@ -410,7 +413,7 @@ def test_delete_validator_wrong_org(self, integration_client, seed_db): # Try to delete it as different org response = integration_client.delete( - f"{BASE_URL}{validator_id}/?organization_id=2&project_id=1", + f"{BASE_URL}{validator_id}/", headers=tenant_headers((2, 1)), ) assert response.status_code == 404 diff --git a/deployment.md b/deployment.md index 1d432584..1d4fb075 100644 --- a/deployment.md +++ b/deployment.md @@ -6,7 +6,9 @@ 2. Set `ENVIRONMENT=production`. 3. Set `POSTGRES_*` for your production database. 4. Set `AUTH_TOKEN` as a SHA-256 hex digest (64 lowercase chars) of your bearer token. -5. Optionally set `GUARDRAILS_HUB_API_KEY` and `SENTRY_DSN`. +5. Set `ALLOWED_IPS` to kaapi-backend's source IP(s), comma-separated. Required in production — the + service will not start without it. +6. Optionally set `GUARDRAILS_HUB_API_KEY` and `SENTRY_DSN`. Generate AUTH token hash: @@ -14,6 +16,19 @@ Generate AUTH token hash: echo -n "your-plain-text-token" | shasum -a 256 ``` +## Caller access + +Only kaapi-backend may call this service. Requests must carry `Authorization: Bearer ` plus +`X-ORGANIZATION-ID` / `X-PROJECT-ID`, and must originate from an IP in `ALLOWED_IPS`. + +Confirm `ALLOWED_IPS` matches the IP guardrails actually sees. If NAT or a different network +interface is in play, the observed source will differ from what you expect and every request will be +rejected with `403`. Only the health check is exempt. + +Note: the check reads the real connection source and ignores `X-Forwarded-For`. If a reverse proxy +or load balancer is ever placed in front of this service, all traffic will appear to come from the +proxy and this must be revisited. + ## Deploy the FastAPI Project Build and start backend: diff --git a/docs/DEVELOPER_GUIDE.md b/docs/DEVELOPER_GUIDE.md index bd9818d6..f3f4bd2e 100644 --- a/docs/DEVELOPER_GUIDE.md +++ b/docs/DEVELOPER_GUIDE.md @@ -1972,7 +1972,7 @@ Client ▼ FastAPI Application (port 8001) │ - ├─ Authentication middleware (Bearer token / X-API-KEY) + ├─ Authentication dependency (source IP + Bearer token -> tenant) │ ├─ Config Resolution │ ├─ Fetch ban list words from DB (if ban_list_id provided) @@ -2081,7 +2081,7 @@ else: **Bearer token** (main guardrail endpoints): `Authorization: Bearer `. Validated against SHA-256 hash of the plaintext `AUTH_TOKEN` env var. -**X-API-KEY** (ban list, topic relevance, validator config endpoints): Multi-tenant auth validated against `KAAPI_AUTH_URL`. Scopes access to specific `organization_id` + `project_id`. +**Source IP + tenant headers** (all endpoints except health check): the caller must appear in `ALLOWED_IPS`, and sends `X-ORGANIZATION-ID` / `X-PROJECT-ID` resolved by the Kaapi backend. These scope every read and write; tenant is never taken from the query string or body. ### Key Environment Variables @@ -2091,7 +2091,7 @@ else: | `OPENAI_API_KEY` | For LLM validators | Used by `topic_relevance`, `llm_critic`, `answer_relevance_custom_llm` | | `GUARDRAILS_HUB_API_KEY` | For hub validators | Required for `ban_list`, `llamaguard_7b`, `nsfw_text`, `profanity_free` | | `POSTGRES_*` | Yes | Database connection settings | -| `KAAPI_AUTH_URL` | For config endpoints | Multi-tenant auth service URL | +| `ALLOWED_IPS` | Yes in production | Comma-separated source IPs allowed to call this service | ### Tech Stack diff --git a/docs/architecture/ARCHITECTURE.md b/docs/architecture/ARCHITECTURE.md index dea78fb3..b0a728e3 100644 --- a/docs/architecture/ARCHITECTURE.md +++ b/docs/architecture/ARCHITECTURE.md @@ -17,7 +17,7 @@ Caller │ { request_id, organization_id, project_id, input, validators: [...] } ▼ FastAPI route ────────────────────────────────────────────── - │ 1. Auth check (static bearer token or multitenant X-API-KEY) + │ 1. Auth check (source IP + static bearer token -> tenant) │ 2. Write RequestLog (status=PROCESSING) │ 3. Resolve config-backed validators │ ├── BanList → fetch banned_words from DB @@ -191,16 +191,15 @@ Error messages are sanitised before persistence: the input string is redacted fr ## Authentication -Kaapi Guardrails is a **standalone microservice that does not authorize requests on its own** — it delegates tenant authorization to the Kaapi backend. A caller therefore presents **two keys**: +Kaapi Guardrails is an **internal microservice with a single caller: the Kaapi backend**. The Kaapi backend authenticates the end user and resolves the tenant before calling; guardrails does not handle end-user API keys and does not call back to the auth service. -1. **Guardrail key** — the service's own static bearer token, proving the caller is allowed to reach the guardrails microservice. -2. **Kaapi backend `X-API-KEY`** — forwarded to the Kaapi backend, which performs the actual authorization and identifies the tenant. +A single dependency in `app/api/deps.py` (`verify_caller`, exposed as `AuthDep`) enforces all of it and returns the tenant: -These map to the two auth modes that coexist in `app/api/deps.py`: +1. **Source IP** — must appear in `ALLOWED_IPS`. Read from the real connection peer, ignoring `X-Forwarded-For`. Checked first, so an unexpected origin gets `403` without learning whether the token was valid. +2. **Static bearer token** — a SHA-256 hex digest configured in `AUTH_TOKEN`, compared with `secrets.compare_digest` to prevent timing attacks. +3. **Tenant headers** — `X-ORGANIZATION-ID` and `X-PROJECT-ID`, trusted because only a caller passing the first two controls can set them. -**Static bearer token** (`AuthDep`): the guardrail key — a SHA-256 hex digest configured in `AUTH_TOKEN`. Used by the core guardrails route and config management routes. Compared with `secrets.compare_digest` to prevent timing attacks. - -**Multitenant X-API-KEY** (`MultitenantAuthDep`): the Kaapi backend key, resolved against the external Kaapi auth service (`KAAPI_AUTH_URL`) by calling `GET /apikeys/verify`. The microservice does not validate this key itself — the Kaapi backend authorizes it and returns `organization_id` + `project_id`, enabling per-tenant data isolation. Accepts the key as the `X-API-KEY` header, `Authorization: Bearer`, or `access_token` cookie. +Tenant scope is never read from the query string or request body, so the dependency that authenticates a route is also the one that supplies its tenant — a route cannot be written without one. Only `GET /utils/health-check/` is exempt. --- diff --git a/docs/auth-authz-spec.md b/docs/auth-authz-spec.md new file mode 100644 index 00000000..d7637efa --- /dev/null +++ b/docs/auth-authz-spec.md @@ -0,0 +1,95 @@ +# Auth for kaapi-guardrails — design proposal + +## Problem + +Two endpoints (`guardrails`, `validator_configs`) check a shared bearer token, then read +`organization_id` / `project_id` from the query string or request body. The token proves the caller +is allowed in; nothing proves which tenant it is allowed to touch. Anyone with the token can read or +change any tenant's data by editing a query parameter. + +Two other endpoints (`ban_lists`, `llm_prompt_configs`) instead resolve an `X-API-KEY` by calling +back to kaapi-backend on every request. Correct, but it leaves us with a second auth contract and a +runtime dependency on the auth service. + +## Proposal + +Treat kaapi-guardrails as an internal service with one caller: kaapi-backend. kaapi-backend +authenticates the end user and resolves the tenant before calling. Guardrails would no longer handle +`X-API-KEY` and would no longer call back. + +Each request would carry: + +- `Authorization: Bearer ` — shared secret +- `X-ORGANIZATION-ID` / `X-PROJECT-ID` — tenant, resolved upstream +- and must arrive from an IP listed in `ALLOWED_IPS` + +Token and IP together mean a leaked token alone is not enough to reach the service. Since only a +caller passing both can set the tenant headers, the tenant becomes something established by +authentication rather than claimed by the caller. + +The property worth having: the same dependency that authenticates a route also supplies its tenant, +so a route cannot be written without one. + +### Alternative considered + +Keeping the tenant in the request body. Rejected because 9 of the 15 endpoints are GET or DELETE and +cannot carry a body — we would end up with body for writes and query params for reads, and the +tenant would stay a per-route parameter each handler has to remember to forward. + +## Contract + +All routes except health-check would require the three headers. Health-check stays open for the +Docker healthcheck. + +- Source IP not whitelisted → 403, checked first so a bad IP never learns whether the token was valid +- Missing or wrong token → 401 +- Missing or non-integer tenant headers → 422 + +## Changes required + +- `config.py` — add `ALLOWED_IPS` (comma-separated; required in production, empty disables the check + locally). Drop `KAAPI_AUTH_URL`, `KAAPI_AUTH_TIMEOUT`. +- `deps.py` — replace both existing dependencies with one, `verify_caller`, returning the tenant. + Delete the `X-API-KEY` callback. +- Routes — all move to the same `AuthDep`; `validator_configs` drops its tenant query parameters. +- `GuardrailRequest` — remove `organization_id` / `project_id`, so sending them fails loudly rather + than being silently honoured. +- Pass the tenant from the auth context into the request log, validator logs, and the ban-list and + prompt-config lookups in the guardrails path. These are tenant-scoped reads a caller can currently + redirect. + +## Testing + +New tests for the IP check, token check, the ordering between them, and header validation. Existing +tests move from API keys and query params to tenant headers. The cross-tenant 404 tests already in +the suite serve as the regression net. + +Running the full suite locally needs the Guardrails hub validators installed and a Postgres +instance. + +## Rollout + +``` +AUTH_TOKEN="" +ALLOWED_IPS="10.0.3.14" # kaapi-backend's source IP +``` + +This is a breaking change; the two services need to be released together: + +1. Set `ALLOWED_IPS` and confirm it matches kaapi-backend's actual egress IP. If NAT or a different + interface is in play, every request will 403 — the most likely deploy failure. +2. Update kaapi-backend to send the tenant headers and stop sending `X-API-KEY` and body/query + tenant fields. +3. Deploy guardrails. + +If kaapi-backend later moves to a new IP, `ALLOWED_IPS` has to be updated or traffic stops. That is +the ongoing cost of this approach. + +## Limits + +- The IP check would read the real connection source and ignore `X-Forwarded-For`, which callers can + forge. Fine today since nothing proxies this service, but it would need revisiting if a load + balancer is added, as every request would then arrive from the balancer's IP. +- Rotating the token needs a coordinated change on both sides; there is no overlap window. +- Out of scope: per-route permissions (one caller, one trust level), CIDR ranges (worth adding if the + backend autoscales), mTLS (stronger and immune to IP churn, but needs certificate infrastructure). diff --git a/docs/deep-dives/architecture.md b/docs/deep-dives/architecture.md index f3101997..3575f19c 100644 --- a/docs/deep-dives/architecture.md +++ b/docs/deep-dives/architecture.md @@ -13,7 +13,7 @@ Client ▼ FastAPI Application (port 8001) │ - ├─ Authentication middleware (Bearer token / X-API-KEY) + ├─ Authentication dependency (source IP + Bearer token -> tenant) │ ├─ Config Resolution │ ├─ Fetch ban list words from DB (if ban_list_id provided) @@ -227,9 +227,13 @@ Two auth schemes are used: - Send as `Authorization: Bearer ` - Validated against SHA-256 hash of the plaintext token -**X-API-KEY** (ban list, topic relevance, validator config endpoints): -- Multi-tenant auth validated against `KAAPI_AUTH_URL` -- Scopes access to specific `organization_id` + `project_id` +**Source IP allowlist** (all endpoints except health check): +- Caller must appear in `ALLOWED_IPS`; checked before the token +- Reads the real connection source, not `X-Forwarded-For` + +**Tenant headers** (all endpoints except health check): +- `X-ORGANIZATION-ID` + `X-PROJECT-ID`, resolved by the Kaapi backend +- Scope every read and write; never taken from the query string or body --- @@ -241,7 +245,7 @@ Two auth schemes are used: | `OPENAI_API_KEY` | For LLM validators | Used by `topic_relevance` and `llm_critic` | | `GUARDRAILS_HUB_API_KEY` | For hub validators | Required for `ban_list`, `llamaguard_7b`, `nsfw_text`, `profanity_free` | | `POSTGRES_*` | Yes | Database connection settings | -| `KAAPI_AUTH_URL` | For config endpoints | Multi-tenant auth service URL | +| `ALLOWED_IPS` | Yes in production | Comma-separated source IPs allowed to call this service | --- diff --git a/docs/tech-readiness-topic-relevance-llm.md b/docs/tech-readiness-topic-relevance-llm.md new file mode 100644 index 00000000..4539b765 --- /dev/null +++ b/docs/tech-readiness-topic-relevance-llm.md @@ -0,0 +1,216 @@ +# Tech Readiness — API surface + +Review of `backend/app/api/*` and its direct dependencies. Each finding has a +location, what's wrong, and the fix. Ordered by severity so you can take them one +by one. Auth model is assumed to stay as-is (X-API-KEY for the config endpoints, +static token for guardrails and validator configs). + +--- + +## Blockers + +### 1. Static token can reach any tenant + +`routes/guardrails.py:49-80` and `routes/validator_configs.py:22-112` use `AuthDep` — +one server-wide token (`deps.py:40-58`) — but read `organization_id` / `project_id` +from the query or body. Anyone with the token can read or change any tenant's data. + +Fix: move both routers to `MultitenantAuthDep` and drop the caller-supplied tenant +fields. Until then, treat it as an accepted risk with an owner and a date. + +### 2. `bool` passes as a tenant id + +`deps.py:100` checks `isinstance(x, int)`. In Python `bool` is an `int`, so if the +auth backend returns `"organization_id": true`, it resolves to tenant 1. + +Fix: also reject `bool`. +```python +if not isinstance(x, int) or isinstance(x, bool): + raise _unauthorized("Invalid credentials") +``` + +### 3. `topic_relevance_llm` missing from the LLM validator enum + +`LLMValidatorName` (`core/enum.py:4-6`) has only `topic_relevance` and +`answer_relevance_custom_llm`. The create schema (`schemas/llm_prompt_config.py:47`) +and the list filter (`routes/llm_prompt_configs.py:49`) are typed to this enum, so +`topic_relevance_llm` is rejected with "validator not supported". + +Fix: add the value. The router and CRUD are already validator-agnostic, so this alone +enables create, list, get, patch, and delete. +```python +class LLMValidatorName(str, Enum): + TopicRelevance = "topic_relevance" + TopicRelevanceLLM = "topic_relevance_llm" # new + AnswerRelevanceCustomLLM = "answer_relevance_custom_llm" +``` + +### 4. Runtime binds the wrong config type + +`routes/guardrails.py:148` accepts a `topic_relevance` config for both topic +validators. After fix 3, a `topic_relevance_llm` validator could pull a +`topic_relevance` config, or the reverse. + +Fix: bind each validator to its own config name. +```python +expected = ( + LLMValidatorName.TopicRelevanceLLM + if isinstance(validator, TopicRelevanceLLMSafetyValidatorConfig) + else LLMValidatorName.TopicRelevance +) +if config.validator_name != expected: + raise HTTPException(400, f"Config '{config.id}' is for '{config.validator_name}', not '{expected.value}'") +``` + +### 5. `ValidatorUpdate` can corrupt a stored config + +`schemas/validator_config.py:24-31` lets a PATCH change `type`, but +`crud/validator_config.py:97-120` merges the old config JSON on top of the new type. +A `pii_remover` PATCHed to `ban_list` keeps stale PII keys. + +Fix: forbid changing `type` in PATCH, or clear `config` when `type` changes. + +--- + +## Should fix + +### 6. Whole chain runs against output data + +`routes/guardrails.py:68-72`: if any validator is `answer_relevance_custom_llm`, the +entire chain runs against `payload.output`. A mixed chain (input validator + output +validator) runs the input validators against the wrong data. + +Fix: split validators by stage and run each against its own data. + +### 7. Request log orphaned when resolution or create fails + +`routes/guardrails.py:63-67` creates the request log before `_resolve_validator_configs`. +Any error during resolution (or a DB error other than `ValueError` in `create`) leaves an +unfinished row. Fix 4 adds another raise here. + +Fix: wrap resolution and create so failures finalize the log with an error status. + +### 8. `prompt_schema_version` dropped for the LLM topic validator + +`TopicRelevanceLLMSafetyValidatorConfig` has a `prompt_schema_version` field +(`core/validators/config/topic_relevance_llm_safety_validator_config.py:15`), but +`routes/guardrails.py:155-157` only copies it onto the non-LLM variant. A stored version +on a `topic_relevance_llm` config is ignored. + +Fix: set it for the LLM variant too and fix the stale comment. If versioning isn't meant +to apply here, say so instead of dropping it silently. + +### 9. Blocking, uncached auth call per request + +`deps.py:76-85`: every multitenant request makes a blocking `httpx.get` to +`KAAPI_AUTH_URL`, using a threadpool worker each time. + +Fix: add an in-process TTL cache keyed on the credential hash; make the dep async. + +### 10. Only the first validator's metadata is returned + +`routes/guardrails.py:244-247` returns `next(...)`, so later validators' metadata is +dropped in a chain. + +Fix: aggregate metadata into a per-validator map. + +### 11. Auth call has no retry and one shared timeout + +`deps.py:79`: a single `timeout` covers all phases, and there's no retry. + +Fix: split connect and read timeouts; add one bounded retry on network error. + +### 12. PATCH can't change type-specific fields + +`ValidatorBase` allows extra fields, `ValidatorUpdate` forbids them +(`schemas/validator_config.py:11,25`). So PATCH can't update any type-specific field. + +Fix: allow extras on update, or expose a dedicated config dict. + +### 13. Docs don't cover errors or versioning + +`API_USAGE.md` documents the response shape but not the error messages, per-endpoint +status codes, or what counts as a breaking change. Consumers have to read the source. + +Fix: add an error list and a versioning note. + +### 14. No request id or tenant in logs + +`core/middleware.py:20-22` logs only method, path, status, and latency. + +Fix: accept `X-Request-ID` (generate if missing) and add it plus the tenant to log lines. + +--- + +## Minor + +### 15. Docs list only two LLM validators + +`API_USAGE.md:9, 349, 354-356, 398`, `docs/llm_prompt_configs/create_config.md`, and +`docs/llm_prompt_configs/list_configs.md` list only `topic_relevance` and +`answer_relevance_custom_llm`. Add `topic_relevance_llm` (plain-text scope prompt, same +as `topic_relevance`, no placeholder rules). + +### 16. `validator_configs.list` has no pagination + +`routes/validator_configs.py:45-57` has filters but no offset/limit, unlike the ban-list +and prompt-config lists. + +### 17. `health_check` returns a raw bool + +`routes/utils.py:11` returns `True`, breaking the "all endpoints return `APIResponse`" +statement in `API_USAGE.md:35-46`. Wrap it or document the exception. + +### 18. `type=` shadows the builtin + +`routes/validator_configs.py:52`: rename the query param to `validator_type`. + +### 19. Duplicate error extraction + +`routes/guardrails.py:267-271` and `277-280` both call `_extract_error_from_guard`. +Consolidate inside `_finalize`. + +### 20. `suppress_pass_logs` has two different defaults + +Route defaults `True` (`guardrails.py:53`), helper defaults `False` (`guardrails.py:187`). +Make them agree. + +### 21. Docstring says it returns a value but returns None + +`routes/guardrails.py:113-122`: `_resolve_validator_configs` returns `None`. + +### 22. `_redact_input` is fragile + +`routes/guardrails.py:314-316` splits on `":\n\n"` then does a plain `str.replace`. Works +today, breaks if the input contains those characters structurally. + +### 23. POSTs return 200 not 201 + +All POST routes. Cosmetic. + +### 24. `response_model_exclude_none` set on one route only + +`routes/guardrails.py:47`. Standardize across endpoints. + +### 25. Delete does get-then-delete + +`routes/llm_prompt_configs.py:109-121`: two round-trips. Only matters if hot. + +### 26. `response_id` is a server UUID, not a provider id + +`routes/guardrails.py:196`. If a provider response id is added later, keep them as +separate columns. + +### 27. Commented-out import + +`api/main.py:18-19`: delete the commented `private.router` import. + +### 28. Document that the auth token must be random + +`_hash_token` (`deps.py:29-30`) is unsalted SHA-256 — fine only because `AUTH_TOKEN` is a +high-entropy secret. Note that requirement so no one sets a memorable string. + +### 29. 404 masks "wrong tenant" vs "missing" + +`crud/validator_config.py:79-95` (and `crud/llm_prompt_config.py:44-59`) return the same +404 for both. Correct for isolation — add a comment so a refactor doesn't split them. diff --git a/docs/validators/answer-relevance.md b/docs/validators/answer-relevance.md index f4f18664..400da71c 100644 --- a/docs/validators/answer-relevance.md +++ b/docs/validators/answer-relevance.md @@ -85,7 +85,9 @@ The default prompt works well for general use, but you may want domain-specific ```bash # Create a custom prompt POST /api/v1/guardrails/answer_relevance_prompts/ -Authorization: X-API-KEY your-api-key +Authorization: Bearer +X-ORGANIZATION-ID: 1 +X-PROJECT-ID: 101 { "name": "Healthcare Relevance Check", diff --git a/docs/validators/ban-list.md b/docs/validators/ban-list.md index 09339b5c..6eb0a509 100644 --- a/docs/validators/ban-list.md +++ b/docs/validators/ban-list.md @@ -60,7 +60,9 @@ Stored ban lists are scoped per `organization_id` + `project_id`. Use the manage ```bash POST /api/v1/guardrails/ban_lists/ -Authorization: X-API-KEY your-api-key +Authorization: Bearer +X-ORGANIZATION-ID: 1 +X-PROJECT-ID: 101 { "name": "Competitor Terms", diff --git a/docs/validators/topic-relevance.md b/docs/validators/topic-relevance.md index e00e0f5f..a7523ea6 100644 --- a/docs/validators/topic-relevance.md +++ b/docs/validators/topic-relevance.md @@ -44,7 +44,9 @@ Topic relevance requires a stored configuration that defines the scope of your a ```bash POST /api/v1/guardrails/topic_relevance_configs/ -Authorization: X-API-KEY your-api-key +Authorization: Bearer +X-ORGANIZATION-ID: 1 +X-PROJECT-ID: 101 { "name": "Healthcare Assistant Scope", From 3c1f8a01804cd6f87498e59981e9b329f3bd857b Mon Sep 17 00:00:00 2001 From: Prajna1999 Date: Mon, 17 Aug 2026 10:42:39 +0530 Subject: [PATCH 02/11] test cases --- backend/.claude/agents/senior-engineer.md | 93 +++++++++++ backend/.claude/agents/test-writer.md | 128 +++++++++++++++ backend/.claude/commands/pr-review.md | 146 +++++++++++++++++ backend/.claude/conventions/celery.md | 82 ++++++++++ backend/.claude/conventions/crud.md | 76 +++++++++ backend/.claude/conventions/error-handling.md | 115 ++++++++++++++ backend/.claude/conventions/migration.md | 76 +++++++++ backend/.claude/conventions/model.md | 108 +++++++++++++ backend/.claude/conventions/route.md | 84 ++++++++++ backend/.claude/conventions/service.md | 103 ++++++++++++ backend/.claude/hooks/wiki-update.sh | 14 ++ backend/.claude/settings.json | 16 ++ backend/.claude/skills/grill-me/SKILL.md | 10 ++ backend/.claude/skills/srd-creator/SKILL.md | 150 ++++++++++++++++++ .../skills/srd-creator/reference/srd-guide.md | 122 ++++++++++++++ .../srd-creator/reference/srd-template.md | 140 ++++++++++++++++ .../srd-creator/scripts/render-diagram.sh | 19 +++ backend/.claude/skills/start-prd/SKILL.md | 63 ++++++++ backend/app/api/deps.py | 60 ++++--- backend/app/core/config.py | 19 ++- backend/app/crud/validator_config.py | 13 +- backend/app/schemas/validator_config.py | 32 ++-- backend/app/tests/test_config.py | 73 +++++++++ backend/app/tests/test_deps_auth.py | 26 ++- backend/app/tests/test_validate_with_guard.py | 72 ++++----- backend/app/tests/test_validator_configs.py | 26 ++- docs/auth-authz-spec.md | 61 +++++++ 27 files changed, 1846 insertions(+), 81 deletions(-) create mode 100644 backend/.claude/agents/senior-engineer.md create mode 100644 backend/.claude/agents/test-writer.md create mode 100644 backend/.claude/commands/pr-review.md create mode 100644 backend/.claude/conventions/celery.md create mode 100644 backend/.claude/conventions/crud.md create mode 100644 backend/.claude/conventions/error-handling.md create mode 100644 backend/.claude/conventions/migration.md create mode 100644 backend/.claude/conventions/model.md create mode 100644 backend/.claude/conventions/route.md create mode 100644 backend/.claude/conventions/service.md create mode 100755 backend/.claude/hooks/wiki-update.sh create mode 100644 backend/.claude/settings.json create mode 100644 backend/.claude/skills/grill-me/SKILL.md create mode 100644 backend/.claude/skills/srd-creator/SKILL.md create mode 100644 backend/.claude/skills/srd-creator/reference/srd-guide.md create mode 100644 backend/.claude/skills/srd-creator/reference/srd-template.md create mode 100755 backend/.claude/skills/srd-creator/scripts/render-diagram.sh create mode 100644 backend/.claude/skills/start-prd/SKILL.md create mode 100644 backend/app/tests/test_config.py diff --git a/backend/.claude/agents/senior-engineer.md b/backend/.claude/agents/senior-engineer.md new file mode 100644 index 00000000..777a23f6 --- /dev/null +++ b/backend/.claude/agents/senior-engineer.md @@ -0,0 +1,93 @@ +--- +name: senior-engineer +description: Use for any code-writing in kaapi-backend's application layers — model, crud, service, route — plus the migration and Celery task that a change drags along. Walks the dependency spine model -> crud -> service -> route in ONE context, lazy-loading each layer's convention doc, and writes the matching Alembic migration and Celery task in the same context. Does NOT write tests (test-writer). +tools: Read, Edit, Write, Bash, Grep, Glob +model: opus +--- + +You write application code for kaapi-backend across the layers **model → crud → service → route**, +plus the **migration** a schema change requires and the **Celery task** an async/background change +requires. You handle both single-layer edits ("add a filterable column", "add one endpoint over +existing data") and full features that walk the whole spine — same agent, same conventions, scoped +to what the task needs. + +## How you work + +1. **Scope first.** Decide which layers the task actually touches: + - New entity → model → crud → service → route, plus a migration. + - New endpoint over existing data → often just service + route. + - New query / filter → often just crud (+ route to expose it). + - One-field model change → just model + migration. + - Heavy/retryable/background work (LLM call, large doc transform, anything with timeouts) → a + Celery task in `app/celery/tasks/` delegating to a service. + + **Only build the layers the task needs.** Don't spin up the full spine for a one-layer change. + +2. **Walk the spine in dependency order:** model → crud → service → route. Each downstream layer + depends on the one above it (route calls service calls crud uses model), so never build out of + order. Build straight through — no per-layer handoff, you ARE the next layer. + + Sequence the migration and Celery task around the spine: write the **migration after the model** + (it needs the final field set + the next rev-id), and the **Celery task after the service** it + delegates to (the task is a thin shim over that service). + +3. **Before writing each layer, Read its convention doc and apply it.** These are the single source + of truth for the layer's rules, canonical shapes, naming, and what-not-to-do: + - model → `.claude/conventions/model.md` + - crud → `.claude/conventions/crud.md` + - service → `.claude/conventions/service.md` + - route → `.claude/conventions/route.md` + - migration → `.claude/conventions/migration.md` + - Celery task → `.claude/conventions/celery.md` + + **Lazy-load:** Read a doc only when you're about to write that layer. Skip docs for layers the + task doesn't touch. + + **Cross-cutting:** when a service or crud function wraps an external SDK or raw HTTP call, also + Read `.claude/conventions/error-handling.md` and apply its source-tagged, fault-based pattern. + +4. **Before writing a helper, check it doesn't already exist.** Anything generic — wrapping an + external SDK or its error handling, building/parsing a domain payload, hitting cloud storage, + loading config — usually has a canonical version already, and it rarely lives in a neighbor file. + Grep the whole tree by behavior (the SDK class, the model type, the storage call), not just the + directory you're writing in. Call the existing function; add a new helper only once you've + confirmed none fits. + +5. **Stay out of tests.** Do NOT write tests — that's the `test-writer` agent. Note what it should + cover and which HTTP boundaries it must mock; don't build it. + +## Cross-cutting rules (apply at every layer) + +- Type hints on every parameter and return. `-> Any` is not an annotation. +- Logging: every line starts with `[function_name]`. Mask secrets with `mask_string` from `app.utils`. +- `uv` is the runner, not `pip`. +- No magic values — extract repeated literals to constants / `Enum` / settings. +- Comments explain _why_, not _what_. Don't restate what the code already says or pad docstrings with + obvious recaps — a comment earns its place only by adding non-obvious context (rationale, gotcha, + constraint). When in doubt, delete it. No decorative/banner comments either — no full-width + separator rules (`# ──────`, `# =====`) or section-divider headers. Structure code with functions + and blank lines, not ASCII dividers. + - One line, not two, when one carries the why. Each extra sentence must add non-obvious info, not + restate the consequence: + ```python + # bad — second line restates what "too low" already implies + # Room for a full prompt rewrite plus structured JSON wrapper. A low cap risks + # truncating the rewrite mid-output, which yields malformed (unparseable) JSON. + # good + # Headroom for a full prompt rewrite + JSON wrapper; too low truncates into invalid JSON. + ``` +- Naming: `list_*` plural fetch, `get_*` singleton; `Enum` suffix on enum classes. +- Timestamps are `inserted_at` / `updated_at`, never `created_at`. + +## After building + +Emit ONE summary (not one per layer): + +1. The layers you built and the key signatures added (model variants; crud/service/route function + signatures + paths; Celery task name + queue/priority; migration rev-id). +2. Any new `Permission` enum value, domain exception, or `.env.example` / settings key the user must add. +3. If you wrote a migration, state the rev-id and remind the user to run + `uv run alembic upgrade head` (and that downgrade was exercised). If a model field changed but you + did NOT write the migration, say so and give the next rev-id + (`ls backend/app/alembic/versions/ | sort | tail -1` → that number + 1, zero-padded). +4. What `test-writer` should cover, and any external HTTP boundary it must mock. diff --git a/backend/.claude/agents/test-writer.md b/backend/.claude/agents/test-writer.md new file mode 100644 index 00000000..c37ac768 --- /dev/null +++ b/backend/.claude/agents/test-writer.md @@ -0,0 +1,128 @@ +--- +name: test-writer +description: Use when writing or updating tests under `app/tests/` for kaapi-backend. +tools: Read, Edit, Write, Bash, Grep, Glob +model: opus +--- + +You write pytest tests for kaapi-backend. Tests live under `app/tests/` and mirror the `app/` structure (`api/`, `crud/`, `services/`, `core/`, `models/`). + +If you're unfamiliar with the domain under test, read its `docs/wiki/modules/*.md` page (via `docs/wiki/INDEX.md`) first — it lists the domain's routes, tables, services, and external boundaries (what to mock) in ~40 lines, cheaper than exploring. + +## Workflow — red before green + +Every test runs a failing-first loop — never write one that hasn't been seen to fail. + +1. **Write the test first, run it — confirm it fails (red)** for the _expected_ reason + (assertion mismatch / missing behavior), not an import error, fixture typo, or wrong path. +2. **Passes on first run? Treat it as suspect** — likely tautological or not exercising the new + code. Tighten until it fails, or say so explicitly; a green-on-first-run test proves nothing. +3. **Make it pass (green)** with minimal code — for existing code the fix is in the test; for new + behavior, iterate until the implementation satisfies it. +4. **Rerun the focused subset** (`uv run pytest app/tests/ -k -x`), confirm green, and + report the red→green transition in your summary. + +**Refactoring is not part of the loop.** Red → green is write-test → make-it-pass, nothing more — +cleanup belongs to `/pr-review`. + +**Vertical slices, not horizontal.** One test → one implementation → repeat, each test a **tracer +bullet** shaped by what the last cycle taught. Never write all tests first, then all implementation — +bulk tests verify _imagined_ behavior and go insensitive to real changes. + +## Hard rules + +These double as review triggers: when an existing test already violates one, flag it explicitly — don't silently fix. + +- **Real DB only — never mock the database session.** `conftest.py` provides a transactional `db` fixture that rolls back after each test. Use it. Mocking is fine only for **external** systems (OpenAI, Langfuse, S3, webhooks). Database = real. +- **Use the factory pattern from `app/tests/utils/`.** Helpers like `create_random_user`, `random_email`, `random_lower_string` exist for a reason. No hardcoded `organization_id=1` / `project_id=1` — use the auth-context fixtures. No inline `User(...)` with magic ids. +- **Behavior, not implementation.** Assert what the caller observes (response status, body, DB state after the call) — not which internal function was called. The sharp tell of a bad test: it breaks under a pure refactor when behavior hasn't changed. +- **No tautological asserts.** Two forms: (a) `assert mock.called` with no behavioral check — assert observable state instead; (b) the assert recomputes the expected value the same way the code does, so it passes by construction and can never disagree with the implementation. Pull the expected value from an independent source (worked example / spec). + ```python + # bad — asserts the formula against itself + assert discounted_price(p, rate) == p - p * rate + # good — expected value from an independent source (worked example / spec) + assert discounted_price(100, 0.2) == 80 + ``` +- **Correct status codes.** A POST that creates returns 201, a DELETE 204. Don't rubber-stamp `assert resp.status_code == 200` where the verb demands otherwise. +- **Seed randomness.** If a test uses `random.random()` or similar, seed it. Random emails go through `random_email()` so they're collision-free and human-readable. +- **Bug fix → regression test.** A bug fix arriving without one → say so and write the test that fails before the fix, then confirm the fix turns it green. +- **Comments earn their place — _why_, not _what_.** A test name and its asserts already say what runs; a comment/docstring that restates them is noise. Comment only the non-obvious: why a boundary is mocked, what a sentinel means, a gotcha. When in doubt, delete it. + - **No banner/divider comments.** No `# ── constants ──────`, no `# ── 1. Happy path ──`. Group with `class Test...:` and blank lines, not ASCII rules. + - Restating-the-assert docstring → drop or tighten: + ```python + # bad — docstring just narrates the assert + def test_empty_api_key_returns_500(...): + """Storage succeeds but the key check inside the LLM step fails with 500.""" + # good — name says the what; comment only the non-obvious setup + def test_empty_api_key_returns_500(...): + monkeypatch.setattr(settings, "ANTHROPIC_API_KEY", "") # force the missing-key branch + ``` + +## Fixtures available (from `conftest.py`) + +- `db: Session` — transactional, function-scoped. Use this in CRUD and service tests. +- `client: TestClient` — function-scoped, has `db` already overridden as the dependency. Use this in API tests. +- `superuser_token_headers: dict[str, str]` — JWT auth headers for the superuser. +- `normal_user_token_headers: dict[str, str]` — JWT auth headers for a normal user. +- `superuser_api_key_header` / `user_api_key_header: dict[str, str]` — API key auth headers. +- `superuser_api_key` / `user_api_key: TestAuthContext` — full auth context if you need org/project ids. +- `seed_baseline` — session-scoped autouse fixture; you do not call it manually. + +## Test factory utilities (`app/tests/utils/`) + +- `user.py`: `create_random_user(db)`, `authentication_token_from_email(...)` +- `auth.py`: `get_superuser_test_auth_context(db)`, `get_user_test_auth_context(db)`, `TestAuthContext` +- `utils.py`: `random_email()`, `random_lower_string()`, `get_superuser_token_headers(client)` +- `openai.py`, `llm.py`, `llm_provider.py`, `collection.py`, `document.py` — per-domain factories. **Read these before writing new factories.** If a factory exists, use it; if not, add one to the same file before littering tests with bespoke setup. + +## Canonical patterns + +### API test (route) + +```python +def test_create_user_route( + client: TestClient, + superuser_token_headers: dict[str, str], + db: Session, +): + email = random_email() + password = random_lower_string() + resp = client.post( + f"{settings.API_V1_STR}/users/", + headers=superuser_token_headers, + json={"email": email, "password": password}, + ) + assert resp.status_code == 201 + body = resp.json()["data"] + assert body["email"] == email + # DB state, not just response + assert crud.get_user_by_email(session=db, email=email) is not None +``` + +### CRUD test + +```python +def test_get_user_by_email_returns_none_when_missing(db: Session): + assert crud.get_user_by_email(session=db, email=random_email()) is None +``` + +### Service test (with external HTTP mocked) + +```python +def test_send_invite_email_calls_provider(db: Session, monkeypatch): + sent: list[dict] = [] + monkeypatch.setattr("app.utils.send_email", lambda **kw: sent.append(kw)) + service_under_test.invite_user(session=db, email=random_email()) + assert len(sent) == 1 +``` + +Mock the external boundary (the email send), not the DB. + +## Asserting on `APIResponse` wrapper + +Every route wraps the body in `APIResponse[T]`. Tests should pull `body = resp.json()["data"]` and assert on that, not `resp.json()` directly. For list routes, read `app/utils.py` (defines `APIResponse`) for the wrapper shape — don't guess the count/data keys. + +## Running tests + +- All tests: `uv run bash scripts/tests-start.sh` +- A subset (when iterating): `uv run pytest app/tests/api/test_users.py -k -x` diff --git a/backend/.claude/commands/pr-review.md b/backend/.claude/commands/pr-review.md new file mode 100644 index 00000000..6d5c6483 --- /dev/null +++ b/backend/.claude/commands/pr-review.md @@ -0,0 +1,146 @@ +--- +description: Review the current branch's diff against main using kaapi-backend conventions and a personal review checklist. +--- + +You are reviewing the current branch's local diff against `main` in this FastAPI + PostgreSQL + SQLModel + Alembic + Celery service. + +## Gather the diff + +Refresh the remote baseline, then pin the base so every run reviews the same file set against the latest `main` — an ambiguous or stale base is why the same branch yields 13 files one run and 39 the next. + +1. **Pull this branch** — `git pull origin $(git rev-parse --abbrev-ref HEAD)` — fast-forward local to the latest pushed commits so the review runs on current work, not a stale HEAD. If the pull fails (no upstream, diverged, conflicts), stop and report — don't review stale code silently. +2. **Fetch the latest remote `main`** — `git fetch origin main`. The baseline is `origin/main` (true GitHub main), not the stale local `main` ref. No checkout, no rebase — the tree stays on your branch. +3. `BASE=$(git merge-base origin/main HEAD)` — pin the merge-base SHA once; use it for every command below so the scope can't drift between runs. +4. `git diff $BASE...HEAD --stat` for the file/line counts, `git diff $BASE...HEAD` for the review, `git log $BASE..HEAD --oneline` for the commits. +5. **Separate this branch's own work from merged-in commits.** A branch that merged another open PR (e.g. #956) carries that PR's files into the diff and inflates scope. Scan `git log $BASE..HEAD --oneline` for merge commits / unrelated PR numbers; if found, review only this branch's commits and note at the top: "Excluded N files from merged-in # — review under its own PR." Never silently review two features as one. +6. State the resolved base SHA + file count at the top of the review so a second run is comparable to the first. +7. `Read` full files at non-trivial change sites — judge in context, not from hunks. +8. `Grep` for duplication, reused literals, unused symbols. + +## What to check + +### Conventions +- Logs prefixed with `[function_name]`, levels matched to severity (`info`/`warning` for expected events, `error` only for genuine failures). +- Route descriptions via `description=load_description("/.md")`, never inline strings. `response_model` set; no untyped `dict` responses. +- DB columns get `sa_column_kwargs={"comment": "..."}` when purpose isn't obvious (status fields, JSON, foreign keys). +- Type hints on every parameter and return. `-> Any` is not an annotation — narrow it or drop it. +- `uv` is the runner, not `pip`. + +### Layering & duplication +- `HTTPException` belongs in routes, not `crud/`. CRUD returns data / `None` / raises domain errors. Third-party network calls also don't belong in `crud/` — that's DB-only. +- Routes thin, business logic in `services/`, DB access in `crud/`. +- Grep before approving: if a JWT pair, callback sender, or auth helper is duplicated across 2+ files, push for a single util. Before suggesting "extract a helper", confirm one doesn't already exist — the touched domain's `docs/wiki/modules/*.md` page lists its existing services/crud/utils, use it as the grep starting point. +- New table in the diff → check `docs/wiki/domain-map.md`: does an existing entity/flow already cover it? Ask for the justification if the page suggests reuse. +- Look for simplification — three near-identical functions (`_execute_text/_pdf/_image`) often collapse into one. + +### Magic values & config +- Repeated literals (provider names, status values, `"custom_id"`, route paths, magic numbers like `1_000_000`) → constant / Enum / config. Name the other location where it's reused. +- Hardcoded operational config (worker counts, model names, token limits, timeouts, retry counts) → env / config. Defaults lean toward smallest/cheapest, not most expensive. +- Dict crossing function boundaries where a Pydantic model belongs. + +### Naming +- `list_*` for plural fetch, `get_*` for singletons. Verb plurality matches return shape (`load_secrets_from_aws` if it returns multiple). Suffix `Enum` on enum classes. snake_case funcs/vars, PascalCase classes, UPPER_SNAKE constants. +- No leftover names from copy-paste of a sibling file. +- Alphabetical / grouped imports and route registrations, consistent with the rest of the repo. PEP 8 import order (stdlib first). + +### Error handling +- `try` wraps *only* the line(s) that throw. Bloated try blocks are bugs waiting to happen. +- Nested `try/except`: trace the path. A raised `HTTPException(404)` caught by an outer `except Exception` becomes `500` and the intended status is lost. +- Concrete exception types, not `except Exception:` / `except:`. +- Status codes: `422` for "wrong shape" (bad CSV) over `400`; `409` for conflicts; `201`/`204` on create/delete. +- Validation at the Pydantic layer or via explicit ownership checks (`organization_id`, `project_id` belong to caller). `assert` is not validation in production code. +- Errors to the client must not leak internals (hashes, stack traces, paths, credentials). + +### Concurrency & data integrity +- "Compute next / check then write" patterns (`MAX(version)+1`, find-by-name-then-insert, increment counter) are races. Push for unique constraints, transactions, or DB-side sequences. +- JSON columns are fine for opaque metadata, not for fields you'll filter or sort on — push for first-class columns. +- Cross-codebase consistency: timestamp names (`created_at` vs `inserted_at`), HTTP code choices, route shape (`/list` suffix is redundant). + +### API & response design +- Can the caller use this field? Is `data.id` the id of *what*? Are list responses missing fields the detail response populates (`signed_url`)? +- Swagger is a deliverable — generated docs must be unambiguous to an external client. + +### FastAPI +- Router prefixes/tags/versioning consistent with the rest of `app/api/`. +- `Depends` correctly wired for auth, db, current user/org/project. +- Background tasks vs Celery: short fire-and-forget → `BackgroundTasks`; heavy or retryable → Celery in `app/celery/tasks/`. + +### Async correctness +- `async def` doesn't make blocking calls (sync DB drivers, `requests`, `time.sleep`, sync file I/O). +- `await` only on coroutines. CPU-bound work → threadpool / Celery / sync route. + +### Security +- No secrets / `.env` changes committed. +- Every endpoint has the right `Depends` and verifies `organization_id` / `project_id` ownership. +- API keys / hashes never returned raw — mask after a known prefix. +- **SSRF**: any URL the server fetches (callbacks, webhooks) needs scheme + private-IP validation, optionally an allowlist. +- File uploads enforce max size and content-type allowlist — required, not optional. +- DB / shell input parameterized (no f-string SQL, no `shell=True` with user input). + +### Performance +- N+1: loops issuing queries per row → `selectinload` / `joinedload` / batch fetch. +- New filter / FK columns → `index=True`. Pagination on list endpoints. + +### Pythonic idioms (small but recurring) +- Generators over materialized lists when iterated once. +- No redundant `str()` in f-strings; `x is None` over `not x` when None is what you mean; drop unneeded `return None`; no brackets when joining (`", ".join(p.value for p in Provider)`). +- Imports inside functions are a smell — usually a cycle that should be broken structurally. +- `setattr` on Pydantic / SQLModel objects → use `model_copy(update={...})` or `dataclasses.replace`. + +### Edge cases +- For each new path, ask: input is `None`? list is empty? upstream call fails partway? what does the downgrade migration leave behind? + +### Migrations (treat as carefully as code) +- `--rev-id` = latest existing + 1; check `app/alembic/versions/`. +- New tables include timestamps + indexes on FKs / common filters; nullability correct; no skipped seed IDs. +- `downgrade()` implemented and reversible — empty downgrade is a blocker. +- Backfills live in `upgrade()` SQL, not a separate manual script. + +### Wiki freshness +- Diff adds/removes a route, table, model, service, crud file, or Celery task but the matching `docs/wiki/modules/*.md` page (or `docs/wiki/domain-map.md` for entity/edge changes) is not updated in the same diff → flag it. Stale wiki misleads every future session. + +### Cleanup +- Unused imports / functions / params / dead paths. +- Empty `__init__.py` for non-existent modules, scaffolding files no other file imports — ask "what reason was this added?" +- Commented-out blocks and `print(...)` debug removed. + +### Tests +- New behavior → test. Bug fix → regression test. Non-trivial code with zero tests → say so. +- Tests assert behavior, not implementation. Flag tautological / framework-only tests. +- Use the `app/tests/` factory pattern — no hardcoded `organization_id=1`. +- Random values seeded. Mocks match the real library's interface — prefer purpose-built mock libs over hand-rolled stubs. + +## How to write the comments + +- Cite `path:line`. Show the suggested change inline when short. +- **Name the failure mode**, not just the smell. Weak: "this try/except is too broad." Strong: "the `try` wraps the DB call too — if it raises, the handler returns 500 instead of the 404 you intended." +- **Pair criticism with a concrete fix**: a snippet, a library link, or a path in the repo that already does it right. +- **Question form** for judgment calls ("Why hardcode four workers?"). **Direct form** for unambiguous bugs. +- Hedge ("maybe", "I think") on judgment, not on correctness. +- Defer non-blocking work explicitly: "Not for this PR — worth a follow-up." Don't let style nits gate a merge. +- Tag severity: `VERY IMPORTANT:` / `MUST:` for security / data-loss / contract breaks; `nit:` for tiny cleanups. Approval can carry caveats ("approved, please resolve X before merging") — never just rubber-stamp. + +## Output format + +``` +**Branch**: → main @ · files (+ / -) + +## Summary +<1–3 sentences: what the PR does + verdict (approve / approve with nits / request changes). Caveats on approval are fine.> + +## Blocking issues +- + +## Suggestions +- + +## Nits +- + +## What's done well +- +``` + +**One bullet per item, one section per item; drop any empty section; don't pad.** Use inline tags to mark domain when useful: `[migration]`, `[test]`, `[security]`, `[follow-up]`. Severity drives the section; the tag adds the domain colour. Use `[follow-up]` for cross-cutting work the author should track separately rather than fix in this PR; place it in `Suggestions`. + +Do not modify files during the review — read-only. diff --git a/backend/.claude/conventions/celery.md b/backend/.claude/conventions/celery.md new file mode 100644 index 00000000..f83413f0 --- /dev/null +++ b/backend/.claude/conventions/celery.md @@ -0,0 +1,82 @@ +# Celery task conventions (`app/celery/tasks/`) + +Authoritative conventions for Celery tasks in kaapi-backend. Tasks live in `app/celery/tasks/`. +Celery uses RabbitMQ as broker. There is a **single `default` queue** declared with +`x-max-priority=10`; tasks are ordered by a per-task `priority` (higher drains first, FIFO within +a band). Read `app/celery/tasks/job_execution.py` before writing — it shows the full pattern +(decorator + timeout + OTel propagation + delegation to a service). + +## Canonical decorator stack + +```python +@celery_app.task(bind=True, queue="default", priority=9) +@gevent_timeout(settings.CELERY_TASK_SOFT_TIME_LIMIT, "run_my_job") +def run_my_job(self, project_id: int, job_id: str, trace_id: str, **kwargs): + from app.services.my_domain.jobs import do_the_work # late import to avoid cycles + + _set_trace(trace_id) + return _run_with_otel_parent( + self, + lambda: do_the_work( + project_id=project_id, + job_id=job_id, + task_id=current_task.request.id, + task_instance=self, + **kwargs, + ), + ) +``` + +`_set_trace`, `_run_with_otel_parent`, and `gevent_timeout` already exist in this module / +`app/celery/utils.py` — reuse them, don't reinvent. + +## Priority choice — be explicit + +All tasks share the one `default` queue; set `priority` to place the task in the right band. Match +the bands already in use (see the `job_execution.py` module docstring): + +| Priority | When | +|---|---| +| `9` | User-blocking, interactive — LLM call / chain / response jobs | +| `6` | Fast evaluation | +| `2` | Default — doctransform, collections, STT/TTS evaluation, assessment | +| `1` | Notifications and other fire-and-forget background work | + +Pick the band that matches the task's user-facing urgency; document the choice in a comment if it's +not obvious. `task_inherit_parent_priority=True` is set, so a task enqueued from another task +inherits its priority unless you override it. + +## Hard rules + +- **`bind=True`** so you have `self` (the task instance) for retries, IDs, etc. +- **Always pass `queue="default"` and an explicit `priority`** — there is only one queue; the priority is what matters. +- **Pass `trace_id` explicitly** as a parameter and call `_set_trace(trace_id)` first thing. This wires `asgi_correlation_id` so logs from inside the task match the originating request. +- **Wrap the work in `_run_with_otel_parent(self, lambda: ...)`** so OpenTelemetry parent context propagates from the enqueueing process. +- **Delegate to a service.** The task body should be a thin shim over `app/services//`. No DB queries, no external HTTP, no business logic inside the task itself. +- **Late-import the service inside the function body** (as the canonical pattern does). Celery workers boot faster and you avoid model-import cycles. +- **Idempotency.** Celery will redeliver. Either: + - The work is naturally idempotent (`UPDATE ... SET status = 'done' WHERE id = X` — safe to repeat), OR + - The task checks a status flag before doing work (`if job.status == "completed": return`), OR + - The task uses a DB-level unique constraint to detect a duplicate run. + Tell the user which strategy applies; don't silently ship a non-idempotent task. +- **Retries.** If the task should retry on transient errors, declare it on the decorator (`autoretry_for=(httpx.HTTPError,), retry_backoff=True, retry_kwargs={"max_retries": 3}`). Don't catch-and-re-raise. +- **No blocking calls in `async def`.** Celery tasks are sync; never mix. +- **Timeouts:** rely on the `@gevent_timeout(...)` decorator (or Celery's `soft_time_limit` / `time_limit` on the decorator). External HTTP inside the service should also have its own timeout. + +## Registering the task + +- New task files under `app/celery/tasks/` must be imported somewhere Celery's autodiscover picks them up. Read `app/celery/celery_app.py` to see how imports/includes are configured; add your new module if it's not already covered by a wildcard. +- The Celery Beat schedule (recurring tasks) lives in `app/celery/beat.py`. If your task should run on a cron, add the entry there. + +## Logging + +- `logger = logging.getLogger(__name__)` at the module top. +- Every line is `logger.info(f"[task_name] Message | key: {value}")`. Log start, finish, and any retry. Mask PII / credentials with `mask_string` from `app.utils` — **never log raw payloads** if they may contain sensitive data. + +## What you DO NOT do + +- Don't write SQL or call CRUD directly from the task body. +- Don't call third-party APIs directly — that's in the service the task delegates to. +- Don't catch `Exception` and silently swallow — let it propagate so retries / failure handlers fire. +- Don't run `.delay(...)` from another Celery task to chain — use a Celery `chain` / `chord` / `group` primitive if you need orchestration, or have the service return a result the next task picks up. +- Don't use `time.sleep(...)` in a task to "wait for something" — schedule a follow-up task with `apply_async(countdown=...)`. diff --git a/backend/.claude/conventions/crud.md b/backend/.claude/conventions/crud.md new file mode 100644 index 00000000..c7064973 --- /dev/null +++ b/backend/.claude/conventions/crud.md @@ -0,0 +1,76 @@ +# CRUD conventions (`app/crud/`) + +Authoritative conventions for data-access functions in kaapi-backend. CRUD lives in `app/crud/` +and is the **only** place that talks directly to the database via SQLModel/SQLAlchemy. Read at +least one neighbor file in the same directory before writing — patterns for keyword-only args, +logger setup, and update functions are easier to copy than to invent. + +## Hard rules + +- **No `HTTPException` in this layer.** Ever. Return `None` for "not found" or raise a domain-specific exception (`ValueError`, a custom domain error) that the route translates. +- **No third-party HTTP calls.** No `httpx`, no `openai`, no boto3, no `requests`. If you find yourself reaching for one, this code belongs in `app/services/` — stop and tell the user. +- **No business logic.** Validation, orchestration, multi-step workflows → services. CRUD is "read this row, write this row, list these rows with filters". +- **No `print`. Use `logger`.** Module top: `import logging; logger = logging.getLogger(__name__)`. Every line is `logger.info(f"[function_name] Message | key: {value}")`. Mask sensitive values with `mask_string` from `app.utils` — e.g. `f"... | email: {mask_string(email)}"`. + +## Canonical function shape (from `app/crud/user.py`) + +```python +def create_user(*, session: Session, user_create: UserCreate) -> User: + db_obj = User.model_validate( + user_create, update={"hashed_password": get_password_hash(user_create.password)} + ) + session.add(db_obj) + session.commit() + session.refresh(db_obj) + logger.info(f"[create_user] User created | user_id: {db_obj.id}") + return db_obj + + +def get_user_by_email(*, session: Session, email: str) -> User | None: + statement = select(User).where(User.email == email) + return session.exec(statement).first() +``` + +Note: **keyword-only args** with `*` for anything more than `(session, id)`. Reduces argument-order bugs at call sites. + +## Naming + +- `get__by_` returns one or `None`. +- `list_(...)` returns a list (plural in the name matches plural in the return). +- `create_`, `update_`, `delete_`. +- `bulk__` for batch ops. +- No `_one` / `_all` suffixes — the name should already say it. + +## Performance + +- **N+1 is a bug.** If you `list_` and the caller is going to access a relationship attribute, eager-load with `selectinload(...)` or `joinedload(...)`. Read the call sites before deciding. +- **Index any column you filter on.** That's a model-layer concern (`.claude/conventions/model.md`), but if you write a `get__by_` and the column has no index, flag it. +- **Pagination.** Any function that could return more than ~100 rows takes `limit: int` and `offset: int` (or `cursor`) — not "we'll add pagination later". + +## Concurrency + +- "Compute next / check then write" is a race condition. `MAX(version) + 1`, find-by-name-then-insert, increment-counter — push for a unique constraint + handle `IntegrityError`, a transaction with row lock, or a DB-side sequence. Tell the user before silently shipping the racy version. +- Don't `session.commit()` inside a loop. Build the list, add all, commit once. + +## Error surface (what to raise, what to return) + +For CRUD that wraps an external SDK (e.g. `OpenAIVectorStoreCrud`), follow `.claude/conventions/error-handling.md` — log the source-tagged message first, then raise carrying the same string. + +| Situation | Return / raise | +|---|---| +| Not found | `return None` | +| Found multiple but exactly one was expected | `raise ValueError(...)` (or a domain exception) | +| FK violation, unique conflict | Let `IntegrityError` propagate; route will translate to 409 | +| Permission / ownership | Not your concern — route or service does the check. CRUD trusts its inputs. | + +## SQL injection / shell injection + +- Always use parameterized queries (SQLModel/SQLAlchemy does this for you with `where(...)`). **Never** f-string a value into raw SQL. +- If you must use `op.execute` or `text(...)`, use bound parameters. + +## What you DO NOT do + +- Don't import from `fastapi` (no `HTTPException`, no `Depends`). +- Don't import from `httpx`, `requests`, `openai`, cloud SDKs. +- Don't write `try/except` around the whole function — wrap only the specific call that throws. +- Don't catch `Exception` — use the concrete exception type. diff --git a/backend/.claude/conventions/error-handling.md b/backend/.claude/conventions/error-handling.md new file mode 100644 index 00000000..9f8af0ab --- /dev/null +++ b/backend/.claude/conventions/error-handling.md @@ -0,0 +1,115 @@ +# Error-handling conventions (external SDKs & raw HTTP) + +Authoritative convention for exception handling in any kaapi-backend code that calls an external SDK +or makes raw HTTP requests — LLM provider wrappers (`app/services/llm/providers/*.py`), CRUD that +calls external SDKs (`app/crud/**`), or any raw `requests`/`httpx` call. This is a cross-cutting +concern of the **service** and **crud** layers; apply it whenever you write or refactor those call +sites. + +**Mirror the closest reference file rather than reconstructing the structure from scratch** — they +are the source of truth for the full shape: + +| SDK shape | Reference file | +|---|---| +| Typed-per-status exception classes (OpenAI, Anthropic, Sarvam, ElevenLabs) | `app/services/llm/providers/oai.py`, `claude.py`, `sai.py`, `eai.py` | +| Status-code dispatch on one umbrella class (Gemini) | `app/services/llm/providers/gai.py` | +| Raw HTTP / no SDK (Vertex) | `app/services/llm/providers/gai_vertex.py` | +| CRUD that `raise`s instead of returning | `app/crud/rag/open_ai.py` (`OpenAIVectorStoreCrud.update`) | + +## Core principles + +1. **Every error path logs AND bubbles.** Never silently `return None, "..."` or silently `raise`. + Log first (with `exc_info=True` when an exception was caught), then return/raise. +2. **Tag every message by source.** + - `[KAAPI]` — our fault: input validation, missing config, response-shape checks, post-processing + failures, network timeouts/connection errors (we couldn't reach the provider), unexpected non-SDK errors. + - `[]` — what the provider returned: HTTP 4xx/5xx, malformed payloads, overload. + (`[OPENAI]`, `[GEMINI]`, `[ANTHROPIC]`, `[SARVAM]`, `[ELEVENLABS]`, `[VERTEX]`.) +3. **Descriptive prose, not bare codes.** State what failed, the likely cause, and what the caller + should do (retry, fix config, contact Kaapi). +4. **Always include `(code: …)`** — HTTP status (`code: 400`), exception class for network errors + (`code: ReadTimeout`), or provider status string (`code: 429 RESOURCE_EXHAUSTED`). +5. **Single source of truth for SDK errors.** The typed exception ladder lives in the outermost + dispatch (`execute()`), not duplicated inside each `_execute_`. Inner methods handle only + Kaapi-side validation and response-shape checks; SDK exceptions bubble up to `execute()`. +6. **Surface `request_id` / response_id** in the message or log tail wherever the SDK exposes one — + support escalation depends on it. + +## Log level — by fault, not by "did it fail" + +Pick the level by **who is at fault**. Failure alone doesn't justify `.error`; ops alerting fires on +`.error` rate, so everything-as-error buries real outages and everything-as-warning hides them. + +| Failure | Level | +|---|---| +| 4xx (400/401/403/404/409/413/422/425/429) — caller's fault | `warning` | +| Kaapi-side validation / response-shape checks | `warning` | +| 5xx (500/502/503/504/529) — provider broke | **`error`** | +| Network (`Timeout`, `ConnectionError`, SDK `APITimeoutError`/`APIConnectionError`) | **`error`** | +| Post-processing failure (audio convert, GCS upload, base64 decode) | **`error`** | +| Generic `Exception` catch-all | **`error`** | + +When one `except` covers both 4xx and 5xx (`APIStatusError`, `ApiError`, the non-OK branch of a raw +`_post()`), branch the level on `status_code` — and leave a one-line comment so nobody "simplifies" +it back to a single level: + +```python +# 5xx is provider-side (alert-worthy); 4xx is caller's fault (noise if alerted) +log = logger.error if status and status >= 500 else logger.warning +log(f"[.] {error_message} | provider={provider}, ...", exc_info=True) +``` + +Log tail always carries the ops join keys: `provider=`, the call type/method, `model=` (where +known), and `request_id`/response_id when available. `exc_info=True` on any path that caught a real +exception; omit it on pure validation that just builds a string. + +## Message templates (adjust verb/hint to the provider) + +| Code | Tag | Wording | +|---|---|---| +| 400 | `[]` | "Review your config and input payload — request shape, model, or content may be invalid." | +| 401 | `[]` | "Verify the API key is valid, not expired, and configured for this project." | +| 403 | `[]` | "The API key lacks access to the requested model/feature — check plan and key scopes." | +| 404 | `[]` | "Verify the model name and any referenced IDs are correct and available on your plan." | +| 409 | `[]` | "Request conflicts with current resource state — review concurrent requests before retrying." | +| 413 | `[]` | "Payload exceeds the provider's size limit — reduce prompt, shrink files, or use the Files API." | +| 422 | `[]` | "Provider rejected the payload — check input format and parameter values against the API spec." | +| 425 | `[]` | "Provider not ready yet — wait a few seconds and retry." | +| 429 | `[]` | "Hit the provider's rate/quota — wait ≥1 min and retry. Request a quota increase or contact Kaapi if persistent." | +| 500 | `[]` | "Typically transient — retry in a few seconds. If it persists, contact Kaapi." | +| 503 | `[]` | "Provider temporarily down or overloaded — retry in a few seconds." | +| 504 | `[]` | "Provider took too long — retry with a smaller payload." | +| 529 | `[ANTHROPIC]` | "Anthropic infrastructure overloaded — retry with exponential backoff." | +| Network timeout | `[KAAPI]` `(code: ReadTimeout/ConnectTimeout/APITimeoutError)` | "Request timed out — retry smaller. If persistent, contact Kaapi." | +| Network conn | `[KAAPI]` `(code: ConnectionError/APIConnectionError)` | "Network/DNS issue reaching provider — check connectivity. If persistent, contact Kaapi." | + +## Structure rules + +- **Typed-ladder ordering:** specific subclasses before parents, and `APITimeoutError` **before** + `APIConnectionError` (parent shadows child). Provider catch-alls (`APIStatusError`, + `Error`) last; branch by `status_code` inside them for 413/503/504/529. +- **Raw HTTP:** centralize mapping inside `_post()` — handle `Timeout`/`ConnectionError`/ + `RequestException` as `[KAAPI]`, parse the provider's error envelope, branch on `status_code`. The + caller just does `data, err = self._post(...)` then `if err: return None, err`. +- **CRUD that raises:** build `error_message`, log it, then `raise (error_message)` carrying + the same string. +- **Don't import provider exceptions from private modules** (`anthropic._exceptions`). If a class + isn't re-exported, branch on `status_code` inside the parent catch-all. + +## Don'ts + +- ❌ Return a bare validation error without logging it. +- ❌ HTTP-style codes for non-HTTP failures (tag a `ConnectTimeout` as `(code: ReadTimeout)`, not `408`). +- ❌ Duplicate the typed ladder inside each `_execute_*` AND in `execute()`. Pick `execute()`. +- ❌ Bare catch-all messages (`"Unexpected error occurred"`). Include `str(e)`, the operation, a "contact Kaapi" hint. +- ❌ `.warning` everything "because it failed", or `.error` everything (pager noise on every 429/401). Level by fault. +- ❌ `logger.error` sitting above the `if err:` block so it fires on success too. + +## Workflow + +1. Read the SDK's error module to enumerate its exception classes and status mappings. +2. Find every Kaapi-side error site — each `return None, ""` and each `raise` lacking a preceding `logger.*`. +3. If typed handlers exist in inner methods, move them up to `execute()` and let exceptions bubble. +4. Apply the tables: per site write tag + code + cause + remediation, then `logger.(..., exc_info=...)`, then return/raise. +5. Sanity-check ordering (subclasses first; `APITimeoutError` before `APIConnectionError`). +6. Syntax check: `python -c "import ast; ast.parse(open('').read()); print('OK')"`. diff --git a/backend/.claude/conventions/migration.md b/backend/.claude/conventions/migration.md new file mode 100644 index 00000000..88689ddc --- /dev/null +++ b/backend/.claude/conventions/migration.md @@ -0,0 +1,76 @@ +# Migration conventions (`app/alembic/versions/`) + +Authoritative conventions for Alembic migrations in kaapi-backend. The DB is PostgreSQL. +Migration files live in `app/alembic/versions/` and follow a strict numeric ordering. + +## Before writing anything + +1. `ls backend/app/alembic/versions/` and find the highest `NNN_*.py`. The new revision id is + **that number + 1**, zero-padded to 3 digits. (At time of writing the latest is `069` → next + is `070`; this number moves — always recompute from the directory, don't trust this line.) Do + not skip numbers. +2. If the change adds/removes/renames model fields, prefer + `alembic revision --autogenerate -m "..." --rev-id ` (run via `uv`, not `pip`) and then + hand-edit. For data-only changes (backfills, FK additions), write the migration by hand. +3. Read a recent migration (the highest-numbered file in that dir) to match the project's + docstring style and operation patterns. + +## Required structure + +```python +""" + +Revision ID: NNN +Revises: +Create Date: YYYY-MM-DD HH:MM:SS.000000 + + +""" + +import sqlalchemy as sa +from alembic import op + +revision = "NNN" +down_revision = "" +branch_labels = None +depends_on = None + + +def upgrade(): + ... + + +def downgrade(): + ... +``` + +## Hard rules + +- **`downgrade()` is mandatory and must actually reverse `upgrade()`.** Empty `pass` is a blocker. If reverse is truly impossible (e.g., dropping then recreating a column loses data), document it explicitly in the docstring and `raise NotImplementedError("not reversible: ...")` in downgrade — but try harder first. +- **Backfills go inside `upgrade()` SQL** using `op.execute(...)`, not as a separate manual script. Same for cleanup of orphan rows before adding constraints. +- **New tables** must include: + - `id` primary key. + - `inserted_at` (NOT `created_at`) and `updated_at` timestamps. Server default `NOW()` for backfill; the column comment should describe what the timestamp tracks. + - `index=True` on every FK and every column commonly used in `WHERE` / `ORDER BY` / `GROUP BY`. + - `sa.Column(..., comment="...")` for any column with a non-obvious purpose, matching the model's `sa_column_kwargs={"comment": "..."}`. +- **Adding a non-nullable column to a populated table**: add as nullable with `server_default=sa.text("...")`, backfill, then `ALTER COLUMN ... SET NOT NULL` and optionally drop the server default if the model has a `default_factory`. See a recent migration for the exact pattern. +- **Adding a unique constraint to a populated table**: dedupe first (`op.execute("DELETE ... USING ...")`), then `CREATE UNIQUE INDEX ... CONCURRENTLY` and `ALTER TABLE ... ADD CONSTRAINT ... USING INDEX` so the build doesn't take `AccessExclusiveLock`. +- **Index builds on large tables**: use `CREATE INDEX CONCURRENTLY` via raw `op.execute(...)`. Note that CONCURRENTLY requires the migration to NOT run inside a transaction — set `transactional_ddl = False` if needed, or split the index build into its own migration. + +## What to verify before declaring done + +- `grep -n "down_revision" backend/app/alembic/versions/*.py` shows your `revision` is unique and the chain `... → ` is intact. +- The model file matches: every new model field has a corresponding column in your migration with the same name, type, nullability, comment, and index. Conversely every column you add exists in the model. +- For renames: update **all references** — model, CRUD queries, services, tests, fixtures, seed data. A migration that renames `created_at` → `inserted_at` without updating callers is a half-finished change. +- Run `uv run alembic upgrade head --sql` (offline) to verify the migration compiles. If schema is uncertain, suggest the user run `uv run alembic upgrade head` then `uv run alembic downgrade -1` then `uv run alembic upgrade head` to exercise both paths against a real DB. + +## What you DO NOT do + +- Don't add `HTTPException`, route handlers, business logic, or external HTTP calls in a migration. +- Don't write `print(...)` debug statements — use the migration docstring. If a long backfill genuinely needs progress logging, use `logging.getLogger("alembic.runtime.migration")` with the standard `[] ...` prefix. +- Don't skip the docstring. The docstring is what someone debugging at 2am will read. +- Don't pad the docstring either — keep it to the non-obvious WHY. A step-by-step recap of the `op.*` calls (which the reader can already see in `upgrade()`) is noise. Same for inline comments: explain a tricky backfill or lock-avoidance trick, not `# add the column`. +- Don't import from `app.models` to "save typing" — migrations must be model-independent so they still run after the model file is later renamed/deleted. diff --git a/backend/.claude/conventions/model.md b/backend/.claude/conventions/model.md new file mode 100644 index 00000000..7ad3e53e --- /dev/null +++ b/backend/.claude/conventions/model.md @@ -0,0 +1,108 @@ +# Model conventions (`app/models/`) + +Authoritative conventions for SQLModel entities in kaapi-backend. Models live in `app/models/` +and follow a strict house style. Read `app/models/user.py` (the canonical reference) before +writing — it shows the full Base/Create/Update/Public layering. + +## Required structure for a new entity `Foo` + +```python +class FooBase(SQLModel): + """Shared fields between create, update, public, and table.""" + name: str = Field( + max_length=255, + sa_column_kwargs={"comment": "Human-readable name shown in the UI"}, + ) + status: FooStatusEnum = Field( + sa_column_kwargs={"comment": "Lifecycle state: pending, active, archived"}, + ) + + +class FooCreate(FooBase): + """Payload accepted on POST.""" + # only fields the client must / may supply on create + + +class FooUpdate(SQLModel): + """Payload accepted on PATCH — every field optional.""" + name: str | None = Field(default=None, max_length=255) + status: FooStatusEnum | None = None + + +class Foo(FooBase, table=True): + """DB row.""" + id: int = Field( + default=None, + primary_key=True, + sa_column_kwargs={"comment": "Unique identifier"}, + ) + organization_id: int = Field( + foreign_key="organization.id", + nullable=False, + index=True, + ondelete="CASCADE", + sa_column_kwargs={"comment": "Tenant org that owns this foo"}, + ) + inserted_at: datetime = Field( + default_factory=now, + nullable=False, + sa_column_kwargs={"comment": "Timestamp when the foo was created"}, + ) + updated_at: datetime = Field( + default_factory=now, + nullable=False, + sa_column_kwargs={"comment": "Timestamp when the foo was last updated", "onupdate": now}, + ) + + +class FooPublic(FooBase): + """Shape returned by the API.""" + id: int + inserted_at: datetime + updated_at: datetime + + +class FoosPublic(SQLModel): + data: list[FooPublic] + count: int +``` + +## Hard rules + +- **Every `Field(...)` gets `sa_column_kwargs={"comment": "..."}`.** This is schema documentation that non-developers read directly from the DB. Especially mandatory for: + - status / type / kind fields → list the valid values in the comment. + - JSON columns → describe the expected structure. + - Foreign keys → name the relationship. + - Anything whose purpose isn't obvious from the name. + - The comment must **add information**, not echo the field — `comment="The user's email address"` on an `email` field is noise. State the non-obvious: valid values, units, format, the relationship, or a constraint. If the only honest comment would restate the name, the field is self-documenting and a terse comment is fine — don't pad it. +- **Timestamps are `inserted_at` and `updated_at`.** NOT `created_at`. Migration 060 renamed the few legacy stragglers; do not reintroduce them. +- **Every FK has `index=True`** and an explicit `ondelete="CASCADE"` (or `SET NULL`, or `RESTRICT` — choose, don't omit). +- **Enums end in `Enum`.** `FooStatusEnum`, not `FooStatus`. snake_case for values when stored as strings. +- **JSON columns are for opaque metadata only.** If you'll ever `WHERE` / `ORDER BY` / index a field inside the JSON, lift it to a first-class column. Tell the user when you make this call. +- **Type hints use `|` unions** (Python 3.10+): `str | None`, not `Optional[str]`. + +## Naming + +- Class name = singular PascalCase: `Foo`, `Document`, `ApiKey`. +- Table name (default = lowercased class name) — let SQLModel infer unless you have a reason to override. +- Plural Public wrapper: `FoosPublic` (matches `UsersPublic`). +- Enum values: lowercase snake_case strings if string-valued. + +## Validation + +- Validate at the model layer with `Field(min_length=..., max_length=..., regex=..., ge=..., le=...)`. Don't push trivial validation into routes. +- `EmailStr` from `pydantic` for emails, not `str`. +- For long text (>255), set `max_length` to a concrete number; don't let it default to unbounded. + +## Indexes + +- `index=True` on any column you will filter, sort, or join on — every FK, every "lookup by X" column. +- For composite uniqueness (`(organization_id, name)`), add an `__table_args__ = (UniqueConstraint(...),)` block. Don't rely on app-level checks. + +## What you DO NOT do + +- Don't write the migration *in the model file* — the model is pure data shape. The matching migration is a separate file under `app/alembic/versions/`; write it (per `.claude/conventions/migration.md`) right after the model, using rev-id `NNN+1`. +- Don't import from `fastapi`, `app.crud`, or `app.services` in a model file. Models are leaf nodes. +- Don't use `setattr` on instances of these models. Use `model_copy(update={...})` or `sqlmodel_update(...)` (see `app/crud/user.py:update_user` for the pattern). +- Don't put a `_status` private attr or computed property that hits the DB — model files are pure data shape. +- Don't reuse `created_at` for a new column even if the user types it — gently correct to `inserted_at` and explain why. diff --git a/backend/.claude/conventions/route.md b/backend/.claude/conventions/route.md new file mode 100644 index 00000000..bfd50e7a --- /dev/null +++ b/backend/.claude/conventions/route.md @@ -0,0 +1,84 @@ +# Route conventions (`app/api/routes/`) + +Authoritative conventions for FastAPI endpoints in kaapi-backend. Routes live in +`app/api/routes/` and follow a strict house style. Read at least one neighbor file in the same +directory before writing — naming, import ordering, and helper imports are easier to copy than +to invent. + +## Required ingredients for every endpoint + +1. **APIRouter** with a `prefix` and `tags` consistent with siblings: + ```python + router = APIRouter(prefix="/assistant", tags=["Assistants"]) + ``` +2. **`response_model=APIResponse[T]`** on the decorator, never `dict`, never untyped. Use the actual Pydantic / SQLModel return type, not `Any`. +3. **`status_code=201` / `204`** on create / delete; default 200 is fine for GET / PATCH. +4. **`description=load_description("/.md")`** instead of inline docstrings for the swagger description. The matching markdown lives at `backend/app/api/docs//.md` — create it in the same change. +5. **`dependencies=[Depends(require_permission(Permission.XYZ))]`** when the endpoint is restricted. Pick from the existing `Permission` enum; if a new value is genuinely needed, add it and explain why. +6. **`SessionDep` and `AuthContextDep`** for db + current user/org/project. Never re-implement these. +7. **Return `APIResponse.success_response(...)`** at the end — never a raw model. +8. **Type hints on every parameter and the return.** Path/query params use `Annotated[..., Path(description=...)]` / `Annotated[..., Query(...)]`. + +## Canonical example (matches `app/api/routes/users.py:120`) + +```python +@router.get( + "/me", + description=load_description("users/get_me.md"), + response_model=APIResponse[UserPublic], +) +def read_user_me( + session: SessionDep, + current_user_dep: AuthContextDep, +) -> APIResponse[UserPublic]: + user = current_user_dep.user + return APIResponse.success_response(user) +``` + +## Swagger markdown + +For every new endpoint, create `backend/app/api/docs//.md`. Keep it terse — 1-3 short paragraphs. Cover what the endpoint does, any non-obvious behavior, and conditions under which optional fields appear (see `users/get_me.md` for the shape). + +## Layering rules + +- **Routes are thin.** Pull arguments, call a CRUD or service function, wrap the result. If your route has >20 lines of business logic, that logic belongs in `app/services//`. +- **HTTPException is allowed here.** Use it when the caller-facing error needs a specific HTTP code (`404`, `403`, `409`, `422`). Catch domain exceptions from CRUD/services and translate. +- **Never call third-party HTTP from a route.** That belongs in `app/services/`. +- **Never write SQL or `session.exec(select(...))` in a route.** Use a CRUD function. If one doesn't exist, write it in the `crud` layer (per `.claude/conventions/crud.md`) before wiring the route. + +## Status codes (the ones to get right) + +- `201` on POST create. +- `204` on DELETE (no body — return nothing, not `APIResponse.success_response(None)`). +- `409` on conflict (unique constraint violation, duplicate name). +- `422` on "wrong shape" / unparseable input (a malformed CSV, not just a missing required field — FastAPI emits 422 automatically for Pydantic validation). +- `400` for genuinely "bad client input that's not a shape issue". +- Don't return 200 + `{"error": "..."}` — raise `HTTPException` with the right code. + +## Ownership checks + +Anywhere a route accepts an `id` that could refer to data outside the caller's scope, **verify ownership** before returning data: + +```python +obj = get_thing_by_id(session, thing_id) +if obj is None or obj.organization_id != current_user.organization_.id: + raise HTTPException(status_code=404, detail="Thing not found") +``` + +Returning `404` instead of `403` for cross-tenant access is intentional — it doesn't leak existence. + +## Background work + +- Short fire-and-forget (send an email, write an audit log) → `BackgroundTasks`. +- Heavy or retryable (LLM call, large doc transform, anything with timeouts) → Celery task in `app/celery/tasks/`, written per `.claude/conventions/celery.md`. + +## Logging + +`logger = logging.getLogger(__name__)` at the module top. Every line is `logger.info(f"[handler_name] Message | key: {value}")`. Log non-trivial actions (creates, deletes, ownership failures) — don't spam `info` on every GET. Mask sensitive values with `mask_string` from `app.utils`. + +## What you DO NOT do + +- Don't add the route registration in `app/api/main.py` (or wherever the aggregator lives) without checking the existing alphabetical / grouped order. +- Don't return raw `dict`, `JSONResponse`, or untyped responses. +- Don't write SSRF-prone code: if the endpoint fetches a user-supplied URL, validate scheme + reject private/loopback IPs. +- Don't log API keys / hashes / passwords, even masked, in route handlers — services/security helpers do the masking. diff --git a/backend/.claude/conventions/service.md b/backend/.claude/conventions/service.md new file mode 100644 index 00000000..5a52cf76 --- /dev/null +++ b/backend/.claude/conventions/service.md @@ -0,0 +1,103 @@ +# Service conventions (`app/services/`) + +Authoritative conventions for business-logic services in kaapi-backend. Services live in +`app/services//` (auth, collections, doctransform, llm, evaluations, response, ...). +Services are where orchestration happens — they call CRUD for DB work and call external HTTP +libraries for third-party APIs. + +## What goes here (and what doesn't) + +| Belongs in `services/` | Belongs elsewhere | +| ------------------------------------------------------------------------ | ---------------------------------------- | +| `httpx` / `openai` / `boto3` calls | DB queries → `crud/` | +| Multi-step workflows (ingest a doc, then enqueue embedding, then notify) | Raw FastAPI deps → routes | +| Domain validation that spans multiple records | Single-field validation → Pydantic model | +| Cost / token accounting, retries with backoff | Long-running async work → Celery task | +| Translating CRUD return values into domain results | Schema definitions → models | + +## Hard rules + +- **External HTTP must validate URLs you fetch.** Any URL coming from a user (webhook target, callback URL, source link for ingestion) must be scheme-validated (`https://` only in prod) and reject private/loopback/link-local IPs. SSRF is a blocker, not a follow-up. +- **`try` wraps only the throwing line(s).** Big try blocks are the #1 source of swallowed 404s becoming 500s. +- **Concrete exception types** — `except httpx.HTTPStatusError as e:`, not `except Exception`. +- **Logger prefix:** every line is `logger.info(f"[function_name] Message | key: {value}")`. Mask credentials / API keys / hashes / emails with `mask_string` from `app.utils`. Log start + finish of external HTTP calls and any retry. +- **Keyword-only args** for anything more than `(session, x)`, matching the CRUD convention. +- **Type hints on every parameter and return.** No `-> Any`. + +## `HTTPException` in services + +It's acceptable here — `services/auth.py` raises `HTTPException` directly when the domain failure maps cleanly to an HTTP status. Use it sparingly; when the same service may be called from a Celery task or CLI, prefer a domain exception that the route layer translates. + +## Canonical example (from `app/services/auth.py`) + +```python +import logging +from datetime import timedelta + +from app.core import security +from app.core.config import settings +from app.utils import mask_string + +logger = logging.getLogger(__name__) + + +def create_token_pair( + user_id: int, + organization_id: int | None = None, + project_id: int | None = None, +) -> tuple[str, str]: + """Create an access token and refresh token pair.""" + access_token = security.create_access_token( + user_id, + expires_delta=timedelta(minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES), + organization_id=organization_id, + project_id=project_id, + ) + refresh_token = security.create_refresh_token( + user_id, + expires_delta=timedelta(minutes=settings.REFRESH_TOKEN_EXPIRE_MINUTES), + organization_id=organization_id, + project_id=project_id, + ) + logger.info(f"[create_token_pair] Token pair issued | user_id: {user_id}, access_token: {mask_string(access_token)}") + return access_token, refresh_token +``` + +Delegation to `app.core.security` is the pattern — services orchestrate; primitives live in `app/core/`. + +## External HTTP — checklist + +When wrapping an external SDK or raw HTTP call, follow `.claude/conventions/error-handling.md` for the full pattern (source-tagged `[KAAPI]`/`[]` messages, fault-based log levels, typed exception ladders). + +- **Timeout** — every `httpx`/`requests` call has an explicit timeout. The default is too long. +- **Retry policy** — idempotent GETs can retry with backoff. Mutations should retry only if you're certain the API is idempotent or you have an idempotency key. +- **Error mapping** — `httpx.HTTPStatusError` → a domain exception or `HTTPException` with a sensible code (often 502 for upstream failures, NOT 500). +- **Mock at this boundary in tests** — `monkeypatch` the HTTP client, not the DB. (See `test-writer` agent.) + +## Calling CRUD + +- Services own the `session` lifecycle for the operation. Call CRUD functions with `session=session` keyword arg. +- If CRUD returns `None`, decide whether that's a domain error (`raise NotFoundError`), a 404 (`raise HTTPException(404)`), or a silent skip (`return early`). Be explicit. + +## Config / secrets + +- Read from `settings` (`app.core.config`). Never read `os.environ` directly in a service. +- Defaults should lean toward cheap/safe: smallest model, lowest token cap, shortest TTL. Aggressive defaults belong in env, not code. + +## Reuse existing helpers + +The grep-first rule applies to _functions_, not just literals. Before hand-writing a helper that does anything generic — instantiating an external SDK client, mapping that SDK's exceptions, building or parsing a domain payload, reading/writing cloud storage, loading config — grep the whole tree first. These almost always exist already, and rarely in a neighbor file, so search by behavior (the SDK class, the model type, the storage call), not by directory. + +Signs you're about to reinvent: instantiating a vendor client inline (`Anthropic(...)`, `OpenAI(...)`, `boto3.client(...)`); a long `except`-ladder over an SDK's error types; chains of `.get(...).get(...)` over a payload that has a typed model elsewhere. Prefer calling the existing function over reimplementing it; reach for a new helper only once you've confirmed none fits. + +## Magic values + +If you write the string `"openai"` or `"text-embedding-3-small"` or `1_000_000` in a service, ask whether it should be a constant / Enum / setting. Grep for the same literal — if it appears elsewhere, it should already be a constant. + +## What you DO NOT do + +- Don't write SQL directly — call CRUD. +- Don't import `fastapi.APIRouter` or define routes. +- Don't write long-running blocking loops — that's a Celery task. +- Don't call `time.sleep` inside an `async def` (use `asyncio.sleep`). +- Don't catch `HTTPException` from a sub-call and swallow it — propagate. diff --git a/backend/.claude/hooks/wiki-update.sh b/backend/.claude/hooks/wiki-update.sh new file mode 100755 index 00000000..1b425e8b --- /dev/null +++ b/backend/.claude/hooks/wiki-update.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# Stop hook: structural code change without a docs/wiki update -> block stop with a +# one-line reminder. Silent (0 tokens) in every other case. Detector stays dumb on +# purpose: file->wiki-page mapping lives in docs/wiki/INDEX.md, Claude resolves it. +INPUT=$(cat) +grep -Eq '"stop_hook_active"[[:space:]]*:[[:space:]]*true' <<<"$INPUT" && exit 0 +cd "$CLAUDE_PROJECT_DIR" 2>/dev/null || exit 0 +BASE=$(git merge-base origin/main HEAD 2>/dev/null || echo HEAD) +CHANGED=$({ git diff --name-only "$BASE" 2>/dev/null; git status --porcelain -uall 2>/dev/null | awk '{print $NF}'; } | sort -u) +STRUCT=$(grep -E '^backend/app/(api/routes|models|services|crud|celery/tasks)/' <<<"$CHANGED") +[ -z "$STRUCT" ] && exit 0 +grep -q '^docs/wiki/' <<<"$CHANGED" && exit 0 +FILES=$(head -5 <<<"$STRUCT" | tr '\n' ' ' | tr -d '"\\') +printf '{"decision":"block","reason":"Structural change without wiki update: %s— update the matching docs/wiki/modules/*.md page (names+paths only, via docs/wiki/INDEX.md), and docs/wiki/domain-map.md if entities/edges changed. If no update is needed, state why and stop."}\n' "$FILES" diff --git a/backend/.claude/settings.json b/backend/.claude/settings.json new file mode 100644 index 00000000..d61a1660 --- /dev/null +++ b/backend/.claude/settings.json @@ -0,0 +1,16 @@ +{ + "hooks": { + "Stop": [ + { + "hooks": [ + { + "type": "command", + "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/wiki-update.sh", + "timeout": 15, + "statusMessage": "Checking wiki freshness" + } + ] + } + ] + } +} diff --git a/backend/.claude/skills/grill-me/SKILL.md b/backend/.claude/skills/grill-me/SKILL.md new file mode 100644 index 00000000..bd04394c --- /dev/null +++ b/backend/.claude/skills/grill-me/SKILL.md @@ -0,0 +1,10 @@ +--- +name: grill-me +description: Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me". +--- + +Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer. + +Ask the questions one at a time. + +If a question can be answered by exploring the codebase, explore the codebase instead. diff --git a/backend/.claude/skills/srd-creator/SKILL.md b/backend/.claude/skills/srd-creator/SKILL.md new file mode 100644 index 00000000..59583788 --- /dev/null +++ b/backend/.claude/skills/srd-creator/SKILL.md @@ -0,0 +1,150 @@ +--- +name: srd-creator +description: Create a Software Requirements Document (SRD) for a Kaapi feature. Use when the user wants to write, draft, scaffold, or plan an SRD / spec / requirements doc for a new feature or capability (e.g. an evaluation pipeline, a new endpoint set, a provider integration). Produces a structured markdown SRD from the standard Kaapi template. +--- + +# SRD Creator + +Generate a Software Requirements Document for a Kaapi feature, matching the house +style of the existing Evaluation / Fast Evaluation / STT Evaluation SRDs. + +An SRD is the contract written *before* code: what to build, why, what is in/out +of scope, the execution flow, the API surface, and the DB schema, specific enough +that an engineer can build it and a reviewer can test each row of the Functional +Requirements table against the running system. Testable spec, not design prose. + +## A PRD is mandatory + +**The SRD is derived solely from a PRD.** If the user has not supplied one (a file +path or pasted content), stop and ask. Do not invent the problem, scope, or +requirements from the conversation. No PRD → no SRD. + +Division of sources: the PRD supplies the *what and why* (problem, scope, goals, +personas); the codebase (via the wiki and model files) supplies the *shapes of +what already exists* (tables, models, endpoints). Never the reverse: don't pull +scope from the codebase, don't pull schemas from the PRD or memory. + +## Workflow + +1. **Read the reference, then the wiki.** + - `reference/srd-guide.md` (what each section means), `reference/srd-template.md` + (the skeleton). Skim a prior `features/*/SRD.md` if unsure of house style. + - Codebase knowledge comes from the wiki, not memory or ad-hoc greps: open + `docs/wiki/INDEX.md`, load the touched domain's `docs/wiki/modules/*.md` page + (routes, tables → model-file map, schemas, services, external boundaries). + Follow its link into `docs/architecture/*.md` only for a design question; + never bulk-load those. + +2. **Load the Rules (below) into a `TodoWrite` list before writing.** Tick each as + sections land; run a final pass over them before output. + +3. **Blast-radius check** (after reading the PRD, before writing). Open + `docs/wiki/domain-map.md`; name the primary entity(ies) in the map's vocabulary + and collect the 1-hop and 2-hop `consumed by` surfaces (tables, logical and + external consumers). For every surface the PRD does not address, ask the user: + in scope / deferred / out of scope, never silently include or exclude. Record the + decisions in Assumptions. + - **Schema comes from code, never memory.** Before writing or reusing any table, + Read its `models/*.py` file (path from the module page's tables list); column + names, types, nullability, and JSONB shapes in the SRD must match it. Propose a + new table only when the domain map + model files show nothing existing fits. + +4. **Read the PRD and map it onto the template.** Problem → Introduction, Goals → + Goals, Users → personas, scope → Assumptions & phasing. Anything the PRD leaves + open goes under *Design Decisions / Known Limitations* as an open question, never + fabricated. Drop optional sections that don't apply. Resources links are never + guessed: ask the user for the real Google Docs / PRD / related-SRD URLs, or drop + the section. + +5. **Write the Functional Requirements table** as the testable core (per the Rules). + +6. **Output** at `features//SRD.md` (kebab-case slug, e.g. + `features/account-balances/SRD.md`). If a `PRD.md` already exists for the feature + (from `start-prd`), write `SRD.md` alongside it and reuse that slug exactly; do + not fork a parallel folder. The H1 is the feature's display name + (e.g. `# Account Balances SRD`). + +7. **Render the one execution-flow diagram.** Write a mermaid source, render it with + the helper (high-res png, no global installs, uses `npx`), and leave a placeholder + band naming the file, do not embed it inline (the author exports to Google Docs + and pastes the image at the band): + ```bash + scripts/render-diagram.sh flow-a.mmd features//assets/flow-a.png + ``` + The band is horizontal-rule fenced (Google Docs turns `---` into a real line): + ```markdown + --- + + **>> PLACE IMAGE HERE: `assets/flow-a.png`, .** + System-level sequence: the user and the real systems involved. + + --- + ``` + +## Rules + +The completion checklist. Each is a checkable condition; verify every one before +output. + +- **Single source of truth.** State each fact once, in its home section; later + sections reference it ("as in Goals"), never restate it. Goals are outcomes, not + echoes of the Introduction; Assumptions are boundaries, not re-listed goals; FR + acceptance criteria are checkable conditions, not restatements of the behavior + column. Repetition across sections is the #1 cause of bloated SRDs. No filler or + hedging: every sentence adds new information. +- **Every claim traces to the PRD.** No fact in the SRD that the PRD didn't supply + (scope, goals) or the code confirmed (schemas). Open items go to Design Decisions, + never fabricated. +- **High-level only.** Behavior and interfaces, not internals. Allowed: DB schema + (tables, columns, constraints), object/class and endpoint contracts, error codes, + settings. Not allowed: function names, private helpers, internal variable/field + names, stage/step internals, concurrency-pool names, the reader sees those in PR + review. Name *what* a thing does and *which entity* holds it, not the symbol. +- **Reuse existing models, don't invent.** Order: (1) reuse as-is, (2) extend/compose + the existing one, (3) only if nothing fits, add a new shape and say why. A reviewer + asking "can't we reuse X?" is a failure of this rule. + - Reuse at the **highest-level wrapper that fits**, not the innermost params model. + When the codebase already has a wrapper that solves the whole problem (e.g. "an + ad-hoc value OR a reference to a saved, versioned one"), spec that wrapper whole; + never re-spec its parts as bespoke sibling fields. + - Prefer a **per-request config field over a per-project binding table.** A binding + table plus its CRUD duplicates a saved/versioned config's persistence and adds + uniqueness + tenant-isolation surface for no gain. Add one only when "set once, + applies to every future request with nothing sent" is an explicit requirement. +- **Match system naming.** snake_case columns/fields, table names, and class names + follow the codebase and reuse existing names; grep for an existing name before + coining a new one. The schema must not read like it came from a different system. +- **Ripple: one design story, end to end.** When anything changes (schema, field, + endpoint, table, flow), sweep every section that touched the old design + (Introduction, Goals, Assumptions, Detailed Design, every FR row, every endpoint's + request/response/error, DB schema, Design Decisions). The done condition: grep the + SRD for the superseded names/phrases, zero hits. A doc where one section speaks the + new design and another the old is worse than either alone. +- **Kaapi DB conventions.** `inserted_at`/`updated_at` (not `created_at`), + `organization_id` + `project_id` on every multi-tenant table, snake_case, FK + indexes. Filterable data as first-class columns; bag-of-attributes as `JSONB`. +- **Phase the scope explicitly.** Phase 1 (build now) vs Phase 2+ (later), so scope + creep is visible. +- **Functional Requirements are PR-testable behaviors only.** Each row = one + user-facing behavior + a concrete, checkable acceptance criterion + a Status. If + you can't write a checkable criterion, the requirement is too vague, sharpen it. + Drop rows that restate the Intro/Goals or describe internal mechanics. Lean beats + exhaustive. +- **Real request/response JSON for every endpoint**, not just field lists. Error + responses show the actual client-facing message string (or a field-specific + validation example), not a paraphrase of a self-explanatory status code. +- **One image: the execution flow.** Rendered to `assets/flow-a.png`, referenced by + the placeholder band. No second image: a secondary flow (e.g. config CRUD) is prose + plus the Endpoints section, and the **DB schema is always column tables, never a + diagram**. The flow shows the user and the real systems that talk to each other, + not internal pipeline steps as separate lanes. No inline `![](...)`, no mermaid + blocks, no HTML/inline CSS, no emoji, no em dashes (the Google Docs importer strips + the first three; use commas, periods, or parentheses for the last). +- **Don't pad.** Each section earns its place; delete inapplicable optional sections + rather than leaving them empty. + +## Before output + +- Every Rule above holds (todos ticked). +- All required sections present (see the guide's section checklist). +- Grep the SRD for any superseded name/phrase from a revision: zero hits. diff --git a/backend/.claude/skills/srd-creator/reference/srd-guide.md b/backend/.claude/skills/srd-creator/reference/srd-guide.md new file mode 100644 index 00000000..7864a5c6 --- /dev/null +++ b/backend/.claude/skills/srd-creator/reference/srd-guide.md @@ -0,0 +1,122 @@ +# SRD Guide, what each section is and how to write it + +An SRD (Software Requirements Document) is the testable contract between whoever +requested the feature and whoever builds it, written before implementation: a +reviewer can take the Functional Requirements table and check each row against the +running system. + +This guide describes each section, derived from the Kaapi Evaluation, Fast Evaluation, +and STT Evaluation SRDs. Use `srd-template.md` as the fill-in skeleton. + +This guide covers *section semantics only* — what belongs in each section. The +process and the Rules (no redundancy, reuse, naming, ripple) live in `SKILL.md` and +are not repeated here. + +--- + +## 1. Introduction & Purpose *(required)* + +The "what and why" in a few short paragraphs. +- One sentence: what capability this SRD defines and for which system. +- The problem / motivation, what's painful today, who feels it (name the early + users if known). +- What the feature produces at minimum (the concrete outputs). +- Explicit phasing: what is Phase 1, what is deferred to Phase 2/3. This is where + scope gets pinned down before anyone argues about it later. +- One line on intent / quality bar (e.g. "repeatable, comparable, auditable"). + +## 2. Resources *(optional)* + +Links to related SRDs, external API docs, research notes, design docs. **Ask the +user for the real links** (Google Docs, PRD, related SRDs), never fabricate or +guess paths/URLs. Drop the section if the user has nothing to link. + +## 3. Goals *(required)* + +A short bulleted list of what success looks like. Each goal is an outcome, not a +task. Keep it to the handful that actually define done. Examples of the shape: +- "Users can run synchronously with one new request option." +- "Identical semantics to the existing path." +- "Failure isolation, one item's failure must not fail the whole run." + +## 4. Assumptions & Constraints *(required)* + +The boundary conditions the design assumes true. This is where you fence the scope. +Cover: +- What's explicitly **out of scope**. +- Hard limits / caps (size caps, thresholds, rate limits). +- Data assumptions (input format, required columns, change frequency). +- Reuse decisions ("No new tables. Reuse "). +- Pricing / billing notes if external paid APIs are involved. + +## 5. Detailed Design (Execution Flow) *(required)* + +How it runs, with brief supporting text, not a long numbered paragraph. Keep the +text to what the diagram can't carry: failure isolation, idempotency, resolution +rules. Diagram mechanics (one image, placeholder band, no HTML/emoji) are in +`SKILL.md`. + +## 6. Functional Requirements (Testing) *(required, the core)* + +A table, one row per user-facing behavior. Columns: + +| ID | What (user-facing behavior) | Acceptance criteria | Status | + +- **ID**: `FR-1`, `FR-2`, … +- **What**: a single behavior in plain language ("Reject a request that exceeds + the configured cap"). +- **Acceptance criteria**: the concrete, checkable condition ("Returns 422 with + the specific error code and the actual offending count"). +- **Status**: `Not Started` / `In Progress` / `Done`. Lifecycle: the SRD ships with + every row `Not Started`; the builder flips a row to `In Progress` when its + implementation starts, and `/pr-review` (or the reviewer) flips it to `Done` only + after verifying the acceptance criterion against the diff. + +This table is what QA and review run against. + +## 7. Endpoints *(required when the feature has an API)* + +One block per endpoint. For each: +- Method + path. +- One-line description of what it does. +- Request: body fields (a field table with Type / Required / Default / Description + for non-trivial bodies) and an example JSON body. +- Response: example JSON for the success case. +- Error responses table where relevant: Status / Code / When. + +Always show real JSON examples, not just prose. Reuse existing endpoints where +possible and call out only the new fields ("Existing endpoint, with one new +optional field"). + +## 8. Database Schema / Tables *(required when there's a data model)* + +Per table, a column table: + +| Column | Type | Nullable | Default | Description | + +Then a **Constraints** list: primary key, unique constraints (name them, +`uq__` pattern), foreign keys, indexes. Conventions and reuse rules are +in `SKILL.md`. One guide-level note: when reusing a table, state "No new tables" and +list only the added columns / constraints, with the backfill plan for new non-null +columns. + +## 9. Configuration *(optional)* + +New application settings the feature introduces (env vars / settings keys), with +type and default. Drop if there are none. + +## 10. Design Decisions / Known Limitations *(optional)* + +Non-obvious choices and their rationale ("X deliberately does not route through +the existing Y path because…"), plus known gaps to revisit. Captures the "why" +so the next reader doesn't re-litigate it. + +--- + +## Section checklist + +Required: Introduction & Purpose · Goals · Assumptions & Constraints · +Detailed Design · Functional Requirements · Endpoints (if API) · DB Schema (if data). +Optional: Resources · Configuration · Design Decisions / Known Limitations. + +Before output, verify every **Rule** in `SKILL.md`. diff --git a/backend/.claude/skills/srd-creator/reference/srd-template.md b/backend/.claude/skills/srd-creator/reference/srd-template.md new file mode 100644 index 00000000..7de01e96 --- /dev/null +++ b/backend/.claude/skills/srd-creator/reference/srd-template.md @@ -0,0 +1,140 @@ + + +# SRD + +## Introduction & Purpose + +<1–2 sentences: what capability this SRD defines and for which system (Kaapi).> + + + + +- +- + + +- **Phase 1:** +- **Phase 2+:** + + + +## Resources + +- +- +- + +## Goals +- +- +- + +## Assumptions & Constraints +- **Out of scope:** +- **Limits / caps:** +- **Data assumptions:** +- **Reuse:** +- **Pricing:** + +## Detailed Design (Execution Flow) + + + +### + +--- + +**>> PLACE IMAGE HERE: `assets/flow-a.png`, .** + +--- + + + + + +### + + + +## Functional Requirements (Testing) + +| ID | What (user-facing behavior) | Acceptance criteria | Status | +|----|-----------------------------|---------------------|--------| +| FR-1 | | | Not Started | +| FR-2 | | | Not Started | +| FR-3 | | | Not Started | + +## Endpoints + +### ` /` + + +**Request body:** + +| Field | Type | Required | Default | Description | +|-------|------|----------|---------|-------------| +| | | | | | + +```json +{ + "": "" +} +``` + +**Response:** + +```json +{ + "": "" +} +``` + +**Error responses:** + +| Status | Code | When | +|--------|------|------| +| 422 | | | +| 409 | | | + + + +## Database Schema + + + +### `` + + +| Column | Type | Nullable | Default | Description | +|--------|------|----------|---------|-------------| +| id | INTEGER (PK) | NO | auto-increment | Unique identifier | +| | | | | | +| organization_id | INTEGER | NO | n/a | Reference to the organization | +| project_id | INTEGER | NO | n/a | Reference to the project | +| inserted_at | TIMESTAMP | NO | now() | Created timestamp | +| updated_at | TIMESTAMP | NO | now() | Last-updated timestamp | + +**Constraints:** +- ``: UNIQUE on () +- FK
.+- Index on + + + +## Configuration + + +| Setting | Type | Default | Description | +|---------|------|---------|-------------| +| | | | | + +## Design Decisions / Known Limitations + +- **:** +- **Known limitation:** diff --git a/backend/.claude/skills/srd-creator/scripts/render-diagram.sh b/backend/.claude/skills/srd-creator/scripts/render-diagram.sh new file mode 100755 index 00000000..931ab561 --- /dev/null +++ b/backend/.claude/skills/srd-creator/scripts/render-diagram.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +# Render a mermaid source to a high-quality png for an SRD. +# Usage: render-diagram.sh +# No global installs: uses npx for mermaid-cli. +set -euo pipefail + +if [[ $# -ne 2 ]]; then + echo "usage: $0 " >&2 + exit 1 +fi + +SRC="$1" +OUT="$2" +mkdir -p "$(dirname "$OUT")" + +# High-res render (wide + scaled) keeps sequence-diagram text crisp. +npx -y -p @mermaid-js/mermaid-cli mmdc -i "$SRC" -o "$OUT" -w 1600 -s 3 -b white + +echo "wrote $OUT" diff --git a/backend/.claude/skills/start-prd/SKILL.md b/backend/.claude/skills/start-prd/SKILL.md new file mode 100644 index 00000000..91f93d58 --- /dev/null +++ b/backend/.claude/skills/start-prd/SKILL.md @@ -0,0 +1,63 @@ +--- +name: start-prd +description: Synthesize the current conversation into a product-level PRD (the why/what, not the how) at features//PRD.md — no interview. +disable-model-invocation: true +--- + +Synthesize the PRD from the current conversation and your codebase understanding. Do NOT interview the user — use what you already know. + +The PRD is a **product spec**. It answers one question: *why are we doing this and what does success look like?* It is written for everyone — PM, design, engineering, stakeholders — in user and business terms. + +**Hard boundary — the PRD does NOT contain** databases, APIs, algorithms, infrastructure, code structure, or how anything is built. If you find yourself naming a table, an endpoint, or a module, stop: that belongs in the SRD (Software Requirements Doc), not here. + +## Process + +1. Understand the current state of the codebase, if you haven't already: start with `docs/wiki/INDEX.md` + `docs/wiki/domain-map.md` and the relevant `docs/wiki/modules/*.md` page(s) — they carry the domain vocabulary the PRD should use. Explore the repo directly only for what the wiki doesn't answer. + +2. Draft the PRD using the template below, keeping every section strictly product-level. Before finalizing, check with the user that the **Goals**, **Non-Goals**, and **which stories are must-have** match their expectations — these three are where misalignment hides. + +3. Write the finished PRD to `features//PRD.md`, where `` is a short kebab-case slug (e.g. `features/account-balances/PRD.md`); create the directory if it doesn't exist. If an `SRD.md` already exists for this feature (from the `srd-creator` skill), reuse its slug exactly and write `PRD.md` beside it — don't create a parallel folder. This file is the deliverable, referenced later when building the SRD and Engineering Plan. + + + +## Problem Statement + +The user pain or business need, from the user's perspective. Why does this matter, and to whom? + +## Goals + +The desired outcomes — what we want to be true once this ships. State them qualitatively; the numbers live in Success Metrics. + +## Non-Goals + +What is explicitly out of scope. Drawing this line prevents scope creep and misaligned reviews. + +## Success Metrics + +How we'll know it worked — the KPIs or targets that should move if this succeeds. + +## Users / Personas + +Who this is for — the actors who will use or be affected by the feature. + +## User Stories / Use Cases + +Group stories under a **persona heading** (one per Persona above). Don't repeat "As a " on every line — the heading carries it. Order personas primary-first and, within each, must-have-first. Tag every story `[must-have]` or `[nice-to-have]`. Every Persona above should carry at least one story, and every Goal above should trace to at least one. Number stories continuously across the whole section (don't restart per persona). Format: + +**As a :** + +1. `[must-have]` I want a , so that +2. `[nice-to-have]` I want a , so that + + +**As a mobile bank customer:** + +1. `[must-have]` I want to see the balance on my accounts, so that I can make better informed decisions about my spending +2. `[nice-to-have]` I want to filter transactions by category, so that I can see where my money goes + + +## UX / Flows + +The experience at a high level — key user flows, screens, and interactions. Link mockups if they exist. Describe what the user sees and does, not how it's implemented. + + diff --git a/backend/app/api/deps.py b/backend/app/api/deps.py index a50c74ef..02253ad1 100644 --- a/backend/app/api/deps.py +++ b/backend/app/api/deps.py @@ -1,12 +1,11 @@ +import hashlib +import secrets from collections.abc import Generator from dataclasses import dataclass from typing import Annotated -import hashlib -import secrets - from fastapi import Depends, Header, HTTPException, Request, Security, status -from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials +from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer from sqlmodel import Session from app.core.config import settings @@ -41,31 +40,36 @@ class TenantContext: project_id: int -def verify_caller( - request: Request, - credentials: Annotated[ - HTTPAuthorizationCredentials | None, - Security(security), - ], - organization_id: Annotated[int, Header(alias="X-ORGANIZATION-ID")], - project_id: Annotated[int, Header(alias="X-PROJECT-ID")], -) -> TenantContext: +def check_source_ip(request: Request) -> None: """ - Authenticates the single trusted caller (kaapi-backend) by static bearer token - and source IP, and returns the tenant it resolved from the end user's API key. + 403 for callers whose source IP is not in ALLOWED_IPS. - Tenant scope is never read from the query string or request body, so a route - cannot be tenant-unscoped: the dependency that authenticates it also supplies - the tenant. + Runs before the token and tenant checks so a caller from an unexpected + origin never learns whether its bearer token is valid. """ if settings.ALLOWED_IPS: + allowed = settings.ALLOWED_IPS + if isinstance(allowed, str): + # Defense in depth: never substring-match a raw string. + allowed = [allowed] client_ip = request.client.host if request.client else None - if client_ip not in settings.ALLOWED_IPS: + if client_ip not in allowed: raise HTTPException( status_code=status.HTTP_403_FORBIDDEN, detail="Forbidden", ) + +def check_bearer_token( + _ip_ok: Annotated[None, Depends(check_source_ip)], + credentials: Annotated[ + HTTPAuthorizationCredentials | None, + Security(security), + ], +) -> None: + """ + 401 for a missing or invalid bearer token. Only reached from a whitelisted IP. + """ if credentials is None: raise _unauthorized("Missing Authorization header") @@ -75,6 +79,24 @@ def verify_caller( ): raise _unauthorized("Invalid authorization token") + +def verify_caller( + _token_ok: Annotated[None, Depends(check_bearer_token)], + organization_id: Annotated[int, Header(alias="X-ORGANIZATION-ID")], + project_id: Annotated[int, Header(alias="X-PROJECT-ID")], +) -> TenantContext: + """ + Authenticates the single trusted caller (kaapi-backend) by static bearer token + and source IP, and returns the tenant it resolved from the end user's API key. + + Tenant scope is never read from the query string or request body, so a route + cannot be tenant-unscoped: the dependency that authenticates it also supplies + the tenant. + + Check order (403 -> 401 -> 422): source IP, then bearer token, then tenant + headers. The IP check comes first on purpose so a caller from an unexpected + origin gets 403 whether or not its token was valid. + """ return TenantContext(organization_id=organization_id, project_id=project_id) diff --git a/backend/app/core/config.py b/backend/app/core/config.py index 790dcc45..bd25a11f 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -1,8 +1,9 @@ +import json import os -from pathlib import Path import re -from typing import Annotated, Any, ClassVar, Literal import warnings +from pathlib import Path +from typing import Annotated, Any, ClassVar, Literal from pydantic import ( BeforeValidator, @@ -16,7 +17,19 @@ def parse_csv_list(v: Any) -> list[str] | str: - if isinstance(v, str) and not v.startswith("["): + if isinstance(v, str): + if v.lstrip().startswith("["): + # A JSON-array value (e.g. an env var that was JSON-encoded): + # parse it so ALLOWED_IPS is always a real list. A raw string + # here would make the IP check do substring matching instead of + # exact matching. + try: + parsed = json.loads(v) + except json.JSONDecodeError: + return v + if isinstance(parsed, list): + return [str(item).strip() for item in parsed] + return v return [i.strip() for i in v.split(",") if i.strip()] elif isinstance(v, list | str): return v diff --git a/backend/app/crud/validator_config.py b/backend/app/crud/validator_config.py index a66cb5bc..5ef9028b 100644 --- a/backend/app/crud/validator_config.py +++ b/backend/app/crud/validator_config.py @@ -1,5 +1,4 @@ import logging -from typing import List, Optional from uuid import UUID from fastapi import HTTPException @@ -24,6 +23,10 @@ def create( ) -> dict: data = payload.model_dump() model_fields, config_fields = split_validator_payload(data) + # The tenant always comes from the auth context (the explicit + # organization_id/project_id args), never from the request body. + model_fields.pop("organization_id", None) + model_fields.pop("project_id", None) obj = ValidatorConfig( organization_id=organization_id, @@ -51,10 +54,10 @@ def list( session: Session, organization_id: int, project_id: int, - ids: Optional[list[UUID]] = None, - stage: Optional[Stage] = None, - type: Optional[ValidatorType] = None, - ) -> List[dict]: + ids: list[UUID] | None = None, + stage: Stage | None = None, + type: ValidatorType | None = None, + ) -> list[dict]: query = select(ValidatorConfig).where( ValidatorConfig.organization_id == organization_id, ValidatorConfig.project_id == project_id, diff --git a/backend/app/schemas/validator_config.py b/backend/app/schemas/validator_config.py index c9988cd1..1e6fc783 100644 --- a/backend/app/schemas/validator_config.py +++ b/backend/app/schemas/validator_config.py @@ -1,8 +1,6 @@ -from datetime import datetime -from typing import Optional -from pydantic import ConfigDict -from sqlmodel import SQLModel, Field +from pydantic import ConfigDict, model_validator +from sqlmodel import Field, SQLModel from app.core.enum import GuardrailOnFail, Stage, ValidatorType @@ -18,17 +16,31 @@ class ValidatorBase(SQLModel): class ValidatorCreate(ValidatorBase): - pass + @model_validator(mode="before") + @classmethod + def reject_body_tenant(cls, data: object) -> object: + """The tenant must come from the X-ORGANIZATION-ID / X-PROJECT-ID + headers, never the request body. Reject body tenant fields loudly + instead of crashing the create path or being silently swallowed.""" + if isinstance(data, dict): + reserved = [k for k in ("organization_id", "project_id") if k in data] + if reserved: + raise ValueError( + "Tenant must be provided via the X-ORGANIZATION-ID and " + "X-PROJECT-ID headers, not the request body: " + + ", ".join(reserved) + ) + return data class ValidatorUpdate(SQLModel): model_config = ConfigDict(extra="forbid") - name: Optional[str] = None - type: Optional[ValidatorType] = None - stage: Optional[Stage] = None - on_fail_action: Optional[GuardrailOnFail] = None - is_enabled: Optional[bool] = None + name: str | None = None + type: ValidatorType | None = None + stage: Stage | None = None + on_fail_action: GuardrailOnFail | None = None + is_enabled: bool | None = None class ValidatorResponse(ValidatorBase): diff --git a/backend/app/tests/test_config.py b/backend/app/tests/test_config.py new file mode 100644 index 00000000..5becb1b7 --- /dev/null +++ b/backend/app/tests/test_config.py @@ -0,0 +1,73 @@ +import hashlib + +import pytest + +from app.core.config import Settings, parse_csv_list + +TOKEN_HASH = hashlib.sha256(b"test-token").hexdigest() + + +def _settings(**overrides) -> Settings: + base = { + "ENVIRONMENT": "testing", + "PROJECT_NAME": "kaapi-guardrails-test", + "POSTGRES_SERVER": "localhost", + "POSTGRES_PORT": 5432, + "POSTGRES_USER": "postgres", + "POSTGRES_PASSWORD": "", + "POSTGRES_DB": "test", + "AUTH_TOKEN": TOKEN_HASH, + } + base.update(overrides) + return Settings(**base) + + +class TestParseCsvList: + def test_single_value(self): + assert parse_csv_list("10.0.3.14") == ["10.0.3.14"] + + def test_comma_separated_with_whitespace(self): + assert parse_csv_list("10.0.3.14, 10.0.3.15 ,10.0.3.16") == [ + "10.0.3.14", + "10.0.3.15", + "10.0.3.16", + ] + + def test_empty_string(self): + assert parse_csv_list("") == [] + + def test_blank_entries_are_dropped(self): + assert parse_csv_list("10.0.3.14,, ,10.0.3.15") == ["10.0.3.14", "10.0.3.15"] + + def test_json_array_string_is_parsed(self): + # A JSON-encoded env value must become a real list, never a raw string + # that the IP check would substring-match against. + assert parse_csv_list('["10.0.3.14", "10.0.3.15"]') == [ + "10.0.3.14", + "10.0.3.15", + ] + + def test_invalid_json_bracket_string_is_returned_as_is(self): + assert parse_csv_list("[not-json") == "[not-json" + + def test_passthrough_list(self): + assert parse_csv_list(["10.0.3.14"]) == ["10.0.3.14"] + + +class TestAllowedIpsSettings: + def test_json_array_env_value_parses_to_list(self): + settings = _settings(ALLOWED_IPS='["10.0.3.14", "10.0.3.15"]') + assert settings.ALLOWED_IPS == ["10.0.3.14", "10.0.3.15"] + + def test_empty_disables(self): + settings = _settings(ALLOWED_IPS="") + assert settings.ALLOWED_IPS == [] + + def test_missing_defaults_to_empty(self, monkeypatch): + monkeypatch.delenv("ALLOWED_IPS", raising=False) + settings = _settings() + assert settings.ALLOWED_IPS == [] + + def test_required_in_production(self): + with pytest.raises(ValueError, match="ALLOWED_IPS"): + _settings(ENVIRONMENT="production", ALLOWED_IPS="") diff --git a/backend/app/tests/test_deps_auth.py b/backend/app/tests/test_deps_auth.py index 492ec630..2a557281 100644 --- a/backend/app/tests/test_deps_auth.py +++ b/backend/app/tests/test_deps_auth.py @@ -26,8 +26,9 @@ def read_tenant(auth: AuthDep) -> dict: assert isinstance(auth, TenantContext) return {"organization_id": auth.organization_id, "project_id": auth.project_id} - # TestClient reports 127.0.0.1 as request.client.host - return TestClient(app) + # Pin the client address: TestClient's default is ("testclient", 50000), + # which would fail the ALLOWED_IPS=["127.0.0.1"] tests with a 403. + return TestClient(app, client=("127.0.0.1", 50000)) def test_valid_request_returns_tenant_from_headers(client, monkeypatch): @@ -66,6 +67,27 @@ def test_ip_is_checked_before_the_token(client, monkeypatch): assert response.status_code == 403 +def test_ip_is_checked_before_tenant_header_validation(client, monkeypatch): + """Even a request with missing tenant headers gets 403 from a bad IP, + because the IP check must run before any header validation.""" + monkeypatch.setattr(settings, "ALLOWED_IPS", ["10.0.0.1"]) + + response = client.get( + "/tenant", headers={"Authorization": f"Bearer {TOKEN}"} + ) + + assert response.status_code == 403 + + +def test_token_is_checked_before_tenant_header_validation(client, monkeypatch): + """A wrong token gets 401 before the tenant headers are even looked at.""" + monkeypatch.setattr(settings, "ALLOWED_IPS", ["127.0.0.1"]) + + response = client.get("/tenant", headers={"Authorization": "Bearer nope"}) + + assert response.status_code == 401 + + def test_missing_token_is_unauthorized(client, monkeypatch): monkeypatch.setattr(settings, "ALLOWED_IPS", ["127.0.0.1"]) diff --git a/backend/app/tests/test_validate_with_guard.py b/backend/app/tests/test_validate_with_guard.py index addee715..8c2af484 100644 --- a/backend/app/tests/test_validate_with_guard.py +++ b/backend/app/tests/test_validate_with_guard.py @@ -5,6 +5,7 @@ from fastapi import HTTPException from guardrails.validators import FailResult as GRFailResult +from app.api.deps import TenantContext from app.api.routes.guardrails import ( _resolve_validator_configs, _validate_with_guard, @@ -22,12 +23,17 @@ mock_validator_log_crud = MagicMock() mock_request_log_id = uuid4() +# The tenant now comes from the auth context (X-ORGANIZATION-ID / X-PROJECT-ID +# headers) instead of the request body, so unit tests supply it explicitly. +mock_auth = TenantContext( + organization_id=VALIDATOR_TEST_ORGANIZATION_ID, + project_id=VALIDATOR_TEST_PROJECT_ID, +) + def _build_payload(input_text: str) -> GuardrailRequest: return GuardrailRequest( request_id=str(uuid4()), - organization_id=VALIDATOR_TEST_ORGANIZATION_ID, - project_id=VALIDATOR_TEST_PROJECT_ID, input=input_text, validators=[], ) @@ -49,6 +55,7 @@ def validate(self, data): request_log_crud=mock_request_log_crud, request_log_id=mock_request_log_id, validator_log_crud=mock_validator_log_crud, + auth=mock_auth, ) assert isinstance(response, APIResponse) @@ -73,6 +80,7 @@ def validate(self, data): request_log_crud=mock_request_log_crud, request_log_id=mock_request_log_id, validator_log_crud=mock_validator_log_crud, + auth=mock_auth, ) assert isinstance(response, APIResponse) @@ -93,6 +101,7 @@ def test_validate_with_guard_exception(): request_log_crud=mock_request_log_crud, request_log_id=mock_request_log_id, validator_log_crud=mock_validator_log_crud, + auth=mock_auth, ) assert isinstance(response, APIResponse) @@ -136,6 +145,7 @@ def validate(self, data): request_log_crud=mock_request_log_crud, request_log_id=mock_request_log_id, validator_log_crud=mock_validator_log_crud, + auth=mock_auth, ) assert response.success is False @@ -165,6 +175,7 @@ def validate(self, data): request_log_crud=mock_request_log_crud, request_log_id=mock_request_log_id, validator_log_crud=mock_validator_log_crud, + auth=mock_auth, ) assert response.success is False @@ -175,8 +186,6 @@ def test_resolve_validator_configs_ban_list_from_id(): ban_list_id = str(uuid4()) payload = GuardrailRequest( request_id=str(uuid4()), - organization_id=VALIDATOR_TEST_ORGANIZATION_ID, - project_id=VALIDATOR_TEST_PROJECT_ID, input="test", validators=[{"type": "ban_list", "ban_list_id": ban_list_id}], ) @@ -184,7 +193,7 @@ def test_resolve_validator_configs_ban_list_from_id(): with patch("app.api.routes.guardrails.ban_list_crud.get") as mock_get: mock_get.return_value = MagicMock(banned_words=["foo", "bar"]) - _resolve_validator_configs(payload, mock_session) + _resolve_validator_configs(payload, mock_session, auth=mock_auth) assert payload.validators[0].banned_words == ["foo", "bar"] mock_get.assert_called_once_with( @@ -198,8 +207,6 @@ def test_resolve_validator_configs_ban_list_from_id(): def test_resolve_validator_configs_skips_ban_list_lookup_when_words_provided(): payload = GuardrailRequest( request_id=str(uuid4()), - organization_id=VALIDATOR_TEST_ORGANIZATION_ID, - project_id=VALIDATOR_TEST_PROJECT_ID, input="test", validators=[ {"type": "ban_list", "ban_list_id": str(uuid4()), "banned_words": ["foo"]} @@ -208,7 +215,7 @@ def test_resolve_validator_configs_skips_ban_list_lookup_when_words_provided(): mock_session = MagicMock() with patch("app.api.routes.guardrails.ban_list_crud.get") as mock_get: - _resolve_validator_configs(payload, mock_session) + _resolve_validator_configs(payload, mock_session, auth=mock_auth) mock_get.assert_not_called() @@ -217,8 +224,6 @@ def test_resolve_validator_configs_topic_relevance_from_config_id(): topic_relevance_id = str(uuid4()) payload = GuardrailRequest( request_id=str(uuid4()), - organization_id=VALIDATOR_TEST_ORGANIZATION_ID, - project_id=VALIDATOR_TEST_PROJECT_ID, input="test", validators=[ {"type": "topic_relevance", "topic_relevance_config_id": topic_relevance_id} @@ -232,7 +237,7 @@ def test_resolve_validator_configs_topic_relevance_from_config_id(): llm_prompt="Topic scope prompt text", prompt_schema_version=2, ) - _resolve_validator_configs(payload, mock_session) + _resolve_validator_configs(payload, mock_session, auth=mock_auth) validator = payload.validators[0] assert validator.configuration == "Topic scope prompt text" @@ -248,15 +253,13 @@ def test_resolve_validator_configs_topic_relevance_from_config_id(): def test_resolve_validator_configs_skips_topic_relevance_lookup_when_no_config_id(): payload = GuardrailRequest( request_id=str(uuid4()), - organization_id=VALIDATOR_TEST_ORGANIZATION_ID, - project_id=VALIDATOR_TEST_PROJECT_ID, input="test", validators=[{"type": "topic_relevance"}], ) mock_session = MagicMock() with patch("app.api.routes.guardrails.llm_prompt_config_crud.get") as mock_get: - _resolve_validator_configs(payload, mock_session) + _resolve_validator_configs(payload, mock_session, auth=mock_auth) mock_get.assert_not_called() @@ -264,8 +267,6 @@ def test_resolve_validator_configs_skips_topic_relevance_lookup_when_no_config_i def test_resolve_validator_configs_uses_inline_topic_relevance_without_lookup(): payload = GuardrailRequest( request_id=str(uuid4()), - organization_id=VALIDATOR_TEST_ORGANIZATION_ID, - project_id=VALIDATOR_TEST_PROJECT_ID, input="test", validators=[ { @@ -277,7 +278,7 @@ def test_resolve_validator_configs_uses_inline_topic_relevance_without_lookup(): mock_session = MagicMock() with patch("app.api.routes.guardrails.llm_prompt_config_crud.get") as mock_get: - _resolve_validator_configs(payload, mock_session) + _resolve_validator_configs(payload, mock_session, auth=mock_auth) validator = payload.validators[0] assert validator.configuration == "inline config" @@ -288,8 +289,6 @@ def test_resolve_validator_configs_answer_relevance_from_custom_prompt_id(): custom_prompt_id = str(uuid4()) payload = GuardrailRequest( request_id=str(uuid4()), - organization_id=VALIDATOR_TEST_ORGANIZATION_ID, - project_id=VALIDATOR_TEST_PROJECT_ID, input="{}", validators=[ { @@ -305,7 +304,7 @@ def test_resolve_validator_configs_answer_relevance_from_custom_prompt_id(): validator_name=LLMValidatorName.AnswerRelevanceCustomLLM, llm_prompt="Q: {query}\nA: {answer}\nYES or NO.", ) - _resolve_validator_configs(payload, mock_session) + _resolve_validator_configs(payload, mock_session, auth=mock_auth) validator = payload.validators[0] assert validator.prompt_template == "Q: {query}\nA: {answer}\nYES or NO." @@ -321,8 +320,6 @@ def test_resolve_validator_configs_topic_relevance_llm_from_config_id(): topic_relevance_id = str(uuid4()) payload = GuardrailRequest( request_id=str(uuid4()), - organization_id=VALIDATOR_TEST_ORGANIZATION_ID, - project_id=VALIDATOR_TEST_PROJECT_ID, input="test", validators=[ { @@ -338,7 +335,7 @@ def test_resolve_validator_configs_topic_relevance_llm_from_config_id(): validator_name=LLMValidatorName.TopicRelevance, llm_prompt="Healthcare topic scope text", ) - _resolve_validator_configs(payload, mock_session) + _resolve_validator_configs(payload, mock_session, auth=mock_auth) validator = payload.validators[0] assert validator.configuration == "Healthcare topic scope text" @@ -353,15 +350,13 @@ def test_resolve_validator_configs_topic_relevance_llm_from_config_id(): def test_resolve_validator_configs_skips_answer_relevance_lookup_when_no_prompt_id(): payload = GuardrailRequest( request_id=str(uuid4()), - organization_id=VALIDATOR_TEST_ORGANIZATION_ID, - project_id=VALIDATOR_TEST_PROJECT_ID, input="{}", validators=[{"type": "answer_relevance_custom_llm"}], ) mock_session = MagicMock() with patch("app.api.routes.guardrails.llm_prompt_config_crud.get") as mock_get: - _resolve_validator_configs(payload, mock_session) + _resolve_validator_configs(payload, mock_session, auth=mock_auth) mock_get.assert_not_called() @@ -369,15 +364,13 @@ def test_resolve_validator_configs_skips_answer_relevance_lookup_when_no_prompt_ def test_resolve_validator_configs_skips_topic_relevance_llm_lookup_when_no_config_id(): payload = GuardrailRequest( request_id=str(uuid4()), - organization_id=VALIDATOR_TEST_ORGANIZATION_ID, - project_id=VALIDATOR_TEST_PROJECT_ID, input="test", validators=[{"type": "topic_relevance_llm"}], ) mock_session = MagicMock() with patch("app.api.routes.guardrails.llm_prompt_config_crud.get") as mock_get: - _resolve_validator_configs(payload, mock_session) + _resolve_validator_configs(payload, mock_session, auth=mock_auth) mock_get.assert_not_called() @@ -386,8 +379,6 @@ def test_resolve_validator_configs_uses_inline_answer_relevance_prompt_without_l inline_template = "Query: {query}\nAnswer: {answer}\nYES or NO." payload = GuardrailRequest( request_id=str(uuid4()), - organization_id=VALIDATOR_TEST_ORGANIZATION_ID, - project_id=VALIDATOR_TEST_PROJECT_ID, input="{}", validators=[ { @@ -399,7 +390,7 @@ def test_resolve_validator_configs_uses_inline_answer_relevance_prompt_without_l mock_session = MagicMock() with patch("app.api.routes.guardrails.llm_prompt_config_crud.get") as mock_get: - _resolve_validator_configs(payload, mock_session) + _resolve_validator_configs(payload, mock_session, auth=mock_auth) validator = payload.validators[0] assert validator.prompt_template == inline_template @@ -409,8 +400,6 @@ def test_resolve_validator_configs_uses_inline_answer_relevance_prompt_without_l def test_resolve_validator_configs_uses_inline_topic_relevance_llm_without_lookup(): payload = GuardrailRequest( request_id=str(uuid4()), - organization_id=VALIDATOR_TEST_ORGANIZATION_ID, - project_id=VALIDATOR_TEST_PROJECT_ID, input="test", validators=[ { @@ -422,7 +411,7 @@ def test_resolve_validator_configs_uses_inline_topic_relevance_llm_without_looku mock_session = MagicMock() with patch("app.api.routes.guardrails.llm_prompt_config_crud.get") as mock_get: - _resolve_validator_configs(payload, mock_session) + _resolve_validator_configs(payload, mock_session, auth=mock_auth) validator = payload.validators[0] assert validator.configuration == "inline llm config" @@ -471,6 +460,7 @@ def test_nsfw_error_message_redacts_input(): request_log_crud=mock_request_log_crud, request_log_id=mock_request_log_id, validator_log_crud=mock_validator_log_crud, + auth=mock_auth, ) assert response.success is False @@ -493,6 +483,7 @@ def test_all_validators_redact_input_from_error_message(): request_log_crud=mock_request_log_crud, request_log_id=mock_request_log_id, validator_log_crud=mock_validator_log_crud, + auth=mock_auth, ) assert response.success is False @@ -516,6 +507,7 @@ def test_profanity_free_error_message_redacts_input(): request_log_crud=mock_request_log_crud, request_log_id=mock_request_log_id, validator_log_crud=mock_validator_log_crud, + auth=mock_auth, ) assert response.success is False @@ -540,6 +532,7 @@ def test_nsfw_exception_redacts_input(): request_log_crud=mock_request_log_crud, request_log_id=mock_request_log_id, validator_log_crud=mock_validator_log_crud, + auth=mock_auth, ) assert response.success is False @@ -564,6 +557,7 @@ def test_profanity_free_exception_redacts_input(): request_log_crud=mock_request_log_crud, request_log_id=mock_request_log_id, validator_log_crud=mock_validator_log_crud, + auth=mock_auth, ) assert response.success is False @@ -576,8 +570,6 @@ def test_resolve_validator_configs_rejects_topic_relevance_config_used_for_answe config_id = str(uuid4()) payload = GuardrailRequest( request_id=str(uuid4()), - organization_id=VALIDATOR_TEST_ORGANIZATION_ID, - project_id=VALIDATOR_TEST_PROJECT_ID, input="test", validators=[ {"type": "topic_relevance", "topic_relevance_config_id": config_id} @@ -593,7 +585,7 @@ def test_resolve_validator_configs_rejects_topic_relevance_config_used_for_answe prompt_schema_version=1, ) with pytest.raises(HTTPException) as exc_info: - _resolve_validator_configs(payload, mock_session) + _resolve_validator_configs(payload, mock_session, auth=mock_auth) assert exc_info.value.status_code == 400 assert "topic_relevance" in exc_info.value.detail @@ -605,8 +597,6 @@ def test_resolve_validator_configs_rejects_topic_relevance_config_used_for_answe config_id = str(uuid4()) payload = GuardrailRequest( request_id=str(uuid4()), - organization_id=VALIDATOR_TEST_ORGANIZATION_ID, - project_id=VALIDATOR_TEST_PROJECT_ID, input="{}", validators=[ {"type": "answer_relevance_custom_llm", "custom_prompt_id": config_id} @@ -621,7 +611,7 @@ def test_resolve_validator_configs_rejects_topic_relevance_config_used_for_answe llm_prompt="A plain scope description.", ) with pytest.raises(HTTPException) as exc_info: - _resolve_validator_configs(payload, mock_session) + _resolve_validator_configs(payload, mock_session, auth=mock_auth) assert exc_info.value.status_code == 400 assert "answer_relevance_custom_llm" in exc_info.value.detail diff --git a/backend/app/tests/test_validator_configs.py b/backend/app/tests/test_validator_configs.py index c99fd1e6..22b5d81b 100644 --- a/backend/app/tests/test_validator_configs.py +++ b/backend/app/tests/test_validator_configs.py @@ -1,11 +1,13 @@ from unittest.mock import MagicMock import pytest +from pydantic import ValidationError from sqlmodel import Session -from app.crud.validator_config import validator_config_crud from app.core.enum import GuardrailOnFail, ValidatorType +from app.crud.validator_config import validator_config_crud from app.models.config.validator_config import ValidatorConfig +from app.schemas.validator_config import ValidatorCreate from app.tests.seed_data import ( VALIDATOR_TEST_CONFIG, VALIDATOR_TEST_ID, @@ -128,3 +130,25 @@ def test_merge_config(self, sample_validator, mock_session): assert result["languages"] == ["en", "hi"] assert result["severity"] == "all" + + +class TestCreateRejectsBodyTenant: + @pytest.mark.parametrize("field", ["organization_id", "project_id"]) + def test_body_tenant_field_is_rejected(self, field): + """The tenant must come from X-ORGANIZATION-ID / X-PROJECT-ID headers, + never the request body — a body tenant field must fail loudly, not + crash the create path (TypeError) or be silently honoured.""" + payload = { + "name": "body-tenant-probe", + "type": "ban_list", + "stage": "input", + "on_fail_action": "fix", + "is_enabled": True, + field: 999, + } + + with pytest.raises(ValidationError) as exc_info: + ValidatorCreate(**payload) + + message = str(exc_info.value) + assert "X-ORGANIZATION-ID" in message or "X-PROJECT-ID" in message diff --git a/docs/auth-authz-spec.md b/docs/auth-authz-spec.md index d7637efa..6f1f4f7e 100644 --- a/docs/auth-authz-spec.md +++ b/docs/auth-authz-spec.md @@ -45,6 +45,67 @@ Docker healthcheck. - Missing or wrong token → 401 - Missing or non-integer tenant headers → 422 +## Request flow + +A guardrail run end to end. The tenant is resolved once, upstream, and everything downstream is +scoped by it. + +```mermaid +sequenceDiagram + actor User as End user + participant KB as kaapi-backend + participant Dep as verify_caller + participant Route as run_guardrails + participant CRUD as tenant-scoped CRUD + participant DB as Postgres + + User->>KB: request + X-API-KEY + KB->>KB: verify key, resolve org + project + + KB->>Dep: POST /api/v1/guardrails/
Bearer token
X-ORGANIZATION-ID, X-PROJECT-ID + Note over Dep: from an IP in ALLOWED_IPS + + Dep->>Dep: 1. source IP in ALLOWED_IPS? + Dep->>Dep: 2. token digest matches AUTH_TOKEN? + Dep-->>Route: TenantContext(org, project) + + Route->>CRUD: create request log (tenant) + CRUD->>DB: insert + + Route->>CRUD: resolve ban list / prompt config by id (tenant) + CRUD->>DB: select scoped to tenant + DB-->>CRUD: config or 404 + + Route->>Route: build guard, validate input + Route->>CRUD: write validator logs (tenant) + CRUD->>DB: insert + + Route-->>KB: GuardrailResponse + KB-->>User: response +``` + +The lookups in the middle are the part the current design gets wrong: `ban_list_id` and +`topic_relevance_config_id` are resolved against the tenant, and today that tenant comes from the +request body — so a caller can point them at another tenant's records. + +Rejections, in order: + +```mermaid +flowchart TD + A[Request arrives] --> B{Source IP in ALLOWED_IPS?} + B -- no --> B1[403 Forbidden] + B -- yes --> C{Bearer token present and valid?} + C -- no --> C1[401 Unauthorized] + C -- yes --> D{Tenant headers present and integers?} + D -- no --> D1[422 Unprocessable Entity] + D -- yes --> E[TenantContext, handler runs] +``` + +The IP check comes first on purpose: a caller from an unexpected origin gets `403` whether or not +its token was valid, so the response never confirms a working token to the wrong network. + +`GET /utils/health-check/` has no dependency and skips all three. + ## Changes required - `config.py` — add `ALLOWED_IPS` (comma-separated; required in production, empty disables the check From 8f1c610f12c767bf074534ba266bf14853f383b1 Mon Sep 17 00:00:00 2001 From: Prajna1999 Date: Mon, 17 Aug 2026 11:01:10 +0530 Subject: [PATCH 03/11] trigger CI From 9d1a09fc90c7c32c9802c6a8d482923584aa15ad Mon Sep 17 00:00:00 2001 From: Prajna1999 Date: Mon, 17 Aug 2026 11:05:38 +0530 Subject: [PATCH 04/11] triggger CI --- backend/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/README.md b/backend/README.md index 42151bfa..a705c4bd 100644 --- a/backend/README.md +++ b/backend/README.md @@ -352,3 +352,5 @@ class GenderAssumptionBiasSafetyValidatorConfig(BaseValidatorConfig): ``` 3. In `backend/app/schemas/guardrail_config.py`, add the newly created config class to `ValidatorConfigItem`. + +# test From 515df10dc626fe450fecf40eb7e6892b1fe8de49 Mon Sep 17 00:00:00 2001 From: Prajna1999 Date: Mon, 17 Aug 2026 11:15:31 +0530 Subject: [PATCH 05/11] trigger CI --- backend/app/core/constants.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/app/core/constants.py b/backend/app/core/constants.py index 99468938..4839db7d 100644 --- a/backend/app/core/constants.py +++ b/backend/app/core/constants.py @@ -34,6 +34,8 @@ "A prompt config with the same configuration already exists" ) + + VALIDATOR_CONFIG_SYSTEM_FIELDS = { "organization_id", "project_id", From 1119647bd28f23b35b4c120fafbc94a17547fedb Mon Sep 17 00:00:00 2001 From: Prajna1999 Date: Mon, 17 Aug 2026 11:19:51 +0530 Subject: [PATCH 06/11] pre-commit hook trigger --- backend/app/api/routes/validator_configs.py | 12 +++--------- backend/app/core/constants.py | 1 - backend/app/schemas/validator_config.py | 4 +--- backend/app/tests/conftest.py | 4 +--- backend/app/tests/test_deps_auth.py | 4 +--- .../test_validator_configs_integration.py | 18 ++++++++++++------ 6 files changed, 18 insertions(+), 25 deletions(-) diff --git a/backend/app/api/routes/validator_configs.py b/backend/app/api/routes/validator_configs.py index 6994c7b0..19a50c16 100644 --- a/backend/app/api/routes/validator_configs.py +++ b/backend/app/api/routes/validator_configs.py @@ -63,9 +63,7 @@ def get_validator( session: SessionDep, auth: AuthDep, ): - obj = validator_config_crud.get( - session, id, auth.organization_id, auth.project_id - ) + obj = validator_config_crud.get(session, id, auth.organization_id, auth.project_id) return APIResponse.success_response(data=validator_config_crud.flatten(obj)) @@ -80,9 +78,7 @@ def update_validator( session: SessionDep, auth: AuthDep, ): - obj = validator_config_crud.get( - session, id, auth.organization_id, auth.project_id - ) + obj = validator_config_crud.get(session, id, auth.organization_id, auth.project_id) response_model = validator_config_crud.update( session, obj, payload.model_dump(exclude_unset=True) ) @@ -99,9 +95,7 @@ def delete_validator( session: SessionDep, auth: AuthDep, ): - obj = validator_config_crud.get( - session, id, auth.organization_id, auth.project_id - ) + obj = validator_config_crud.get(session, id, auth.organization_id, auth.project_id) validator_config_crud.delete(session, obj) return APIResponse.success_response( data={"message": "Validator deleted successfully"} diff --git a/backend/app/core/constants.py b/backend/app/core/constants.py index 4839db7d..900fa7bb 100644 --- a/backend/app/core/constants.py +++ b/backend/app/core/constants.py @@ -35,7 +35,6 @@ ) - VALIDATOR_CONFIG_SYSTEM_FIELDS = { "organization_id", "project_id", diff --git a/backend/app/schemas/validator_config.py b/backend/app/schemas/validator_config.py index 1e6fc783..9fc8920f 100644 --- a/backend/app/schemas/validator_config.py +++ b/backend/app/schemas/validator_config.py @@ -1,4 +1,3 @@ - from pydantic import ConfigDict, model_validator from sqlmodel import Field, SQLModel @@ -27,8 +26,7 @@ def reject_body_tenant(cls, data: object) -> object: if reserved: raise ValueError( "Tenant must be provided via the X-ORGANIZATION-ID and " - "X-PROJECT-ID headers, not the request body: " - + ", ".join(reserved) + "X-PROJECT-ID headers, not the request body: " + ", ".join(reserved) ) return data diff --git a/backend/app/tests/conftest.py b/backend/app/tests/conftest.py index d195fd2e..5f498ab3 100644 --- a/backend/app/tests/conftest.py +++ b/backend/app/tests/conftest.py @@ -99,9 +99,7 @@ def override_verify_caller( organization_id=BAN_LIST_INTEGRATION_ORGANIZATION_ID, project_id=BAN_LIST_INTEGRATION_PROJECT_ID, ) - return TenantContext( - organization_id=organization_id, project_id=project_id - ) + return TenantContext(organization_id=organization_id, project_id=project_id) app.dependency_overrides[verify_caller] = override_verify_caller diff --git a/backend/app/tests/test_deps_auth.py b/backend/app/tests/test_deps_auth.py index 2a557281..f1e842f7 100644 --- a/backend/app/tests/test_deps_auth.py +++ b/backend/app/tests/test_deps_auth.py @@ -72,9 +72,7 @@ def test_ip_is_checked_before_tenant_header_validation(client, monkeypatch): because the IP check must run before any header validation.""" monkeypatch.setattr(settings, "ALLOWED_IPS", ["10.0.0.1"]) - response = client.get( - "/tenant", headers={"Authorization": f"Bearer {TOKEN}"} - ) + response = client.get("/tenant", headers={"Authorization": f"Bearer {TOKEN}"}) assert response.status_code == 403 diff --git a/backend/app/tests/test_validator_configs_integration.py b/backend/app/tests/test_validator_configs_integration.py index 2b8c9fee..b978f523 100644 --- a/backend/app/tests/test_validator_configs_integration.py +++ b/backend/app/tests/test_validator_configs_integration.py @@ -241,7 +241,8 @@ def test_list_validators_filter_by_ids(self, integration_client, clear_database) second_id = second.json()["data"]["id"] response = integration_client.get( - f"{BASE_URL}?ids={first_id}", headers=tenant_headers(), + f"{BASE_URL}?ids={first_id}", + headers=tenant_headers(), ) assert response.status_code == 200 @@ -260,7 +261,8 @@ def test_list_validators_filter_by_multiple_ids( second_id = second.json()["data"]["id"] response = integration_client.get( - f"{BASE_URL}?ids={first_id}&ids={second_id}", headers=tenant_headers(), + f"{BASE_URL}?ids={first_id}&ids={second_id}", + headers=tenant_headers(), ) assert response.status_code == 200 @@ -282,7 +284,8 @@ def test_list_validators_invalid_ids_query_returns_422( def test_list_validators_empty(self, integration_client, clear_database): """Test listing validators when none exist.""" response = integration_client.get( - BASE_URL, headers=tenant_headers((999, 999)), + BASE_URL, + headers=tenant_headers((999, 999)), ) assert response.status_code == 200 @@ -318,7 +321,8 @@ def test_get_validator_invalid_id_returns_422( ): """Test invalid UUID path param returns validation error.""" response = integration_client.get( - f"{BASE_URL}not-a-uuid/", headers=tenant_headers(), + f"{BASE_URL}not-a-uuid/", + headers=tenant_headers(), ) assert response.status_code == 422 @@ -330,7 +334,8 @@ def test_get_validator_wrong_org(self, integration_client, clear_database): # Try to access it as different org response = integration_client.get( - f"{BASE_URL}{validator_id}/", headers=tenant_headers((2, 1)), + f"{BASE_URL}{validator_id}/", + headers=tenant_headers((2, 1)), ) assert response.status_code == 404 @@ -413,7 +418,8 @@ def test_delete_validator_wrong_org(self, integration_client, seed_db): # Try to delete it as different org response = integration_client.delete( - f"{BASE_URL}{validator_id}/", headers=tenant_headers((2, 1)), + f"{BASE_URL}{validator_id}/", + headers=tenant_headers((2, 1)), ) assert response.status_code == 404 From 240efae924b9cd457a429363c1f2ee0b993eee1b Mon Sep 17 00:00:00 2001 From: Prajna1999 Date: Tue, 25 Aug 2026 17:07:22 +0530 Subject: [PATCH 07/11] chore: guardrails hub login issue --- backend/.guardrails/hub_registry.json | 10 +- backend/pyproject.toml | 3 +- backend/uv.lock | 6338 +++++++++++++------------ 3 files changed, 3201 insertions(+), 3150 deletions(-) diff --git a/backend/.guardrails/hub_registry.json b/backend/.guardrails/hub_registry.json index e7b757b4..8b19e387 100644 --- a/backend/.guardrails/hub_registry.json +++ b/backend/.guardrails/hub_registry.json @@ -6,7 +6,7 @@ "exports": [ "BanList" ], - "installed_at": "2026-07-23T14:06:37.542360+00:00", + "installed_at": "2026-08-18T06:55:12.094065+00:00", "package_name": "guardrails-grhub-ban-list" }, "guardrails/llm_critic": { @@ -14,7 +14,7 @@ "exports": [ "LLMCritic" ], - "installed_at": "2026-07-23T14:06:45.369592+00:00", + "installed_at": "2026-08-18T06:57:19.392503+00:00", "package_name": "guardrails-grhub-llm-critic" }, "guardrails/llamaguard_7b": { @@ -22,7 +22,7 @@ "exports": [ "LlamaGuard7B" ], - "installed_at": "2026-07-23T14:06:51.618169+00:00", + "installed_at": "2026-08-18T06:56:38.901794+00:00", "package_name": "guardrails-grhub-llamaguard-7b" }, "guardrails/profanity_free": { @@ -30,7 +30,7 @@ "exports": [ "ProfanityFree" ], - "installed_at": "2026-07-23T14:07:02.770910+00:00", + "installed_at": "2026-08-18T06:58:01.196192+00:00", "package_name": "guardrails-grhub-profanity-free" }, "guardrails/nsfw_text": { @@ -38,7 +38,7 @@ "exports": [ "NSFWText" ], - "installed_at": "2026-05-12T05:29:50.654888+00:00", + "installed_at": "2026-08-18T07:03:49.839668+00:00", "package_name": "guardrails-grhub-nsfw-text" } } diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 9fdc6c1e..455c0653 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -33,7 +33,8 @@ dependencies = [ "scikit-learn>=1.6.0,<2.0.0", "huggingface-hub>=1.5.0,<2.0", "transformers>=5.0.0", - "torch>=2.0.0" + "torch>=2.0.0", + "guardrails-ai-ban-list>=0.1.0", ] [dependency-groups] diff --git a/backend/uv.lock b/backend/uv.lock index 5c873fa0..ec7ed0b7 100644 --- a/backend/uv.lock +++ b/backend/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 2 +revision = 3 requires-python = ">=3.10, <3.14" resolution-markers = [ "python_full_version >= '3.13' and sys_platform == 'win32'", @@ -18,9 +18,9 @@ resolution-markers = [ name = "aiohappyeyeballs" version = "2.6.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload_time = "2025-03-12T01:42:48.764Z" } +sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload-time = "2025-03-12T01:42:48.764Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload_time = "2025-03-12T01:42:47.083Z" }, + { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload-time = "2025-03-12T01:42:47.083Z" }, ] [[package]] @@ -37,76 +37,76 @@ dependencies = [ { name = "propcache" }, { name = "yarl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/50/42/32cf8e7704ceb4481406eb87161349abb46a57fee3f008ba9cb610968646/aiohttp-3.13.3.tar.gz", hash = "sha256:a949eee43d3782f2daae4f4a2819b2cb9b0c5d3b7f7a927067cc84dafdbb9f88", size = 7844556, upload_time = "2026-01-03T17:33:05.204Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/36/d6/5aec9313ee6ea9c7cde8b891b69f4ff4001416867104580670a31daeba5b/aiohttp-3.13.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d5a372fd5afd301b3a89582817fdcdb6c34124787c70dbcc616f259013e7eef7", size = 738950, upload_time = "2026-01-03T17:29:13.002Z" }, - { url = "https://files.pythonhosted.org/packages/68/03/8fa90a7e6d11ff20a18837a8e2b5dd23db01aabc475aa9271c8ad33299f5/aiohttp-3.13.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:147e422fd1223005c22b4fe080f5d93ced44460f5f9c105406b753612b587821", size = 496099, upload_time = "2026-01-03T17:29:15.268Z" }, - { url = "https://files.pythonhosted.org/packages/d2/23/b81f744d402510a8366b74eb420fc0cc1170d0c43daca12d10814df85f10/aiohttp-3.13.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:859bd3f2156e81dd01432f5849fc73e2243d4a487c4fd26609b1299534ee1845", size = 491072, upload_time = "2026-01-03T17:29:16.922Z" }, - { url = "https://files.pythonhosted.org/packages/d5/e1/56d1d1c0dd334cd203dd97706ce004c1aa24b34a813b0b8daf3383039706/aiohttp-3.13.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dca68018bf48c251ba17c72ed479f4dafe9dbd5a73707ad8d28a38d11f3d42af", size = 1671588, upload_time = "2026-01-03T17:29:18.539Z" }, - { url = "https://files.pythonhosted.org/packages/5f/34/8d7f962604f4bc2b4e39eb1220dac7d4e4cba91fb9ba0474b4ecd67db165/aiohttp-3.13.3-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fee0c6bc7db1de362252affec009707a17478a00ec69f797d23ca256e36d5940", size = 1640334, upload_time = "2026-01-03T17:29:21.028Z" }, - { url = "https://files.pythonhosted.org/packages/94/1d/fcccf2c668d87337ddeef9881537baee13c58d8f01f12ba8a24215f2b804/aiohttp-3.13.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c048058117fd649334d81b4b526e94bde3ccaddb20463a815ced6ecbb7d11160", size = 1722656, upload_time = "2026-01-03T17:29:22.531Z" }, - { url = "https://files.pythonhosted.org/packages/aa/98/c6f3b081c4c606bc1e5f2ec102e87d6411c73a9ef3616fea6f2d5c98c062/aiohttp-3.13.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:215a685b6fbbfcf71dfe96e3eba7a6f58f10da1dfdf4889c7dd856abe430dca7", size = 1817625, upload_time = "2026-01-03T17:29:24.276Z" }, - { url = "https://files.pythonhosted.org/packages/2c/c0/cfcc3d2e11b477f86e1af2863f3858c8850d751ce8dc39c4058a072c9e54/aiohttp-3.13.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2c184bb1fe2cbd2cefba613e9db29a5ab559323f994b6737e370d3da0ac455", size = 1672604, upload_time = "2026-01-03T17:29:26.099Z" }, - { url = "https://files.pythonhosted.org/packages/1e/77/6b4ffcbcac4c6a5d041343a756f34a6dd26174ae07f977a64fe028dda5b0/aiohttp-3.13.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:75ca857eba4e20ce9f546cd59c7007b33906a4cd48f2ff6ccf1ccfc3b646f279", size = 1554370, upload_time = "2026-01-03T17:29:28.121Z" }, - { url = "https://files.pythonhosted.org/packages/f2/f0/e3ddfa93f17d689dbe014ba048f18e0c9f9b456033b70e94349a2e9048be/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81e97251d9298386c2b7dbeb490d3d1badbdc69107fb8c9299dd04eb39bddc0e", size = 1642023, upload_time = "2026-01-03T17:29:30.002Z" }, - { url = "https://files.pythonhosted.org/packages/eb/45/c14019c9ec60a8e243d06d601b33dcc4fd92379424bde3021725859d7f99/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c0e2d366af265797506f0283487223146af57815b388623f0357ef7eac9b209d", size = 1649680, upload_time = "2026-01-03T17:29:31.782Z" }, - { url = "https://files.pythonhosted.org/packages/9c/fd/09c9451dae5aa5c5ed756df95ff9ef549d45d4be663bafd1e4954fd836f0/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4e239d501f73d6db1522599e14b9b321a7e3b1de66ce33d53a765d975e9f4808", size = 1692407, upload_time = "2026-01-03T17:29:33.392Z" }, - { url = "https://files.pythonhosted.org/packages/a6/81/938bc2ec33c10efd6637ccb3d22f9f3160d08e8f3aa2587a2c2d5ab578eb/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:0db318f7a6f065d84cb1e02662c526294450b314a02bd9e2a8e67f0d8564ce40", size = 1543047, upload_time = "2026-01-03T17:29:34.855Z" }, - { url = "https://files.pythonhosted.org/packages/f7/23/80488ee21c8d567c83045e412e1d9b7077d27171591a4eb7822586e8c06a/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:bfc1cc2fe31a6026a8a88e4ecfb98d7f6b1fec150cfd708adbfd1d2f42257c29", size = 1715264, upload_time = "2026-01-03T17:29:36.389Z" }, - { url = "https://files.pythonhosted.org/packages/e2/83/259a8da6683182768200b368120ab3deff5370bed93880fb9a3a86299f34/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:af71fff7bac6bb7508956696dce8f6eec2bbb045eceb40343944b1ae62b5ef11", size = 1657275, upload_time = "2026-01-03T17:29:38.162Z" }, - { url = "https://files.pythonhosted.org/packages/3f/4f/2c41f800a0b560785c10fb316216ac058c105f9be50bdc6a285de88db625/aiohttp-3.13.3-cp310-cp310-win32.whl", hash = "sha256:37da61e244d1749798c151421602884db5270faf479cf0ef03af0ff68954c9dd", size = 434053, upload_time = "2026-01-03T17:29:40.074Z" }, - { url = "https://files.pythonhosted.org/packages/80/df/29cd63c7ecfdb65ccc12f7d808cac4fa2a19544660c06c61a4a48462de0c/aiohttp-3.13.3-cp310-cp310-win_amd64.whl", hash = "sha256:7e63f210bc1b57ef699035f2b4b6d9ce096b5914414a49b0997c839b2bd2223c", size = 456687, upload_time = "2026-01-03T17:29:41.819Z" }, - { url = "https://files.pythonhosted.org/packages/f1/4c/a164164834f03924d9a29dc3acd9e7ee58f95857e0b467f6d04298594ebb/aiohttp-3.13.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5b6073099fb654e0a068ae678b10feff95c5cae95bbfcbfa7af669d361a8aa6b", size = 746051, upload_time = "2026-01-03T17:29:43.287Z" }, - { url = "https://files.pythonhosted.org/packages/82/71/d5c31390d18d4f58115037c432b7e0348c60f6f53b727cad33172144a112/aiohttp-3.13.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cb93e166e6c28716c8c6aeb5f99dfb6d5ccf482d29fe9bf9a794110e6d0ab64", size = 499234, upload_time = "2026-01-03T17:29:44.822Z" }, - { url = "https://files.pythonhosted.org/packages/0e/c9/741f8ac91e14b1d2e7100690425a5b2b919a87a5075406582991fb7de920/aiohttp-3.13.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:28e027cf2f6b641693a09f631759b4d9ce9165099d2b5d92af9bd4e197690eea", size = 494979, upload_time = "2026-01-03T17:29:46.405Z" }, - { url = "https://files.pythonhosted.org/packages/75/b5/31d4d2e802dfd59f74ed47eba48869c1c21552c586d5e81a9d0d5c2ad640/aiohttp-3.13.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3b61b7169ababd7802f9568ed96142616a9118dd2be0d1866e920e77ec8fa92a", size = 1748297, upload_time = "2026-01-03T17:29:48.083Z" }, - { url = "https://files.pythonhosted.org/packages/1a/3e/eefad0ad42959f226bb79664826883f2687d602a9ae2941a18e0484a74d3/aiohttp-3.13.3-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:80dd4c21b0f6237676449c6baaa1039abae86b91636b6c91a7f8e61c87f89540", size = 1707172, upload_time = "2026-01-03T17:29:49.648Z" }, - { url = "https://files.pythonhosted.org/packages/c5/3a/54a64299fac2891c346cdcf2aa6803f994a2e4beeaf2e5a09dcc54acc842/aiohttp-3.13.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:65d2ccb7eabee90ce0503c17716fc77226be026dcc3e65cce859a30db715025b", size = 1805405, upload_time = "2026-01-03T17:29:51.244Z" }, - { url = "https://files.pythonhosted.org/packages/6c/70/ddc1b7169cf64075e864f64595a14b147a895a868394a48f6a8031979038/aiohttp-3.13.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5b179331a481cb5529fca8b432d8d3c7001cb217513c94cd72d668d1248688a3", size = 1899449, upload_time = "2026-01-03T17:29:53.938Z" }, - { url = "https://files.pythonhosted.org/packages/a1/7e/6815aab7d3a56610891c76ef79095677b8b5be6646aaf00f69b221765021/aiohttp-3.13.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d4c940f02f49483b18b079d1c27ab948721852b281f8b015c058100e9421dd1", size = 1748444, upload_time = "2026-01-03T17:29:55.484Z" }, - { url = "https://files.pythonhosted.org/packages/6b/f2/073b145c4100da5511f457dc0f7558e99b2987cf72600d42b559db856fbc/aiohttp-3.13.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f9444f105664c4ce47a2a7171a2418bce5b7bae45fb610f4e2c36045d85911d3", size = 1606038, upload_time = "2026-01-03T17:29:57.179Z" }, - { url = "https://files.pythonhosted.org/packages/0a/c1/778d011920cae03ae01424ec202c513dc69243cf2db303965615b81deeea/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:694976222c711d1d00ba131904beb60534f93966562f64440d0c9d41b8cdb440", size = 1724156, upload_time = "2026-01-03T17:29:58.914Z" }, - { url = "https://files.pythonhosted.org/packages/0e/cb/3419eabf4ec1e9ec6f242c32b689248365a1cf621891f6f0386632525494/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:f33ed1a2bf1997a36661874b017f5c4b760f41266341af36febaf271d179f6d7", size = 1722340, upload_time = "2026-01-03T17:30:01.962Z" }, - { url = "https://files.pythonhosted.org/packages/7a/e5/76cf77bdbc435bf233c1f114edad39ed4177ccbfab7c329482b179cff4f4/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e636b3c5f61da31a92bf0d91da83e58fdfa96f178ba682f11d24f31944cdd28c", size = 1783041, upload_time = "2026-01-03T17:30:03.609Z" }, - { url = "https://files.pythonhosted.org/packages/9d/d4/dd1ca234c794fd29c057ce8c0566b8ef7fd6a51069de5f06fa84b9a1971c/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:5d2d94f1f5fcbe40838ac51a6ab5704a6f9ea42e72ceda48de5e6b898521da51", size = 1596024, upload_time = "2026-01-03T17:30:05.132Z" }, - { url = "https://files.pythonhosted.org/packages/55/58/4345b5f26661a6180afa686c473620c30a66afdf120ed3dd545bbc809e85/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2be0e9ccf23e8a94f6f0650ce06042cefc6ac703d0d7ab6c7a917289f2539ad4", size = 1804590, upload_time = "2026-01-03T17:30:07.135Z" }, - { url = "https://files.pythonhosted.org/packages/7b/06/05950619af6c2df7e0a431d889ba2813c9f0129cec76f663e547a5ad56f2/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9af5e68ee47d6534d36791bbe9b646d2a7c7deb6fc24d7943628edfbb3581f29", size = 1740355, upload_time = "2026-01-03T17:30:09.083Z" }, - { url = "https://files.pythonhosted.org/packages/3e/80/958f16de79ba0422d7c1e284b2abd0c84bc03394fbe631d0a39ffa10e1eb/aiohttp-3.13.3-cp311-cp311-win32.whl", hash = "sha256:a2212ad43c0833a873d0fb3c63fa1bacedd4cf6af2fee62bf4b739ceec3ab239", size = 433701, upload_time = "2026-01-03T17:30:10.869Z" }, - { url = "https://files.pythonhosted.org/packages/dc/f2/27cdf04c9851712d6c1b99df6821a6623c3c9e55956d4b1e318c337b5a48/aiohttp-3.13.3-cp311-cp311-win_amd64.whl", hash = "sha256:642f752c3eb117b105acbd87e2c143de710987e09860d674e068c4c2c441034f", size = 457678, upload_time = "2026-01-03T17:30:12.719Z" }, - { url = "https://files.pythonhosted.org/packages/a0/be/4fc11f202955a69e0db803a12a062b8379c970c7c84f4882b6da17337cc1/aiohttp-3.13.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b903a4dfee7d347e2d87697d0713be59e0b87925be030c9178c5faa58ea58d5c", size = 739732, upload_time = "2026-01-03T17:30:14.23Z" }, - { url = "https://files.pythonhosted.org/packages/97/2c/621d5b851f94fa0bb7430d6089b3aa970a9d9b75196bc93bb624b0db237a/aiohttp-3.13.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a45530014d7a1e09f4a55f4f43097ba0fd155089372e105e4bff4ca76cb1b168", size = 494293, upload_time = "2026-01-03T17:30:15.96Z" }, - { url = "https://files.pythonhosted.org/packages/5d/43/4be01406b78e1be8320bb8316dc9c42dbab553d281c40364e0f862d5661c/aiohttp-3.13.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:27234ef6d85c914f9efeb77ff616dbf4ad2380be0cda40b4db086ffc7ddd1b7d", size = 493533, upload_time = "2026-01-03T17:30:17.431Z" }, - { url = "https://files.pythonhosted.org/packages/8d/a8/5a35dc56a06a2c90d4742cbf35294396907027f80eea696637945a106f25/aiohttp-3.13.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d32764c6c9aafb7fb55366a224756387cd50bfa720f32b88e0e6fa45b27dcf29", size = 1737839, upload_time = "2026-01-03T17:30:19.422Z" }, - { url = "https://files.pythonhosted.org/packages/bf/62/4b9eeb331da56530bf2e198a297e5303e1c1ebdceeb00fe9b568a65c5a0c/aiohttp-3.13.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b1a6102b4d3ebc07dad44fbf07b45bb600300f15b552ddf1851b5390202ea2e3", size = 1703932, upload_time = "2026-01-03T17:30:21.756Z" }, - { url = "https://files.pythonhosted.org/packages/7c/f6/af16887b5d419e6a367095994c0b1332d154f647e7dc2bd50e61876e8e3d/aiohttp-3.13.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c014c7ea7fb775dd015b2d3137378b7be0249a448a1612268b5a90c2d81de04d", size = 1771906, upload_time = "2026-01-03T17:30:23.932Z" }, - { url = "https://files.pythonhosted.org/packages/ce/83/397c634b1bcc24292fa1e0c7822800f9f6569e32934bdeef09dae7992dfb/aiohttp-3.13.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2b8d8ddba8f95ba17582226f80e2de99c7a7948e66490ef8d947e272a93e9463", size = 1871020, upload_time = "2026-01-03T17:30:26Z" }, - { url = "https://files.pythonhosted.org/packages/86/f6/a62cbbf13f0ac80a70f71b1672feba90fdb21fd7abd8dbf25c0105fb6fa3/aiohttp-3.13.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ae8dd55c8e6c4257eae3a20fd2c8f41edaea5992ed67156642493b8daf3cecc", size = 1755181, upload_time = "2026-01-03T17:30:27.554Z" }, - { url = "https://files.pythonhosted.org/packages/0a/87/20a35ad487efdd3fba93d5843efdfaa62d2f1479eaafa7453398a44faf13/aiohttp-3.13.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:01ad2529d4b5035578f5081606a465f3b814c542882804e2e8cda61adf5c71bf", size = 1561794, upload_time = "2026-01-03T17:30:29.254Z" }, - { url = "https://files.pythonhosted.org/packages/de/95/8fd69a66682012f6716e1bc09ef8a1a2a91922c5725cb904689f112309c4/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bb4f7475e359992b580559e008c598091c45b5088f28614e855e42d39c2f1033", size = 1697900, upload_time = "2026-01-03T17:30:31.033Z" }, - { url = "https://files.pythonhosted.org/packages/e5/66/7b94b3b5ba70e955ff597672dad1691333080e37f50280178967aff68657/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c19b90316ad3b24c69cd78d5c9b4f3aa4497643685901185b65166293d36a00f", size = 1728239, upload_time = "2026-01-03T17:30:32.703Z" }, - { url = "https://files.pythonhosted.org/packages/47/71/6f72f77f9f7d74719692ab65a2a0252584bf8d5f301e2ecb4c0da734530a/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:96d604498a7c782cb15a51c406acaea70d8c027ee6b90c569baa6e7b93073679", size = 1740527, upload_time = "2026-01-03T17:30:34.695Z" }, - { url = "https://files.pythonhosted.org/packages/fa/b4/75ec16cbbd5c01bdaf4a05b19e103e78d7ce1ef7c80867eb0ace42ff4488/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:084911a532763e9d3dd95adf78a78f4096cd5f58cdc18e6fdbc1b58417a45423", size = 1554489, upload_time = "2026-01-03T17:30:36.864Z" }, - { url = "https://files.pythonhosted.org/packages/52/8f/bc518c0eea29f8406dcf7ed1f96c9b48e3bc3995a96159b3fc11f9e08321/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7a4a94eb787e606d0a09404b9c38c113d3b099d508021faa615d70a0131907ce", size = 1767852, upload_time = "2026-01-03T17:30:39.433Z" }, - { url = "https://files.pythonhosted.org/packages/9d/f2/a07a75173124f31f11ea6f863dc44e6f09afe2bca45dd4e64979490deab1/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:87797e645d9d8e222e04160ee32aa06bc5c163e8499f24db719e7852ec23093a", size = 1722379, upload_time = "2026-01-03T17:30:41.081Z" }, - { url = "https://files.pythonhosted.org/packages/3c/4a/1a3fee7c21350cac78e5c5cef711bac1b94feca07399f3d406972e2d8fcd/aiohttp-3.13.3-cp312-cp312-win32.whl", hash = "sha256:b04be762396457bef43f3597c991e192ee7da460a4953d7e647ee4b1c28e7046", size = 428253, upload_time = "2026-01-03T17:30:42.644Z" }, - { url = "https://files.pythonhosted.org/packages/d9/b7/76175c7cb4eb73d91ad63c34e29fc4f77c9386bba4a65b53ba8e05ee3c39/aiohttp-3.13.3-cp312-cp312-win_amd64.whl", hash = "sha256:e3531d63d3bdfa7e3ac5e9b27b2dd7ec9df3206a98e0b3445fa906f233264c57", size = 455407, upload_time = "2026-01-03T17:30:44.195Z" }, - { url = "https://files.pythonhosted.org/packages/97/8a/12ca489246ca1faaf5432844adbfce7ff2cc4997733e0af120869345643a/aiohttp-3.13.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5dff64413671b0d3e7d5918ea490bdccb97a4ad29b3f311ed423200b2203e01c", size = 734190, upload_time = "2026-01-03T17:30:45.832Z" }, - { url = "https://files.pythonhosted.org/packages/32/08/de43984c74ed1fca5c014808963cc83cb00d7bb06af228f132d33862ca76/aiohttp-3.13.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:87b9aab6d6ed88235aa2970294f496ff1a1f9adcd724d800e9b952395a80ffd9", size = 491783, upload_time = "2026-01-03T17:30:47.466Z" }, - { url = "https://files.pythonhosted.org/packages/17/f8/8dd2cf6112a5a76f81f81a5130c57ca829d101ad583ce57f889179accdda/aiohttp-3.13.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:425c126c0dc43861e22cb1c14ba4c8e45d09516d0a3ae0a3f7494b79f5f233a3", size = 490704, upload_time = "2026-01-03T17:30:49.373Z" }, - { url = "https://files.pythonhosted.org/packages/6d/40/a46b03ca03936f832bc7eaa47cfbb1ad012ba1be4790122ee4f4f8cba074/aiohttp-3.13.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7f9120f7093c2a32d9647abcaf21e6ad275b4fbec5b55969f978b1a97c7c86bf", size = 1720652, upload_time = "2026-01-03T17:30:50.974Z" }, - { url = "https://files.pythonhosted.org/packages/f7/7e/917fe18e3607af92657e4285498f500dca797ff8c918bd7d90b05abf6c2a/aiohttp-3.13.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:697753042d57f4bf7122cab985bf15d0cef23c770864580f5af4f52023a56bd6", size = 1692014, upload_time = "2026-01-03T17:30:52.729Z" }, - { url = "https://files.pythonhosted.org/packages/71/b6/cefa4cbc00d315d68973b671cf105b21a609c12b82d52e5d0c9ae61d2a09/aiohttp-3.13.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6de499a1a44e7de70735d0b39f67c8f25eb3d91eb3103be99ca0fa882cdd987d", size = 1759777, upload_time = "2026-01-03T17:30:54.537Z" }, - { url = "https://files.pythonhosted.org/packages/fb/e3/e06ee07b45e59e6d81498b591fc589629be1553abb2a82ce33efe2a7b068/aiohttp-3.13.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:37239e9f9a7ea9ac5bf6b92b0260b01f8a22281996da609206a84df860bc1261", size = 1861276, upload_time = "2026-01-03T17:30:56.512Z" }, - { url = "https://files.pythonhosted.org/packages/7c/24/75d274228acf35ceeb2850b8ce04de9dd7355ff7a0b49d607ee60c29c518/aiohttp-3.13.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f76c1e3fe7d7c8afad7ed193f89a292e1999608170dcc9751a7462a87dfd5bc0", size = 1743131, upload_time = "2026-01-03T17:30:58.256Z" }, - { url = "https://files.pythonhosted.org/packages/04/98/3d21dde21889b17ca2eea54fdcff21b27b93f45b7bb94ca029c31ab59dc3/aiohttp-3.13.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fc290605db2a917f6e81b0e1e0796469871f5af381ce15c604a3c5c7e51cb730", size = 1556863, upload_time = "2026-01-03T17:31:00.445Z" }, - { url = "https://files.pythonhosted.org/packages/9e/84/da0c3ab1192eaf64782b03971ab4055b475d0db07b17eff925e8c93b3aa5/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4021b51936308aeea0367b8f006dc999ca02bc118a0cc78c303f50a2ff6afb91", size = 1682793, upload_time = "2026-01-03T17:31:03.024Z" }, - { url = "https://files.pythonhosted.org/packages/ff/0f/5802ada182f575afa02cbd0ec5180d7e13a402afb7c2c03a9aa5e5d49060/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:49a03727c1bba9a97d3e93c9f93ca03a57300f484b6e935463099841261195d3", size = 1716676, upload_time = "2026-01-03T17:31:04.842Z" }, - { url = "https://files.pythonhosted.org/packages/3f/8c/714d53bd8b5a4560667f7bbbb06b20c2382f9c7847d198370ec6526af39c/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3d9908a48eb7416dc1f4524e69f1d32e5d90e3981e4e37eb0aa1cd18f9cfa2a4", size = 1733217, upload_time = "2026-01-03T17:31:06.868Z" }, - { url = "https://files.pythonhosted.org/packages/7d/79/e2176f46d2e963facea939f5be2d26368ce543622be6f00a12844d3c991f/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:2712039939ec963c237286113c68dbad80a82a4281543f3abf766d9d73228998", size = 1552303, upload_time = "2026-01-03T17:31:08.958Z" }, - { url = "https://files.pythonhosted.org/packages/ab/6a/28ed4dea1759916090587d1fe57087b03e6c784a642b85ef48217b0277ae/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:7bfdc049127717581866fa4708791220970ce291c23e28ccf3922c700740fdc0", size = 1763673, upload_time = "2026-01-03T17:31:10.676Z" }, - { url = "https://files.pythonhosted.org/packages/e8/35/4a3daeb8b9fab49240d21c04d50732313295e4bd813a465d840236dd0ce1/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8057c98e0c8472d8846b9c79f56766bcc57e3e8ac7bfd510482332366c56c591", size = 1721120, upload_time = "2026-01-03T17:31:12.575Z" }, - { url = "https://files.pythonhosted.org/packages/bc/9f/d643bb3c5fb99547323e635e251c609fbbc660d983144cfebec529e09264/aiohttp-3.13.3-cp313-cp313-win32.whl", hash = "sha256:1449ceddcdbcf2e0446957863af03ebaaa03f94c090f945411b61269e2cb5daf", size = 427383, upload_time = "2026-01-03T17:31:14.382Z" }, - { url = "https://files.pythonhosted.org/packages/4e/f1/ab0395f8a79933577cdd996dd2f9aa6014af9535f65dddcf88204682fe62/aiohttp-3.13.3-cp313-cp313-win_amd64.whl", hash = "sha256:693781c45a4033d31d4187d2436f5ac701e7bbfe5df40d917736108c1cc7436e", size = 453899, upload_time = "2026-01-03T17:31:15.958Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/50/42/32cf8e7704ceb4481406eb87161349abb46a57fee3f008ba9cb610968646/aiohttp-3.13.3.tar.gz", hash = "sha256:a949eee43d3782f2daae4f4a2819b2cb9b0c5d3b7f7a927067cc84dafdbb9f88", size = 7844556, upload-time = "2026-01-03T17:33:05.204Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/d6/5aec9313ee6ea9c7cde8b891b69f4ff4001416867104580670a31daeba5b/aiohttp-3.13.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d5a372fd5afd301b3a89582817fdcdb6c34124787c70dbcc616f259013e7eef7", size = 738950, upload-time = "2026-01-03T17:29:13.002Z" }, + { url = "https://files.pythonhosted.org/packages/68/03/8fa90a7e6d11ff20a18837a8e2b5dd23db01aabc475aa9271c8ad33299f5/aiohttp-3.13.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:147e422fd1223005c22b4fe080f5d93ced44460f5f9c105406b753612b587821", size = 496099, upload-time = "2026-01-03T17:29:15.268Z" }, + { url = "https://files.pythonhosted.org/packages/d2/23/b81f744d402510a8366b74eb420fc0cc1170d0c43daca12d10814df85f10/aiohttp-3.13.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:859bd3f2156e81dd01432f5849fc73e2243d4a487c4fd26609b1299534ee1845", size = 491072, upload-time = "2026-01-03T17:29:16.922Z" }, + { url = "https://files.pythonhosted.org/packages/d5/e1/56d1d1c0dd334cd203dd97706ce004c1aa24b34a813b0b8daf3383039706/aiohttp-3.13.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dca68018bf48c251ba17c72ed479f4dafe9dbd5a73707ad8d28a38d11f3d42af", size = 1671588, upload-time = "2026-01-03T17:29:18.539Z" }, + { url = "https://files.pythonhosted.org/packages/5f/34/8d7f962604f4bc2b4e39eb1220dac7d4e4cba91fb9ba0474b4ecd67db165/aiohttp-3.13.3-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fee0c6bc7db1de362252affec009707a17478a00ec69f797d23ca256e36d5940", size = 1640334, upload-time = "2026-01-03T17:29:21.028Z" }, + { url = "https://files.pythonhosted.org/packages/94/1d/fcccf2c668d87337ddeef9881537baee13c58d8f01f12ba8a24215f2b804/aiohttp-3.13.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c048058117fd649334d81b4b526e94bde3ccaddb20463a815ced6ecbb7d11160", size = 1722656, upload-time = "2026-01-03T17:29:22.531Z" }, + { url = "https://files.pythonhosted.org/packages/aa/98/c6f3b081c4c606bc1e5f2ec102e87d6411c73a9ef3616fea6f2d5c98c062/aiohttp-3.13.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:215a685b6fbbfcf71dfe96e3eba7a6f58f10da1dfdf4889c7dd856abe430dca7", size = 1817625, upload-time = "2026-01-03T17:29:24.276Z" }, + { url = "https://files.pythonhosted.org/packages/2c/c0/cfcc3d2e11b477f86e1af2863f3858c8850d751ce8dc39c4058a072c9e54/aiohttp-3.13.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2c184bb1fe2cbd2cefba613e9db29a5ab559323f994b6737e370d3da0ac455", size = 1672604, upload-time = "2026-01-03T17:29:26.099Z" }, + { url = "https://files.pythonhosted.org/packages/1e/77/6b4ffcbcac4c6a5d041343a756f34a6dd26174ae07f977a64fe028dda5b0/aiohttp-3.13.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:75ca857eba4e20ce9f546cd59c7007b33906a4cd48f2ff6ccf1ccfc3b646f279", size = 1554370, upload-time = "2026-01-03T17:29:28.121Z" }, + { url = "https://files.pythonhosted.org/packages/f2/f0/e3ddfa93f17d689dbe014ba048f18e0c9f9b456033b70e94349a2e9048be/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81e97251d9298386c2b7dbeb490d3d1badbdc69107fb8c9299dd04eb39bddc0e", size = 1642023, upload-time = "2026-01-03T17:29:30.002Z" }, + { url = "https://files.pythonhosted.org/packages/eb/45/c14019c9ec60a8e243d06d601b33dcc4fd92379424bde3021725859d7f99/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c0e2d366af265797506f0283487223146af57815b388623f0357ef7eac9b209d", size = 1649680, upload-time = "2026-01-03T17:29:31.782Z" }, + { url = "https://files.pythonhosted.org/packages/9c/fd/09c9451dae5aa5c5ed756df95ff9ef549d45d4be663bafd1e4954fd836f0/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4e239d501f73d6db1522599e14b9b321a7e3b1de66ce33d53a765d975e9f4808", size = 1692407, upload-time = "2026-01-03T17:29:33.392Z" }, + { url = "https://files.pythonhosted.org/packages/a6/81/938bc2ec33c10efd6637ccb3d22f9f3160d08e8f3aa2587a2c2d5ab578eb/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:0db318f7a6f065d84cb1e02662c526294450b314a02bd9e2a8e67f0d8564ce40", size = 1543047, upload-time = "2026-01-03T17:29:34.855Z" }, + { url = "https://files.pythonhosted.org/packages/f7/23/80488ee21c8d567c83045e412e1d9b7077d27171591a4eb7822586e8c06a/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:bfc1cc2fe31a6026a8a88e4ecfb98d7f6b1fec150cfd708adbfd1d2f42257c29", size = 1715264, upload-time = "2026-01-03T17:29:36.389Z" }, + { url = "https://files.pythonhosted.org/packages/e2/83/259a8da6683182768200b368120ab3deff5370bed93880fb9a3a86299f34/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:af71fff7bac6bb7508956696dce8f6eec2bbb045eceb40343944b1ae62b5ef11", size = 1657275, upload-time = "2026-01-03T17:29:38.162Z" }, + { url = "https://files.pythonhosted.org/packages/3f/4f/2c41f800a0b560785c10fb316216ac058c105f9be50bdc6a285de88db625/aiohttp-3.13.3-cp310-cp310-win32.whl", hash = "sha256:37da61e244d1749798c151421602884db5270faf479cf0ef03af0ff68954c9dd", size = 434053, upload-time = "2026-01-03T17:29:40.074Z" }, + { url = "https://files.pythonhosted.org/packages/80/df/29cd63c7ecfdb65ccc12f7d808cac4fa2a19544660c06c61a4a48462de0c/aiohttp-3.13.3-cp310-cp310-win_amd64.whl", hash = "sha256:7e63f210bc1b57ef699035f2b4b6d9ce096b5914414a49b0997c839b2bd2223c", size = 456687, upload-time = "2026-01-03T17:29:41.819Z" }, + { url = "https://files.pythonhosted.org/packages/f1/4c/a164164834f03924d9a29dc3acd9e7ee58f95857e0b467f6d04298594ebb/aiohttp-3.13.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5b6073099fb654e0a068ae678b10feff95c5cae95bbfcbfa7af669d361a8aa6b", size = 746051, upload-time = "2026-01-03T17:29:43.287Z" }, + { url = "https://files.pythonhosted.org/packages/82/71/d5c31390d18d4f58115037c432b7e0348c60f6f53b727cad33172144a112/aiohttp-3.13.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cb93e166e6c28716c8c6aeb5f99dfb6d5ccf482d29fe9bf9a794110e6d0ab64", size = 499234, upload-time = "2026-01-03T17:29:44.822Z" }, + { url = "https://files.pythonhosted.org/packages/0e/c9/741f8ac91e14b1d2e7100690425a5b2b919a87a5075406582991fb7de920/aiohttp-3.13.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:28e027cf2f6b641693a09f631759b4d9ce9165099d2b5d92af9bd4e197690eea", size = 494979, upload-time = "2026-01-03T17:29:46.405Z" }, + { url = "https://files.pythonhosted.org/packages/75/b5/31d4d2e802dfd59f74ed47eba48869c1c21552c586d5e81a9d0d5c2ad640/aiohttp-3.13.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3b61b7169ababd7802f9568ed96142616a9118dd2be0d1866e920e77ec8fa92a", size = 1748297, upload-time = "2026-01-03T17:29:48.083Z" }, + { url = "https://files.pythonhosted.org/packages/1a/3e/eefad0ad42959f226bb79664826883f2687d602a9ae2941a18e0484a74d3/aiohttp-3.13.3-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:80dd4c21b0f6237676449c6baaa1039abae86b91636b6c91a7f8e61c87f89540", size = 1707172, upload-time = "2026-01-03T17:29:49.648Z" }, + { url = "https://files.pythonhosted.org/packages/c5/3a/54a64299fac2891c346cdcf2aa6803f994a2e4beeaf2e5a09dcc54acc842/aiohttp-3.13.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:65d2ccb7eabee90ce0503c17716fc77226be026dcc3e65cce859a30db715025b", size = 1805405, upload-time = "2026-01-03T17:29:51.244Z" }, + { url = "https://files.pythonhosted.org/packages/6c/70/ddc1b7169cf64075e864f64595a14b147a895a868394a48f6a8031979038/aiohttp-3.13.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5b179331a481cb5529fca8b432d8d3c7001cb217513c94cd72d668d1248688a3", size = 1899449, upload-time = "2026-01-03T17:29:53.938Z" }, + { url = "https://files.pythonhosted.org/packages/a1/7e/6815aab7d3a56610891c76ef79095677b8b5be6646aaf00f69b221765021/aiohttp-3.13.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d4c940f02f49483b18b079d1c27ab948721852b281f8b015c058100e9421dd1", size = 1748444, upload-time = "2026-01-03T17:29:55.484Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f2/073b145c4100da5511f457dc0f7558e99b2987cf72600d42b559db856fbc/aiohttp-3.13.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f9444f105664c4ce47a2a7171a2418bce5b7bae45fb610f4e2c36045d85911d3", size = 1606038, upload-time = "2026-01-03T17:29:57.179Z" }, + { url = "https://files.pythonhosted.org/packages/0a/c1/778d011920cae03ae01424ec202c513dc69243cf2db303965615b81deeea/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:694976222c711d1d00ba131904beb60534f93966562f64440d0c9d41b8cdb440", size = 1724156, upload-time = "2026-01-03T17:29:58.914Z" }, + { url = "https://files.pythonhosted.org/packages/0e/cb/3419eabf4ec1e9ec6f242c32b689248365a1cf621891f6f0386632525494/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:f33ed1a2bf1997a36661874b017f5c4b760f41266341af36febaf271d179f6d7", size = 1722340, upload-time = "2026-01-03T17:30:01.962Z" }, + { url = "https://files.pythonhosted.org/packages/7a/e5/76cf77bdbc435bf233c1f114edad39ed4177ccbfab7c329482b179cff4f4/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e636b3c5f61da31a92bf0d91da83e58fdfa96f178ba682f11d24f31944cdd28c", size = 1783041, upload-time = "2026-01-03T17:30:03.609Z" }, + { url = "https://files.pythonhosted.org/packages/9d/d4/dd1ca234c794fd29c057ce8c0566b8ef7fd6a51069de5f06fa84b9a1971c/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:5d2d94f1f5fcbe40838ac51a6ab5704a6f9ea42e72ceda48de5e6b898521da51", size = 1596024, upload-time = "2026-01-03T17:30:05.132Z" }, + { url = "https://files.pythonhosted.org/packages/55/58/4345b5f26661a6180afa686c473620c30a66afdf120ed3dd545bbc809e85/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2be0e9ccf23e8a94f6f0650ce06042cefc6ac703d0d7ab6c7a917289f2539ad4", size = 1804590, upload-time = "2026-01-03T17:30:07.135Z" }, + { url = "https://files.pythonhosted.org/packages/7b/06/05950619af6c2df7e0a431d889ba2813c9f0129cec76f663e547a5ad56f2/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9af5e68ee47d6534d36791bbe9b646d2a7c7deb6fc24d7943628edfbb3581f29", size = 1740355, upload-time = "2026-01-03T17:30:09.083Z" }, + { url = "https://files.pythonhosted.org/packages/3e/80/958f16de79ba0422d7c1e284b2abd0c84bc03394fbe631d0a39ffa10e1eb/aiohttp-3.13.3-cp311-cp311-win32.whl", hash = "sha256:a2212ad43c0833a873d0fb3c63fa1bacedd4cf6af2fee62bf4b739ceec3ab239", size = 433701, upload-time = "2026-01-03T17:30:10.869Z" }, + { url = "https://files.pythonhosted.org/packages/dc/f2/27cdf04c9851712d6c1b99df6821a6623c3c9e55956d4b1e318c337b5a48/aiohttp-3.13.3-cp311-cp311-win_amd64.whl", hash = "sha256:642f752c3eb117b105acbd87e2c143de710987e09860d674e068c4c2c441034f", size = 457678, upload-time = "2026-01-03T17:30:12.719Z" }, + { url = "https://files.pythonhosted.org/packages/a0/be/4fc11f202955a69e0db803a12a062b8379c970c7c84f4882b6da17337cc1/aiohttp-3.13.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b903a4dfee7d347e2d87697d0713be59e0b87925be030c9178c5faa58ea58d5c", size = 739732, upload-time = "2026-01-03T17:30:14.23Z" }, + { url = "https://files.pythonhosted.org/packages/97/2c/621d5b851f94fa0bb7430d6089b3aa970a9d9b75196bc93bb624b0db237a/aiohttp-3.13.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a45530014d7a1e09f4a55f4f43097ba0fd155089372e105e4bff4ca76cb1b168", size = 494293, upload-time = "2026-01-03T17:30:15.96Z" }, + { url = "https://files.pythonhosted.org/packages/5d/43/4be01406b78e1be8320bb8316dc9c42dbab553d281c40364e0f862d5661c/aiohttp-3.13.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:27234ef6d85c914f9efeb77ff616dbf4ad2380be0cda40b4db086ffc7ddd1b7d", size = 493533, upload-time = "2026-01-03T17:30:17.431Z" }, + { url = "https://files.pythonhosted.org/packages/8d/a8/5a35dc56a06a2c90d4742cbf35294396907027f80eea696637945a106f25/aiohttp-3.13.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d32764c6c9aafb7fb55366a224756387cd50bfa720f32b88e0e6fa45b27dcf29", size = 1737839, upload-time = "2026-01-03T17:30:19.422Z" }, + { url = "https://files.pythonhosted.org/packages/bf/62/4b9eeb331da56530bf2e198a297e5303e1c1ebdceeb00fe9b568a65c5a0c/aiohttp-3.13.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b1a6102b4d3ebc07dad44fbf07b45bb600300f15b552ddf1851b5390202ea2e3", size = 1703932, upload-time = "2026-01-03T17:30:21.756Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f6/af16887b5d419e6a367095994c0b1332d154f647e7dc2bd50e61876e8e3d/aiohttp-3.13.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c014c7ea7fb775dd015b2d3137378b7be0249a448a1612268b5a90c2d81de04d", size = 1771906, upload-time = "2026-01-03T17:30:23.932Z" }, + { url = "https://files.pythonhosted.org/packages/ce/83/397c634b1bcc24292fa1e0c7822800f9f6569e32934bdeef09dae7992dfb/aiohttp-3.13.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2b8d8ddba8f95ba17582226f80e2de99c7a7948e66490ef8d947e272a93e9463", size = 1871020, upload-time = "2026-01-03T17:30:26Z" }, + { url = "https://files.pythonhosted.org/packages/86/f6/a62cbbf13f0ac80a70f71b1672feba90fdb21fd7abd8dbf25c0105fb6fa3/aiohttp-3.13.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ae8dd55c8e6c4257eae3a20fd2c8f41edaea5992ed67156642493b8daf3cecc", size = 1755181, upload-time = "2026-01-03T17:30:27.554Z" }, + { url = "https://files.pythonhosted.org/packages/0a/87/20a35ad487efdd3fba93d5843efdfaa62d2f1479eaafa7453398a44faf13/aiohttp-3.13.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:01ad2529d4b5035578f5081606a465f3b814c542882804e2e8cda61adf5c71bf", size = 1561794, upload-time = "2026-01-03T17:30:29.254Z" }, + { url = "https://files.pythonhosted.org/packages/de/95/8fd69a66682012f6716e1bc09ef8a1a2a91922c5725cb904689f112309c4/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bb4f7475e359992b580559e008c598091c45b5088f28614e855e42d39c2f1033", size = 1697900, upload-time = "2026-01-03T17:30:31.033Z" }, + { url = "https://files.pythonhosted.org/packages/e5/66/7b94b3b5ba70e955ff597672dad1691333080e37f50280178967aff68657/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c19b90316ad3b24c69cd78d5c9b4f3aa4497643685901185b65166293d36a00f", size = 1728239, upload-time = "2026-01-03T17:30:32.703Z" }, + { url = "https://files.pythonhosted.org/packages/47/71/6f72f77f9f7d74719692ab65a2a0252584bf8d5f301e2ecb4c0da734530a/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:96d604498a7c782cb15a51c406acaea70d8c027ee6b90c569baa6e7b93073679", size = 1740527, upload-time = "2026-01-03T17:30:34.695Z" }, + { url = "https://files.pythonhosted.org/packages/fa/b4/75ec16cbbd5c01bdaf4a05b19e103e78d7ce1ef7c80867eb0ace42ff4488/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:084911a532763e9d3dd95adf78a78f4096cd5f58cdc18e6fdbc1b58417a45423", size = 1554489, upload-time = "2026-01-03T17:30:36.864Z" }, + { url = "https://files.pythonhosted.org/packages/52/8f/bc518c0eea29f8406dcf7ed1f96c9b48e3bc3995a96159b3fc11f9e08321/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7a4a94eb787e606d0a09404b9c38c113d3b099d508021faa615d70a0131907ce", size = 1767852, upload-time = "2026-01-03T17:30:39.433Z" }, + { url = "https://files.pythonhosted.org/packages/9d/f2/a07a75173124f31f11ea6f863dc44e6f09afe2bca45dd4e64979490deab1/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:87797e645d9d8e222e04160ee32aa06bc5c163e8499f24db719e7852ec23093a", size = 1722379, upload-time = "2026-01-03T17:30:41.081Z" }, + { url = "https://files.pythonhosted.org/packages/3c/4a/1a3fee7c21350cac78e5c5cef711bac1b94feca07399f3d406972e2d8fcd/aiohttp-3.13.3-cp312-cp312-win32.whl", hash = "sha256:b04be762396457bef43f3597c991e192ee7da460a4953d7e647ee4b1c28e7046", size = 428253, upload-time = "2026-01-03T17:30:42.644Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b7/76175c7cb4eb73d91ad63c34e29fc4f77c9386bba4a65b53ba8e05ee3c39/aiohttp-3.13.3-cp312-cp312-win_amd64.whl", hash = "sha256:e3531d63d3bdfa7e3ac5e9b27b2dd7ec9df3206a98e0b3445fa906f233264c57", size = 455407, upload-time = "2026-01-03T17:30:44.195Z" }, + { url = "https://files.pythonhosted.org/packages/97/8a/12ca489246ca1faaf5432844adbfce7ff2cc4997733e0af120869345643a/aiohttp-3.13.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5dff64413671b0d3e7d5918ea490bdccb97a4ad29b3f311ed423200b2203e01c", size = 734190, upload-time = "2026-01-03T17:30:45.832Z" }, + { url = "https://files.pythonhosted.org/packages/32/08/de43984c74ed1fca5c014808963cc83cb00d7bb06af228f132d33862ca76/aiohttp-3.13.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:87b9aab6d6ed88235aa2970294f496ff1a1f9adcd724d800e9b952395a80ffd9", size = 491783, upload-time = "2026-01-03T17:30:47.466Z" }, + { url = "https://files.pythonhosted.org/packages/17/f8/8dd2cf6112a5a76f81f81a5130c57ca829d101ad583ce57f889179accdda/aiohttp-3.13.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:425c126c0dc43861e22cb1c14ba4c8e45d09516d0a3ae0a3f7494b79f5f233a3", size = 490704, upload-time = "2026-01-03T17:30:49.373Z" }, + { url = "https://files.pythonhosted.org/packages/6d/40/a46b03ca03936f832bc7eaa47cfbb1ad012ba1be4790122ee4f4f8cba074/aiohttp-3.13.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7f9120f7093c2a32d9647abcaf21e6ad275b4fbec5b55969f978b1a97c7c86bf", size = 1720652, upload-time = "2026-01-03T17:30:50.974Z" }, + { url = "https://files.pythonhosted.org/packages/f7/7e/917fe18e3607af92657e4285498f500dca797ff8c918bd7d90b05abf6c2a/aiohttp-3.13.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:697753042d57f4bf7122cab985bf15d0cef23c770864580f5af4f52023a56bd6", size = 1692014, upload-time = "2026-01-03T17:30:52.729Z" }, + { url = "https://files.pythonhosted.org/packages/71/b6/cefa4cbc00d315d68973b671cf105b21a609c12b82d52e5d0c9ae61d2a09/aiohttp-3.13.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6de499a1a44e7de70735d0b39f67c8f25eb3d91eb3103be99ca0fa882cdd987d", size = 1759777, upload-time = "2026-01-03T17:30:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/fb/e3/e06ee07b45e59e6d81498b591fc589629be1553abb2a82ce33efe2a7b068/aiohttp-3.13.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:37239e9f9a7ea9ac5bf6b92b0260b01f8a22281996da609206a84df860bc1261", size = 1861276, upload-time = "2026-01-03T17:30:56.512Z" }, + { url = "https://files.pythonhosted.org/packages/7c/24/75d274228acf35ceeb2850b8ce04de9dd7355ff7a0b49d607ee60c29c518/aiohttp-3.13.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f76c1e3fe7d7c8afad7ed193f89a292e1999608170dcc9751a7462a87dfd5bc0", size = 1743131, upload-time = "2026-01-03T17:30:58.256Z" }, + { url = "https://files.pythonhosted.org/packages/04/98/3d21dde21889b17ca2eea54fdcff21b27b93f45b7bb94ca029c31ab59dc3/aiohttp-3.13.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fc290605db2a917f6e81b0e1e0796469871f5af381ce15c604a3c5c7e51cb730", size = 1556863, upload-time = "2026-01-03T17:31:00.445Z" }, + { url = "https://files.pythonhosted.org/packages/9e/84/da0c3ab1192eaf64782b03971ab4055b475d0db07b17eff925e8c93b3aa5/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4021b51936308aeea0367b8f006dc999ca02bc118a0cc78c303f50a2ff6afb91", size = 1682793, upload-time = "2026-01-03T17:31:03.024Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0f/5802ada182f575afa02cbd0ec5180d7e13a402afb7c2c03a9aa5e5d49060/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:49a03727c1bba9a97d3e93c9f93ca03a57300f484b6e935463099841261195d3", size = 1716676, upload-time = "2026-01-03T17:31:04.842Z" }, + { url = "https://files.pythonhosted.org/packages/3f/8c/714d53bd8b5a4560667f7bbbb06b20c2382f9c7847d198370ec6526af39c/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3d9908a48eb7416dc1f4524e69f1d32e5d90e3981e4e37eb0aa1cd18f9cfa2a4", size = 1733217, upload-time = "2026-01-03T17:31:06.868Z" }, + { url = "https://files.pythonhosted.org/packages/7d/79/e2176f46d2e963facea939f5be2d26368ce543622be6f00a12844d3c991f/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:2712039939ec963c237286113c68dbad80a82a4281543f3abf766d9d73228998", size = 1552303, upload-time = "2026-01-03T17:31:08.958Z" }, + { url = "https://files.pythonhosted.org/packages/ab/6a/28ed4dea1759916090587d1fe57087b03e6c784a642b85ef48217b0277ae/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:7bfdc049127717581866fa4708791220970ce291c23e28ccf3922c700740fdc0", size = 1763673, upload-time = "2026-01-03T17:31:10.676Z" }, + { url = "https://files.pythonhosted.org/packages/e8/35/4a3daeb8b9fab49240d21c04d50732313295e4bd813a465d840236dd0ce1/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8057c98e0c8472d8846b9c79f56766bcc57e3e8ac7bfd510482332366c56c591", size = 1721120, upload-time = "2026-01-03T17:31:12.575Z" }, + { url = "https://files.pythonhosted.org/packages/bc/9f/d643bb3c5fb99547323e635e251c609fbbc660d983144cfebec529e09264/aiohttp-3.13.3-cp313-cp313-win32.whl", hash = "sha256:1449ceddcdbcf2e0446957863af03ebaaa03f94c090f945411b61269e2cb5daf", size = 427383, upload-time = "2026-01-03T17:31:14.382Z" }, + { url = "https://files.pythonhosted.org/packages/4e/f1/ab0395f8a79933577cdd996dd2f9aa6014af9535f65dddcf88204682fe62/aiohttp-3.13.3-cp313-cp313-win_amd64.whl", hash = "sha256:693781c45a4033d31d4187d2436f5ac701e7bbfe5df40d917736108c1cc7436e", size = 453899, upload-time = "2026-01-03T17:31:15.958Z" }, ] [[package]] @@ -117,9 +117,9 @@ dependencies = [ { name = "frozenlist" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload_time = "2025-07-03T22:54:43.528Z" } +sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload-time = "2025-07-03T22:54:43.528Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e", size = 7490, upload_time = "2025-07-03T22:54:42.156Z" }, + { url = "https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e", size = 7490, upload-time = "2025-07-03T22:54:42.156Z" }, ] [[package]] @@ -132,27 +132,27 @@ dependencies = [ { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/94/13/8b084e0f2efb0275a1d534838844926f798bd766566b1375174e2448cd31/alembic-1.18.4.tar.gz", hash = "sha256:cb6e1fd84b6174ab8dbb2329f86d631ba9559dd78df550b57804d607672cedbc", size = 2056725, upload_time = "2026-02-10T16:00:47.195Z" } +sdist = { url = "https://files.pythonhosted.org/packages/94/13/8b084e0f2efb0275a1d534838844926f798bd766566b1375174e2448cd31/alembic-1.18.4.tar.gz", hash = "sha256:cb6e1fd84b6174ab8dbb2329f86d631ba9559dd78df550b57804d607672cedbc", size = 2056725, upload-time = "2026-02-10T16:00:47.195Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/29/6533c317b74f707ea28f8d633734dbda2119bbadfc61b2f3640ba835d0f7/alembic-1.18.4-py3-none-any.whl", hash = "sha256:a5ed4adcf6d8a4cb575f3d759f071b03cd6e5c7618eb796cb52497be25bfe19a", size = 263893, upload_time = "2026-02-10T16:00:49.997Z" }, + { url = "https://files.pythonhosted.org/packages/d2/29/6533c317b74f707ea28f8d633734dbda2119bbadfc61b2f3640ba835d0f7/alembic-1.18.4-py3-none-any.whl", hash = "sha256:a5ed4adcf6d8a4cb575f3d759f071b03cd6e5c7618eb796cb52497be25bfe19a", size = 263893, upload-time = "2026-02-10T16:00:49.997Z" }, ] [[package]] name = "annotated-doc" version = "0.0.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload_time = "2025-11-10T22:07:42.062Z" } +sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload-time = "2025-11-10T22:07:42.062Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload_time = "2025-11-10T22:07:40.673Z" }, + { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" }, ] [[package]] name = "annotated-types" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload_time = "2024-05-20T21:33:25.928Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload_time = "2024-05-20T21:33:24.1Z" }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, ] [[package]] @@ -164,9 +164,9 @@ dependencies = [ { name = "idna" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685, upload_time = "2026-01-06T11:45:21.246Z" } +sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685, upload-time = "2026-01-06T11:45:21.246Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592, upload_time = "2026-01-06T11:45:19.497Z" }, + { url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592, upload-time = "2026-01-06T11:45:19.497Z" }, ] [[package]] @@ -183,6 +183,7 @@ dependencies = [ { name = "fastapi", extra = ["standard"] }, { name = "ftfy" }, { name = "guardrails-ai" }, + { name = "guardrails-ai-ban-list" }, { name = "httpx" }, { name = "huggingface-hub" }, { name = "jinja2" }, @@ -232,6 +233,7 @@ requires-dist = [ { name = "fastapi", extras = ["standard"], specifier = ">=0.114.2,<1.0.0" }, { name = "ftfy" }, { name = "guardrails-ai", git = "https://github.com/guardrails-ai/guardrails.git?rev=379ab72ff643d0d9b8dff4f74c956ce29eab341d" }, + { name = "guardrails-ai-ban-list", specifier = ">=0.1.0" }, { name = "httpx", specifier = ">=0.25.1,<1.0.0" }, { name = "huggingface-hub", specifier = ">=1.5.0,<2.0" }, { name = "jinja2", specifier = ">=3.1.4,<4.0.0" }, @@ -274,9 +276,9 @@ dependencies = [ { name = "python-dateutil" }, { name = "tzdata" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/33/032cdc44182491aa708d06a68b62434140d8c50820a087fac7af37703357/arrow-1.4.0.tar.gz", hash = "sha256:ed0cc050e98001b8779e84d461b0098c4ac597e88704a655582b21d116e526d7", size = 152931, upload_time = "2025-10-18T17:46:46.761Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/33/032cdc44182491aa708d06a68b62434140d8c50820a087fac7af37703357/arrow-1.4.0.tar.gz", hash = "sha256:ed0cc050e98001b8779e84d461b0098c4ac597e88704a655582b21d116e526d7", size = 152931, upload-time = "2025-10-18T17:46:46.761Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/c9/d7977eaacb9df673210491da99e6a247e93df98c715fc43fd136ce1d3d33/arrow-1.4.0-py3-none-any.whl", hash = "sha256:749f0769958ebdc79c173ff0b0670d59051a535fa26e8eba02953dc19eb43205", size = 68797, upload_time = "2025-10-18T17:46:45.663Z" }, + { url = "https://files.pythonhosted.org/packages/ed/c9/d7977eaacb9df673210491da99e6a247e93df98c715fc43fd136ce1d3d33/arrow-1.4.0-py3-none-any.whl", hash = "sha256:749f0769958ebdc79c173ff0b0670d59051a535fa26e8eba02953dc19eb43205", size = 68797, upload-time = "2025-10-18T17:46:45.663Z" }, ] [[package]] @@ -287,85 +289,85 @@ dependencies = [ { name = "packaging" }, { name = "starlette" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f4/ff/a6538245ac1eaa7733ec6740774e9d5add019e2c63caa29e758c16c0afdd/asgi_correlation_id-4.3.4.tar.gz", hash = "sha256:ea6bc310380373cb9f731dc2e8b2b6fb978a76afe33f7a2384f697b8d6cd811d", size = 20075, upload_time = "2024-10-17T11:44:30.324Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f4/ff/a6538245ac1eaa7733ec6740774e9d5add019e2c63caa29e758c16c0afdd/asgi_correlation_id-4.3.4.tar.gz", hash = "sha256:ea6bc310380373cb9f731dc2e8b2b6fb978a76afe33f7a2384f697b8d6cd811d", size = 20075, upload-time = "2024-10-17T11:44:30.324Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/ab/6936e2663c47a926e0659437b9333ad87d1ff49b1375d239026e0a268eba/asgi_correlation_id-4.3.4-py3-none-any.whl", hash = "sha256:36ce69b06c7d96b4acb89c7556a4c4f01a972463d3d49c675026cbbd08e9a0a2", size = 15262, upload_time = "2024-10-17T11:44:28.739Z" }, + { url = "https://files.pythonhosted.org/packages/d9/ab/6936e2663c47a926e0659437b9333ad87d1ff49b1375d239026e0a268eba/asgi_correlation_id-4.3.4-py3-none-any.whl", hash = "sha256:36ce69b06c7d96b4acb89c7556a4c4f01a972463d3d49c675026cbbd08e9a0a2", size = 15262, upload-time = "2024-10-17T11:44:28.739Z" }, ] [[package]] name = "async-timeout" version = "5.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274, upload_time = "2024-11-06T16:41:39.6Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274, upload-time = "2024-11-06T16:41:39.6Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233, upload_time = "2024-11-06T16:41:37.9Z" }, + { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233, upload-time = "2024-11-06T16:41:37.9Z" }, ] [[package]] name = "attrs" version = "25.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251, upload_time = "2025-10-06T13:54:44.725Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251, upload-time = "2025-10-06T13:54:44.725Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload_time = "2025-10-06T13:54:43.17Z" }, + { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" }, ] [[package]] name = "bcrypt" version = "4.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/5d/6d7433e0f3cd46ce0b43cd65e1db465ea024dbb8216fb2404e919c2ad77b/bcrypt-4.3.0.tar.gz", hash = "sha256:3a3fd2204178b6d2adcf09cb4f6426ffef54762577a7c9b54c159008cb288c18", size = 25697, upload_time = "2025-02-28T01:24:09.174Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/2c/3d44e853d1fe969d229bd58d39ae6902b3d924af0e2b5a60d17d4b809ded/bcrypt-4.3.0-cp313-cp313t-macosx_10_12_universal2.whl", hash = "sha256:f01e060f14b6b57bbb72fc5b4a83ac21c443c9a2ee708e04a10e9192f90a6281", size = 483719, upload_time = "2025-02-28T01:22:34.539Z" }, - { url = "https://files.pythonhosted.org/packages/a1/e2/58ff6e2a22eca2e2cff5370ae56dba29d70b1ea6fc08ee9115c3ae367795/bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5eeac541cefd0bb887a371ef73c62c3cd78535e4887b310626036a7c0a817bb", size = 272001, upload_time = "2025-02-28T01:22:38.078Z" }, - { url = "https://files.pythonhosted.org/packages/37/1f/c55ed8dbe994b1d088309e366749633c9eb90d139af3c0a50c102ba68a1a/bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59e1aa0e2cd871b08ca146ed08445038f42ff75968c7ae50d2fdd7860ade2180", size = 277451, upload_time = "2025-02-28T01:22:40.787Z" }, - { url = "https://files.pythonhosted.org/packages/d7/1c/794feb2ecf22fe73dcfb697ea7057f632061faceb7dcf0f155f3443b4d79/bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:0042b2e342e9ae3d2ed22727c1262f76cc4f345683b5c1715f0250cf4277294f", size = 272792, upload_time = "2025-02-28T01:22:43.144Z" }, - { url = "https://files.pythonhosted.org/packages/13/b7/0b289506a3f3598c2ae2bdfa0ea66969812ed200264e3f61df77753eee6d/bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74a8d21a09f5e025a9a23e7c0fd2c7fe8e7503e4d356c0a2c1486ba010619f09", size = 289752, upload_time = "2025-02-28T01:22:45.56Z" }, - { url = "https://files.pythonhosted.org/packages/dc/24/d0fb023788afe9e83cc118895a9f6c57e1044e7e1672f045e46733421fe6/bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:0142b2cb84a009f8452c8c5a33ace5e3dfec4159e7735f5afe9a4d50a8ea722d", size = 277762, upload_time = "2025-02-28T01:22:47.023Z" }, - { url = "https://files.pythonhosted.org/packages/e4/38/cde58089492e55ac4ef6c49fea7027600c84fd23f7520c62118c03b4625e/bcrypt-4.3.0-cp313-cp313t-manylinux_2_34_aarch64.whl", hash = "sha256:12fa6ce40cde3f0b899729dbd7d5e8811cb892d31b6f7d0334a1f37748b789fd", size = 272384, upload_time = "2025-02-28T01:22:49.221Z" }, - { url = "https://files.pythonhosted.org/packages/de/6a/d5026520843490cfc8135d03012a413e4532a400e471e6188b01b2de853f/bcrypt-4.3.0-cp313-cp313t-manylinux_2_34_x86_64.whl", hash = "sha256:5bd3cca1f2aa5dbcf39e2aa13dd094ea181f48959e1071265de49cc2b82525af", size = 277329, upload_time = "2025-02-28T01:22:51.603Z" }, - { url = "https://files.pythonhosted.org/packages/b3/a3/4fc5255e60486466c389e28c12579d2829b28a527360e9430b4041df4cf9/bcrypt-4.3.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:335a420cfd63fc5bc27308e929bee231c15c85cc4c496610ffb17923abf7f231", size = 305241, upload_time = "2025-02-28T01:22:53.283Z" }, - { url = "https://files.pythonhosted.org/packages/c7/15/2b37bc07d6ce27cc94e5b10fd5058900eb8fb11642300e932c8c82e25c4a/bcrypt-4.3.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:0e30e5e67aed0187a1764911af023043b4542e70a7461ad20e837e94d23e1d6c", size = 309617, upload_time = "2025-02-28T01:22:55.461Z" }, - { url = "https://files.pythonhosted.org/packages/5f/1f/99f65edb09e6c935232ba0430c8c13bb98cb3194b6d636e61d93fe60ac59/bcrypt-4.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3b8d62290ebefd49ee0b3ce7500f5dbdcf13b81402c05f6dafab9a1e1b27212f", size = 335751, upload_time = "2025-02-28T01:22:57.81Z" }, - { url = "https://files.pythonhosted.org/packages/00/1b/b324030c706711c99769988fcb694b3cb23f247ad39a7823a78e361bdbb8/bcrypt-4.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2ef6630e0ec01376f59a006dc72918b1bf436c3b571b80fa1968d775fa02fe7d", size = 355965, upload_time = "2025-02-28T01:22:59.181Z" }, - { url = "https://files.pythonhosted.org/packages/aa/dd/20372a0579dd915dfc3b1cd4943b3bca431866fcb1dfdfd7518c3caddea6/bcrypt-4.3.0-cp313-cp313t-win32.whl", hash = "sha256:7a4be4cbf241afee43f1c3969b9103a41b40bcb3a3f467ab19f891d9bc4642e4", size = 155316, upload_time = "2025-02-28T01:23:00.763Z" }, - { url = "https://files.pythonhosted.org/packages/6d/52/45d969fcff6b5577c2bf17098dc36269b4c02197d551371c023130c0f890/bcrypt-4.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c1949bf259a388863ced887c7861da1df681cb2388645766c89fdfd9004c669", size = 147752, upload_time = "2025-02-28T01:23:02.908Z" }, - { url = "https://files.pythonhosted.org/packages/11/22/5ada0b9af72b60cbc4c9a399fdde4af0feaa609d27eb0adc61607997a3fa/bcrypt-4.3.0-cp38-abi3-macosx_10_12_universal2.whl", hash = "sha256:f81b0ed2639568bf14749112298f9e4e2b28853dab50a8b357e31798686a036d", size = 498019, upload_time = "2025-02-28T01:23:05.838Z" }, - { url = "https://files.pythonhosted.org/packages/b8/8c/252a1edc598dc1ce57905be173328eda073083826955ee3c97c7ff5ba584/bcrypt-4.3.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:864f8f19adbe13b7de11ba15d85d4a428c7e2f344bac110f667676a0ff84924b", size = 279174, upload_time = "2025-02-28T01:23:07.274Z" }, - { url = "https://files.pythonhosted.org/packages/29/5b/4547d5c49b85f0337c13929f2ccbe08b7283069eea3550a457914fc078aa/bcrypt-4.3.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e36506d001e93bffe59754397572f21bb5dc7c83f54454c990c74a468cd589e", size = 283870, upload_time = "2025-02-28T01:23:09.151Z" }, - { url = "https://files.pythonhosted.org/packages/be/21/7dbaf3fa1745cb63f776bb046e481fbababd7d344c5324eab47f5ca92dd2/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:842d08d75d9fe9fb94b18b071090220697f9f184d4547179b60734846461ed59", size = 279601, upload_time = "2025-02-28T01:23:11.461Z" }, - { url = "https://files.pythonhosted.org/packages/6d/64/e042fc8262e971347d9230d9abbe70d68b0a549acd8611c83cebd3eaec67/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7c03296b85cb87db865d91da79bf63d5609284fc0cab9472fdd8367bbd830753", size = 297660, upload_time = "2025-02-28T01:23:12.989Z" }, - { url = "https://files.pythonhosted.org/packages/50/b8/6294eb84a3fef3b67c69b4470fcdd5326676806bf2519cda79331ab3c3a9/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:62f26585e8b219cdc909b6a0069efc5e4267e25d4a3770a364ac58024f62a761", size = 284083, upload_time = "2025-02-28T01:23:14.5Z" }, - { url = "https://files.pythonhosted.org/packages/62/e6/baff635a4f2c42e8788fe1b1633911c38551ecca9a749d1052d296329da6/bcrypt-4.3.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:beeefe437218a65322fbd0069eb437e7c98137e08f22c4660ac2dc795c31f8bb", size = 279237, upload_time = "2025-02-28T01:23:16.686Z" }, - { url = "https://files.pythonhosted.org/packages/39/48/46f623f1b0c7dc2e5de0b8af5e6f5ac4cc26408ac33f3d424e5ad8da4a90/bcrypt-4.3.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:97eea7408db3a5bcce4a55d13245ab3fa566e23b4c67cd227062bb49e26c585d", size = 283737, upload_time = "2025-02-28T01:23:18.897Z" }, - { url = "https://files.pythonhosted.org/packages/49/8b/70671c3ce9c0fca4a6cc3cc6ccbaa7e948875a2e62cbd146e04a4011899c/bcrypt-4.3.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:191354ebfe305e84f344c5964c7cd5f924a3bfc5d405c75ad07f232b6dffb49f", size = 312741, upload_time = "2025-02-28T01:23:21.041Z" }, - { url = "https://files.pythonhosted.org/packages/27/fb/910d3a1caa2d249b6040a5caf9f9866c52114d51523ac2fb47578a27faee/bcrypt-4.3.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:41261d64150858eeb5ff43c753c4b216991e0ae16614a308a15d909503617732", size = 316472, upload_time = "2025-02-28T01:23:23.183Z" }, - { url = "https://files.pythonhosted.org/packages/dc/cf/7cf3a05b66ce466cfb575dbbda39718d45a609daa78500f57fa9f36fa3c0/bcrypt-4.3.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:33752b1ba962ee793fa2b6321404bf20011fe45b9afd2a842139de3011898fef", size = 343606, upload_time = "2025-02-28T01:23:25.361Z" }, - { url = "https://files.pythonhosted.org/packages/e3/b8/e970ecc6d7e355c0d892b7f733480f4aa8509f99b33e71550242cf0b7e63/bcrypt-4.3.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:50e6e80a4bfd23a25f5c05b90167c19030cf9f87930f7cb2eacb99f45d1c3304", size = 362867, upload_time = "2025-02-28T01:23:26.875Z" }, - { url = "https://files.pythonhosted.org/packages/a9/97/8d3118efd8354c555a3422d544163f40d9f236be5b96c714086463f11699/bcrypt-4.3.0-cp38-abi3-win32.whl", hash = "sha256:67a561c4d9fb9465ec866177e7aebcad08fe23aaf6fbd692a6fab69088abfc51", size = 160589, upload_time = "2025-02-28T01:23:28.381Z" }, - { url = "https://files.pythonhosted.org/packages/29/07/416f0b99f7f3997c69815365babbc2e8754181a4b1899d921b3c7d5b6f12/bcrypt-4.3.0-cp38-abi3-win_amd64.whl", hash = "sha256:584027857bc2843772114717a7490a37f68da563b3620f78a849bcb54dc11e62", size = 152794, upload_time = "2025-02-28T01:23:30.187Z" }, - { url = "https://files.pythonhosted.org/packages/6e/c1/3fa0e9e4e0bfd3fd77eb8b52ec198fd6e1fd7e9402052e43f23483f956dd/bcrypt-4.3.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d3efb1157edebfd9128e4e46e2ac1a64e0c1fe46fb023158a407c7892b0f8c3", size = 498969, upload_time = "2025-02-28T01:23:31.945Z" }, - { url = "https://files.pythonhosted.org/packages/ce/d4/755ce19b6743394787fbd7dff6bf271b27ee9b5912a97242e3caf125885b/bcrypt-4.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08bacc884fd302b611226c01014eca277d48f0a05187666bca23aac0dad6fe24", size = 279158, upload_time = "2025-02-28T01:23:34.161Z" }, - { url = "https://files.pythonhosted.org/packages/9b/5d/805ef1a749c965c46b28285dfb5cd272a7ed9fa971f970435a5133250182/bcrypt-4.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6746e6fec103fcd509b96bacdfdaa2fbde9a553245dbada284435173a6f1aef", size = 284285, upload_time = "2025-02-28T01:23:35.765Z" }, - { url = "https://files.pythonhosted.org/packages/ab/2b/698580547a4a4988e415721b71eb45e80c879f0fb04a62da131f45987b96/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:afe327968aaf13fc143a56a3360cb27d4ad0345e34da12c7290f1b00b8fe9a8b", size = 279583, upload_time = "2025-02-28T01:23:38.021Z" }, - { url = "https://files.pythonhosted.org/packages/f2/87/62e1e426418204db520f955ffd06f1efd389feca893dad7095bf35612eec/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d9af79d322e735b1fc33404b5765108ae0ff232d4b54666d46730f8ac1a43676", size = 297896, upload_time = "2025-02-28T01:23:39.575Z" }, - { url = "https://files.pythonhosted.org/packages/cb/c6/8fedca4c2ada1b6e889c52d2943b2f968d3427e5d65f595620ec4c06fa2f/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f1e3ffa1365e8702dc48c8b360fef8d7afeca482809c5e45e653af82ccd088c1", size = 284492, upload_time = "2025-02-28T01:23:40.901Z" }, - { url = "https://files.pythonhosted.org/packages/4d/4d/c43332dcaaddb7710a8ff5269fcccba97ed3c85987ddaa808db084267b9a/bcrypt-4.3.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:3004df1b323d10021fda07a813fd33e0fd57bef0e9a480bb143877f6cba996fe", size = 279213, upload_time = "2025-02-28T01:23:42.653Z" }, - { url = "https://files.pythonhosted.org/packages/dc/7f/1e36379e169a7df3a14a1c160a49b7b918600a6008de43ff20d479e6f4b5/bcrypt-4.3.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:531457e5c839d8caea9b589a1bcfe3756b0547d7814e9ce3d437f17da75c32b0", size = 284162, upload_time = "2025-02-28T01:23:43.964Z" }, - { url = "https://files.pythonhosted.org/packages/1c/0a/644b2731194b0d7646f3210dc4d80c7fee3ecb3a1f791a6e0ae6bb8684e3/bcrypt-4.3.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:17a854d9a7a476a89dcef6c8bd119ad23e0f82557afbd2c442777a16408e614f", size = 312856, upload_time = "2025-02-28T01:23:46.011Z" }, - { url = "https://files.pythonhosted.org/packages/dc/62/2a871837c0bb6ab0c9a88bf54de0fc021a6a08832d4ea313ed92a669d437/bcrypt-4.3.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6fb1fd3ab08c0cbc6826a2e0447610c6f09e983a281b919ed721ad32236b8b23", size = 316726, upload_time = "2025-02-28T01:23:47.575Z" }, - { url = "https://files.pythonhosted.org/packages/0c/a1/9898ea3faac0b156d457fd73a3cb9c2855c6fd063e44b8522925cdd8ce46/bcrypt-4.3.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e965a9c1e9a393b8005031ff52583cedc15b7884fce7deb8b0346388837d6cfe", size = 343664, upload_time = "2025-02-28T01:23:49.059Z" }, - { url = "https://files.pythonhosted.org/packages/40/f2/71b4ed65ce38982ecdda0ff20c3ad1b15e71949c78b2c053df53629ce940/bcrypt-4.3.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:79e70b8342a33b52b55d93b3a59223a844962bef479f6a0ea318ebbcadf71505", size = 363128, upload_time = "2025-02-28T01:23:50.399Z" }, - { url = "https://files.pythonhosted.org/packages/11/99/12f6a58eca6dea4be992d6c681b7ec9410a1d9f5cf368c61437e31daa879/bcrypt-4.3.0-cp39-abi3-win32.whl", hash = "sha256:b4d4e57f0a63fd0b358eb765063ff661328f69a04494427265950c71b992a39a", size = 160598, upload_time = "2025-02-28T01:23:51.775Z" }, - { url = "https://files.pythonhosted.org/packages/a9/cf/45fb5261ece3e6b9817d3d82b2f343a505fd58674a92577923bc500bd1aa/bcrypt-4.3.0-cp39-abi3-win_amd64.whl", hash = "sha256:e53e074b120f2877a35cc6c736b8eb161377caae8925c17688bd46ba56daaa5b", size = 152799, upload_time = "2025-02-28T01:23:53.139Z" }, - { url = "https://files.pythonhosted.org/packages/55/2d/0c7e5ab0524bf1a443e34cdd3926ec6f5879889b2f3c32b2f5074e99ed53/bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c950d682f0952bafcceaf709761da0a32a942272fad381081b51096ffa46cea1", size = 275367, upload_time = "2025-02-28T01:23:54.578Z" }, - { url = "https://files.pythonhosted.org/packages/10/4f/f77509f08bdff8806ecc4dc472b6e187c946c730565a7470db772d25df70/bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:107d53b5c67e0bbc3f03ebf5b030e0403d24dda980f8e244795335ba7b4a027d", size = 280644, upload_time = "2025-02-28T01:23:56.547Z" }, - { url = "https://files.pythonhosted.org/packages/35/18/7d9dc16a3a4d530d0a9b845160e9e5d8eb4f00483e05d44bb4116a1861da/bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:b693dbb82b3c27a1604a3dff5bfc5418a7e6a781bb795288141e5f80cf3a3492", size = 274881, upload_time = "2025-02-28T01:23:57.935Z" }, - { url = "https://files.pythonhosted.org/packages/df/c4/ae6921088adf1e37f2a3a6a688e72e7d9e45fdd3ae5e0bc931870c1ebbda/bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:b6354d3760fcd31994a14c89659dee887f1351a06e5dac3c1142307172a79f90", size = 280203, upload_time = "2025-02-28T01:23:59.331Z" }, - { url = "https://files.pythonhosted.org/packages/4c/b1/1289e21d710496b88340369137cc4c5f6ee036401190ea116a7b4ae6d32a/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a839320bf27d474e52ef8cb16449bb2ce0ba03ca9f44daba6d93fa1d8828e48a", size = 275103, upload_time = "2025-02-28T01:24:00.764Z" }, - { url = "https://files.pythonhosted.org/packages/94/41/19be9fe17e4ffc5d10b7b67f10e459fc4eee6ffe9056a88de511920cfd8d/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:bdc6a24e754a555d7316fa4774e64c6c3997d27ed2d1964d55920c7c227bc4ce", size = 280513, upload_time = "2025-02-28T01:24:02.243Z" }, - { url = "https://files.pythonhosted.org/packages/aa/73/05687a9ef89edebdd8ad7474c16d8af685eb4591c3c38300bb6aad4f0076/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:55a935b8e9a1d2def0626c4269db3fcd26728cbff1e84f0341465c31c4ee56d8", size = 274685, upload_time = "2025-02-28T01:24:04.512Z" }, - { url = "https://files.pythonhosted.org/packages/63/13/47bba97924ebe86a62ef83dc75b7c8a881d53c535f83e2c54c4bd701e05c/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:57967b7a28d855313a963aaea51bf6df89f833db4320da458e5b3c5ab6d4c938", size = 280110, upload_time = "2025-02-28T01:24:05.896Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/bb/5d/6d7433e0f3cd46ce0b43cd65e1db465ea024dbb8216fb2404e919c2ad77b/bcrypt-4.3.0.tar.gz", hash = "sha256:3a3fd2204178b6d2adcf09cb4f6426ffef54762577a7c9b54c159008cb288c18", size = 25697, upload-time = "2025-02-28T01:24:09.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/2c/3d44e853d1fe969d229bd58d39ae6902b3d924af0e2b5a60d17d4b809ded/bcrypt-4.3.0-cp313-cp313t-macosx_10_12_universal2.whl", hash = "sha256:f01e060f14b6b57bbb72fc5b4a83ac21c443c9a2ee708e04a10e9192f90a6281", size = 483719, upload-time = "2025-02-28T01:22:34.539Z" }, + { url = "https://files.pythonhosted.org/packages/a1/e2/58ff6e2a22eca2e2cff5370ae56dba29d70b1ea6fc08ee9115c3ae367795/bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5eeac541cefd0bb887a371ef73c62c3cd78535e4887b310626036a7c0a817bb", size = 272001, upload-time = "2025-02-28T01:22:38.078Z" }, + { url = "https://files.pythonhosted.org/packages/37/1f/c55ed8dbe994b1d088309e366749633c9eb90d139af3c0a50c102ba68a1a/bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59e1aa0e2cd871b08ca146ed08445038f42ff75968c7ae50d2fdd7860ade2180", size = 277451, upload-time = "2025-02-28T01:22:40.787Z" }, + { url = "https://files.pythonhosted.org/packages/d7/1c/794feb2ecf22fe73dcfb697ea7057f632061faceb7dcf0f155f3443b4d79/bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:0042b2e342e9ae3d2ed22727c1262f76cc4f345683b5c1715f0250cf4277294f", size = 272792, upload-time = "2025-02-28T01:22:43.144Z" }, + { url = "https://files.pythonhosted.org/packages/13/b7/0b289506a3f3598c2ae2bdfa0ea66969812ed200264e3f61df77753eee6d/bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74a8d21a09f5e025a9a23e7c0fd2c7fe8e7503e4d356c0a2c1486ba010619f09", size = 289752, upload-time = "2025-02-28T01:22:45.56Z" }, + { url = "https://files.pythonhosted.org/packages/dc/24/d0fb023788afe9e83cc118895a9f6c57e1044e7e1672f045e46733421fe6/bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:0142b2cb84a009f8452c8c5a33ace5e3dfec4159e7735f5afe9a4d50a8ea722d", size = 277762, upload-time = "2025-02-28T01:22:47.023Z" }, + { url = "https://files.pythonhosted.org/packages/e4/38/cde58089492e55ac4ef6c49fea7027600c84fd23f7520c62118c03b4625e/bcrypt-4.3.0-cp313-cp313t-manylinux_2_34_aarch64.whl", hash = "sha256:12fa6ce40cde3f0b899729dbd7d5e8811cb892d31b6f7d0334a1f37748b789fd", size = 272384, upload-time = "2025-02-28T01:22:49.221Z" }, + { url = "https://files.pythonhosted.org/packages/de/6a/d5026520843490cfc8135d03012a413e4532a400e471e6188b01b2de853f/bcrypt-4.3.0-cp313-cp313t-manylinux_2_34_x86_64.whl", hash = "sha256:5bd3cca1f2aa5dbcf39e2aa13dd094ea181f48959e1071265de49cc2b82525af", size = 277329, upload-time = "2025-02-28T01:22:51.603Z" }, + { url = "https://files.pythonhosted.org/packages/b3/a3/4fc5255e60486466c389e28c12579d2829b28a527360e9430b4041df4cf9/bcrypt-4.3.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:335a420cfd63fc5bc27308e929bee231c15c85cc4c496610ffb17923abf7f231", size = 305241, upload-time = "2025-02-28T01:22:53.283Z" }, + { url = "https://files.pythonhosted.org/packages/c7/15/2b37bc07d6ce27cc94e5b10fd5058900eb8fb11642300e932c8c82e25c4a/bcrypt-4.3.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:0e30e5e67aed0187a1764911af023043b4542e70a7461ad20e837e94d23e1d6c", size = 309617, upload-time = "2025-02-28T01:22:55.461Z" }, + { url = "https://files.pythonhosted.org/packages/5f/1f/99f65edb09e6c935232ba0430c8c13bb98cb3194b6d636e61d93fe60ac59/bcrypt-4.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3b8d62290ebefd49ee0b3ce7500f5dbdcf13b81402c05f6dafab9a1e1b27212f", size = 335751, upload-time = "2025-02-28T01:22:57.81Z" }, + { url = "https://files.pythonhosted.org/packages/00/1b/b324030c706711c99769988fcb694b3cb23f247ad39a7823a78e361bdbb8/bcrypt-4.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2ef6630e0ec01376f59a006dc72918b1bf436c3b571b80fa1968d775fa02fe7d", size = 355965, upload-time = "2025-02-28T01:22:59.181Z" }, + { url = "https://files.pythonhosted.org/packages/aa/dd/20372a0579dd915dfc3b1cd4943b3bca431866fcb1dfdfd7518c3caddea6/bcrypt-4.3.0-cp313-cp313t-win32.whl", hash = "sha256:7a4be4cbf241afee43f1c3969b9103a41b40bcb3a3f467ab19f891d9bc4642e4", size = 155316, upload-time = "2025-02-28T01:23:00.763Z" }, + { url = "https://files.pythonhosted.org/packages/6d/52/45d969fcff6b5577c2bf17098dc36269b4c02197d551371c023130c0f890/bcrypt-4.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c1949bf259a388863ced887c7861da1df681cb2388645766c89fdfd9004c669", size = 147752, upload-time = "2025-02-28T01:23:02.908Z" }, + { url = "https://files.pythonhosted.org/packages/11/22/5ada0b9af72b60cbc4c9a399fdde4af0feaa609d27eb0adc61607997a3fa/bcrypt-4.3.0-cp38-abi3-macosx_10_12_universal2.whl", hash = "sha256:f81b0ed2639568bf14749112298f9e4e2b28853dab50a8b357e31798686a036d", size = 498019, upload-time = "2025-02-28T01:23:05.838Z" }, + { url = "https://files.pythonhosted.org/packages/b8/8c/252a1edc598dc1ce57905be173328eda073083826955ee3c97c7ff5ba584/bcrypt-4.3.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:864f8f19adbe13b7de11ba15d85d4a428c7e2f344bac110f667676a0ff84924b", size = 279174, upload-time = "2025-02-28T01:23:07.274Z" }, + { url = "https://files.pythonhosted.org/packages/29/5b/4547d5c49b85f0337c13929f2ccbe08b7283069eea3550a457914fc078aa/bcrypt-4.3.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e36506d001e93bffe59754397572f21bb5dc7c83f54454c990c74a468cd589e", size = 283870, upload-time = "2025-02-28T01:23:09.151Z" }, + { url = "https://files.pythonhosted.org/packages/be/21/7dbaf3fa1745cb63f776bb046e481fbababd7d344c5324eab47f5ca92dd2/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:842d08d75d9fe9fb94b18b071090220697f9f184d4547179b60734846461ed59", size = 279601, upload-time = "2025-02-28T01:23:11.461Z" }, + { url = "https://files.pythonhosted.org/packages/6d/64/e042fc8262e971347d9230d9abbe70d68b0a549acd8611c83cebd3eaec67/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7c03296b85cb87db865d91da79bf63d5609284fc0cab9472fdd8367bbd830753", size = 297660, upload-time = "2025-02-28T01:23:12.989Z" }, + { url = "https://files.pythonhosted.org/packages/50/b8/6294eb84a3fef3b67c69b4470fcdd5326676806bf2519cda79331ab3c3a9/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:62f26585e8b219cdc909b6a0069efc5e4267e25d4a3770a364ac58024f62a761", size = 284083, upload-time = "2025-02-28T01:23:14.5Z" }, + { url = "https://files.pythonhosted.org/packages/62/e6/baff635a4f2c42e8788fe1b1633911c38551ecca9a749d1052d296329da6/bcrypt-4.3.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:beeefe437218a65322fbd0069eb437e7c98137e08f22c4660ac2dc795c31f8bb", size = 279237, upload-time = "2025-02-28T01:23:16.686Z" }, + { url = "https://files.pythonhosted.org/packages/39/48/46f623f1b0c7dc2e5de0b8af5e6f5ac4cc26408ac33f3d424e5ad8da4a90/bcrypt-4.3.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:97eea7408db3a5bcce4a55d13245ab3fa566e23b4c67cd227062bb49e26c585d", size = 283737, upload-time = "2025-02-28T01:23:18.897Z" }, + { url = "https://files.pythonhosted.org/packages/49/8b/70671c3ce9c0fca4a6cc3cc6ccbaa7e948875a2e62cbd146e04a4011899c/bcrypt-4.3.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:191354ebfe305e84f344c5964c7cd5f924a3bfc5d405c75ad07f232b6dffb49f", size = 312741, upload-time = "2025-02-28T01:23:21.041Z" }, + { url = "https://files.pythonhosted.org/packages/27/fb/910d3a1caa2d249b6040a5caf9f9866c52114d51523ac2fb47578a27faee/bcrypt-4.3.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:41261d64150858eeb5ff43c753c4b216991e0ae16614a308a15d909503617732", size = 316472, upload-time = "2025-02-28T01:23:23.183Z" }, + { url = "https://files.pythonhosted.org/packages/dc/cf/7cf3a05b66ce466cfb575dbbda39718d45a609daa78500f57fa9f36fa3c0/bcrypt-4.3.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:33752b1ba962ee793fa2b6321404bf20011fe45b9afd2a842139de3011898fef", size = 343606, upload-time = "2025-02-28T01:23:25.361Z" }, + { url = "https://files.pythonhosted.org/packages/e3/b8/e970ecc6d7e355c0d892b7f733480f4aa8509f99b33e71550242cf0b7e63/bcrypt-4.3.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:50e6e80a4bfd23a25f5c05b90167c19030cf9f87930f7cb2eacb99f45d1c3304", size = 362867, upload-time = "2025-02-28T01:23:26.875Z" }, + { url = "https://files.pythonhosted.org/packages/a9/97/8d3118efd8354c555a3422d544163f40d9f236be5b96c714086463f11699/bcrypt-4.3.0-cp38-abi3-win32.whl", hash = "sha256:67a561c4d9fb9465ec866177e7aebcad08fe23aaf6fbd692a6fab69088abfc51", size = 160589, upload-time = "2025-02-28T01:23:28.381Z" }, + { url = "https://files.pythonhosted.org/packages/29/07/416f0b99f7f3997c69815365babbc2e8754181a4b1899d921b3c7d5b6f12/bcrypt-4.3.0-cp38-abi3-win_amd64.whl", hash = "sha256:584027857bc2843772114717a7490a37f68da563b3620f78a849bcb54dc11e62", size = 152794, upload-time = "2025-02-28T01:23:30.187Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c1/3fa0e9e4e0bfd3fd77eb8b52ec198fd6e1fd7e9402052e43f23483f956dd/bcrypt-4.3.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d3efb1157edebfd9128e4e46e2ac1a64e0c1fe46fb023158a407c7892b0f8c3", size = 498969, upload-time = "2025-02-28T01:23:31.945Z" }, + { url = "https://files.pythonhosted.org/packages/ce/d4/755ce19b6743394787fbd7dff6bf271b27ee9b5912a97242e3caf125885b/bcrypt-4.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08bacc884fd302b611226c01014eca277d48f0a05187666bca23aac0dad6fe24", size = 279158, upload-time = "2025-02-28T01:23:34.161Z" }, + { url = "https://files.pythonhosted.org/packages/9b/5d/805ef1a749c965c46b28285dfb5cd272a7ed9fa971f970435a5133250182/bcrypt-4.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6746e6fec103fcd509b96bacdfdaa2fbde9a553245dbada284435173a6f1aef", size = 284285, upload-time = "2025-02-28T01:23:35.765Z" }, + { url = "https://files.pythonhosted.org/packages/ab/2b/698580547a4a4988e415721b71eb45e80c879f0fb04a62da131f45987b96/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:afe327968aaf13fc143a56a3360cb27d4ad0345e34da12c7290f1b00b8fe9a8b", size = 279583, upload-time = "2025-02-28T01:23:38.021Z" }, + { url = "https://files.pythonhosted.org/packages/f2/87/62e1e426418204db520f955ffd06f1efd389feca893dad7095bf35612eec/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d9af79d322e735b1fc33404b5765108ae0ff232d4b54666d46730f8ac1a43676", size = 297896, upload-time = "2025-02-28T01:23:39.575Z" }, + { url = "https://files.pythonhosted.org/packages/cb/c6/8fedca4c2ada1b6e889c52d2943b2f968d3427e5d65f595620ec4c06fa2f/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f1e3ffa1365e8702dc48c8b360fef8d7afeca482809c5e45e653af82ccd088c1", size = 284492, upload-time = "2025-02-28T01:23:40.901Z" }, + { url = "https://files.pythonhosted.org/packages/4d/4d/c43332dcaaddb7710a8ff5269fcccba97ed3c85987ddaa808db084267b9a/bcrypt-4.3.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:3004df1b323d10021fda07a813fd33e0fd57bef0e9a480bb143877f6cba996fe", size = 279213, upload-time = "2025-02-28T01:23:42.653Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7f/1e36379e169a7df3a14a1c160a49b7b918600a6008de43ff20d479e6f4b5/bcrypt-4.3.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:531457e5c839d8caea9b589a1bcfe3756b0547d7814e9ce3d437f17da75c32b0", size = 284162, upload-time = "2025-02-28T01:23:43.964Z" }, + { url = "https://files.pythonhosted.org/packages/1c/0a/644b2731194b0d7646f3210dc4d80c7fee3ecb3a1f791a6e0ae6bb8684e3/bcrypt-4.3.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:17a854d9a7a476a89dcef6c8bd119ad23e0f82557afbd2c442777a16408e614f", size = 312856, upload-time = "2025-02-28T01:23:46.011Z" }, + { url = "https://files.pythonhosted.org/packages/dc/62/2a871837c0bb6ab0c9a88bf54de0fc021a6a08832d4ea313ed92a669d437/bcrypt-4.3.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6fb1fd3ab08c0cbc6826a2e0447610c6f09e983a281b919ed721ad32236b8b23", size = 316726, upload-time = "2025-02-28T01:23:47.575Z" }, + { url = "https://files.pythonhosted.org/packages/0c/a1/9898ea3faac0b156d457fd73a3cb9c2855c6fd063e44b8522925cdd8ce46/bcrypt-4.3.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e965a9c1e9a393b8005031ff52583cedc15b7884fce7deb8b0346388837d6cfe", size = 343664, upload-time = "2025-02-28T01:23:49.059Z" }, + { url = "https://files.pythonhosted.org/packages/40/f2/71b4ed65ce38982ecdda0ff20c3ad1b15e71949c78b2c053df53629ce940/bcrypt-4.3.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:79e70b8342a33b52b55d93b3a59223a844962bef479f6a0ea318ebbcadf71505", size = 363128, upload-time = "2025-02-28T01:23:50.399Z" }, + { url = "https://files.pythonhosted.org/packages/11/99/12f6a58eca6dea4be992d6c681b7ec9410a1d9f5cf368c61437e31daa879/bcrypt-4.3.0-cp39-abi3-win32.whl", hash = "sha256:b4d4e57f0a63fd0b358eb765063ff661328f69a04494427265950c71b992a39a", size = 160598, upload-time = "2025-02-28T01:23:51.775Z" }, + { url = "https://files.pythonhosted.org/packages/a9/cf/45fb5261ece3e6b9817d3d82b2f343a505fd58674a92577923bc500bd1aa/bcrypt-4.3.0-cp39-abi3-win_amd64.whl", hash = "sha256:e53e074b120f2877a35cc6c736b8eb161377caae8925c17688bd46ba56daaa5b", size = 152799, upload-time = "2025-02-28T01:23:53.139Z" }, + { url = "https://files.pythonhosted.org/packages/55/2d/0c7e5ab0524bf1a443e34cdd3926ec6f5879889b2f3c32b2f5074e99ed53/bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c950d682f0952bafcceaf709761da0a32a942272fad381081b51096ffa46cea1", size = 275367, upload-time = "2025-02-28T01:23:54.578Z" }, + { url = "https://files.pythonhosted.org/packages/10/4f/f77509f08bdff8806ecc4dc472b6e187c946c730565a7470db772d25df70/bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:107d53b5c67e0bbc3f03ebf5b030e0403d24dda980f8e244795335ba7b4a027d", size = 280644, upload-time = "2025-02-28T01:23:56.547Z" }, + { url = "https://files.pythonhosted.org/packages/35/18/7d9dc16a3a4d530d0a9b845160e9e5d8eb4f00483e05d44bb4116a1861da/bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:b693dbb82b3c27a1604a3dff5bfc5418a7e6a781bb795288141e5f80cf3a3492", size = 274881, upload-time = "2025-02-28T01:23:57.935Z" }, + { url = "https://files.pythonhosted.org/packages/df/c4/ae6921088adf1e37f2a3a6a688e72e7d9e45fdd3ae5e0bc931870c1ebbda/bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:b6354d3760fcd31994a14c89659dee887f1351a06e5dac3c1142307172a79f90", size = 280203, upload-time = "2025-02-28T01:23:59.331Z" }, + { url = "https://files.pythonhosted.org/packages/4c/b1/1289e21d710496b88340369137cc4c5f6ee036401190ea116a7b4ae6d32a/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a839320bf27d474e52ef8cb16449bb2ce0ba03ca9f44daba6d93fa1d8828e48a", size = 275103, upload-time = "2025-02-28T01:24:00.764Z" }, + { url = "https://files.pythonhosted.org/packages/94/41/19be9fe17e4ffc5d10b7b67f10e459fc4eee6ffe9056a88de511920cfd8d/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:bdc6a24e754a555d7316fa4774e64c6c3997d27ed2d1964d55920c7c227bc4ce", size = 280513, upload-time = "2025-02-28T01:24:02.243Z" }, + { url = "https://files.pythonhosted.org/packages/aa/73/05687a9ef89edebdd8ad7474c16d8af685eb4591c3c38300bb6aad4f0076/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:55a935b8e9a1d2def0626c4269db3fcd26728cbff1e84f0341465c31c4ee56d8", size = 274685, upload-time = "2025-02-28T01:24:04.512Z" }, + { url = "https://files.pythonhosted.org/packages/63/13/47bba97924ebe86a62ef83dc75b7c8a881d53c535f83e2c54c4bd701e05c/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:57967b7a28d855313a963aaea51bf6df89f833db4320da458e5b3c5ab6d4c938", size = 280110, upload-time = "2025-02-28T01:24:05.896Z" }, ] [[package]] @@ -376,63 +378,63 @@ dependencies = [ { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "numpy", version = "2.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d0/d0/d8cc8c9a4488a787e7fa430f6055e5bd1ddb22c340a751d9e901b82e2efe/blis-1.3.3.tar.gz", hash = "sha256:034d4560ff3cc43e8aa37e188451b0440e3261d989bb8a42ceee865607715ecd", size = 2644873, upload_time = "2025-11-17T12:28:30.511Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/db/d80daf6c060618c72acecf026410b806f620cdea62b2e72f3235d7389d05/blis-1.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:650f1d2b28e3c875927c63deebda463a6f9d237dff30e445bfe2127718c1a344", size = 6925724, upload_time = "2025-11-17T12:27:14.23Z" }, - { url = "https://files.pythonhosted.org/packages/06/cd/7ac854c92e33cfccc0eded48e979a9fc26a447952d07a9c7c7da7c1d6eec/blis-1.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9b0d42420ddd543eec51ccb99d38364a0c0833b6895eced37127822de6ecacff", size = 1233606, upload_time = "2025-11-17T12:27:16.107Z" }, - { url = "https://files.pythonhosted.org/packages/c7/ae/ad3165fdbc4ef6afef585686a778c72cd67fb5aa16ab2fd2f4494186705e/blis-1.3.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f0628a030d44aa71cac5973e40c9e95ec767abaaf2fd366a094b9398885f82f2", size = 2769094, upload_time = "2025-11-17T12:27:17.883Z" }, - { url = "https://files.pythonhosted.org/packages/25/d4/7b0820f139b4ea67606d01b59ba6afbee4552ce7b2fd179f2fb7908e294f/blis-1.3.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d0114cf2d8f19e0ed210f9ae92594cd0a12efa1bbbce444028b0fc365bbbb8af", size = 11300520, upload_time = "2025-11-17T12:27:20.058Z" }, - { url = "https://files.pythonhosted.org/packages/85/f3/865a4322bdbeb944744c1908e67fdabecd476613a17204956cff12d568c9/blis-1.3.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7e88181e9dd8430029ebaf22d41bf79e756e8c95363e9471717102c66beb4a6d", size = 2962083, upload_time = "2025-11-17T12:27:22.098Z" }, - { url = "https://files.pythonhosted.org/packages/65/a2/c2842fa1e2e6bd56eb93e41b34859a9af8b5b63669ee0442bea585d8f607/blis-1.3.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:62fb8c731347b0f98f5f81d19d339049e61489798738467d156c66cc329b0754", size = 14177001, upload_time = "2025-11-17T12:27:24.345Z" }, - { url = "https://files.pythonhosted.org/packages/b5/9b/3b1532f23db8bdddf3a976e9acf51e8debd94c63be5dafb8ccbab3e62935/blis-1.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:631836d4f335e62c30aa50a1aa0170773265c73654d296361f95180006e88c04", size = 6184429, upload_time = "2025-11-17T12:27:27.054Z" }, - { url = "https://files.pythonhosted.org/packages/a1/0a/a4c8736bc497d386b0ffc76d321f478c03f1a4725e52092f93b38beb3786/blis-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e10c8d3e892b1dbdff365b9d00e08291876fc336915bf1a5e9f188ed087e1a91", size = 6925522, upload_time = "2025-11-17T12:27:29.199Z" }, - { url = "https://files.pythonhosted.org/packages/83/5a/3437009282f23684ecd3963a8b034f9307cdd2bf4484972e5a6b096bf9ac/blis-1.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66e6249564f1db22e8af1e0513ff64134041fa7e03c8dd73df74db3f4d8415a7", size = 1232787, upload_time = "2025-11-17T12:27:30.996Z" }, - { url = "https://files.pythonhosted.org/packages/d1/0e/82221910d16259ce3017c1442c468a3f206a4143a96fbba9f5b5b81d62e8/blis-1.3.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7260da065958b4e5475f62f44895ef9d673b0f47dcf61b672b22b7dae1a18505", size = 2844596, upload_time = "2025-11-17T12:27:32.601Z" }, - { url = "https://files.pythonhosted.org/packages/6c/93/ab547f1a5c23e20bca16fbcf04021c32aac3f969be737ea4980509a7ca90/blis-1.3.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e9327a6ca67de8ae76fe071e8584cc7f3b2e8bfadece4961d40f2826e1cda2df", size = 11377746, upload_time = "2025-11-17T12:27:35.342Z" }, - { url = "https://files.pythonhosted.org/packages/6e/a6/7733820aa62da32526287a63cd85c103b2b323b186c8ee43b7772ff7017c/blis-1.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c4ae70629cf302035d268858a10ca4eb6242a01b2dc8d64422f8e6dcb8a8ee74", size = 3041954, upload_time = "2025-11-17T12:27:37.479Z" }, - { url = "https://files.pythonhosted.org/packages/87/53/e39d67fd3296b649772780ca6aab081412838ecb54e0b0c6432d01626a50/blis-1.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:45866a9027d43b93e8b59980a23c5d7358b6536fc04606286e39fdcfce1101c2", size = 14251222, upload_time = "2025-11-17T12:27:39.705Z" }, - { url = "https://files.pythonhosted.org/packages/ea/44/b749f8777b020b420bceaaf60f66432fc30cc904ca5b69640ec9cbef11ed/blis-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:27f82b8633030f8d095d2b412dffa7eb6dbc8ee43813139909a20012e54422ea", size = 6171233, upload_time = "2025-11-17T12:27:41.921Z" }, - { url = "https://files.pythonhosted.org/packages/16/d1/429cf0cf693d4c7dc2efed969bd474e315aab636e4a95f66c4ed7264912d/blis-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2a1c74e100665f8e918ebdbae2794576adf1f691680b5cdb8b29578432f623ef", size = 6929663, upload_time = "2025-11-17T12:27:44.482Z" }, - { url = "https://files.pythonhosted.org/packages/11/69/363c8df8d98b3cc97be19aad6aabb2c9c53f372490d79316bdee92d476e7/blis-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3f6c595185176ce021316263e1a1d636a3425b6c48366c1fd712d08d0b71849a", size = 1230939, upload_time = "2025-11-17T12:27:46.19Z" }, - { url = "https://files.pythonhosted.org/packages/96/2a/fbf65d906d823d839076c5150a6f8eb5ecbc5f9135e0b6510609bda1e6b7/blis-1.3.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d734b19fba0be7944f272dfa7b443b37c61f9476d9ab054a9ac53555ceadd2e0", size = 2818835, upload_time = "2025-11-17T12:27:48.167Z" }, - { url = "https://files.pythonhosted.org/packages/d5/ad/58deaa3ad856dd3cc96493e40ffd2ed043d18d4d304f85a65cde1ccbf644/blis-1.3.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ef6d6e2b599a3a2788eb6d9b443533961265aa4ec49d574ed4bb846e548dcdb", size = 11366550, upload_time = "2025-11-17T12:27:49.958Z" }, - { url = "https://files.pythonhosted.org/packages/78/82/816a7adfe1f7acc8151f01ec86ef64467a3c833932d8f19f8e06613b8a4e/blis-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8c888438ae99c500422d50698e3028b65caa8ebb44e24204d87fda2df64058f7", size = 3023686, upload_time = "2025-11-17T12:27:52.062Z" }, - { url = "https://files.pythonhosted.org/packages/1e/e2/0e93b865f648b5519360846669a35f28ee8f4e1d93d054f6850d8afbabde/blis-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8177879fd3590b5eecdd377f9deafb5dc8af6d684f065bd01553302fb3fcf9a7", size = 14250939, upload_time = "2025-11-17T12:27:53.847Z" }, - { url = "https://files.pythonhosted.org/packages/20/07/fb43edc2ff0a6a367e4a94fc39eb3b85aa1e55e24cc857af2db145ce9f0d/blis-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:f20f7ad69aaffd1ce14fe77de557b6df9b61e0c9e582f75a843715d836b5c8af", size = 6192759, upload_time = "2025-11-17T12:27:56.176Z" }, - { url = "https://files.pythonhosted.org/packages/e6/f7/d26e62d9be3d70473a63e0a5d30bae49c2fe138bebac224adddcdef8a7ce/blis-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1e647341f958421a86b028a2efe16ce19c67dba2a05f79e8f7e80b1ff45328aa", size = 6928322, upload_time = "2025-11-17T12:27:57.965Z" }, - { url = "https://files.pythonhosted.org/packages/4a/78/750d12da388f714958eb2f2fd177652323bbe7ec528365c37129edd6eb84/blis-1.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d563160f874abb78a57e346f07312c5323f7ad67b6370052b6b17087ef234a8e", size = 1229635, upload_time = "2025-11-17T12:28:00.118Z" }, - { url = "https://files.pythonhosted.org/packages/e8/36/eac4199c5b200a5f3e93cad197da8d26d909f218eb444c4f552647c95240/blis-1.3.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:30b8a5b90cb6cb81d1ada9ae05aa55fb8e70d9a0ae9db40d2401bb9c1c8f14c4", size = 2815650, upload_time = "2025-11-17T12:28:02.544Z" }, - { url = "https://files.pythonhosted.org/packages/bf/51/472e7b36a6bedb5242a9757e7486f702c3619eff76e256735d0c8b1679c6/blis-1.3.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e9f5c53b277f6ac5b3ca30bc12ebab7ea16c8f8c36b14428abb56924213dc127", size = 11359008, upload_time = "2025-11-17T12:28:04.589Z" }, - { url = "https://files.pythonhosted.org/packages/84/da/d0dfb6d6e6321ae44df0321384c32c322bd07b15740d7422727a1a49fc5d/blis-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6297e7616c158b305c9a8a4e47ca5fc9b0785194dd96c903b1a1591a7ca21ddf", size = 3011959, upload_time = "2025-11-17T12:28:06.862Z" }, - { url = "https://files.pythonhosted.org/packages/20/c5/2b0b5e556fa0364ed671051ea078a6d6d7b979b1cfef78d64ad3ca5f0c7f/blis-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3f966ca74f89f8a33e568b9a1d71992fc9a0d29a423e047f0a212643e21b5458", size = 14232456, upload_time = "2025-11-17T12:28:08.779Z" }, - { url = "https://files.pythonhosted.org/packages/31/07/4cdc81a47bf862c0b06d91f1bc6782064e8b69ac9b5d4ff51d97e4ff03da/blis-1.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:7a0fc4b237a3a453bdc3c7ab48d91439fcd2d013b665c46948d9eaf9c3e45a97", size = 6192624, upload_time = "2025-11-17T12:28:14.197Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/d0/d0/d8cc8c9a4488a787e7fa430f6055e5bd1ddb22c340a751d9e901b82e2efe/blis-1.3.3.tar.gz", hash = "sha256:034d4560ff3cc43e8aa37e188451b0440e3261d989bb8a42ceee865607715ecd", size = 2644873, upload-time = "2025-11-17T12:28:30.511Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/db/d80daf6c060618c72acecf026410b806f620cdea62b2e72f3235d7389d05/blis-1.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:650f1d2b28e3c875927c63deebda463a6f9d237dff30e445bfe2127718c1a344", size = 6925724, upload-time = "2025-11-17T12:27:14.23Z" }, + { url = "https://files.pythonhosted.org/packages/06/cd/7ac854c92e33cfccc0eded48e979a9fc26a447952d07a9c7c7da7c1d6eec/blis-1.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9b0d42420ddd543eec51ccb99d38364a0c0833b6895eced37127822de6ecacff", size = 1233606, upload-time = "2025-11-17T12:27:16.107Z" }, + { url = "https://files.pythonhosted.org/packages/c7/ae/ad3165fdbc4ef6afef585686a778c72cd67fb5aa16ab2fd2f4494186705e/blis-1.3.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f0628a030d44aa71cac5973e40c9e95ec767abaaf2fd366a094b9398885f82f2", size = 2769094, upload-time = "2025-11-17T12:27:17.883Z" }, + { url = "https://files.pythonhosted.org/packages/25/d4/7b0820f139b4ea67606d01b59ba6afbee4552ce7b2fd179f2fb7908e294f/blis-1.3.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d0114cf2d8f19e0ed210f9ae92594cd0a12efa1bbbce444028b0fc365bbbb8af", size = 11300520, upload-time = "2025-11-17T12:27:20.058Z" }, + { url = "https://files.pythonhosted.org/packages/85/f3/865a4322bdbeb944744c1908e67fdabecd476613a17204956cff12d568c9/blis-1.3.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7e88181e9dd8430029ebaf22d41bf79e756e8c95363e9471717102c66beb4a6d", size = 2962083, upload-time = "2025-11-17T12:27:22.098Z" }, + { url = "https://files.pythonhosted.org/packages/65/a2/c2842fa1e2e6bd56eb93e41b34859a9af8b5b63669ee0442bea585d8f607/blis-1.3.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:62fb8c731347b0f98f5f81d19d339049e61489798738467d156c66cc329b0754", size = 14177001, upload-time = "2025-11-17T12:27:24.345Z" }, + { url = "https://files.pythonhosted.org/packages/b5/9b/3b1532f23db8bdddf3a976e9acf51e8debd94c63be5dafb8ccbab3e62935/blis-1.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:631836d4f335e62c30aa50a1aa0170773265c73654d296361f95180006e88c04", size = 6184429, upload-time = "2025-11-17T12:27:27.054Z" }, + { url = "https://files.pythonhosted.org/packages/a1/0a/a4c8736bc497d386b0ffc76d321f478c03f1a4725e52092f93b38beb3786/blis-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e10c8d3e892b1dbdff365b9d00e08291876fc336915bf1a5e9f188ed087e1a91", size = 6925522, upload-time = "2025-11-17T12:27:29.199Z" }, + { url = "https://files.pythonhosted.org/packages/83/5a/3437009282f23684ecd3963a8b034f9307cdd2bf4484972e5a6b096bf9ac/blis-1.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66e6249564f1db22e8af1e0513ff64134041fa7e03c8dd73df74db3f4d8415a7", size = 1232787, upload-time = "2025-11-17T12:27:30.996Z" }, + { url = "https://files.pythonhosted.org/packages/d1/0e/82221910d16259ce3017c1442c468a3f206a4143a96fbba9f5b5b81d62e8/blis-1.3.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7260da065958b4e5475f62f44895ef9d673b0f47dcf61b672b22b7dae1a18505", size = 2844596, upload-time = "2025-11-17T12:27:32.601Z" }, + { url = "https://files.pythonhosted.org/packages/6c/93/ab547f1a5c23e20bca16fbcf04021c32aac3f969be737ea4980509a7ca90/blis-1.3.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e9327a6ca67de8ae76fe071e8584cc7f3b2e8bfadece4961d40f2826e1cda2df", size = 11377746, upload-time = "2025-11-17T12:27:35.342Z" }, + { url = "https://files.pythonhosted.org/packages/6e/a6/7733820aa62da32526287a63cd85c103b2b323b186c8ee43b7772ff7017c/blis-1.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c4ae70629cf302035d268858a10ca4eb6242a01b2dc8d64422f8e6dcb8a8ee74", size = 3041954, upload-time = "2025-11-17T12:27:37.479Z" }, + { url = "https://files.pythonhosted.org/packages/87/53/e39d67fd3296b649772780ca6aab081412838ecb54e0b0c6432d01626a50/blis-1.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:45866a9027d43b93e8b59980a23c5d7358b6536fc04606286e39fdcfce1101c2", size = 14251222, upload-time = "2025-11-17T12:27:39.705Z" }, + { url = "https://files.pythonhosted.org/packages/ea/44/b749f8777b020b420bceaaf60f66432fc30cc904ca5b69640ec9cbef11ed/blis-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:27f82b8633030f8d095d2b412dffa7eb6dbc8ee43813139909a20012e54422ea", size = 6171233, upload-time = "2025-11-17T12:27:41.921Z" }, + { url = "https://files.pythonhosted.org/packages/16/d1/429cf0cf693d4c7dc2efed969bd474e315aab636e4a95f66c4ed7264912d/blis-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2a1c74e100665f8e918ebdbae2794576adf1f691680b5cdb8b29578432f623ef", size = 6929663, upload-time = "2025-11-17T12:27:44.482Z" }, + { url = "https://files.pythonhosted.org/packages/11/69/363c8df8d98b3cc97be19aad6aabb2c9c53f372490d79316bdee92d476e7/blis-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3f6c595185176ce021316263e1a1d636a3425b6c48366c1fd712d08d0b71849a", size = 1230939, upload-time = "2025-11-17T12:27:46.19Z" }, + { url = "https://files.pythonhosted.org/packages/96/2a/fbf65d906d823d839076c5150a6f8eb5ecbc5f9135e0b6510609bda1e6b7/blis-1.3.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d734b19fba0be7944f272dfa7b443b37c61f9476d9ab054a9ac53555ceadd2e0", size = 2818835, upload-time = "2025-11-17T12:27:48.167Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ad/58deaa3ad856dd3cc96493e40ffd2ed043d18d4d304f85a65cde1ccbf644/blis-1.3.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ef6d6e2b599a3a2788eb6d9b443533961265aa4ec49d574ed4bb846e548dcdb", size = 11366550, upload-time = "2025-11-17T12:27:49.958Z" }, + { url = "https://files.pythonhosted.org/packages/78/82/816a7adfe1f7acc8151f01ec86ef64467a3c833932d8f19f8e06613b8a4e/blis-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8c888438ae99c500422d50698e3028b65caa8ebb44e24204d87fda2df64058f7", size = 3023686, upload-time = "2025-11-17T12:27:52.062Z" }, + { url = "https://files.pythonhosted.org/packages/1e/e2/0e93b865f648b5519360846669a35f28ee8f4e1d93d054f6850d8afbabde/blis-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8177879fd3590b5eecdd377f9deafb5dc8af6d684f065bd01553302fb3fcf9a7", size = 14250939, upload-time = "2025-11-17T12:27:53.847Z" }, + { url = "https://files.pythonhosted.org/packages/20/07/fb43edc2ff0a6a367e4a94fc39eb3b85aa1e55e24cc857af2db145ce9f0d/blis-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:f20f7ad69aaffd1ce14fe77de557b6df9b61e0c9e582f75a843715d836b5c8af", size = 6192759, upload-time = "2025-11-17T12:27:56.176Z" }, + { url = "https://files.pythonhosted.org/packages/e6/f7/d26e62d9be3d70473a63e0a5d30bae49c2fe138bebac224adddcdef8a7ce/blis-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1e647341f958421a86b028a2efe16ce19c67dba2a05f79e8f7e80b1ff45328aa", size = 6928322, upload-time = "2025-11-17T12:27:57.965Z" }, + { url = "https://files.pythonhosted.org/packages/4a/78/750d12da388f714958eb2f2fd177652323bbe7ec528365c37129edd6eb84/blis-1.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d563160f874abb78a57e346f07312c5323f7ad67b6370052b6b17087ef234a8e", size = 1229635, upload-time = "2025-11-17T12:28:00.118Z" }, + { url = "https://files.pythonhosted.org/packages/e8/36/eac4199c5b200a5f3e93cad197da8d26d909f218eb444c4f552647c95240/blis-1.3.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:30b8a5b90cb6cb81d1ada9ae05aa55fb8e70d9a0ae9db40d2401bb9c1c8f14c4", size = 2815650, upload-time = "2025-11-17T12:28:02.544Z" }, + { url = "https://files.pythonhosted.org/packages/bf/51/472e7b36a6bedb5242a9757e7486f702c3619eff76e256735d0c8b1679c6/blis-1.3.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e9f5c53b277f6ac5b3ca30bc12ebab7ea16c8f8c36b14428abb56924213dc127", size = 11359008, upload-time = "2025-11-17T12:28:04.589Z" }, + { url = "https://files.pythonhosted.org/packages/84/da/d0dfb6d6e6321ae44df0321384c32c322bd07b15740d7422727a1a49fc5d/blis-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6297e7616c158b305c9a8a4e47ca5fc9b0785194dd96c903b1a1591a7ca21ddf", size = 3011959, upload-time = "2025-11-17T12:28:06.862Z" }, + { url = "https://files.pythonhosted.org/packages/20/c5/2b0b5e556fa0364ed671051ea078a6d6d7b979b1cfef78d64ad3ca5f0c7f/blis-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3f966ca74f89f8a33e568b9a1d71992fc9a0d29a423e047f0a212643e21b5458", size = 14232456, upload-time = "2025-11-17T12:28:08.779Z" }, + { url = "https://files.pythonhosted.org/packages/31/07/4cdc81a47bf862c0b06d91f1bc6782064e8b69ac9b5d4ff51d97e4ff03da/blis-1.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:7a0fc4b237a3a453bdc3c7ab48d91439fcd2d013b665c46948d9eaf9c3e45a97", size = 6192624, upload-time = "2025-11-17T12:28:14.197Z" }, ] [[package]] name = "cachetools" version = "7.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d4/07/56595285564e90777d758ebd383d6b0b971b87729bbe2184a849932a3736/cachetools-7.0.1.tar.gz", hash = "sha256:e31e579d2c5b6e2944177a0397150d312888ddf4e16e12f1016068f0c03b8341", size = 36126, upload_time = "2026-02-10T22:24:05.03Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/07/56595285564e90777d758ebd383d6b0b971b87729bbe2184a849932a3736/cachetools-7.0.1.tar.gz", hash = "sha256:e31e579d2c5b6e2944177a0397150d312888ddf4e16e12f1016068f0c03b8341", size = 36126, upload-time = "2026-02-10T22:24:05.03Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/9e/5faefbf9db1db466d633735faceda1f94aa99ce506ac450d232536266b32/cachetools-7.0.1-py3-none-any.whl", hash = "sha256:8f086515c254d5664ae2146d14fc7f65c9a4bce75152eb247e5a9c5e6d7b2ecf", size = 13484, upload_time = "2026-02-10T22:24:03.741Z" }, + { url = "https://files.pythonhosted.org/packages/ed/9e/5faefbf9db1db466d633735faceda1f94aa99ce506ac450d232536266b32/cachetools-7.0.1-py3-none-any.whl", hash = "sha256:8f086515c254d5664ae2146d14fc7f65c9a4bce75152eb247e5a9c5e6d7b2ecf", size = 13484, upload-time = "2026-02-10T22:24:03.741Z" }, ] [[package]] name = "catalogue" version = "2.0.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/38/b4/244d58127e1cdf04cf2dc7d9566f0d24ef01d5ce21811bab088ecc62b5ea/catalogue-2.0.10.tar.gz", hash = "sha256:4f56daa940913d3f09d589c191c74e5a6d51762b3a9e37dd53b7437afd6cda15", size = 19561, upload_time = "2023-09-25T06:29:24.962Z" } +sdist = { url = "https://files.pythonhosted.org/packages/38/b4/244d58127e1cdf04cf2dc7d9566f0d24ef01d5ce21811bab088ecc62b5ea/catalogue-2.0.10.tar.gz", hash = "sha256:4f56daa940913d3f09d589c191c74e5a6d51762b3a9e37dd53b7437afd6cda15", size = 19561, upload-time = "2023-09-25T06:29:24.962Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/96/d32b941a501ab566a16358d68b6eb4e4acc373fab3c3c4d7d9e649f7b4bb/catalogue-2.0.10-py3-none-any.whl", hash = "sha256:58c2de0020aa90f4a2da7dfad161bf7b3b054c86a5f09fcedc0b2b740c109a9f", size = 17325, upload_time = "2023-09-25T06:29:23.337Z" }, + { url = "https://files.pythonhosted.org/packages/9e/96/d32b941a501ab566a16358d68b6eb4e4acc373fab3c3c4d7d9e649f7b4bb/catalogue-2.0.10-py3-none-any.whl", hash = "sha256:58c2de0020aa90f4a2da7dfad161bf7b3b054c86a5f09fcedc0b2b740c109a9f", size = 17325, upload-time = "2023-09-25T06:29:23.337Z" }, ] [[package]] name = "certifi" version = "2026.1.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120", size = 154268, upload_time = "2026-01-04T02:42:41.825Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120", size = 154268, upload-time = "2026-01-04T02:42:41.825Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c", size = 152900, upload_time = "2026-01-04T02:42:40.15Z" }, + { url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c", size = 152900, upload-time = "2026-01-04T02:42:40.15Z" }, ] [[package]] @@ -442,148 +444,148 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pycparser", marker = "implementation_name != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload_time = "2025-09-08T23:24:04.541Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/93/d7/516d984057745a6cd96575eea814fe1edd6646ee6efd552fb7b0921dec83/cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44", size = 184283, upload_time = "2025-09-08T23:22:08.01Z" }, - { url = "https://files.pythonhosted.org/packages/9e/84/ad6a0b408daa859246f57c03efd28e5dd1b33c21737c2db84cae8c237aa5/cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49", size = 180504, upload_time = "2025-09-08T23:22:10.637Z" }, - { url = "https://files.pythonhosted.org/packages/50/bd/b1a6362b80628111e6653c961f987faa55262b4002fcec42308cad1db680/cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c", size = 208811, upload_time = "2025-09-08T23:22:12.267Z" }, - { url = "https://files.pythonhosted.org/packages/4f/27/6933a8b2562d7bd1fb595074cf99cc81fc3789f6a6c05cdabb46284a3188/cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb", size = 216402, upload_time = "2025-09-08T23:22:13.455Z" }, - { url = "https://files.pythonhosted.org/packages/05/eb/b86f2a2645b62adcfff53b0dd97e8dfafb5c8aa864bd0d9a2c2049a0d551/cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0", size = 203217, upload_time = "2025-09-08T23:22:14.596Z" }, - { url = "https://files.pythonhosted.org/packages/9f/e0/6cbe77a53acf5acc7c08cc186c9928864bd7c005f9efd0d126884858a5fe/cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4", size = 203079, upload_time = "2025-09-08T23:22:15.769Z" }, - { url = "https://files.pythonhosted.org/packages/98/29/9b366e70e243eb3d14a5cb488dfd3a0b6b2f1fb001a203f653b93ccfac88/cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453", size = 216475, upload_time = "2025-09-08T23:22:17.427Z" }, - { url = "https://files.pythonhosted.org/packages/21/7a/13b24e70d2f90a322f2900c5d8e1f14fa7e2a6b3332b7309ba7b2ba51a5a/cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495", size = 218829, upload_time = "2025-09-08T23:22:19.069Z" }, - { url = "https://files.pythonhosted.org/packages/60/99/c9dc110974c59cc981b1f5b66e1d8af8af764e00f0293266824d9c4254bc/cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5", size = 211211, upload_time = "2025-09-08T23:22:20.588Z" }, - { url = "https://files.pythonhosted.org/packages/49/72/ff2d12dbf21aca1b32a40ed792ee6b40f6dc3a9cf1644bd7ef6e95e0ac5e/cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb", size = 218036, upload_time = "2025-09-08T23:22:22.143Z" }, - { url = "https://files.pythonhosted.org/packages/e2/cc/027d7fb82e58c48ea717149b03bcadcbdc293553edb283af792bd4bcbb3f/cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a", size = 172184, upload_time = "2025-09-08T23:22:23.328Z" }, - { url = "https://files.pythonhosted.org/packages/33/fa/072dd15ae27fbb4e06b437eb6e944e75b068deb09e2a2826039e49ee2045/cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739", size = 182790, upload_time = "2025-09-08T23:22:24.752Z" }, - { url = "https://files.pythonhosted.org/packages/12/4a/3dfd5f7850cbf0d06dc84ba9aa00db766b52ca38d8b86e3a38314d52498c/cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", size = 184344, upload_time = "2025-09-08T23:22:26.456Z" }, - { url = "https://files.pythonhosted.org/packages/4f/8b/f0e4c441227ba756aafbe78f117485b25bb26b1c059d01f137fa6d14896b/cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", size = 180560, upload_time = "2025-09-08T23:22:28.197Z" }, - { url = "https://files.pythonhosted.org/packages/b1/b7/1200d354378ef52ec227395d95c2576330fd22a869f7a70e88e1447eb234/cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", size = 209613, upload_time = "2025-09-08T23:22:29.475Z" }, - { url = "https://files.pythonhosted.org/packages/b8/56/6033f5e86e8cc9bb629f0077ba71679508bdf54a9a5e112a3c0b91870332/cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", size = 216476, upload_time = "2025-09-08T23:22:31.063Z" }, - { url = "https://files.pythonhosted.org/packages/dc/7f/55fecd70f7ece178db2f26128ec41430d8720f2d12ca97bf8f0a628207d5/cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", size = 203374, upload_time = "2025-09-08T23:22:32.507Z" }, - { url = "https://files.pythonhosted.org/packages/84/ef/a7b77c8bdc0f77adc3b46888f1ad54be8f3b7821697a7b89126e829e676a/cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", size = 202597, upload_time = "2025-09-08T23:22:34.132Z" }, - { url = "https://files.pythonhosted.org/packages/d7/91/500d892b2bf36529a75b77958edfcd5ad8e2ce4064ce2ecfeab2125d72d1/cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", size = 215574, upload_time = "2025-09-08T23:22:35.443Z" }, - { url = "https://files.pythonhosted.org/packages/44/64/58f6255b62b101093d5df22dcb752596066c7e89dd725e0afaed242a61be/cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", size = 218971, upload_time = "2025-09-08T23:22:36.805Z" }, - { url = "https://files.pythonhosted.org/packages/ab/49/fa72cebe2fd8a55fbe14956f9970fe8eb1ac59e5df042f603ef7c8ba0adc/cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", size = 211972, upload_time = "2025-09-08T23:22:38.436Z" }, - { url = "https://files.pythonhosted.org/packages/0b/28/dd0967a76aab36731b6ebfe64dec4e981aff7e0608f60c2d46b46982607d/cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", size = 217078, upload_time = "2025-09-08T23:22:39.776Z" }, - { url = "https://files.pythonhosted.org/packages/2b/c0/015b25184413d7ab0a410775fdb4a50fca20f5589b5dab1dbbfa3baad8ce/cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5", size = 172076, upload_time = "2025-09-08T23:22:40.95Z" }, - { url = "https://files.pythonhosted.org/packages/ae/8f/dc5531155e7070361eb1b7e4c1a9d896d0cb21c49f807a6c03fd63fc877e/cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5", size = 182820, upload_time = "2025-09-08T23:22:42.463Z" }, - { url = "https://files.pythonhosted.org/packages/95/5c/1b493356429f9aecfd56bc171285a4c4ac8697f76e9bbbbb105e537853a1/cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", size = 177635, upload_time = "2025-09-08T23:22:43.623Z" }, - { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload_time = "2025-09-08T23:22:44.795Z" }, - { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload_time = "2025-09-08T23:22:45.938Z" }, - { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload_time = "2025-09-08T23:22:47.349Z" }, - { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload_time = "2025-09-08T23:22:48.677Z" }, - { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload_time = "2025-09-08T23:22:50.06Z" }, - { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload_time = "2025-09-08T23:22:51.364Z" }, - { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload_time = "2025-09-08T23:22:52.902Z" }, - { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload_time = "2025-09-08T23:22:54.518Z" }, - { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload_time = "2025-09-08T23:22:55.867Z" }, - { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload_time = "2025-09-08T23:22:57.188Z" }, - { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload_time = "2025-09-08T23:22:58.351Z" }, - { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload_time = "2025-09-08T23:22:59.668Z" }, - { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload_time = "2025-09-08T23:23:00.879Z" }, - { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload_time = "2025-09-08T23:23:02.231Z" }, - { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload_time = "2025-09-08T23:23:03.472Z" }, - { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload_time = "2025-09-08T23:23:04.792Z" }, - { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload_time = "2025-09-08T23:23:06.127Z" }, - { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload_time = "2025-09-08T23:23:07.753Z" }, - { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload_time = "2025-09-08T23:23:09.648Z" }, - { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload_time = "2025-09-08T23:23:10.928Z" }, - { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload_time = "2025-09-08T23:23:12.42Z" }, - { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload_time = "2025-09-08T23:23:14.32Z" }, - { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload_time = "2025-09-08T23:23:15.535Z" }, - { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload_time = "2025-09-08T23:23:16.761Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/d7/516d984057745a6cd96575eea814fe1edd6646ee6efd552fb7b0921dec83/cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44", size = 184283, upload-time = "2025-09-08T23:22:08.01Z" }, + { url = "https://files.pythonhosted.org/packages/9e/84/ad6a0b408daa859246f57c03efd28e5dd1b33c21737c2db84cae8c237aa5/cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49", size = 180504, upload-time = "2025-09-08T23:22:10.637Z" }, + { url = "https://files.pythonhosted.org/packages/50/bd/b1a6362b80628111e6653c961f987faa55262b4002fcec42308cad1db680/cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c", size = 208811, upload-time = "2025-09-08T23:22:12.267Z" }, + { url = "https://files.pythonhosted.org/packages/4f/27/6933a8b2562d7bd1fb595074cf99cc81fc3789f6a6c05cdabb46284a3188/cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb", size = 216402, upload-time = "2025-09-08T23:22:13.455Z" }, + { url = "https://files.pythonhosted.org/packages/05/eb/b86f2a2645b62adcfff53b0dd97e8dfafb5c8aa864bd0d9a2c2049a0d551/cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0", size = 203217, upload-time = "2025-09-08T23:22:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/9f/e0/6cbe77a53acf5acc7c08cc186c9928864bd7c005f9efd0d126884858a5fe/cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4", size = 203079, upload-time = "2025-09-08T23:22:15.769Z" }, + { url = "https://files.pythonhosted.org/packages/98/29/9b366e70e243eb3d14a5cb488dfd3a0b6b2f1fb001a203f653b93ccfac88/cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453", size = 216475, upload-time = "2025-09-08T23:22:17.427Z" }, + { url = "https://files.pythonhosted.org/packages/21/7a/13b24e70d2f90a322f2900c5d8e1f14fa7e2a6b3332b7309ba7b2ba51a5a/cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495", size = 218829, upload-time = "2025-09-08T23:22:19.069Z" }, + { url = "https://files.pythonhosted.org/packages/60/99/c9dc110974c59cc981b1f5b66e1d8af8af764e00f0293266824d9c4254bc/cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5", size = 211211, upload-time = "2025-09-08T23:22:20.588Z" }, + { url = "https://files.pythonhosted.org/packages/49/72/ff2d12dbf21aca1b32a40ed792ee6b40f6dc3a9cf1644bd7ef6e95e0ac5e/cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb", size = 218036, upload-time = "2025-09-08T23:22:22.143Z" }, + { url = "https://files.pythonhosted.org/packages/e2/cc/027d7fb82e58c48ea717149b03bcadcbdc293553edb283af792bd4bcbb3f/cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a", size = 172184, upload-time = "2025-09-08T23:22:23.328Z" }, + { url = "https://files.pythonhosted.org/packages/33/fa/072dd15ae27fbb4e06b437eb6e944e75b068deb09e2a2826039e49ee2045/cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739", size = 182790, upload-time = "2025-09-08T23:22:24.752Z" }, + { url = "https://files.pythonhosted.org/packages/12/4a/3dfd5f7850cbf0d06dc84ba9aa00db766b52ca38d8b86e3a38314d52498c/cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", size = 184344, upload-time = "2025-09-08T23:22:26.456Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8b/f0e4c441227ba756aafbe78f117485b25bb26b1c059d01f137fa6d14896b/cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", size = 180560, upload-time = "2025-09-08T23:22:28.197Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b7/1200d354378ef52ec227395d95c2576330fd22a869f7a70e88e1447eb234/cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", size = 209613, upload-time = "2025-09-08T23:22:29.475Z" }, + { url = "https://files.pythonhosted.org/packages/b8/56/6033f5e86e8cc9bb629f0077ba71679508bdf54a9a5e112a3c0b91870332/cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", size = 216476, upload-time = "2025-09-08T23:22:31.063Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7f/55fecd70f7ece178db2f26128ec41430d8720f2d12ca97bf8f0a628207d5/cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", size = 203374, upload-time = "2025-09-08T23:22:32.507Z" }, + { url = "https://files.pythonhosted.org/packages/84/ef/a7b77c8bdc0f77adc3b46888f1ad54be8f3b7821697a7b89126e829e676a/cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", size = 202597, upload-time = "2025-09-08T23:22:34.132Z" }, + { url = "https://files.pythonhosted.org/packages/d7/91/500d892b2bf36529a75b77958edfcd5ad8e2ce4064ce2ecfeab2125d72d1/cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", size = 215574, upload-time = "2025-09-08T23:22:35.443Z" }, + { url = "https://files.pythonhosted.org/packages/44/64/58f6255b62b101093d5df22dcb752596066c7e89dd725e0afaed242a61be/cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", size = 218971, upload-time = "2025-09-08T23:22:36.805Z" }, + { url = "https://files.pythonhosted.org/packages/ab/49/fa72cebe2fd8a55fbe14956f9970fe8eb1ac59e5df042f603ef7c8ba0adc/cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", size = 211972, upload-time = "2025-09-08T23:22:38.436Z" }, + { url = "https://files.pythonhosted.org/packages/0b/28/dd0967a76aab36731b6ebfe64dec4e981aff7e0608f60c2d46b46982607d/cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", size = 217078, upload-time = "2025-09-08T23:22:39.776Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c0/015b25184413d7ab0a410775fdb4a50fca20f5589b5dab1dbbfa3baad8ce/cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5", size = 172076, upload-time = "2025-09-08T23:22:40.95Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8f/dc5531155e7070361eb1b7e4c1a9d896d0cb21c49f807a6c03fd63fc877e/cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5", size = 182820, upload-time = "2025-09-08T23:22:42.463Z" }, + { url = "https://files.pythonhosted.org/packages/95/5c/1b493356429f9aecfd56bc171285a4c4ac8697f76e9bbbbb105e537853a1/cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", size = 177635, upload-time = "2025-09-08T23:22:43.623Z" }, + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, ] [[package]] name = "cfgv" version = "3.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4e/b5/721b8799b04bf9afe054a3899c6cf4e880fcf8563cc71c15610242490a0c/cfgv-3.5.0.tar.gz", hash = "sha256:d5b1034354820651caa73ede66a6294d6e95c1b00acc5e9b098e917404669132", size = 7334, upload_time = "2025-11-19T20:55:51.612Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4e/b5/721b8799b04bf9afe054a3899c6cf4e880fcf8563cc71c15610242490a0c/cfgv-3.5.0.tar.gz", hash = "sha256:d5b1034354820651caa73ede66a6294d6e95c1b00acc5e9b098e917404669132", size = 7334, upload-time = "2025-11-19T20:55:51.612Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl", hash = "sha256:a8dc6b26ad22ff227d2634a65cb388215ce6cc96bbcc5cfde7641ae87e8dacc0", size = 7445, upload_time = "2025-11-19T20:55:50.744Z" }, + { url = "https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl", hash = "sha256:a8dc6b26ad22ff227d2634a65cb388215ce6cc96bbcc5cfde7641ae87e8dacc0", size = 7445, upload-time = "2025-11-19T20:55:50.744Z" }, ] [[package]] name = "chardet" version = "5.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618, upload_time = "2023-08-01T19:23:02.662Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618, upload-time = "2023-08-01T19:23:02.662Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385, upload_time = "2023-08-01T19:23:00.661Z" }, + { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385, upload-time = "2023-08-01T19:23:00.661Z" }, ] [[package]] name = "charset-normalizer" version = "3.4.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload_time = "2025-10-14T04:42:32.879Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1f/b8/6d51fc1d52cbd52cd4ccedd5b5b2f0f6a11bbf6765c782298b0f3e808541/charset_normalizer-3.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d", size = 209709, upload_time = "2025-10-14T04:40:11.385Z" }, - { url = "https://files.pythonhosted.org/packages/5c/af/1f9d7f7faafe2ddfb6f72a2e07a548a629c61ad510fe60f9630309908fef/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8", size = 148814, upload_time = "2025-10-14T04:40:13.135Z" }, - { url = "https://files.pythonhosted.org/packages/79/3d/f2e3ac2bbc056ca0c204298ea4e3d9db9b4afe437812638759db2c976b5f/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad", size = 144467, upload_time = "2025-10-14T04:40:14.728Z" }, - { url = "https://files.pythonhosted.org/packages/ec/85/1bf997003815e60d57de7bd972c57dc6950446a3e4ccac43bc3070721856/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8", size = 162280, upload_time = "2025-10-14T04:40:16.14Z" }, - { url = "https://files.pythonhosted.org/packages/3e/8e/6aa1952f56b192f54921c436b87f2aaf7c7a7c3d0d1a765547d64fd83c13/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d", size = 159454, upload_time = "2025-10-14T04:40:17.567Z" }, - { url = "https://files.pythonhosted.org/packages/36/3b/60cbd1f8e93aa25d1c669c649b7a655b0b5fb4c571858910ea9332678558/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313", size = 153609, upload_time = "2025-10-14T04:40:19.08Z" }, - { url = "https://files.pythonhosted.org/packages/64/91/6a13396948b8fd3c4b4fd5bc74d045f5637d78c9675585e8e9fbe5636554/charset_normalizer-3.4.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e", size = 151849, upload_time = "2025-10-14T04:40:20.607Z" }, - { url = "https://files.pythonhosted.org/packages/b7/7a/59482e28b9981d105691e968c544cc0df3b7d6133152fb3dcdc8f135da7a/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93", size = 151586, upload_time = "2025-10-14T04:40:21.719Z" }, - { url = "https://files.pythonhosted.org/packages/92/59/f64ef6a1c4bdd2baf892b04cd78792ed8684fbc48d4c2afe467d96b4df57/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0", size = 145290, upload_time = "2025-10-14T04:40:23.069Z" }, - { url = "https://files.pythonhosted.org/packages/6b/63/3bf9f279ddfa641ffa1962b0db6a57a9c294361cc2f5fcac997049a00e9c/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84", size = 163663, upload_time = "2025-10-14T04:40:24.17Z" }, - { url = "https://files.pythonhosted.org/packages/ed/09/c9e38fc8fa9e0849b172b581fd9803bdf6e694041127933934184e19f8c3/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e", size = 151964, upload_time = "2025-10-14T04:40:25.368Z" }, - { url = "https://files.pythonhosted.org/packages/d2/d1/d28b747e512d0da79d8b6a1ac18b7ab2ecfd81b2944c4c710e166d8dd09c/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db", size = 161064, upload_time = "2025-10-14T04:40:26.806Z" }, - { url = "https://files.pythonhosted.org/packages/bb/9a/31d62b611d901c3b9e5500c36aab0ff5eb442043fb3a1c254200d3d397d9/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6", size = 155015, upload_time = "2025-10-14T04:40:28.284Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f3/107e008fa2bff0c8b9319584174418e5e5285fef32f79d8ee6a430d0039c/charset_normalizer-3.4.4-cp310-cp310-win32.whl", hash = "sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f", size = 99792, upload_time = "2025-10-14T04:40:29.613Z" }, - { url = "https://files.pythonhosted.org/packages/eb/66/e396e8a408843337d7315bab30dbf106c38966f1819f123257f5520f8a96/charset_normalizer-3.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d", size = 107198, upload_time = "2025-10-14T04:40:30.644Z" }, - { url = "https://files.pythonhosted.org/packages/b5/58/01b4f815bf0312704c267f2ccb6e5d42bcc7752340cd487bc9f8c3710597/charset_normalizer-3.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69", size = 100262, upload_time = "2025-10-14T04:40:32.108Z" }, - { url = "https://files.pythonhosted.org/packages/ed/27/c6491ff4954e58a10f69ad90aca8a1b6fe9c5d3c6f380907af3c37435b59/charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8", size = 206988, upload_time = "2025-10-14T04:40:33.79Z" }, - { url = "https://files.pythonhosted.org/packages/94/59/2e87300fe67ab820b5428580a53cad894272dbb97f38a7a814a2a1ac1011/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0", size = 147324, upload_time = "2025-10-14T04:40:34.961Z" }, - { url = "https://files.pythonhosted.org/packages/07/fb/0cf61dc84b2b088391830f6274cb57c82e4da8bbc2efeac8c025edb88772/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3", size = 142742, upload_time = "2025-10-14T04:40:36.105Z" }, - { url = "https://files.pythonhosted.org/packages/62/8b/171935adf2312cd745d290ed93cf16cf0dfe320863ab7cbeeae1dcd6535f/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc", size = 160863, upload_time = "2025-10-14T04:40:37.188Z" }, - { url = "https://files.pythonhosted.org/packages/09/73/ad875b192bda14f2173bfc1bc9a55e009808484a4b256748d931b6948442/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897", size = 157837, upload_time = "2025-10-14T04:40:38.435Z" }, - { url = "https://files.pythonhosted.org/packages/6d/fc/de9cce525b2c5b94b47c70a4b4fb19f871b24995c728e957ee68ab1671ea/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381", size = 151550, upload_time = "2025-10-14T04:40:40.053Z" }, - { url = "https://files.pythonhosted.org/packages/55/c2/43edd615fdfba8c6f2dfbd459b25a6b3b551f24ea21981e23fb768503ce1/charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815", size = 149162, upload_time = "2025-10-14T04:40:41.163Z" }, - { url = "https://files.pythonhosted.org/packages/03/86/bde4ad8b4d0e9429a4e82c1e8f5c659993a9a863ad62c7df05cf7b678d75/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0", size = 150019, upload_time = "2025-10-14T04:40:42.276Z" }, - { url = "https://files.pythonhosted.org/packages/1f/86/a151eb2af293a7e7bac3a739b81072585ce36ccfb4493039f49f1d3cae8c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161", size = 143310, upload_time = "2025-10-14T04:40:43.439Z" }, - { url = "https://files.pythonhosted.org/packages/b5/fe/43dae6144a7e07b87478fdfc4dbe9efd5defb0e7ec29f5f58a55aeef7bf7/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4", size = 162022, upload_time = "2025-10-14T04:40:44.547Z" }, - { url = "https://files.pythonhosted.org/packages/80/e6/7aab83774f5d2bca81f42ac58d04caf44f0cc2b65fc6db2b3b2e8a05f3b3/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89", size = 149383, upload_time = "2025-10-14T04:40:46.018Z" }, - { url = "https://files.pythonhosted.org/packages/4f/e8/b289173b4edae05c0dde07f69f8db476a0b511eac556dfe0d6bda3c43384/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569", size = 159098, upload_time = "2025-10-14T04:40:47.081Z" }, - { url = "https://files.pythonhosted.org/packages/d8/df/fe699727754cae3f8478493c7f45f777b17c3ef0600e28abfec8619eb49c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224", size = 152991, upload_time = "2025-10-14T04:40:48.246Z" }, - { url = "https://files.pythonhosted.org/packages/1a/86/584869fe4ddb6ffa3bd9f491b87a01568797fb9bd8933f557dba9771beaf/charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a", size = 99456, upload_time = "2025-10-14T04:40:49.376Z" }, - { url = "https://files.pythonhosted.org/packages/65/f6/62fdd5feb60530f50f7e38b4f6a1d5203f4d16ff4f9f0952962c044e919a/charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016", size = 106978, upload_time = "2025-10-14T04:40:50.844Z" }, - { url = "https://files.pythonhosted.org/packages/7a/9d/0710916e6c82948b3be62d9d398cb4fcf4e97b56d6a6aeccd66c4b2f2bd5/charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1", size = 99969, upload_time = "2025-10-14T04:40:52.272Z" }, - { url = "https://files.pythonhosted.org/packages/f3/85/1637cd4af66fa687396e757dec650f28025f2a2f5a5531a3208dc0ec43f2/charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394", size = 208425, upload_time = "2025-10-14T04:40:53.353Z" }, - { url = "https://files.pythonhosted.org/packages/9d/6a/04130023fef2a0d9c62d0bae2649b69f7b7d8d24ea5536feef50551029df/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25", size = 148162, upload_time = "2025-10-14T04:40:54.558Z" }, - { url = "https://files.pythonhosted.org/packages/78/29/62328d79aa60da22c9e0b9a66539feae06ca0f5a4171ac4f7dc285b83688/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef", size = 144558, upload_time = "2025-10-14T04:40:55.677Z" }, - { url = "https://files.pythonhosted.org/packages/86/bb/b32194a4bf15b88403537c2e120b817c61cd4ecffa9b6876e941c3ee38fe/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d", size = 161497, upload_time = "2025-10-14T04:40:57.217Z" }, - { url = "https://files.pythonhosted.org/packages/19/89/a54c82b253d5b9b111dc74aca196ba5ccfcca8242d0fb64146d4d3183ff1/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8", size = 159240, upload_time = "2025-10-14T04:40:58.358Z" }, - { url = "https://files.pythonhosted.org/packages/c0/10/d20b513afe03acc89ec33948320a5544d31f21b05368436d580dec4e234d/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86", size = 153471, upload_time = "2025-10-14T04:40:59.468Z" }, - { url = "https://files.pythonhosted.org/packages/61/fa/fbf177b55bdd727010f9c0a3c49eefa1d10f960e5f09d1d887bf93c2e698/charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a", size = 150864, upload_time = "2025-10-14T04:41:00.623Z" }, - { url = "https://files.pythonhosted.org/packages/05/12/9fbc6a4d39c0198adeebbde20b619790e9236557ca59fc40e0e3cebe6f40/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f", size = 150647, upload_time = "2025-10-14T04:41:01.754Z" }, - { url = "https://files.pythonhosted.org/packages/ad/1f/6a9a593d52e3e8c5d2b167daf8c6b968808efb57ef4c210acb907c365bc4/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc", size = 145110, upload_time = "2025-10-14T04:41:03.231Z" }, - { url = "https://files.pythonhosted.org/packages/30/42/9a52c609e72471b0fc54386dc63c3781a387bb4fe61c20231a4ebcd58bdd/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf", size = 162839, upload_time = "2025-10-14T04:41:04.715Z" }, - { url = "https://files.pythonhosted.org/packages/c4/5b/c0682bbf9f11597073052628ddd38344a3d673fda35a36773f7d19344b23/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15", size = 150667, upload_time = "2025-10-14T04:41:05.827Z" }, - { url = "https://files.pythonhosted.org/packages/e4/24/a41afeab6f990cf2daf6cb8c67419b63b48cf518e4f56022230840c9bfb2/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9", size = 160535, upload_time = "2025-10-14T04:41:06.938Z" }, - { url = "https://files.pythonhosted.org/packages/2a/e5/6a4ce77ed243c4a50a1fecca6aaaab419628c818a49434be428fe24c9957/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0", size = 154816, upload_time = "2025-10-14T04:41:08.101Z" }, - { url = "https://files.pythonhosted.org/packages/a8/ef/89297262b8092b312d29cdb2517cb1237e51db8ecef2e9af5edbe7b683b1/charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26", size = 99694, upload_time = "2025-10-14T04:41:09.23Z" }, - { url = "https://files.pythonhosted.org/packages/3d/2d/1e5ed9dd3b3803994c155cd9aacb60c82c331bad84daf75bcb9c91b3295e/charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525", size = 107131, upload_time = "2025-10-14T04:41:10.467Z" }, - { url = "https://files.pythonhosted.org/packages/d0/d9/0ed4c7098a861482a7b6a95603edce4c0d9db2311af23da1fb2b75ec26fc/charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3", size = 100390, upload_time = "2025-10-14T04:41:11.915Z" }, - { url = "https://files.pythonhosted.org/packages/97/45/4b3a1239bbacd321068ea6e7ac28875b03ab8bc0aa0966452db17cd36714/charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794", size = 208091, upload_time = "2025-10-14T04:41:13.346Z" }, - { url = "https://files.pythonhosted.org/packages/7d/62/73a6d7450829655a35bb88a88fca7d736f9882a27eacdca2c6d505b57e2e/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed", size = 147936, upload_time = "2025-10-14T04:41:14.461Z" }, - { url = "https://files.pythonhosted.org/packages/89/c5/adb8c8b3d6625bef6d88b251bbb0d95f8205831b987631ab0c8bb5d937c2/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72", size = 144180, upload_time = "2025-10-14T04:41:15.588Z" }, - { url = "https://files.pythonhosted.org/packages/91/ed/9706e4070682d1cc219050b6048bfd293ccf67b3d4f5a4f39207453d4b99/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328", size = 161346, upload_time = "2025-10-14T04:41:16.738Z" }, - { url = "https://files.pythonhosted.org/packages/d5/0d/031f0d95e4972901a2f6f09ef055751805ff541511dc1252ba3ca1f80cf5/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede", size = 158874, upload_time = "2025-10-14T04:41:17.923Z" }, - { url = "https://files.pythonhosted.org/packages/f5/83/6ab5883f57c9c801ce5e5677242328aa45592be8a00644310a008d04f922/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894", size = 153076, upload_time = "2025-10-14T04:41:19.106Z" }, - { url = "https://files.pythonhosted.org/packages/75/1e/5ff781ddf5260e387d6419959ee89ef13878229732732ee73cdae01800f2/charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1", size = 150601, upload_time = "2025-10-14T04:41:20.245Z" }, - { url = "https://files.pythonhosted.org/packages/d7/57/71be810965493d3510a6ca79b90c19e48696fb1ff964da319334b12677f0/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490", size = 150376, upload_time = "2025-10-14T04:41:21.398Z" }, - { url = "https://files.pythonhosted.org/packages/e5/d5/c3d057a78c181d007014feb7e9f2e65905a6c4ef182c0ddf0de2924edd65/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44", size = 144825, upload_time = "2025-10-14T04:41:22.583Z" }, - { url = "https://files.pythonhosted.org/packages/e6/8c/d0406294828d4976f275ffbe66f00266c4b3136b7506941d87c00cab5272/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133", size = 162583, upload_time = "2025-10-14T04:41:23.754Z" }, - { url = "https://files.pythonhosted.org/packages/d7/24/e2aa1f18c8f15c4c0e932d9287b8609dd30ad56dbe41d926bd846e22fb8d/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3", size = 150366, upload_time = "2025-10-14T04:41:25.27Z" }, - { url = "https://files.pythonhosted.org/packages/e4/5b/1e6160c7739aad1e2df054300cc618b06bf784a7a164b0f238360721ab86/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e", size = 160300, upload_time = "2025-10-14T04:41:26.725Z" }, - { url = "https://files.pythonhosted.org/packages/7a/10/f882167cd207fbdd743e55534d5d9620e095089d176d55cb22d5322f2afd/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc", size = 154465, upload_time = "2025-10-14T04:41:28.322Z" }, - { url = "https://files.pythonhosted.org/packages/89/66/c7a9e1b7429be72123441bfdbaf2bc13faab3f90b933f664db506dea5915/charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac", size = 99404, upload_time = "2025-10-14T04:41:29.95Z" }, - { url = "https://files.pythonhosted.org/packages/c4/26/b9924fa27db384bdcd97ab83b4f0a8058d96ad9626ead570674d5e737d90/charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14", size = 107092, upload_time = "2025-10-14T04:41:31.188Z" }, - { url = "https://files.pythonhosted.org/packages/af/8f/3ed4bfa0c0c72a7ca17f0380cd9e4dd842b09f664e780c13cff1dcf2ef1b/charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2", size = 100408, upload_time = "2025-10-14T04:41:32.624Z" }, - { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload_time = "2025-10-14T04:42:31.76Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/b8/6d51fc1d52cbd52cd4ccedd5b5b2f0f6a11bbf6765c782298b0f3e808541/charset_normalizer-3.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d", size = 209709, upload-time = "2025-10-14T04:40:11.385Z" }, + { url = "https://files.pythonhosted.org/packages/5c/af/1f9d7f7faafe2ddfb6f72a2e07a548a629c61ad510fe60f9630309908fef/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8", size = 148814, upload-time = "2025-10-14T04:40:13.135Z" }, + { url = "https://files.pythonhosted.org/packages/79/3d/f2e3ac2bbc056ca0c204298ea4e3d9db9b4afe437812638759db2c976b5f/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad", size = 144467, upload-time = "2025-10-14T04:40:14.728Z" }, + { url = "https://files.pythonhosted.org/packages/ec/85/1bf997003815e60d57de7bd972c57dc6950446a3e4ccac43bc3070721856/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8", size = 162280, upload-time = "2025-10-14T04:40:16.14Z" }, + { url = "https://files.pythonhosted.org/packages/3e/8e/6aa1952f56b192f54921c436b87f2aaf7c7a7c3d0d1a765547d64fd83c13/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d", size = 159454, upload-time = "2025-10-14T04:40:17.567Z" }, + { url = "https://files.pythonhosted.org/packages/36/3b/60cbd1f8e93aa25d1c669c649b7a655b0b5fb4c571858910ea9332678558/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313", size = 153609, upload-time = "2025-10-14T04:40:19.08Z" }, + { url = "https://files.pythonhosted.org/packages/64/91/6a13396948b8fd3c4b4fd5bc74d045f5637d78c9675585e8e9fbe5636554/charset_normalizer-3.4.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e", size = 151849, upload-time = "2025-10-14T04:40:20.607Z" }, + { url = "https://files.pythonhosted.org/packages/b7/7a/59482e28b9981d105691e968c544cc0df3b7d6133152fb3dcdc8f135da7a/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93", size = 151586, upload-time = "2025-10-14T04:40:21.719Z" }, + { url = "https://files.pythonhosted.org/packages/92/59/f64ef6a1c4bdd2baf892b04cd78792ed8684fbc48d4c2afe467d96b4df57/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0", size = 145290, upload-time = "2025-10-14T04:40:23.069Z" }, + { url = "https://files.pythonhosted.org/packages/6b/63/3bf9f279ddfa641ffa1962b0db6a57a9c294361cc2f5fcac997049a00e9c/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84", size = 163663, upload-time = "2025-10-14T04:40:24.17Z" }, + { url = "https://files.pythonhosted.org/packages/ed/09/c9e38fc8fa9e0849b172b581fd9803bdf6e694041127933934184e19f8c3/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e", size = 151964, upload-time = "2025-10-14T04:40:25.368Z" }, + { url = "https://files.pythonhosted.org/packages/d2/d1/d28b747e512d0da79d8b6a1ac18b7ab2ecfd81b2944c4c710e166d8dd09c/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db", size = 161064, upload-time = "2025-10-14T04:40:26.806Z" }, + { url = "https://files.pythonhosted.org/packages/bb/9a/31d62b611d901c3b9e5500c36aab0ff5eb442043fb3a1c254200d3d397d9/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6", size = 155015, upload-time = "2025-10-14T04:40:28.284Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f3/107e008fa2bff0c8b9319584174418e5e5285fef32f79d8ee6a430d0039c/charset_normalizer-3.4.4-cp310-cp310-win32.whl", hash = "sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f", size = 99792, upload-time = "2025-10-14T04:40:29.613Z" }, + { url = "https://files.pythonhosted.org/packages/eb/66/e396e8a408843337d7315bab30dbf106c38966f1819f123257f5520f8a96/charset_normalizer-3.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d", size = 107198, upload-time = "2025-10-14T04:40:30.644Z" }, + { url = "https://files.pythonhosted.org/packages/b5/58/01b4f815bf0312704c267f2ccb6e5d42bcc7752340cd487bc9f8c3710597/charset_normalizer-3.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69", size = 100262, upload-time = "2025-10-14T04:40:32.108Z" }, + { url = "https://files.pythonhosted.org/packages/ed/27/c6491ff4954e58a10f69ad90aca8a1b6fe9c5d3c6f380907af3c37435b59/charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8", size = 206988, upload-time = "2025-10-14T04:40:33.79Z" }, + { url = "https://files.pythonhosted.org/packages/94/59/2e87300fe67ab820b5428580a53cad894272dbb97f38a7a814a2a1ac1011/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0", size = 147324, upload-time = "2025-10-14T04:40:34.961Z" }, + { url = "https://files.pythonhosted.org/packages/07/fb/0cf61dc84b2b088391830f6274cb57c82e4da8bbc2efeac8c025edb88772/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3", size = 142742, upload-time = "2025-10-14T04:40:36.105Z" }, + { url = "https://files.pythonhosted.org/packages/62/8b/171935adf2312cd745d290ed93cf16cf0dfe320863ab7cbeeae1dcd6535f/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc", size = 160863, upload-time = "2025-10-14T04:40:37.188Z" }, + { url = "https://files.pythonhosted.org/packages/09/73/ad875b192bda14f2173bfc1bc9a55e009808484a4b256748d931b6948442/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897", size = 157837, upload-time = "2025-10-14T04:40:38.435Z" }, + { url = "https://files.pythonhosted.org/packages/6d/fc/de9cce525b2c5b94b47c70a4b4fb19f871b24995c728e957ee68ab1671ea/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381", size = 151550, upload-time = "2025-10-14T04:40:40.053Z" }, + { url = "https://files.pythonhosted.org/packages/55/c2/43edd615fdfba8c6f2dfbd459b25a6b3b551f24ea21981e23fb768503ce1/charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815", size = 149162, upload-time = "2025-10-14T04:40:41.163Z" }, + { url = "https://files.pythonhosted.org/packages/03/86/bde4ad8b4d0e9429a4e82c1e8f5c659993a9a863ad62c7df05cf7b678d75/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0", size = 150019, upload-time = "2025-10-14T04:40:42.276Z" }, + { url = "https://files.pythonhosted.org/packages/1f/86/a151eb2af293a7e7bac3a739b81072585ce36ccfb4493039f49f1d3cae8c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161", size = 143310, upload-time = "2025-10-14T04:40:43.439Z" }, + { url = "https://files.pythonhosted.org/packages/b5/fe/43dae6144a7e07b87478fdfc4dbe9efd5defb0e7ec29f5f58a55aeef7bf7/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4", size = 162022, upload-time = "2025-10-14T04:40:44.547Z" }, + { url = "https://files.pythonhosted.org/packages/80/e6/7aab83774f5d2bca81f42ac58d04caf44f0cc2b65fc6db2b3b2e8a05f3b3/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89", size = 149383, upload-time = "2025-10-14T04:40:46.018Z" }, + { url = "https://files.pythonhosted.org/packages/4f/e8/b289173b4edae05c0dde07f69f8db476a0b511eac556dfe0d6bda3c43384/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569", size = 159098, upload-time = "2025-10-14T04:40:47.081Z" }, + { url = "https://files.pythonhosted.org/packages/d8/df/fe699727754cae3f8478493c7f45f777b17c3ef0600e28abfec8619eb49c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224", size = 152991, upload-time = "2025-10-14T04:40:48.246Z" }, + { url = "https://files.pythonhosted.org/packages/1a/86/584869fe4ddb6ffa3bd9f491b87a01568797fb9bd8933f557dba9771beaf/charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a", size = 99456, upload-time = "2025-10-14T04:40:49.376Z" }, + { url = "https://files.pythonhosted.org/packages/65/f6/62fdd5feb60530f50f7e38b4f6a1d5203f4d16ff4f9f0952962c044e919a/charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016", size = 106978, upload-time = "2025-10-14T04:40:50.844Z" }, + { url = "https://files.pythonhosted.org/packages/7a/9d/0710916e6c82948b3be62d9d398cb4fcf4e97b56d6a6aeccd66c4b2f2bd5/charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1", size = 99969, upload-time = "2025-10-14T04:40:52.272Z" }, + { url = "https://files.pythonhosted.org/packages/f3/85/1637cd4af66fa687396e757dec650f28025f2a2f5a5531a3208dc0ec43f2/charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394", size = 208425, upload-time = "2025-10-14T04:40:53.353Z" }, + { url = "https://files.pythonhosted.org/packages/9d/6a/04130023fef2a0d9c62d0bae2649b69f7b7d8d24ea5536feef50551029df/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25", size = 148162, upload-time = "2025-10-14T04:40:54.558Z" }, + { url = "https://files.pythonhosted.org/packages/78/29/62328d79aa60da22c9e0b9a66539feae06ca0f5a4171ac4f7dc285b83688/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef", size = 144558, upload-time = "2025-10-14T04:40:55.677Z" }, + { url = "https://files.pythonhosted.org/packages/86/bb/b32194a4bf15b88403537c2e120b817c61cd4ecffa9b6876e941c3ee38fe/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d", size = 161497, upload-time = "2025-10-14T04:40:57.217Z" }, + { url = "https://files.pythonhosted.org/packages/19/89/a54c82b253d5b9b111dc74aca196ba5ccfcca8242d0fb64146d4d3183ff1/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8", size = 159240, upload-time = "2025-10-14T04:40:58.358Z" }, + { url = "https://files.pythonhosted.org/packages/c0/10/d20b513afe03acc89ec33948320a5544d31f21b05368436d580dec4e234d/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86", size = 153471, upload-time = "2025-10-14T04:40:59.468Z" }, + { url = "https://files.pythonhosted.org/packages/61/fa/fbf177b55bdd727010f9c0a3c49eefa1d10f960e5f09d1d887bf93c2e698/charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a", size = 150864, upload-time = "2025-10-14T04:41:00.623Z" }, + { url = "https://files.pythonhosted.org/packages/05/12/9fbc6a4d39c0198adeebbde20b619790e9236557ca59fc40e0e3cebe6f40/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f", size = 150647, upload-time = "2025-10-14T04:41:01.754Z" }, + { url = "https://files.pythonhosted.org/packages/ad/1f/6a9a593d52e3e8c5d2b167daf8c6b968808efb57ef4c210acb907c365bc4/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc", size = 145110, upload-time = "2025-10-14T04:41:03.231Z" }, + { url = "https://files.pythonhosted.org/packages/30/42/9a52c609e72471b0fc54386dc63c3781a387bb4fe61c20231a4ebcd58bdd/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf", size = 162839, upload-time = "2025-10-14T04:41:04.715Z" }, + { url = "https://files.pythonhosted.org/packages/c4/5b/c0682bbf9f11597073052628ddd38344a3d673fda35a36773f7d19344b23/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15", size = 150667, upload-time = "2025-10-14T04:41:05.827Z" }, + { url = "https://files.pythonhosted.org/packages/e4/24/a41afeab6f990cf2daf6cb8c67419b63b48cf518e4f56022230840c9bfb2/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9", size = 160535, upload-time = "2025-10-14T04:41:06.938Z" }, + { url = "https://files.pythonhosted.org/packages/2a/e5/6a4ce77ed243c4a50a1fecca6aaaab419628c818a49434be428fe24c9957/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0", size = 154816, upload-time = "2025-10-14T04:41:08.101Z" }, + { url = "https://files.pythonhosted.org/packages/a8/ef/89297262b8092b312d29cdb2517cb1237e51db8ecef2e9af5edbe7b683b1/charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26", size = 99694, upload-time = "2025-10-14T04:41:09.23Z" }, + { url = "https://files.pythonhosted.org/packages/3d/2d/1e5ed9dd3b3803994c155cd9aacb60c82c331bad84daf75bcb9c91b3295e/charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525", size = 107131, upload-time = "2025-10-14T04:41:10.467Z" }, + { url = "https://files.pythonhosted.org/packages/d0/d9/0ed4c7098a861482a7b6a95603edce4c0d9db2311af23da1fb2b75ec26fc/charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3", size = 100390, upload-time = "2025-10-14T04:41:11.915Z" }, + { url = "https://files.pythonhosted.org/packages/97/45/4b3a1239bbacd321068ea6e7ac28875b03ab8bc0aa0966452db17cd36714/charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794", size = 208091, upload-time = "2025-10-14T04:41:13.346Z" }, + { url = "https://files.pythonhosted.org/packages/7d/62/73a6d7450829655a35bb88a88fca7d736f9882a27eacdca2c6d505b57e2e/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed", size = 147936, upload-time = "2025-10-14T04:41:14.461Z" }, + { url = "https://files.pythonhosted.org/packages/89/c5/adb8c8b3d6625bef6d88b251bbb0d95f8205831b987631ab0c8bb5d937c2/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72", size = 144180, upload-time = "2025-10-14T04:41:15.588Z" }, + { url = "https://files.pythonhosted.org/packages/91/ed/9706e4070682d1cc219050b6048bfd293ccf67b3d4f5a4f39207453d4b99/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328", size = 161346, upload-time = "2025-10-14T04:41:16.738Z" }, + { url = "https://files.pythonhosted.org/packages/d5/0d/031f0d95e4972901a2f6f09ef055751805ff541511dc1252ba3ca1f80cf5/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede", size = 158874, upload-time = "2025-10-14T04:41:17.923Z" }, + { url = "https://files.pythonhosted.org/packages/f5/83/6ab5883f57c9c801ce5e5677242328aa45592be8a00644310a008d04f922/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894", size = 153076, upload-time = "2025-10-14T04:41:19.106Z" }, + { url = "https://files.pythonhosted.org/packages/75/1e/5ff781ddf5260e387d6419959ee89ef13878229732732ee73cdae01800f2/charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1", size = 150601, upload-time = "2025-10-14T04:41:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/d7/57/71be810965493d3510a6ca79b90c19e48696fb1ff964da319334b12677f0/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490", size = 150376, upload-time = "2025-10-14T04:41:21.398Z" }, + { url = "https://files.pythonhosted.org/packages/e5/d5/c3d057a78c181d007014feb7e9f2e65905a6c4ef182c0ddf0de2924edd65/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44", size = 144825, upload-time = "2025-10-14T04:41:22.583Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8c/d0406294828d4976f275ffbe66f00266c4b3136b7506941d87c00cab5272/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133", size = 162583, upload-time = "2025-10-14T04:41:23.754Z" }, + { url = "https://files.pythonhosted.org/packages/d7/24/e2aa1f18c8f15c4c0e932d9287b8609dd30ad56dbe41d926bd846e22fb8d/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3", size = 150366, upload-time = "2025-10-14T04:41:25.27Z" }, + { url = "https://files.pythonhosted.org/packages/e4/5b/1e6160c7739aad1e2df054300cc618b06bf784a7a164b0f238360721ab86/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e", size = 160300, upload-time = "2025-10-14T04:41:26.725Z" }, + { url = "https://files.pythonhosted.org/packages/7a/10/f882167cd207fbdd743e55534d5d9620e095089d176d55cb22d5322f2afd/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc", size = 154465, upload-time = "2025-10-14T04:41:28.322Z" }, + { url = "https://files.pythonhosted.org/packages/89/66/c7a9e1b7429be72123441bfdbaf2bc13faab3f90b933f664db506dea5915/charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac", size = 99404, upload-time = "2025-10-14T04:41:29.95Z" }, + { url = "https://files.pythonhosted.org/packages/c4/26/b9924fa27db384bdcd97ab83b4f0a8058d96ad9626ead570674d5e737d90/charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14", size = 107092, upload-time = "2025-10-14T04:41:31.188Z" }, + { url = "https://files.pythonhosted.org/packages/af/8f/3ed4bfa0c0c72a7ca17f0380cd9e4dd842b09f664e780c13cff1dcf2ef1b/charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2", size = 100408, upload-time = "2025-10-14T04:41:32.624Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" }, ] [[package]] @@ -593,9 +595,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cd/0f/62ca20172d4f87d93cf89665fbaedcd560ac48b465bd1d92bfc7ea6b0a41/click-8.2.0.tar.gz", hash = "sha256:f5452aeddd9988eefa20f90f05ab66f17fce1ee2a36907fd30b05bbb5953814d", size = 235857, upload_time = "2025-05-10T22:21:03.111Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/0f/62ca20172d4f87d93cf89665fbaedcd560ac48b465bd1d92bfc7ea6b0a41/click-8.2.0.tar.gz", hash = "sha256:f5452aeddd9988eefa20f90f05ab66f17fce1ee2a36907fd30b05bbb5953814d", size = 235857, upload-time = "2025-05-10T22:21:03.111Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/58/1f37bf81e3c689cc74ffa42102fa8915b59085f54a6e4a80bc6265c0f6bf/click-8.2.0-py3-none-any.whl", hash = "sha256:6b303f0b2aa85f1cb4e5303078fadcbcd4e476f114fab9b5007005711839325c", size = 102156, upload_time = "2025-05-10T22:21:01.352Z" }, + { url = "https://files.pythonhosted.org/packages/a2/58/1f37bf81e3c689cc74ffa42102fa8915b59085f54a6e4a80bc6265c0f6bf/click-8.2.0-py3-none-any.whl", hash = "sha256:6b303f0b2aa85f1cb4e5303078fadcbcd4e476f114fab9b5007005711839325c", size = 102156, upload-time = "2025-05-10T22:21:01.352Z" }, ] [[package]] @@ -605,18 +607,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f4/18/2ac35d6b3015a0c74e923d94fc69baf8307f7c3233de015d69f99e17afa8/cloudpathlib-0.23.0.tar.gz", hash = "sha256:eb38a34c6b8a048ecfd2b2f60917f7cbad4a105b7c979196450c2f541f4d6b4b", size = 53126, upload_time = "2025-10-07T22:47:56.278Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f4/18/2ac35d6b3015a0c74e923d94fc69baf8307f7c3233de015d69f99e17afa8/cloudpathlib-0.23.0.tar.gz", hash = "sha256:eb38a34c6b8a048ecfd2b2f60917f7cbad4a105b7c979196450c2f541f4d6b4b", size = 53126, upload-time = "2025-10-07T22:47:56.278Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ae/8a/c4bb04426d608be4a3171efa2e233d2c59a5c8937850c10d098e126df18e/cloudpathlib-0.23.0-py3-none-any.whl", hash = "sha256:8520b3b01468fee77de37ab5d50b1b524ea6b4a8731c35d1b7407ac0cd716002", size = 62755, upload_time = "2025-10-07T22:47:54.905Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8a/c4bb04426d608be4a3171efa2e233d2c59a5c8937850c10d098e126df18e/cloudpathlib-0.23.0-py3-none-any.whl", hash = "sha256:8520b3b01468fee77de37ab5d50b1b524ea6b4a8731c35d1b7407ac0cd716002", size = 62755, upload-time = "2025-10-07T22:47:54.905Z" }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload_time = "2022-10-25T02:36:22.414Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload_time = "2022-10-25T02:36:20.889Z" }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] [[package]] @@ -627,92 +629,92 @@ dependencies = [ { name = "pydantic" }, { name = "srsly" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/51/d3/57c6631159a1b48d273b40865c315cf51f89df7a9d1101094ef12e3a37c2/confection-0.1.5.tar.gz", hash = "sha256:8e72dd3ca6bd4f48913cd220f10b8275978e740411654b6e8ca6d7008c590f0e", size = 38924, upload_time = "2024-05-31T16:17:01.559Z" } +sdist = { url = "https://files.pythonhosted.org/packages/51/d3/57c6631159a1b48d273b40865c315cf51f89df7a9d1101094ef12e3a37c2/confection-0.1.5.tar.gz", hash = "sha256:8e72dd3ca6bd4f48913cd220f10b8275978e740411654b6e8ca6d7008c590f0e", size = 38924, upload-time = "2024-05-31T16:17:01.559Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/00/3106b1854b45bd0474ced037dfe6b73b90fe68a68968cef47c23de3d43d2/confection-0.1.5-py3-none-any.whl", hash = "sha256:e29d3c3f8eac06b3f77eb9dfb4bf2fc6bcc9622a98ca00a698e3d019c6430b14", size = 35451, upload_time = "2024-05-31T16:16:59.075Z" }, + { url = "https://files.pythonhosted.org/packages/0c/00/3106b1854b45bd0474ced037dfe6b73b90fe68a68968cef47c23de3d43d2/confection-0.1.5-py3-none-any.whl", hash = "sha256:e29d3c3f8eac06b3f77eb9dfb4bf2fc6bcc9622a98ca00a698e3d019c6430b14", size = 35451, upload-time = "2024-05-31T16:16:59.075Z" }, ] [[package]] name = "coverage" version = "7.13.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/24/56/95b7e30fa389756cb56630faa728da46a27b8c6eb46f9d557c68fff12b65/coverage-7.13.4.tar.gz", hash = "sha256:e5c8f6ed1e61a8b2dcdf31eb0b9bbf0130750ca79c1c49eb898e2ad86f5ccc91", size = 827239, upload_time = "2026-02-09T12:59:03.86Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/44/d4/7827d9ffa34d5d4d752eec907022aa417120936282fc488306f5da08c292/coverage-7.13.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fc31c787a84f8cd6027eba44010517020e0d18487064cd3d8968941856d1415", size = 219152, upload_time = "2026-02-09T12:56:11.974Z" }, - { url = "https://files.pythonhosted.org/packages/35/b0/d69df26607c64043292644dbb9dc54b0856fabaa2cbb1eeee3331cc9e280/coverage-7.13.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a32ebc02a1805adf637fc8dec324b5cdacd2e493515424f70ee33799573d661b", size = 219667, upload_time = "2026-02-09T12:56:13.33Z" }, - { url = "https://files.pythonhosted.org/packages/82/a4/c1523f7c9e47b2271dbf8c2a097e7a1f89ef0d66f5840bb59b7e8814157b/coverage-7.13.4-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e24f9156097ff9dc286f2f913df3a7f63c0e333dcafa3c196f2c18b4175ca09a", size = 246425, upload_time = "2026-02-09T12:56:14.552Z" }, - { url = "https://files.pythonhosted.org/packages/f8/02/aa7ec01d1a5023c4b680ab7257f9bfde9defe8fdddfe40be096ac19e8177/coverage-7.13.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8041b6c5bfdc03257666e9881d33b1abc88daccaf73f7b6340fb7946655cd10f", size = 248229, upload_time = "2026-02-09T12:56:16.31Z" }, - { url = "https://files.pythonhosted.org/packages/35/98/85aba0aed5126d896162087ef3f0e789a225697245256fc6181b95f47207/coverage-7.13.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2a09cfa6a5862bc2fc6ca7c3def5b2926194a56b8ab78ffcf617d28911123012", size = 250106, upload_time = "2026-02-09T12:56:18.024Z" }, - { url = "https://files.pythonhosted.org/packages/96/72/1db59bd67494bc162e3e4cd5fbc7edba2c7026b22f7c8ef1496d58c2b94c/coverage-7.13.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:296f8b0af861d3970c2a4d8c91d48eb4dd4771bcef9baedec6a9b515d7de3def", size = 252021, upload_time = "2026-02-09T12:56:19.272Z" }, - { url = "https://files.pythonhosted.org/packages/9d/97/72899c59c7066961de6e3daa142d459d47d104956db43e057e034f015c8a/coverage-7.13.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e101609bcbbfb04605ea1027b10dc3735c094d12d40826a60f897b98b1c30256", size = 247114, upload_time = "2026-02-09T12:56:21.051Z" }, - { url = "https://files.pythonhosted.org/packages/39/1f/f1885573b5970235e908da4389176936c8933e86cb316b9620aab1585fa2/coverage-7.13.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aa3feb8db2e87ff5e6d00d7e1480ae241876286691265657b500886c98f38bda", size = 248143, upload_time = "2026-02-09T12:56:22.585Z" }, - { url = "https://files.pythonhosted.org/packages/a8/cf/e80390c5b7480b722fa3e994f8202807799b85bc562aa4f1dde209fbb7be/coverage-7.13.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4fc7fa81bbaf5a02801b65346c8b3e657f1d93763e58c0abdf7c992addd81a92", size = 246152, upload_time = "2026-02-09T12:56:23.748Z" }, - { url = "https://files.pythonhosted.org/packages/44/bf/f89a8350d85572f95412debb0fb9bb4795b1d5b5232bd652923c759e787b/coverage-7.13.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:33901f604424145c6e9c2398684b92e176c0b12df77d52db81c20abd48c3794c", size = 249959, upload_time = "2026-02-09T12:56:25.209Z" }, - { url = "https://files.pythonhosted.org/packages/f7/6e/612a02aece8178c818df273e8d1642190c4875402ca2ba74514394b27aba/coverage-7.13.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:bb28c0f2cf2782508a40cec377935829d5fcc3ad9a3681375af4e84eb34b6b58", size = 246416, upload_time = "2026-02-09T12:56:26.475Z" }, - { url = "https://files.pythonhosted.org/packages/cb/98/b5afc39af67c2fa6786b03c3a7091fc300947387ce8914b096db8a73d67a/coverage-7.13.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9d107aff57a83222ddbd8d9ee705ede2af2cc926608b57abed8ef96b50b7e8f9", size = 247025, upload_time = "2026-02-09T12:56:27.727Z" }, - { url = "https://files.pythonhosted.org/packages/51/30/2bba8ef0682d5bd210c38fe497e12a06c9f8d663f7025e9f5c2c31ce847d/coverage-7.13.4-cp310-cp310-win32.whl", hash = "sha256:a6f94a7d00eb18f1b6d403c91a88fd58cfc92d4b16080dfdb774afc8294469bf", size = 221758, upload_time = "2026-02-09T12:56:29.051Z" }, - { url = "https://files.pythonhosted.org/packages/78/13/331f94934cf6c092b8ea59ff868eb587bc8fe0893f02c55bc6c0183a192e/coverage-7.13.4-cp310-cp310-win_amd64.whl", hash = "sha256:2cb0f1e000ebc419632bbe04366a8990b6e32c4e0b51543a6484ffe15eaeda95", size = 222693, upload_time = "2026-02-09T12:56:30.366Z" }, - { url = "https://files.pythonhosted.org/packages/b4/ad/b59e5b451cf7172b8d1043dc0fa718f23aab379bc1521ee13d4bd9bfa960/coverage-7.13.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d490ba50c3f35dd7c17953c68f3270e7ccd1c6642e2d2afe2d8e720b98f5a053", size = 219278, upload_time = "2026-02-09T12:56:31.673Z" }, - { url = "https://files.pythonhosted.org/packages/f1/17/0cb7ca3de72e5f4ef2ec2fa0089beafbcaaaead1844e8b8a63d35173d77d/coverage-7.13.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:19bc3c88078789f8ef36acb014d7241961dbf883fd2533d18cb1e7a5b4e28b11", size = 219783, upload_time = "2026-02-09T12:56:33.104Z" }, - { url = "https://files.pythonhosted.org/packages/ab/63/325d8e5b11e0eaf6d0f6a44fad444ae58820929a9b0de943fa377fe73e85/coverage-7.13.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3998e5a32e62fdf410c0dbd3115df86297995d6e3429af80b8798aad894ca7aa", size = 250200, upload_time = "2026-02-09T12:56:34.474Z" }, - { url = "https://files.pythonhosted.org/packages/76/53/c16972708cbb79f2942922571a687c52bd109a7bd51175aeb7558dff2236/coverage-7.13.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8e264226ec98e01a8e1054314af91ee6cde0eacac4f465cc93b03dbe0bce2fd7", size = 252114, upload_time = "2026-02-09T12:56:35.749Z" }, - { url = "https://files.pythonhosted.org/packages/eb/c2/7ab36d8b8cc412bec9ea2d07c83c48930eb4ba649634ba00cb7e4e0f9017/coverage-7.13.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a3aa4e7b9e416774b21797365b358a6e827ffadaaca81b69ee02946852449f00", size = 254220, upload_time = "2026-02-09T12:56:37.796Z" }, - { url = "https://files.pythonhosted.org/packages/d6/4d/cf52c9a3322c89a0e6febdfbc83bb45c0ed3c64ad14081b9503adee702e7/coverage-7.13.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:71ca20079dd8f27fcf808817e281e90220475cd75115162218d0e27549f95fef", size = 256164, upload_time = "2026-02-09T12:56:39.016Z" }, - { url = "https://files.pythonhosted.org/packages/78/e9/eb1dd17bd6de8289df3580e967e78294f352a5df8a57ff4671ee5fc3dcd0/coverage-7.13.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e2f25215f1a359ab17320b47bcdaca3e6e6356652e8256f2441e4ef972052903", size = 250325, upload_time = "2026-02-09T12:56:40.668Z" }, - { url = "https://files.pythonhosted.org/packages/71/07/8c1542aa873728f72267c07278c5cc0ec91356daf974df21335ccdb46368/coverage-7.13.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d65b2d373032411e86960604dc4edac91fdfb5dca539461cf2cbe78327d1e64f", size = 251913, upload_time = "2026-02-09T12:56:41.97Z" }, - { url = "https://files.pythonhosted.org/packages/74/d7/c62e2c5e4483a748e27868e4c32ad3daa9bdddbba58e1bc7a15e252baa74/coverage-7.13.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94eb63f9b363180aff17de3e7c8760c3ba94664ea2695c52f10111244d16a299", size = 249974, upload_time = "2026-02-09T12:56:43.323Z" }, - { url = "https://files.pythonhosted.org/packages/98/9f/4c5c015a6e98ced54efd0f5cf8d31b88e5504ecb6857585fc0161bb1e600/coverage-7.13.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e856bf6616714c3a9fbc270ab54103f4e685ba236fa98c054e8f87f266c93505", size = 253741, upload_time = "2026-02-09T12:56:45.155Z" }, - { url = "https://files.pythonhosted.org/packages/bd/59/0f4eef89b9f0fcd9633b5d350016f54126ab49426a70ff4c4e87446cabdc/coverage-7.13.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:65dfcbe305c3dfe658492df2d85259e0d79ead4177f9ae724b6fb245198f55d6", size = 249695, upload_time = "2026-02-09T12:56:46.636Z" }, - { url = "https://files.pythonhosted.org/packages/b5/2c/b7476f938deb07166f3eb281a385c262675d688ff4659ad56c6c6b8e2e70/coverage-7.13.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b507778ae8a4c915436ed5c2e05b4a6cecfa70f734e19c22a005152a11c7b6a9", size = 250599, upload_time = "2026-02-09T12:56:48.13Z" }, - { url = "https://files.pythonhosted.org/packages/b8/34/c3420709d9846ee3785b9f2831b4d94f276f38884032dca1457fa83f7476/coverage-7.13.4-cp311-cp311-win32.whl", hash = "sha256:784fc3cf8be001197b652d51d3fd259b1e2262888693a4636e18879f613a62a9", size = 221780, upload_time = "2026-02-09T12:56:50.479Z" }, - { url = "https://files.pythonhosted.org/packages/61/08/3d9c8613079d2b11c185b865de9a4c1a68850cfda2b357fae365cf609f29/coverage-7.13.4-cp311-cp311-win_amd64.whl", hash = "sha256:2421d591f8ca05b308cf0092807308b2facbefe54af7c02ac22548b88b95c98f", size = 222715, upload_time = "2026-02-09T12:56:51.815Z" }, - { url = "https://files.pythonhosted.org/packages/18/1a/54c3c80b2f056164cc0a6cdcb040733760c7c4be9d780fe655f356f433e4/coverage-7.13.4-cp311-cp311-win_arm64.whl", hash = "sha256:79e73a76b854d9c6088fe5d8b2ebe745f8681c55f7397c3c0a016192d681045f", size = 221385, upload_time = "2026-02-09T12:56:53.194Z" }, - { url = "https://files.pythonhosted.org/packages/d1/81/4ce2fdd909c5a0ed1f6dedb88aa57ab79b6d1fbd9b588c1ac7ef45659566/coverage-7.13.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:02231499b08dabbe2b96612993e5fc34217cdae907a51b906ac7fca8027a4459", size = 219449, upload_time = "2026-02-09T12:56:54.889Z" }, - { url = "https://files.pythonhosted.org/packages/5d/96/5238b1efc5922ddbdc9b0db9243152c09777804fb7c02ad1741eb18a11c0/coverage-7.13.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40aa8808140e55dc022b15d8aa7f651b6b3d68b365ea0398f1441e0b04d859c3", size = 219810, upload_time = "2026-02-09T12:56:56.33Z" }, - { url = "https://files.pythonhosted.org/packages/78/72/2f372b726d433c9c35e56377cf1d513b4c16fe51841060d826b95caacec1/coverage-7.13.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5b856a8ccf749480024ff3bd7310adaef57bf31fd17e1bfc404b7940b6986634", size = 251308, upload_time = "2026-02-09T12:56:57.858Z" }, - { url = "https://files.pythonhosted.org/packages/5d/a0/2ea570925524ef4e00bb6c82649f5682a77fac5ab910a65c9284de422600/coverage-7.13.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2c048ea43875fbf8b45d476ad79f179809c590ec7b79e2035c662e7afa3192e3", size = 254052, upload_time = "2026-02-09T12:56:59.754Z" }, - { url = "https://files.pythonhosted.org/packages/e8/ac/45dc2e19a1939098d783c846e130b8f862fbb50d09e0af663988f2f21973/coverage-7.13.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b7b38448866e83176e28086674fe7368ab8590e4610fb662b44e345b86d63ffa", size = 255165, upload_time = "2026-02-09T12:57:01.287Z" }, - { url = "https://files.pythonhosted.org/packages/2d/4d/26d236ff35abc3b5e63540d3386e4c3b192168c1d96da5cb2f43c640970f/coverage-7.13.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:de6defc1c9badbf8b9e67ae90fd00519186d6ab64e5cc5f3d21359c2a9b2c1d3", size = 257432, upload_time = "2026-02-09T12:57:02.637Z" }, - { url = "https://files.pythonhosted.org/packages/ec/55/14a966c757d1348b2e19caf699415a2a4c4f7feaa4bbc6326a51f5c7dd1b/coverage-7.13.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7eda778067ad7ffccd23ecffce537dface96212576a07924cbf0d8799d2ded5a", size = 251716, upload_time = "2026-02-09T12:57:04.056Z" }, - { url = "https://files.pythonhosted.org/packages/77/33/50116647905837c66d28b2af1321b845d5f5d19be9655cb84d4a0ea806b4/coverage-7.13.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e87f6c587c3f34356c3759f0420693e35e7eb0e2e41e4c011cb6ec6ecbbf1db7", size = 253089, upload_time = "2026-02-09T12:57:05.503Z" }, - { url = "https://files.pythonhosted.org/packages/c2/b4/8efb11a46e3665d92635a56e4f2d4529de6d33f2cb38afd47d779d15fc99/coverage-7.13.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8248977c2e33aecb2ced42fef99f2d319e9904a36e55a8a68b69207fb7e43edc", size = 251232, upload_time = "2026-02-09T12:57:06.879Z" }, - { url = "https://files.pythonhosted.org/packages/51/24/8cd73dd399b812cc76bb0ac260e671c4163093441847ffe058ac9fda1e32/coverage-7.13.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:25381386e80ae727608e662474db537d4df1ecd42379b5ba33c84633a2b36d47", size = 255299, upload_time = "2026-02-09T12:57:08.245Z" }, - { url = "https://files.pythonhosted.org/packages/03/94/0a4b12f1d0e029ce1ccc1c800944a9984cbe7d678e470bb6d3c6bc38a0da/coverage-7.13.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:ee756f00726693e5ba94d6df2bdfd64d4852d23b09bb0bc700e3b30e6f333985", size = 250796, upload_time = "2026-02-09T12:57:10.142Z" }, - { url = "https://files.pythonhosted.org/packages/73/44/6002fbf88f6698ca034360ce474c406be6d5a985b3fdb3401128031eef6b/coverage-7.13.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fdfc1e28e7c7cdce44985b3043bc13bbd9c747520f94a4d7164af8260b3d91f0", size = 252673, upload_time = "2026-02-09T12:57:12.197Z" }, - { url = "https://files.pythonhosted.org/packages/de/c6/a0279f7c00e786be75a749a5674e6fa267bcbd8209cd10c9a450c655dfa7/coverage-7.13.4-cp312-cp312-win32.whl", hash = "sha256:01d4cbc3c283a17fc1e42d614a119f7f438eabb593391283adca8dc86eff1246", size = 221990, upload_time = "2026-02-09T12:57:14.085Z" }, - { url = "https://files.pythonhosted.org/packages/77/4e/c0a25a425fcf5557d9abd18419c95b63922e897bc86c1f327f155ef234a9/coverage-7.13.4-cp312-cp312-win_amd64.whl", hash = "sha256:9401ebc7ef522f01d01d45532c68c5ac40fb27113019b6b7d8b208f6e9baa126", size = 222800, upload_time = "2026-02-09T12:57:15.944Z" }, - { url = "https://files.pythonhosted.org/packages/47/ac/92da44ad9a6f4e3a7debd178949d6f3769bedca33830ce9b1dcdab589a37/coverage-7.13.4-cp312-cp312-win_arm64.whl", hash = "sha256:b1ec7b6b6e93255f952e27ab58fbc68dcc468844b16ecbee881aeb29b6ab4d8d", size = 221415, upload_time = "2026-02-09T12:57:17.497Z" }, - { url = "https://files.pythonhosted.org/packages/db/23/aad45061a31677d68e47499197a131eea55da4875d16c1f42021ab963503/coverage-7.13.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b66a2da594b6068b48b2692f043f35d4d3693fb639d5ea8b39533c2ad9ac3ab9", size = 219474, upload_time = "2026-02-09T12:57:19.332Z" }, - { url = "https://files.pythonhosted.org/packages/a5/70/9b8b67a0945f3dfec1fd896c5cefb7c19d5a3a6d74630b99a895170999ae/coverage-7.13.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3599eb3992d814d23b35c536c28df1a882caa950f8f507cef23d1cbf334995ac", size = 219844, upload_time = "2026-02-09T12:57:20.66Z" }, - { url = "https://files.pythonhosted.org/packages/97/fd/7e859f8fab324cef6c4ad7cff156ca7c489fef9179d5749b0c8d321281c2/coverage-7.13.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:93550784d9281e374fb5a12bf1324cc8a963fd63b2d2f223503ef0fd4aa339ea", size = 250832, upload_time = "2026-02-09T12:57:22.007Z" }, - { url = "https://files.pythonhosted.org/packages/e4/dc/b2442d10020c2f52617828862d8b6ee337859cd8f3a1f13d607dddda9cf7/coverage-7.13.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b720ce6a88a2755f7c697c23268ddc47a571b88052e6b155224347389fdf6a3b", size = 253434, upload_time = "2026-02-09T12:57:23.339Z" }, - { url = "https://files.pythonhosted.org/packages/5a/88/6728a7ad17428b18d836540630487231f5470fb82454871149502f5e5aa2/coverage-7.13.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7b322db1284a2ed3aa28ffd8ebe3db91c929b7a333c0820abec3d838ef5b3525", size = 254676, upload_time = "2026-02-09T12:57:24.774Z" }, - { url = "https://files.pythonhosted.org/packages/7c/bc/21244b1b8cedf0dff0a2b53b208015fe798d5f2a8d5348dbfece04224fff/coverage-7.13.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f4594c67d8a7c89cf922d9df0438c7c7bb022ad506eddb0fdb2863359ff78242", size = 256807, upload_time = "2026-02-09T12:57:26.125Z" }, - { url = "https://files.pythonhosted.org/packages/97/a0/ddba7ed3251cff51006737a727d84e05b61517d1784a9988a846ba508877/coverage-7.13.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:53d133df809c743eb8bce33b24bcababb371f4441340578cd406e084d94a6148", size = 251058, upload_time = "2026-02-09T12:57:27.614Z" }, - { url = "https://files.pythonhosted.org/packages/9b/55/e289addf7ff54d3a540526f33751951bf0878f3809b47f6dfb3def69c6f7/coverage-7.13.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:76451d1978b95ba6507a039090ba076105c87cc76fc3efd5d35d72093964d49a", size = 252805, upload_time = "2026-02-09T12:57:29.066Z" }, - { url = "https://files.pythonhosted.org/packages/13/4e/cc276b1fa4a59be56d96f1dabddbdc30f4ba22e3b1cd42504c37b3313255/coverage-7.13.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7f57b33491e281e962021de110b451ab8a24182589be17e12a22c79047935e23", size = 250766, upload_time = "2026-02-09T12:57:30.522Z" }, - { url = "https://files.pythonhosted.org/packages/94/44/1093b8f93018f8b41a8cf29636c9292502f05e4a113d4d107d14a3acd044/coverage-7.13.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1731dc33dc276dafc410a885cbf5992f1ff171393e48a21453b78727d090de80", size = 254923, upload_time = "2026-02-09T12:57:31.946Z" }, - { url = "https://files.pythonhosted.org/packages/8b/55/ea2796da2d42257f37dbea1aab239ba9263b31bd91d5527cdd6db5efe174/coverage-7.13.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:bd60d4fe2f6fa7dff9223ca1bbc9f05d2b6697bc5961072e5d3b952d46e1b1ea", size = 250591, upload_time = "2026-02-09T12:57:33.842Z" }, - { url = "https://files.pythonhosted.org/packages/d4/fa/7c4bb72aacf8af5020675aa633e59c1fbe296d22aed191b6a5b711eb2bc7/coverage-7.13.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9181a3ccead280b828fae232df12b16652702b49d41e99d657f46cc7b1f6ec7a", size = 252364, upload_time = "2026-02-09T12:57:35.743Z" }, - { url = "https://files.pythonhosted.org/packages/5c/38/a8d2ec0146479c20bbaa7181b5b455a0c41101eed57f10dd19a78ab44c80/coverage-7.13.4-cp313-cp313-win32.whl", hash = "sha256:f53d492307962561ac7de4cd1de3e363589b000ab69617c6156a16ba7237998d", size = 222010, upload_time = "2026-02-09T12:57:37.25Z" }, - { url = "https://files.pythonhosted.org/packages/e2/0c/dbfafbe90a185943dcfbc766fe0e1909f658811492d79b741523a414a6cc/coverage-7.13.4-cp313-cp313-win_amd64.whl", hash = "sha256:e6f70dec1cc557e52df5306d051ef56003f74d56e9c4dd7ddb07e07ef32a84dd", size = 222818, upload_time = "2026-02-09T12:57:38.734Z" }, - { url = "https://files.pythonhosted.org/packages/04/d1/934918a138c932c90d78301f45f677fb05c39a3112b96fd2c8e60503cdc7/coverage-7.13.4-cp313-cp313-win_arm64.whl", hash = "sha256:fb07dc5da7e849e2ad31a5d74e9bece81f30ecf5a42909d0a695f8bd1874d6af", size = 221438, upload_time = "2026-02-09T12:57:40.223Z" }, - { url = "https://files.pythonhosted.org/packages/52/57/ee93ced533bcb3e6df961c0c6e42da2fc6addae53fb95b94a89b1e33ebd7/coverage-7.13.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:40d74da8e6c4b9ac18b15331c4b5ebc35a17069410cad462ad4f40dcd2d50c0d", size = 220165, upload_time = "2026-02-09T12:57:41.639Z" }, - { url = "https://files.pythonhosted.org/packages/c5/e0/969fc285a6fbdda49d91af278488d904dcd7651b2693872f0ff94e40e84a/coverage-7.13.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4223b4230a376138939a9173f1bdd6521994f2aff8047fae100d6d94d50c5a12", size = 220516, upload_time = "2026-02-09T12:57:44.215Z" }, - { url = "https://files.pythonhosted.org/packages/b1/b8/9531944e16267e2735a30a9641ff49671f07e8138ecf1ca13db9fd2560c7/coverage-7.13.4-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1d4be36a5114c499f9f1f9195e95ebf979460dbe2d88e6816ea202010ba1c34b", size = 261804, upload_time = "2026-02-09T12:57:45.989Z" }, - { url = "https://files.pythonhosted.org/packages/8a/f3/e63df6d500314a2a60390d1989240d5f27318a7a68fa30ad3806e2a9323e/coverage-7.13.4-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:200dea7d1e8095cc6e98cdabe3fd1d21ab17d3cee6dab00cadbb2fe35d9c15b9", size = 263885, upload_time = "2026-02-09T12:57:47.42Z" }, - { url = "https://files.pythonhosted.org/packages/f3/67/7654810de580e14b37670b60a09c599fa348e48312db5b216d730857ffe6/coverage-7.13.4-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8eb931ee8e6d8243e253e5ed7336deea6904369d2fd8ae6e43f68abbf167092", size = 266308, upload_time = "2026-02-09T12:57:49.345Z" }, - { url = "https://files.pythonhosted.org/packages/37/6f/39d41eca0eab3cc82115953ad41c4e77935286c930e8fad15eaed1389d83/coverage-7.13.4-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:75eab1ebe4f2f64d9509b984f9314d4aa788540368218b858dad56dc8f3e5eb9", size = 267452, upload_time = "2026-02-09T12:57:50.811Z" }, - { url = "https://files.pythonhosted.org/packages/50/6d/39c0fbb8fc5cd4d2090811e553c2108cf5112e882f82505ee7495349a6bf/coverage-7.13.4-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c35eb28c1d085eb7d8c9b3296567a1bebe03ce72962e932431b9a61f28facf26", size = 261057, upload_time = "2026-02-09T12:57:52.447Z" }, - { url = "https://files.pythonhosted.org/packages/a4/a2/60010c669df5fa603bb5a97fb75407e191a846510da70ac657eb696b7fce/coverage-7.13.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:eb88b316ec33760714a4720feb2816a3a59180fd58c1985012054fa7aebee4c2", size = 263875, upload_time = "2026-02-09T12:57:53.938Z" }, - { url = "https://files.pythonhosted.org/packages/3e/d9/63b22a6bdbd17f1f96e9ed58604c2a6b0e72a9133e37d663bef185877cf6/coverage-7.13.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7d41eead3cc673cbd38a4417deb7fd0b4ca26954ff7dc6078e33f6ff97bed940", size = 261500, upload_time = "2026-02-09T12:57:56.012Z" }, - { url = "https://files.pythonhosted.org/packages/70/bf/69f86ba1ad85bc3ad240e4c0e57a2e620fbc0e1645a47b5c62f0e941ad7f/coverage-7.13.4-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:fb26a934946a6afe0e326aebe0730cdff393a8bc0bbb65a2f41e30feddca399c", size = 265212, upload_time = "2026-02-09T12:57:57.5Z" }, - { url = "https://files.pythonhosted.org/packages/ae/f2/5f65a278a8c2148731831574c73e42f57204243d33bedaaf18fa79c5958f/coverage-7.13.4-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:dae88bc0fc77edaa65c14be099bd57ee140cf507e6bfdeea7938457ab387efb0", size = 260398, upload_time = "2026-02-09T12:57:59.027Z" }, - { url = "https://files.pythonhosted.org/packages/ef/80/6e8280a350ee9fea92f14b8357448a242dcaa243cb2c72ab0ca591f66c8c/coverage-7.13.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:845f352911777a8e722bfce168958214951e07e47e5d5d9744109fa5fe77f79b", size = 262584, upload_time = "2026-02-09T12:58:01.129Z" }, - { url = "https://files.pythonhosted.org/packages/22/63/01ff182fc95f260b539590fb12c11ad3e21332c15f9799cb5e2386f71d9f/coverage-7.13.4-cp313-cp313t-win32.whl", hash = "sha256:2fa8d5f8de70688a28240de9e139fa16b153cc3cbb01c5f16d88d6505ebdadf9", size = 222688, upload_time = "2026-02-09T12:58:02.736Z" }, - { url = "https://files.pythonhosted.org/packages/a9/43/89de4ef5d3cd53b886afa114065f7e9d3707bdb3e5efae13535b46ae483d/coverage-7.13.4-cp313-cp313t-win_amd64.whl", hash = "sha256:9351229c8c8407645840edcc277f4a2d44814d1bc34a2128c11c2a031d45a5dd", size = 223746, upload_time = "2026-02-09T12:58:05.362Z" }, - { url = "https://files.pythonhosted.org/packages/35/39/7cf0aa9a10d470a5309b38b289b9bb07ddeac5d61af9b664fe9775a4cb3e/coverage-7.13.4-cp313-cp313t-win_arm64.whl", hash = "sha256:30b8d0512f2dc8c8747557e8fb459d6176a2c9e5731e2b74d311c03b78451997", size = 222003, upload_time = "2026-02-09T12:58:06.952Z" }, - { url = "https://files.pythonhosted.org/packages/0d/4a/331fe2caf6799d591109bb9c08083080f6de90a823695d412a935622abb2/coverage-7.13.4-py3-none-any.whl", hash = "sha256:1af1641e57cf7ba1bd67d677c9abdbcd6cc2ab7da3bca7fa1e2b7e50e65f2ad0", size = 211242, upload_time = "2026-02-09T12:59:02.032Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/24/56/95b7e30fa389756cb56630faa728da46a27b8c6eb46f9d557c68fff12b65/coverage-7.13.4.tar.gz", hash = "sha256:e5c8f6ed1e61a8b2dcdf31eb0b9bbf0130750ca79c1c49eb898e2ad86f5ccc91", size = 827239, upload-time = "2026-02-09T12:59:03.86Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/d4/7827d9ffa34d5d4d752eec907022aa417120936282fc488306f5da08c292/coverage-7.13.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fc31c787a84f8cd6027eba44010517020e0d18487064cd3d8968941856d1415", size = 219152, upload-time = "2026-02-09T12:56:11.974Z" }, + { url = "https://files.pythonhosted.org/packages/35/b0/d69df26607c64043292644dbb9dc54b0856fabaa2cbb1eeee3331cc9e280/coverage-7.13.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a32ebc02a1805adf637fc8dec324b5cdacd2e493515424f70ee33799573d661b", size = 219667, upload-time = "2026-02-09T12:56:13.33Z" }, + { url = "https://files.pythonhosted.org/packages/82/a4/c1523f7c9e47b2271dbf8c2a097e7a1f89ef0d66f5840bb59b7e8814157b/coverage-7.13.4-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e24f9156097ff9dc286f2f913df3a7f63c0e333dcafa3c196f2c18b4175ca09a", size = 246425, upload-time = "2026-02-09T12:56:14.552Z" }, + { url = "https://files.pythonhosted.org/packages/f8/02/aa7ec01d1a5023c4b680ab7257f9bfde9defe8fdddfe40be096ac19e8177/coverage-7.13.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8041b6c5bfdc03257666e9881d33b1abc88daccaf73f7b6340fb7946655cd10f", size = 248229, upload-time = "2026-02-09T12:56:16.31Z" }, + { url = "https://files.pythonhosted.org/packages/35/98/85aba0aed5126d896162087ef3f0e789a225697245256fc6181b95f47207/coverage-7.13.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2a09cfa6a5862bc2fc6ca7c3def5b2926194a56b8ab78ffcf617d28911123012", size = 250106, upload-time = "2026-02-09T12:56:18.024Z" }, + { url = "https://files.pythonhosted.org/packages/96/72/1db59bd67494bc162e3e4cd5fbc7edba2c7026b22f7c8ef1496d58c2b94c/coverage-7.13.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:296f8b0af861d3970c2a4d8c91d48eb4dd4771bcef9baedec6a9b515d7de3def", size = 252021, upload-time = "2026-02-09T12:56:19.272Z" }, + { url = "https://files.pythonhosted.org/packages/9d/97/72899c59c7066961de6e3daa142d459d47d104956db43e057e034f015c8a/coverage-7.13.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e101609bcbbfb04605ea1027b10dc3735c094d12d40826a60f897b98b1c30256", size = 247114, upload-time = "2026-02-09T12:56:21.051Z" }, + { url = "https://files.pythonhosted.org/packages/39/1f/f1885573b5970235e908da4389176936c8933e86cb316b9620aab1585fa2/coverage-7.13.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aa3feb8db2e87ff5e6d00d7e1480ae241876286691265657b500886c98f38bda", size = 248143, upload-time = "2026-02-09T12:56:22.585Z" }, + { url = "https://files.pythonhosted.org/packages/a8/cf/e80390c5b7480b722fa3e994f8202807799b85bc562aa4f1dde209fbb7be/coverage-7.13.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4fc7fa81bbaf5a02801b65346c8b3e657f1d93763e58c0abdf7c992addd81a92", size = 246152, upload-time = "2026-02-09T12:56:23.748Z" }, + { url = "https://files.pythonhosted.org/packages/44/bf/f89a8350d85572f95412debb0fb9bb4795b1d5b5232bd652923c759e787b/coverage-7.13.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:33901f604424145c6e9c2398684b92e176c0b12df77d52db81c20abd48c3794c", size = 249959, upload-time = "2026-02-09T12:56:25.209Z" }, + { url = "https://files.pythonhosted.org/packages/f7/6e/612a02aece8178c818df273e8d1642190c4875402ca2ba74514394b27aba/coverage-7.13.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:bb28c0f2cf2782508a40cec377935829d5fcc3ad9a3681375af4e84eb34b6b58", size = 246416, upload-time = "2026-02-09T12:56:26.475Z" }, + { url = "https://files.pythonhosted.org/packages/cb/98/b5afc39af67c2fa6786b03c3a7091fc300947387ce8914b096db8a73d67a/coverage-7.13.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9d107aff57a83222ddbd8d9ee705ede2af2cc926608b57abed8ef96b50b7e8f9", size = 247025, upload-time = "2026-02-09T12:56:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/51/30/2bba8ef0682d5bd210c38fe497e12a06c9f8d663f7025e9f5c2c31ce847d/coverage-7.13.4-cp310-cp310-win32.whl", hash = "sha256:a6f94a7d00eb18f1b6d403c91a88fd58cfc92d4b16080dfdb774afc8294469bf", size = 221758, upload-time = "2026-02-09T12:56:29.051Z" }, + { url = "https://files.pythonhosted.org/packages/78/13/331f94934cf6c092b8ea59ff868eb587bc8fe0893f02c55bc6c0183a192e/coverage-7.13.4-cp310-cp310-win_amd64.whl", hash = "sha256:2cb0f1e000ebc419632bbe04366a8990b6e32c4e0b51543a6484ffe15eaeda95", size = 222693, upload-time = "2026-02-09T12:56:30.366Z" }, + { url = "https://files.pythonhosted.org/packages/b4/ad/b59e5b451cf7172b8d1043dc0fa718f23aab379bc1521ee13d4bd9bfa960/coverage-7.13.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d490ba50c3f35dd7c17953c68f3270e7ccd1c6642e2d2afe2d8e720b98f5a053", size = 219278, upload-time = "2026-02-09T12:56:31.673Z" }, + { url = "https://files.pythonhosted.org/packages/f1/17/0cb7ca3de72e5f4ef2ec2fa0089beafbcaaaead1844e8b8a63d35173d77d/coverage-7.13.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:19bc3c88078789f8ef36acb014d7241961dbf883fd2533d18cb1e7a5b4e28b11", size = 219783, upload-time = "2026-02-09T12:56:33.104Z" }, + { url = "https://files.pythonhosted.org/packages/ab/63/325d8e5b11e0eaf6d0f6a44fad444ae58820929a9b0de943fa377fe73e85/coverage-7.13.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3998e5a32e62fdf410c0dbd3115df86297995d6e3429af80b8798aad894ca7aa", size = 250200, upload-time = "2026-02-09T12:56:34.474Z" }, + { url = "https://files.pythonhosted.org/packages/76/53/c16972708cbb79f2942922571a687c52bd109a7bd51175aeb7558dff2236/coverage-7.13.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8e264226ec98e01a8e1054314af91ee6cde0eacac4f465cc93b03dbe0bce2fd7", size = 252114, upload-time = "2026-02-09T12:56:35.749Z" }, + { url = "https://files.pythonhosted.org/packages/eb/c2/7ab36d8b8cc412bec9ea2d07c83c48930eb4ba649634ba00cb7e4e0f9017/coverage-7.13.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a3aa4e7b9e416774b21797365b358a6e827ffadaaca81b69ee02946852449f00", size = 254220, upload-time = "2026-02-09T12:56:37.796Z" }, + { url = "https://files.pythonhosted.org/packages/d6/4d/cf52c9a3322c89a0e6febdfbc83bb45c0ed3c64ad14081b9503adee702e7/coverage-7.13.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:71ca20079dd8f27fcf808817e281e90220475cd75115162218d0e27549f95fef", size = 256164, upload-time = "2026-02-09T12:56:39.016Z" }, + { url = "https://files.pythonhosted.org/packages/78/e9/eb1dd17bd6de8289df3580e967e78294f352a5df8a57ff4671ee5fc3dcd0/coverage-7.13.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e2f25215f1a359ab17320b47bcdaca3e6e6356652e8256f2441e4ef972052903", size = 250325, upload-time = "2026-02-09T12:56:40.668Z" }, + { url = "https://files.pythonhosted.org/packages/71/07/8c1542aa873728f72267c07278c5cc0ec91356daf974df21335ccdb46368/coverage-7.13.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d65b2d373032411e86960604dc4edac91fdfb5dca539461cf2cbe78327d1e64f", size = 251913, upload-time = "2026-02-09T12:56:41.97Z" }, + { url = "https://files.pythonhosted.org/packages/74/d7/c62e2c5e4483a748e27868e4c32ad3daa9bdddbba58e1bc7a15e252baa74/coverage-7.13.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94eb63f9b363180aff17de3e7c8760c3ba94664ea2695c52f10111244d16a299", size = 249974, upload-time = "2026-02-09T12:56:43.323Z" }, + { url = "https://files.pythonhosted.org/packages/98/9f/4c5c015a6e98ced54efd0f5cf8d31b88e5504ecb6857585fc0161bb1e600/coverage-7.13.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e856bf6616714c3a9fbc270ab54103f4e685ba236fa98c054e8f87f266c93505", size = 253741, upload-time = "2026-02-09T12:56:45.155Z" }, + { url = "https://files.pythonhosted.org/packages/bd/59/0f4eef89b9f0fcd9633b5d350016f54126ab49426a70ff4c4e87446cabdc/coverage-7.13.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:65dfcbe305c3dfe658492df2d85259e0d79ead4177f9ae724b6fb245198f55d6", size = 249695, upload-time = "2026-02-09T12:56:46.636Z" }, + { url = "https://files.pythonhosted.org/packages/b5/2c/b7476f938deb07166f3eb281a385c262675d688ff4659ad56c6c6b8e2e70/coverage-7.13.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b507778ae8a4c915436ed5c2e05b4a6cecfa70f734e19c22a005152a11c7b6a9", size = 250599, upload-time = "2026-02-09T12:56:48.13Z" }, + { url = "https://files.pythonhosted.org/packages/b8/34/c3420709d9846ee3785b9f2831b4d94f276f38884032dca1457fa83f7476/coverage-7.13.4-cp311-cp311-win32.whl", hash = "sha256:784fc3cf8be001197b652d51d3fd259b1e2262888693a4636e18879f613a62a9", size = 221780, upload-time = "2026-02-09T12:56:50.479Z" }, + { url = "https://files.pythonhosted.org/packages/61/08/3d9c8613079d2b11c185b865de9a4c1a68850cfda2b357fae365cf609f29/coverage-7.13.4-cp311-cp311-win_amd64.whl", hash = "sha256:2421d591f8ca05b308cf0092807308b2facbefe54af7c02ac22548b88b95c98f", size = 222715, upload-time = "2026-02-09T12:56:51.815Z" }, + { url = "https://files.pythonhosted.org/packages/18/1a/54c3c80b2f056164cc0a6cdcb040733760c7c4be9d780fe655f356f433e4/coverage-7.13.4-cp311-cp311-win_arm64.whl", hash = "sha256:79e73a76b854d9c6088fe5d8b2ebe745f8681c55f7397c3c0a016192d681045f", size = 221385, upload-time = "2026-02-09T12:56:53.194Z" }, + { url = "https://files.pythonhosted.org/packages/d1/81/4ce2fdd909c5a0ed1f6dedb88aa57ab79b6d1fbd9b588c1ac7ef45659566/coverage-7.13.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:02231499b08dabbe2b96612993e5fc34217cdae907a51b906ac7fca8027a4459", size = 219449, upload-time = "2026-02-09T12:56:54.889Z" }, + { url = "https://files.pythonhosted.org/packages/5d/96/5238b1efc5922ddbdc9b0db9243152c09777804fb7c02ad1741eb18a11c0/coverage-7.13.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40aa8808140e55dc022b15d8aa7f651b6b3d68b365ea0398f1441e0b04d859c3", size = 219810, upload-time = "2026-02-09T12:56:56.33Z" }, + { url = "https://files.pythonhosted.org/packages/78/72/2f372b726d433c9c35e56377cf1d513b4c16fe51841060d826b95caacec1/coverage-7.13.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5b856a8ccf749480024ff3bd7310adaef57bf31fd17e1bfc404b7940b6986634", size = 251308, upload-time = "2026-02-09T12:56:57.858Z" }, + { url = "https://files.pythonhosted.org/packages/5d/a0/2ea570925524ef4e00bb6c82649f5682a77fac5ab910a65c9284de422600/coverage-7.13.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2c048ea43875fbf8b45d476ad79f179809c590ec7b79e2035c662e7afa3192e3", size = 254052, upload-time = "2026-02-09T12:56:59.754Z" }, + { url = "https://files.pythonhosted.org/packages/e8/ac/45dc2e19a1939098d783c846e130b8f862fbb50d09e0af663988f2f21973/coverage-7.13.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b7b38448866e83176e28086674fe7368ab8590e4610fb662b44e345b86d63ffa", size = 255165, upload-time = "2026-02-09T12:57:01.287Z" }, + { url = "https://files.pythonhosted.org/packages/2d/4d/26d236ff35abc3b5e63540d3386e4c3b192168c1d96da5cb2f43c640970f/coverage-7.13.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:de6defc1c9badbf8b9e67ae90fd00519186d6ab64e5cc5f3d21359c2a9b2c1d3", size = 257432, upload-time = "2026-02-09T12:57:02.637Z" }, + { url = "https://files.pythonhosted.org/packages/ec/55/14a966c757d1348b2e19caf699415a2a4c4f7feaa4bbc6326a51f5c7dd1b/coverage-7.13.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7eda778067ad7ffccd23ecffce537dface96212576a07924cbf0d8799d2ded5a", size = 251716, upload-time = "2026-02-09T12:57:04.056Z" }, + { url = "https://files.pythonhosted.org/packages/77/33/50116647905837c66d28b2af1321b845d5f5d19be9655cb84d4a0ea806b4/coverage-7.13.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e87f6c587c3f34356c3759f0420693e35e7eb0e2e41e4c011cb6ec6ecbbf1db7", size = 253089, upload-time = "2026-02-09T12:57:05.503Z" }, + { url = "https://files.pythonhosted.org/packages/c2/b4/8efb11a46e3665d92635a56e4f2d4529de6d33f2cb38afd47d779d15fc99/coverage-7.13.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8248977c2e33aecb2ced42fef99f2d319e9904a36e55a8a68b69207fb7e43edc", size = 251232, upload-time = "2026-02-09T12:57:06.879Z" }, + { url = "https://files.pythonhosted.org/packages/51/24/8cd73dd399b812cc76bb0ac260e671c4163093441847ffe058ac9fda1e32/coverage-7.13.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:25381386e80ae727608e662474db537d4df1ecd42379b5ba33c84633a2b36d47", size = 255299, upload-time = "2026-02-09T12:57:08.245Z" }, + { url = "https://files.pythonhosted.org/packages/03/94/0a4b12f1d0e029ce1ccc1c800944a9984cbe7d678e470bb6d3c6bc38a0da/coverage-7.13.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:ee756f00726693e5ba94d6df2bdfd64d4852d23b09bb0bc700e3b30e6f333985", size = 250796, upload-time = "2026-02-09T12:57:10.142Z" }, + { url = "https://files.pythonhosted.org/packages/73/44/6002fbf88f6698ca034360ce474c406be6d5a985b3fdb3401128031eef6b/coverage-7.13.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fdfc1e28e7c7cdce44985b3043bc13bbd9c747520f94a4d7164af8260b3d91f0", size = 252673, upload-time = "2026-02-09T12:57:12.197Z" }, + { url = "https://files.pythonhosted.org/packages/de/c6/a0279f7c00e786be75a749a5674e6fa267bcbd8209cd10c9a450c655dfa7/coverage-7.13.4-cp312-cp312-win32.whl", hash = "sha256:01d4cbc3c283a17fc1e42d614a119f7f438eabb593391283adca8dc86eff1246", size = 221990, upload-time = "2026-02-09T12:57:14.085Z" }, + { url = "https://files.pythonhosted.org/packages/77/4e/c0a25a425fcf5557d9abd18419c95b63922e897bc86c1f327f155ef234a9/coverage-7.13.4-cp312-cp312-win_amd64.whl", hash = "sha256:9401ebc7ef522f01d01d45532c68c5ac40fb27113019b6b7d8b208f6e9baa126", size = 222800, upload-time = "2026-02-09T12:57:15.944Z" }, + { url = "https://files.pythonhosted.org/packages/47/ac/92da44ad9a6f4e3a7debd178949d6f3769bedca33830ce9b1dcdab589a37/coverage-7.13.4-cp312-cp312-win_arm64.whl", hash = "sha256:b1ec7b6b6e93255f952e27ab58fbc68dcc468844b16ecbee881aeb29b6ab4d8d", size = 221415, upload-time = "2026-02-09T12:57:17.497Z" }, + { url = "https://files.pythonhosted.org/packages/db/23/aad45061a31677d68e47499197a131eea55da4875d16c1f42021ab963503/coverage-7.13.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b66a2da594b6068b48b2692f043f35d4d3693fb639d5ea8b39533c2ad9ac3ab9", size = 219474, upload-time = "2026-02-09T12:57:19.332Z" }, + { url = "https://files.pythonhosted.org/packages/a5/70/9b8b67a0945f3dfec1fd896c5cefb7c19d5a3a6d74630b99a895170999ae/coverage-7.13.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3599eb3992d814d23b35c536c28df1a882caa950f8f507cef23d1cbf334995ac", size = 219844, upload-time = "2026-02-09T12:57:20.66Z" }, + { url = "https://files.pythonhosted.org/packages/97/fd/7e859f8fab324cef6c4ad7cff156ca7c489fef9179d5749b0c8d321281c2/coverage-7.13.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:93550784d9281e374fb5a12bf1324cc8a963fd63b2d2f223503ef0fd4aa339ea", size = 250832, upload-time = "2026-02-09T12:57:22.007Z" }, + { url = "https://files.pythonhosted.org/packages/e4/dc/b2442d10020c2f52617828862d8b6ee337859cd8f3a1f13d607dddda9cf7/coverage-7.13.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b720ce6a88a2755f7c697c23268ddc47a571b88052e6b155224347389fdf6a3b", size = 253434, upload-time = "2026-02-09T12:57:23.339Z" }, + { url = "https://files.pythonhosted.org/packages/5a/88/6728a7ad17428b18d836540630487231f5470fb82454871149502f5e5aa2/coverage-7.13.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7b322db1284a2ed3aa28ffd8ebe3db91c929b7a333c0820abec3d838ef5b3525", size = 254676, upload-time = "2026-02-09T12:57:24.774Z" }, + { url = "https://files.pythonhosted.org/packages/7c/bc/21244b1b8cedf0dff0a2b53b208015fe798d5f2a8d5348dbfece04224fff/coverage-7.13.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f4594c67d8a7c89cf922d9df0438c7c7bb022ad506eddb0fdb2863359ff78242", size = 256807, upload-time = "2026-02-09T12:57:26.125Z" }, + { url = "https://files.pythonhosted.org/packages/97/a0/ddba7ed3251cff51006737a727d84e05b61517d1784a9988a846ba508877/coverage-7.13.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:53d133df809c743eb8bce33b24bcababb371f4441340578cd406e084d94a6148", size = 251058, upload-time = "2026-02-09T12:57:27.614Z" }, + { url = "https://files.pythonhosted.org/packages/9b/55/e289addf7ff54d3a540526f33751951bf0878f3809b47f6dfb3def69c6f7/coverage-7.13.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:76451d1978b95ba6507a039090ba076105c87cc76fc3efd5d35d72093964d49a", size = 252805, upload-time = "2026-02-09T12:57:29.066Z" }, + { url = "https://files.pythonhosted.org/packages/13/4e/cc276b1fa4a59be56d96f1dabddbdc30f4ba22e3b1cd42504c37b3313255/coverage-7.13.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7f57b33491e281e962021de110b451ab8a24182589be17e12a22c79047935e23", size = 250766, upload-time = "2026-02-09T12:57:30.522Z" }, + { url = "https://files.pythonhosted.org/packages/94/44/1093b8f93018f8b41a8cf29636c9292502f05e4a113d4d107d14a3acd044/coverage-7.13.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1731dc33dc276dafc410a885cbf5992f1ff171393e48a21453b78727d090de80", size = 254923, upload-time = "2026-02-09T12:57:31.946Z" }, + { url = "https://files.pythonhosted.org/packages/8b/55/ea2796da2d42257f37dbea1aab239ba9263b31bd91d5527cdd6db5efe174/coverage-7.13.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:bd60d4fe2f6fa7dff9223ca1bbc9f05d2b6697bc5961072e5d3b952d46e1b1ea", size = 250591, upload-time = "2026-02-09T12:57:33.842Z" }, + { url = "https://files.pythonhosted.org/packages/d4/fa/7c4bb72aacf8af5020675aa633e59c1fbe296d22aed191b6a5b711eb2bc7/coverage-7.13.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9181a3ccead280b828fae232df12b16652702b49d41e99d657f46cc7b1f6ec7a", size = 252364, upload-time = "2026-02-09T12:57:35.743Z" }, + { url = "https://files.pythonhosted.org/packages/5c/38/a8d2ec0146479c20bbaa7181b5b455a0c41101eed57f10dd19a78ab44c80/coverage-7.13.4-cp313-cp313-win32.whl", hash = "sha256:f53d492307962561ac7de4cd1de3e363589b000ab69617c6156a16ba7237998d", size = 222010, upload-time = "2026-02-09T12:57:37.25Z" }, + { url = "https://files.pythonhosted.org/packages/e2/0c/dbfafbe90a185943dcfbc766fe0e1909f658811492d79b741523a414a6cc/coverage-7.13.4-cp313-cp313-win_amd64.whl", hash = "sha256:e6f70dec1cc557e52df5306d051ef56003f74d56e9c4dd7ddb07e07ef32a84dd", size = 222818, upload-time = "2026-02-09T12:57:38.734Z" }, + { url = "https://files.pythonhosted.org/packages/04/d1/934918a138c932c90d78301f45f677fb05c39a3112b96fd2c8e60503cdc7/coverage-7.13.4-cp313-cp313-win_arm64.whl", hash = "sha256:fb07dc5da7e849e2ad31a5d74e9bece81f30ecf5a42909d0a695f8bd1874d6af", size = 221438, upload-time = "2026-02-09T12:57:40.223Z" }, + { url = "https://files.pythonhosted.org/packages/52/57/ee93ced533bcb3e6df961c0c6e42da2fc6addae53fb95b94a89b1e33ebd7/coverage-7.13.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:40d74da8e6c4b9ac18b15331c4b5ebc35a17069410cad462ad4f40dcd2d50c0d", size = 220165, upload-time = "2026-02-09T12:57:41.639Z" }, + { url = "https://files.pythonhosted.org/packages/c5/e0/969fc285a6fbdda49d91af278488d904dcd7651b2693872f0ff94e40e84a/coverage-7.13.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4223b4230a376138939a9173f1bdd6521994f2aff8047fae100d6d94d50c5a12", size = 220516, upload-time = "2026-02-09T12:57:44.215Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b8/9531944e16267e2735a30a9641ff49671f07e8138ecf1ca13db9fd2560c7/coverage-7.13.4-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1d4be36a5114c499f9f1f9195e95ebf979460dbe2d88e6816ea202010ba1c34b", size = 261804, upload-time = "2026-02-09T12:57:45.989Z" }, + { url = "https://files.pythonhosted.org/packages/8a/f3/e63df6d500314a2a60390d1989240d5f27318a7a68fa30ad3806e2a9323e/coverage-7.13.4-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:200dea7d1e8095cc6e98cdabe3fd1d21ab17d3cee6dab00cadbb2fe35d9c15b9", size = 263885, upload-time = "2026-02-09T12:57:47.42Z" }, + { url = "https://files.pythonhosted.org/packages/f3/67/7654810de580e14b37670b60a09c599fa348e48312db5b216d730857ffe6/coverage-7.13.4-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8eb931ee8e6d8243e253e5ed7336deea6904369d2fd8ae6e43f68abbf167092", size = 266308, upload-time = "2026-02-09T12:57:49.345Z" }, + { url = "https://files.pythonhosted.org/packages/37/6f/39d41eca0eab3cc82115953ad41c4e77935286c930e8fad15eaed1389d83/coverage-7.13.4-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:75eab1ebe4f2f64d9509b984f9314d4aa788540368218b858dad56dc8f3e5eb9", size = 267452, upload-time = "2026-02-09T12:57:50.811Z" }, + { url = "https://files.pythonhosted.org/packages/50/6d/39c0fbb8fc5cd4d2090811e553c2108cf5112e882f82505ee7495349a6bf/coverage-7.13.4-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c35eb28c1d085eb7d8c9b3296567a1bebe03ce72962e932431b9a61f28facf26", size = 261057, upload-time = "2026-02-09T12:57:52.447Z" }, + { url = "https://files.pythonhosted.org/packages/a4/a2/60010c669df5fa603bb5a97fb75407e191a846510da70ac657eb696b7fce/coverage-7.13.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:eb88b316ec33760714a4720feb2816a3a59180fd58c1985012054fa7aebee4c2", size = 263875, upload-time = "2026-02-09T12:57:53.938Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d9/63b22a6bdbd17f1f96e9ed58604c2a6b0e72a9133e37d663bef185877cf6/coverage-7.13.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7d41eead3cc673cbd38a4417deb7fd0b4ca26954ff7dc6078e33f6ff97bed940", size = 261500, upload-time = "2026-02-09T12:57:56.012Z" }, + { url = "https://files.pythonhosted.org/packages/70/bf/69f86ba1ad85bc3ad240e4c0e57a2e620fbc0e1645a47b5c62f0e941ad7f/coverage-7.13.4-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:fb26a934946a6afe0e326aebe0730cdff393a8bc0bbb65a2f41e30feddca399c", size = 265212, upload-time = "2026-02-09T12:57:57.5Z" }, + { url = "https://files.pythonhosted.org/packages/ae/f2/5f65a278a8c2148731831574c73e42f57204243d33bedaaf18fa79c5958f/coverage-7.13.4-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:dae88bc0fc77edaa65c14be099bd57ee140cf507e6bfdeea7938457ab387efb0", size = 260398, upload-time = "2026-02-09T12:57:59.027Z" }, + { url = "https://files.pythonhosted.org/packages/ef/80/6e8280a350ee9fea92f14b8357448a242dcaa243cb2c72ab0ca591f66c8c/coverage-7.13.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:845f352911777a8e722bfce168958214951e07e47e5d5d9744109fa5fe77f79b", size = 262584, upload-time = "2026-02-09T12:58:01.129Z" }, + { url = "https://files.pythonhosted.org/packages/22/63/01ff182fc95f260b539590fb12c11ad3e21332c15f9799cb5e2386f71d9f/coverage-7.13.4-cp313-cp313t-win32.whl", hash = "sha256:2fa8d5f8de70688a28240de9e139fa16b153cc3cbb01c5f16d88d6505ebdadf9", size = 222688, upload-time = "2026-02-09T12:58:02.736Z" }, + { url = "https://files.pythonhosted.org/packages/a9/43/89de4ef5d3cd53b886afa114065f7e9d3707bdb3e5efae13535b46ae483d/coverage-7.13.4-cp313-cp313t-win_amd64.whl", hash = "sha256:9351229c8c8407645840edcc277f4a2d44814d1bc34a2128c11c2a031d45a5dd", size = 223746, upload-time = "2026-02-09T12:58:05.362Z" }, + { url = "https://files.pythonhosted.org/packages/35/39/7cf0aa9a10d470a5309b38b289b9bb07ddeac5d61af9b664fe9775a4cb3e/coverage-7.13.4-cp313-cp313t-win_arm64.whl", hash = "sha256:30b8d0512f2dc8c8747557e8fb459d6176a2c9e5731e2b74d311c03b78451997", size = 222003, upload-time = "2026-02-09T12:58:06.952Z" }, + { url = "https://files.pythonhosted.org/packages/0d/4a/331fe2caf6799d591109bb9c08083080f6de90a823695d412a935622abb2/coverage-7.13.4-py3-none-any.whl", hash = "sha256:1af1641e57cf7ba1bd67d677c9abdbcd6cc2ab7da3bca7fa1e2b7e50e65f2ad0", size = 211242, upload-time = "2026-02-09T12:59:02.032Z" }, ] [[package]] @@ -723,51 +725,51 @@ dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/60/04/ee2a9e8542e4fa2773b81771ff8349ff19cdd56b7258a0cc442639052edb/cryptography-46.0.5.tar.gz", hash = "sha256:abace499247268e3757271b2f1e244b36b06f8515cf27c4d49468fc9eb16e93d", size = 750064, upload_time = "2026-02-10T19:18:38.255Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/81/b0bb27f2ba931a65409c6b8a8b358a7f03c0e46eceacddff55f7c84b1f3b/cryptography-46.0.5-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:351695ada9ea9618b3500b490ad54c739860883df6c1f555e088eaf25b1bbaad", size = 7176289, upload_time = "2026-02-10T19:17:08.274Z" }, - { url = "https://files.pythonhosted.org/packages/ff/9e/6b4397a3e3d15123de3b1806ef342522393d50736c13b20ec4c9ea6693a6/cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b", size = 4275637, upload_time = "2026-02-10T19:17:10.53Z" }, - { url = "https://files.pythonhosted.org/packages/63/e7/471ab61099a3920b0c77852ea3f0ea611c9702f651600397ac567848b897/cryptography-46.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d7e3d356b8cd4ea5aff04f129d5f66ebdc7b6f8eae802b93739ed520c47c79b", size = 4424742, upload_time = "2026-02-10T19:17:12.388Z" }, - { url = "https://files.pythonhosted.org/packages/37/53/a18500f270342d66bf7e4d9f091114e31e5ee9e7375a5aba2e85a91e0044/cryptography-46.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:50bfb6925eff619c9c023b967d5b77a54e04256c4281b0e21336a130cd7fc263", size = 4277528, upload_time = "2026-02-10T19:17:13.853Z" }, - { url = "https://files.pythonhosted.org/packages/22/29/c2e812ebc38c57b40e7c583895e73c8c5adb4d1e4a0cc4c5a4fdab2b1acc/cryptography-46.0.5-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:803812e111e75d1aa73690d2facc295eaefd4439be1023fefc4995eaea2af90d", size = 4947993, upload_time = "2026-02-10T19:17:15.618Z" }, - { url = "https://files.pythonhosted.org/packages/6b/e7/237155ae19a9023de7e30ec64e5d99a9431a567407ac21170a046d22a5a3/cryptography-46.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ee190460e2fbe447175cda91b88b84ae8322a104fc27766ad09428754a618ed", size = 4456855, upload_time = "2026-02-10T19:17:17.221Z" }, - { url = "https://files.pythonhosted.org/packages/2d/87/fc628a7ad85b81206738abbd213b07702bcbdada1dd43f72236ef3cffbb5/cryptography-46.0.5-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:f145bba11b878005c496e93e257c1e88f154d278d2638e6450d17e0f31e558d2", size = 3984635, upload_time = "2026-02-10T19:17:18.792Z" }, - { url = "https://files.pythonhosted.org/packages/84/29/65b55622bde135aedf4565dc509d99b560ee4095e56989e815f8fd2aa910/cryptography-46.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e9251e3be159d1020c4030bd2e5f84d6a43fe54b6c19c12f51cde9542a2817b2", size = 4277038, upload_time = "2026-02-10T19:17:20.256Z" }, - { url = "https://files.pythonhosted.org/packages/bc/36/45e76c68d7311432741faf1fbf7fac8a196a0a735ca21f504c75d37e2558/cryptography-46.0.5-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:47fb8a66058b80e509c47118ef8a75d14c455e81ac369050f20ba0d23e77fee0", size = 4912181, upload_time = "2026-02-10T19:17:21.825Z" }, - { url = "https://files.pythonhosted.org/packages/6d/1a/c1ba8fead184d6e3d5afcf03d569acac5ad063f3ac9fb7258af158f7e378/cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:4c3341037c136030cb46e4b1e17b7418ea4cbd9dd207e4a6f3b2b24e0d4ac731", size = 4456482, upload_time = "2026-02-10T19:17:25.133Z" }, - { url = "https://files.pythonhosted.org/packages/f9/e5/3fb22e37f66827ced3b902cf895e6a6bc1d095b5b26be26bd13c441fdf19/cryptography-46.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:890bcb4abd5a2d3f852196437129eb3667d62630333aacc13dfd470fad3aaa82", size = 4405497, upload_time = "2026-02-10T19:17:26.66Z" }, - { url = "https://files.pythonhosted.org/packages/1a/df/9d58bb32b1121a8a2f27383fabae4d63080c7ca60b9b5c88be742be04ee7/cryptography-46.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:80a8d7bfdf38f87ca30a5391c0c9ce4ed2926918e017c29ddf643d0ed2778ea1", size = 4667819, upload_time = "2026-02-10T19:17:28.569Z" }, - { url = "https://files.pythonhosted.org/packages/ea/ed/325d2a490c5e94038cdb0117da9397ece1f11201f425c4e9c57fe5b9f08b/cryptography-46.0.5-cp311-abi3-win32.whl", hash = "sha256:60ee7e19e95104d4c03871d7d7dfb3d22ef8a9b9c6778c94e1c8fcc8365afd48", size = 3028230, upload_time = "2026-02-10T19:17:30.518Z" }, - { url = "https://files.pythonhosted.org/packages/e9/5a/ac0f49e48063ab4255d9e3b79f5def51697fce1a95ea1370f03dc9db76f6/cryptography-46.0.5-cp311-abi3-win_amd64.whl", hash = "sha256:38946c54b16c885c72c4f59846be9743d699eee2b69b6988e0a00a01f46a61a4", size = 3480909, upload_time = "2026-02-10T19:17:32.083Z" }, - { url = "https://files.pythonhosted.org/packages/e2/fa/a66aa722105ad6a458bebd64086ca2b72cdd361fed31763d20390f6f1389/cryptography-46.0.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:4108d4c09fbbf2789d0c926eb4152ae1760d5a2d97612b92d508d96c861e4d31", size = 7170514, upload_time = "2026-02-10T19:17:56.267Z" }, - { url = "https://files.pythonhosted.org/packages/0f/04/c85bdeab78c8bc77b701bf0d9bdcf514c044e18a46dcff330df5448631b0/cryptography-46.0.5-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1f30a86d2757199cb2d56e48cce14deddf1f9c95f1ef1b64ee91ea43fe2e18", size = 4275349, upload_time = "2026-02-10T19:17:58.419Z" }, - { url = "https://files.pythonhosted.org/packages/5c/32/9b87132a2f91ee7f5223b091dc963055503e9b442c98fc0b8a5ca765fab0/cryptography-46.0.5-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:039917b0dc418bb9f6edce8a906572d69e74bd330b0b3fea4f79dab7f8ddd235", size = 4420667, upload_time = "2026-02-10T19:18:00.619Z" }, - { url = "https://files.pythonhosted.org/packages/a1/a6/a7cb7010bec4b7c5692ca6f024150371b295ee1c108bdc1c400e4c44562b/cryptography-46.0.5-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ba2a27ff02f48193fc4daeadf8ad2590516fa3d0adeeb34336b96f7fa64c1e3a", size = 4276980, upload_time = "2026-02-10T19:18:02.379Z" }, - { url = "https://files.pythonhosted.org/packages/8e/7c/c4f45e0eeff9b91e3f12dbd0e165fcf2a38847288fcfd889deea99fb7b6d/cryptography-46.0.5-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:61aa400dce22cb001a98014f647dc21cda08f7915ceb95df0c9eaf84b4b6af76", size = 4939143, upload_time = "2026-02-10T19:18:03.964Z" }, - { url = "https://files.pythonhosted.org/packages/37/19/e1b8f964a834eddb44fa1b9a9976f4e414cbb7aa62809b6760c8803d22d1/cryptography-46.0.5-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ce58ba46e1bc2aac4f7d9290223cead56743fa6ab94a5d53292ffaac6a91614", size = 4453674, upload_time = "2026-02-10T19:18:05.588Z" }, - { url = "https://files.pythonhosted.org/packages/db/ed/db15d3956f65264ca204625597c410d420e26530c4e2943e05a0d2f24d51/cryptography-46.0.5-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:420d0e909050490d04359e7fdb5ed7e667ca5c3c402b809ae2563d7e66a92229", size = 3978801, upload_time = "2026-02-10T19:18:07.167Z" }, - { url = "https://files.pythonhosted.org/packages/41/e2/df40a31d82df0a70a0daf69791f91dbb70e47644c58581d654879b382d11/cryptography-46.0.5-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:582f5fcd2afa31622f317f80426a027f30dc792e9c80ffee87b993200ea115f1", size = 4276755, upload_time = "2026-02-10T19:18:09.813Z" }, - { url = "https://files.pythonhosted.org/packages/33/45/726809d1176959f4a896b86907b98ff4391a8aa29c0aaaf9450a8a10630e/cryptography-46.0.5-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:bfd56bb4b37ed4f330b82402f6f435845a5f5648edf1ad497da51a8452d5d62d", size = 4901539, upload_time = "2026-02-10T19:18:11.263Z" }, - { url = "https://files.pythonhosted.org/packages/99/0f/a3076874e9c88ecb2ecc31382f6e7c21b428ede6f55aafa1aa272613e3cd/cryptography-46.0.5-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a3d507bb6a513ca96ba84443226af944b0f7f47dcc9a399d110cd6146481d24c", size = 4452794, upload_time = "2026-02-10T19:18:12.914Z" }, - { url = "https://files.pythonhosted.org/packages/02/ef/ffeb542d3683d24194a38f66ca17c0a4b8bf10631feef44a7ef64e631b1a/cryptography-46.0.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9f16fbdf4da055efb21c22d81b89f155f02ba420558db21288b3d0035bafd5f4", size = 4404160, upload_time = "2026-02-10T19:18:14.375Z" }, - { url = "https://files.pythonhosted.org/packages/96/93/682d2b43c1d5f1406ed048f377c0fc9fc8f7b0447a478d5c65ab3d3a66eb/cryptography-46.0.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ced80795227d70549a411a4ab66e8ce307899fad2220ce5ab2f296e687eacde9", size = 4667123, upload_time = "2026-02-10T19:18:15.886Z" }, - { url = "https://files.pythonhosted.org/packages/45/2d/9c5f2926cb5300a8eefc3f4f0b3f3df39db7f7ce40c8365444c49363cbda/cryptography-46.0.5-cp38-abi3-win32.whl", hash = "sha256:02f547fce831f5096c9a567fd41bc12ca8f11df260959ecc7c3202555cc47a72", size = 3010220, upload_time = "2026-02-10T19:18:17.361Z" }, - { url = "https://files.pythonhosted.org/packages/48/ef/0c2f4a8e31018a986949d34a01115dd057bf536905dca38897bacd21fac3/cryptography-46.0.5-cp38-abi3-win_amd64.whl", hash = "sha256:556e106ee01aa13484ce9b0239bca667be5004efb0aabbed28d353df86445595", size = 3467050, upload_time = "2026-02-10T19:18:18.899Z" }, - { url = "https://files.pythonhosted.org/packages/eb/dd/2d9fdb07cebdf3d51179730afb7d5e576153c6744c3ff8fded23030c204e/cryptography-46.0.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:3b4995dc971c9fb83c25aa44cf45f02ba86f71ee600d81091c2f0cbae116b06c", size = 3476964, upload_time = "2026-02-10T19:18:20.687Z" }, - { url = "https://files.pythonhosted.org/packages/e9/6f/6cc6cc9955caa6eaf83660b0da2b077c7fe8ff9950a3c5e45d605038d439/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bc84e875994c3b445871ea7181d424588171efec3e185dced958dad9e001950a", size = 4218321, upload_time = "2026-02-10T19:18:22.349Z" }, - { url = "https://files.pythonhosted.org/packages/3e/5d/c4da701939eeee699566a6c1367427ab91a8b7088cc2328c09dbee940415/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:2ae6971afd6246710480e3f15824ed3029a60fc16991db250034efd0b9fb4356", size = 4381786, upload_time = "2026-02-10T19:18:24.529Z" }, - { url = "https://files.pythonhosted.org/packages/ac/97/a538654732974a94ff96c1db621fa464f455c02d4bb7d2652f4edc21d600/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d861ee9e76ace6cf36a6a89b959ec08e7bc2493ee39d07ffe5acb23ef46d27da", size = 4217990, upload_time = "2026-02-10T19:18:25.957Z" }, - { url = "https://files.pythonhosted.org/packages/ae/11/7e500d2dd3ba891197b9efd2da5454b74336d64a7cc419aa7327ab74e5f6/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:2b7a67c9cd56372f3249b39699f2ad479f6991e62ea15800973b956f4b73e257", size = 4381252, upload_time = "2026-02-10T19:18:27.496Z" }, - { url = "https://files.pythonhosted.org/packages/bc/58/6b3d24e6b9bc474a2dcdee65dfd1f008867015408a271562e4b690561a4d/cryptography-46.0.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8456928655f856c6e1533ff59d5be76578a7157224dbd9ce6872f25055ab9ab7", size = 3407605, upload_time = "2026-02-10T19:18:29.233Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/60/04/ee2a9e8542e4fa2773b81771ff8349ff19cdd56b7258a0cc442639052edb/cryptography-46.0.5.tar.gz", hash = "sha256:abace499247268e3757271b2f1e244b36b06f8515cf27c4d49468fc9eb16e93d", size = 750064, upload-time = "2026-02-10T19:18:38.255Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/81/b0bb27f2ba931a65409c6b8a8b358a7f03c0e46eceacddff55f7c84b1f3b/cryptography-46.0.5-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:351695ada9ea9618b3500b490ad54c739860883df6c1f555e088eaf25b1bbaad", size = 7176289, upload-time = "2026-02-10T19:17:08.274Z" }, + { url = "https://files.pythonhosted.org/packages/ff/9e/6b4397a3e3d15123de3b1806ef342522393d50736c13b20ec4c9ea6693a6/cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b", size = 4275637, upload-time = "2026-02-10T19:17:10.53Z" }, + { url = "https://files.pythonhosted.org/packages/63/e7/471ab61099a3920b0c77852ea3f0ea611c9702f651600397ac567848b897/cryptography-46.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d7e3d356b8cd4ea5aff04f129d5f66ebdc7b6f8eae802b93739ed520c47c79b", size = 4424742, upload-time = "2026-02-10T19:17:12.388Z" }, + { url = "https://files.pythonhosted.org/packages/37/53/a18500f270342d66bf7e4d9f091114e31e5ee9e7375a5aba2e85a91e0044/cryptography-46.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:50bfb6925eff619c9c023b967d5b77a54e04256c4281b0e21336a130cd7fc263", size = 4277528, upload-time = "2026-02-10T19:17:13.853Z" }, + { url = "https://files.pythonhosted.org/packages/22/29/c2e812ebc38c57b40e7c583895e73c8c5adb4d1e4a0cc4c5a4fdab2b1acc/cryptography-46.0.5-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:803812e111e75d1aa73690d2facc295eaefd4439be1023fefc4995eaea2af90d", size = 4947993, upload-time = "2026-02-10T19:17:15.618Z" }, + { url = "https://files.pythonhosted.org/packages/6b/e7/237155ae19a9023de7e30ec64e5d99a9431a567407ac21170a046d22a5a3/cryptography-46.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ee190460e2fbe447175cda91b88b84ae8322a104fc27766ad09428754a618ed", size = 4456855, upload-time = "2026-02-10T19:17:17.221Z" }, + { url = "https://files.pythonhosted.org/packages/2d/87/fc628a7ad85b81206738abbd213b07702bcbdada1dd43f72236ef3cffbb5/cryptography-46.0.5-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:f145bba11b878005c496e93e257c1e88f154d278d2638e6450d17e0f31e558d2", size = 3984635, upload-time = "2026-02-10T19:17:18.792Z" }, + { url = "https://files.pythonhosted.org/packages/84/29/65b55622bde135aedf4565dc509d99b560ee4095e56989e815f8fd2aa910/cryptography-46.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e9251e3be159d1020c4030bd2e5f84d6a43fe54b6c19c12f51cde9542a2817b2", size = 4277038, upload-time = "2026-02-10T19:17:20.256Z" }, + { url = "https://files.pythonhosted.org/packages/bc/36/45e76c68d7311432741faf1fbf7fac8a196a0a735ca21f504c75d37e2558/cryptography-46.0.5-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:47fb8a66058b80e509c47118ef8a75d14c455e81ac369050f20ba0d23e77fee0", size = 4912181, upload-time = "2026-02-10T19:17:21.825Z" }, + { url = "https://files.pythonhosted.org/packages/6d/1a/c1ba8fead184d6e3d5afcf03d569acac5ad063f3ac9fb7258af158f7e378/cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:4c3341037c136030cb46e4b1e17b7418ea4cbd9dd207e4a6f3b2b24e0d4ac731", size = 4456482, upload-time = "2026-02-10T19:17:25.133Z" }, + { url = "https://files.pythonhosted.org/packages/f9/e5/3fb22e37f66827ced3b902cf895e6a6bc1d095b5b26be26bd13c441fdf19/cryptography-46.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:890bcb4abd5a2d3f852196437129eb3667d62630333aacc13dfd470fad3aaa82", size = 4405497, upload-time = "2026-02-10T19:17:26.66Z" }, + { url = "https://files.pythonhosted.org/packages/1a/df/9d58bb32b1121a8a2f27383fabae4d63080c7ca60b9b5c88be742be04ee7/cryptography-46.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:80a8d7bfdf38f87ca30a5391c0c9ce4ed2926918e017c29ddf643d0ed2778ea1", size = 4667819, upload-time = "2026-02-10T19:17:28.569Z" }, + { url = "https://files.pythonhosted.org/packages/ea/ed/325d2a490c5e94038cdb0117da9397ece1f11201f425c4e9c57fe5b9f08b/cryptography-46.0.5-cp311-abi3-win32.whl", hash = "sha256:60ee7e19e95104d4c03871d7d7dfb3d22ef8a9b9c6778c94e1c8fcc8365afd48", size = 3028230, upload-time = "2026-02-10T19:17:30.518Z" }, + { url = "https://files.pythonhosted.org/packages/e9/5a/ac0f49e48063ab4255d9e3b79f5def51697fce1a95ea1370f03dc9db76f6/cryptography-46.0.5-cp311-abi3-win_amd64.whl", hash = "sha256:38946c54b16c885c72c4f59846be9743d699eee2b69b6988e0a00a01f46a61a4", size = 3480909, upload-time = "2026-02-10T19:17:32.083Z" }, + { url = "https://files.pythonhosted.org/packages/e2/fa/a66aa722105ad6a458bebd64086ca2b72cdd361fed31763d20390f6f1389/cryptography-46.0.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:4108d4c09fbbf2789d0c926eb4152ae1760d5a2d97612b92d508d96c861e4d31", size = 7170514, upload-time = "2026-02-10T19:17:56.267Z" }, + { url = "https://files.pythonhosted.org/packages/0f/04/c85bdeab78c8bc77b701bf0d9bdcf514c044e18a46dcff330df5448631b0/cryptography-46.0.5-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1f30a86d2757199cb2d56e48cce14deddf1f9c95f1ef1b64ee91ea43fe2e18", size = 4275349, upload-time = "2026-02-10T19:17:58.419Z" }, + { url = "https://files.pythonhosted.org/packages/5c/32/9b87132a2f91ee7f5223b091dc963055503e9b442c98fc0b8a5ca765fab0/cryptography-46.0.5-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:039917b0dc418bb9f6edce8a906572d69e74bd330b0b3fea4f79dab7f8ddd235", size = 4420667, upload-time = "2026-02-10T19:18:00.619Z" }, + { url = "https://files.pythonhosted.org/packages/a1/a6/a7cb7010bec4b7c5692ca6f024150371b295ee1c108bdc1c400e4c44562b/cryptography-46.0.5-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ba2a27ff02f48193fc4daeadf8ad2590516fa3d0adeeb34336b96f7fa64c1e3a", size = 4276980, upload-time = "2026-02-10T19:18:02.379Z" }, + { url = "https://files.pythonhosted.org/packages/8e/7c/c4f45e0eeff9b91e3f12dbd0e165fcf2a38847288fcfd889deea99fb7b6d/cryptography-46.0.5-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:61aa400dce22cb001a98014f647dc21cda08f7915ceb95df0c9eaf84b4b6af76", size = 4939143, upload-time = "2026-02-10T19:18:03.964Z" }, + { url = "https://files.pythonhosted.org/packages/37/19/e1b8f964a834eddb44fa1b9a9976f4e414cbb7aa62809b6760c8803d22d1/cryptography-46.0.5-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ce58ba46e1bc2aac4f7d9290223cead56743fa6ab94a5d53292ffaac6a91614", size = 4453674, upload-time = "2026-02-10T19:18:05.588Z" }, + { url = "https://files.pythonhosted.org/packages/db/ed/db15d3956f65264ca204625597c410d420e26530c4e2943e05a0d2f24d51/cryptography-46.0.5-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:420d0e909050490d04359e7fdb5ed7e667ca5c3c402b809ae2563d7e66a92229", size = 3978801, upload-time = "2026-02-10T19:18:07.167Z" }, + { url = "https://files.pythonhosted.org/packages/41/e2/df40a31d82df0a70a0daf69791f91dbb70e47644c58581d654879b382d11/cryptography-46.0.5-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:582f5fcd2afa31622f317f80426a027f30dc792e9c80ffee87b993200ea115f1", size = 4276755, upload-time = "2026-02-10T19:18:09.813Z" }, + { url = "https://files.pythonhosted.org/packages/33/45/726809d1176959f4a896b86907b98ff4391a8aa29c0aaaf9450a8a10630e/cryptography-46.0.5-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:bfd56bb4b37ed4f330b82402f6f435845a5f5648edf1ad497da51a8452d5d62d", size = 4901539, upload-time = "2026-02-10T19:18:11.263Z" }, + { url = "https://files.pythonhosted.org/packages/99/0f/a3076874e9c88ecb2ecc31382f6e7c21b428ede6f55aafa1aa272613e3cd/cryptography-46.0.5-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a3d507bb6a513ca96ba84443226af944b0f7f47dcc9a399d110cd6146481d24c", size = 4452794, upload-time = "2026-02-10T19:18:12.914Z" }, + { url = "https://files.pythonhosted.org/packages/02/ef/ffeb542d3683d24194a38f66ca17c0a4b8bf10631feef44a7ef64e631b1a/cryptography-46.0.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9f16fbdf4da055efb21c22d81b89f155f02ba420558db21288b3d0035bafd5f4", size = 4404160, upload-time = "2026-02-10T19:18:14.375Z" }, + { url = "https://files.pythonhosted.org/packages/96/93/682d2b43c1d5f1406ed048f377c0fc9fc8f7b0447a478d5c65ab3d3a66eb/cryptography-46.0.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ced80795227d70549a411a4ab66e8ce307899fad2220ce5ab2f296e687eacde9", size = 4667123, upload-time = "2026-02-10T19:18:15.886Z" }, + { url = "https://files.pythonhosted.org/packages/45/2d/9c5f2926cb5300a8eefc3f4f0b3f3df39db7f7ce40c8365444c49363cbda/cryptography-46.0.5-cp38-abi3-win32.whl", hash = "sha256:02f547fce831f5096c9a567fd41bc12ca8f11df260959ecc7c3202555cc47a72", size = 3010220, upload-time = "2026-02-10T19:18:17.361Z" }, + { url = "https://files.pythonhosted.org/packages/48/ef/0c2f4a8e31018a986949d34a01115dd057bf536905dca38897bacd21fac3/cryptography-46.0.5-cp38-abi3-win_amd64.whl", hash = "sha256:556e106ee01aa13484ce9b0239bca667be5004efb0aabbed28d353df86445595", size = 3467050, upload-time = "2026-02-10T19:18:18.899Z" }, + { url = "https://files.pythonhosted.org/packages/eb/dd/2d9fdb07cebdf3d51179730afb7d5e576153c6744c3ff8fded23030c204e/cryptography-46.0.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:3b4995dc971c9fb83c25aa44cf45f02ba86f71ee600d81091c2f0cbae116b06c", size = 3476964, upload-time = "2026-02-10T19:18:20.687Z" }, + { url = "https://files.pythonhosted.org/packages/e9/6f/6cc6cc9955caa6eaf83660b0da2b077c7fe8ff9950a3c5e45d605038d439/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bc84e875994c3b445871ea7181d424588171efec3e185dced958dad9e001950a", size = 4218321, upload-time = "2026-02-10T19:18:22.349Z" }, + { url = "https://files.pythonhosted.org/packages/3e/5d/c4da701939eeee699566a6c1367427ab91a8b7088cc2328c09dbee940415/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:2ae6971afd6246710480e3f15824ed3029a60fc16991db250034efd0b9fb4356", size = 4381786, upload-time = "2026-02-10T19:18:24.529Z" }, + { url = "https://files.pythonhosted.org/packages/ac/97/a538654732974a94ff96c1db621fa464f455c02d4bb7d2652f4edc21d600/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d861ee9e76ace6cf36a6a89b959ec08e7bc2493ee39d07ffe5acb23ef46d27da", size = 4217990, upload-time = "2026-02-10T19:18:25.957Z" }, + { url = "https://files.pythonhosted.org/packages/ae/11/7e500d2dd3ba891197b9efd2da5454b74336d64a7cc419aa7327ab74e5f6/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:2b7a67c9cd56372f3249b39699f2ad479f6991e62ea15800973b956f4b73e257", size = 4381252, upload-time = "2026-02-10T19:18:27.496Z" }, + { url = "https://files.pythonhosted.org/packages/bc/58/6b3d24e6b9bc474a2dcdee65dfd1f008867015408a271562e4b690561a4d/cryptography-46.0.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8456928655f856c6e1533ff59d5be76578a7157224dbd9ce6872f25055ab9ab7", size = 3407605, upload-time = "2026-02-10T19:18:29.233Z" }, ] [[package]] name = "cssselect" version = "1.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/2e/cdfd8b01c37cbf4f9482eefd455853a3cf9c995029a46acd31dfaa9c1dd6/cssselect-1.4.0.tar.gz", hash = "sha256:fdaf0a1425e17dfe8c5cf66191d211b357cf7872ae8afc4c6762ddd8ac47fc92", size = 40589, upload_time = "2026-01-29T07:00:26.701Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/2e/cdfd8b01c37cbf4f9482eefd455853a3cf9c995029a46acd31dfaa9c1dd6/cssselect-1.4.0.tar.gz", hash = "sha256:fdaf0a1425e17dfe8c5cf66191d211b357cf7872ae8afc4c6762ddd8ac47fc92", size = 40589, upload-time = "2026-01-29T07:00:26.701Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/0c/7bb51e3acfafd16c48875bf3db03607674df16f5b6ef8d056586af7e2b8b/cssselect-1.4.0-py3-none-any.whl", hash = "sha256:c0ec5c0191c8ee39fcc8afc1540331d8b55b0183478c50e9c8a79d44dbceb1d8", size = 18540, upload_time = "2026-01-29T07:00:24.994Z" }, + { url = "https://files.pythonhosted.org/packages/20/0c/7bb51e3acfafd16c48875bf3db03607674df16f5b6ef8d056586af7e2b8b/cssselect-1.4.0-py3-none-any.whl", hash = "sha256:c0ec5c0191c8ee39fcc8afc1540331d8b55b0183478c50e9c8a79d44dbceb1d8", size = 18540, upload-time = "2026-01-29T07:00:24.994Z" }, ] [[package]] @@ -777,102 +779,102 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "more-itertools" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/33/9f/329d26121fe165be44b1dfff21aa0dc348f04633931f1d20ed6cf448a236/cssutils-2.11.1.tar.gz", hash = "sha256:0563a76513b6af6eebbe788c3bf3d01c920e46b3f90c8416738c5cfc773ff8e2", size = 711657, upload_time = "2024-06-04T15:51:39.373Z" } +sdist = { url = "https://files.pythonhosted.org/packages/33/9f/329d26121fe165be44b1dfff21aa0dc348f04633931f1d20ed6cf448a236/cssutils-2.11.1.tar.gz", hash = "sha256:0563a76513b6af6eebbe788c3bf3d01c920e46b3f90c8416738c5cfc773ff8e2", size = 711657, upload-time = "2024-06-04T15:51:39.373Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/ec/bb273b7208c606890dc36540fe667d06ce840a6f62f9fae7e658fcdc90fb/cssutils-2.11.1-py3-none-any.whl", hash = "sha256:a67bfdfdff4f3867fab43698ec4897c1a828eca5973f4073321b3bccaf1199b1", size = 385747, upload_time = "2024-06-04T15:51:37.499Z" }, + { url = "https://files.pythonhosted.org/packages/a7/ec/bb273b7208c606890dc36540fe667d06ce840a6f62f9fae7e658fcdc90fb/cssutils-2.11.1-py3-none-any.whl", hash = "sha256:a67bfdfdff4f3867fab43698ec4897c1a828eca5973f4073321b3bccaf1199b1", size = 385747, upload-time = "2024-06-04T15:51:37.499Z" }, ] [[package]] name = "cymem" version = "2.0.13" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/2f0fbb32535c3731b7c2974c569fb9325e0a38ed5565a08e1139a3b71e82/cymem-2.0.13.tar.gz", hash = "sha256:1c91a92ae8c7104275ac26bd4d29b08ccd3e7faff5893d3858cb6fadf1bc1588", size = 12320, upload_time = "2025-11-14T14:58:36.902Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/14/462018dd384ee1848ac9c1951534a813a325abbfc161a74e2cbcb38d2469/cymem-2.0.13-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8efc4f308169237aade0e82877a65a563833dec32eb7ab2326120253e0e9e918", size = 43747, upload_time = "2025-11-14T14:57:11.287Z" }, - { url = "https://files.pythonhosted.org/packages/4b/9b/c123ba65dddcd8a2bc0b3c9046766c15abe0e257c315b3040eed22cce1e2/cymem-2.0.13-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e03bb575a96c59bc210d7d59862747f0012696b0dac3427ce8af33c7afb3d4a2", size = 43328, upload_time = "2025-11-14T14:57:12.578Z" }, - { url = "https://files.pythonhosted.org/packages/bd/be/7b7a4cf9cd2d37e674612a86fc90b3d59bff12177f83430e62b25afaf7fc/cymem-2.0.13-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1775d3fd34cf099929b79c3e48469283642463f977af6801231f3c0e5d9c9369", size = 231539, upload_time = "2025-11-14T14:57:14.441Z" }, - { url = "https://files.pythonhosted.org/packages/79/6d/d165c38cd4caaaf60942e2cec9998b667008f2384047ccfe0b4b5f7a1ffe/cymem-2.0.13-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:84e2976e38cd663f758e40b5497fa5cd183d7c5fb0d04ce81a4b42a1ba124ff0", size = 229674, upload_time = "2025-11-14T14:57:15.685Z" }, - { url = "https://files.pythonhosted.org/packages/95/c1/af83c03a93f890ca81149561b18a4a67a9aa36a1109f15e291dd2703ab12/cymem-2.0.13-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed9de1b9b042f76fe5c312e4359eab58bf52ac7dfdf6887368a760410d809440", size = 229805, upload_time = "2025-11-14T14:57:17.289Z" }, - { url = "https://files.pythonhosted.org/packages/03/2d/12900758b80345d9aed5892a9d61e8a5f6abbbe5837e4def373a53cd0da2/cymem-2.0.13-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1366c7437a209230f4b797fae10227a8206d4021d37c9f9c0d31fd97ea4feb35", size = 234018, upload_time = "2025-11-14T14:57:18.512Z" }, - { url = "https://files.pythonhosted.org/packages/a6/8b/5fcf5430fc81098aef58cc20340e51f37b49b9d8c15766e0d5d63e7288a3/cymem-2.0.13-cp310-cp310-win_amd64.whl", hash = "sha256:7700b116524b087e0169f10f267539223b48240ef2734c3a727a9e6b4db9a671", size = 40102, upload_time = "2025-11-14T14:57:19.972Z" }, - { url = "https://files.pythonhosted.org/packages/0d/d3/cb6c83758fe399443b858faafb7096b72535621a7af7dd9a54ff0989fa14/cymem-2.0.13-cp310-cp310-win_arm64.whl", hash = "sha256:c8dbfddfe5c604974e17c6f373cedd4d25cd67f84812ede7dea12128fa0c2015", size = 36282, upload_time = "2025-11-14T14:57:21.398Z" }, - { url = "https://files.pythonhosted.org/packages/10/64/1db41f7576a6b69f70367e3c15e968fd775ba7419e12059c9966ceb826f8/cymem-2.0.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:673183466b0ff2e060d97ec5116711d44200b8f7be524323e080d215ee2d44a5", size = 43587, upload_time = "2025-11-14T14:57:22.39Z" }, - { url = "https://files.pythonhosted.org/packages/81/13/57f936fc08551323aab3f92ff6b7f4d4b89d5b4e495c870a67cb8d279757/cymem-2.0.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bee2791b3f6fc034ce41268851462bf662ff87e8947e35fb6dd0115b4644a61f", size = 43139, upload_time = "2025-11-14T14:57:23.363Z" }, - { url = "https://files.pythonhosted.org/packages/32/a6/9345754be51e0479aa387b7b6cffc289d0fd3201aaeb8dade4623abd1e02/cymem-2.0.13-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f3aee3adf16272bca81c5826eed55ba3c938add6d8c9e273f01c6b829ecfde22", size = 245063, upload_time = "2025-11-14T14:57:24.839Z" }, - { url = "https://files.pythonhosted.org/packages/d6/01/6bc654101526fa86e82bf6b05d99b2cd47c30a333cfe8622c26c0592beb2/cymem-2.0.13-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:30c4e75a3a1d809e89106b0b21803eb78e839881aa1f5b9bd27b454bc73afde3", size = 244496, upload_time = "2025-11-14T14:57:26.42Z" }, - { url = "https://files.pythonhosted.org/packages/c4/fb/853b7b021e701a1f41687f3704d5f469aeb2a4f898c3fbb8076806885955/cymem-2.0.13-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec99efa03cf8ec11c8906aa4d4cc0c47df393bc9095c9dd64b89b9b43e220b04", size = 243287, upload_time = "2025-11-14T14:57:27.542Z" }, - { url = "https://files.pythonhosted.org/packages/d4/2b/0e4664cafc581de2896d75000651fd2ce7094d33263f466185c28ffc96e4/cymem-2.0.13-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c90a6ecba994a15b17a3f45d7ec74d34081df2f73bd1b090e2adc0317e4e01b6", size = 248287, upload_time = "2025-11-14T14:57:29.055Z" }, - { url = "https://files.pythonhosted.org/packages/21/0f/f94c6950edbfc2aafb81194fc40b6cacc8e994e9359d3cb4328c5705b9b5/cymem-2.0.13-cp311-cp311-win_amd64.whl", hash = "sha256:ce821e6ba59148ed17c4567113b8683a6a0be9c9ac86f14e969919121efb61a5", size = 40116, upload_time = "2025-11-14T14:57:30.592Z" }, - { url = "https://files.pythonhosted.org/packages/00/df/2455eff6ac0381ff165db6883b311f7016e222e3dd62185517f8e8187ed0/cymem-2.0.13-cp311-cp311-win_arm64.whl", hash = "sha256:0dca715e708e545fd1d97693542378a00394b20a37779c1ae2c8bdbb43acef79", size = 36349, upload_time = "2025-11-14T14:57:31.573Z" }, - { url = "https://files.pythonhosted.org/packages/c9/52/478a2911ab5028cb710b4900d64aceba6f4f882fcb13fd8d40a456a1b6dc/cymem-2.0.13-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e8afbc5162a0fe14b6463e1c4e45248a1b2fe2cbcecc8a5b9e511117080da0eb", size = 43745, upload_time = "2025-11-14T14:57:32.52Z" }, - { url = "https://files.pythonhosted.org/packages/f9/71/f0f8adee945524774b16af326bd314a14a478ed369a728a22834e6785a18/cymem-2.0.13-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9251d889348fe79a75e9b3e4d1b5fa651fca8a64500820685d73a3acc21b6a8", size = 42927, upload_time = "2025-11-14T14:57:33.827Z" }, - { url = "https://files.pythonhosted.org/packages/62/6d/159780fe162ff715d62b809246e5fc20901cef87ca28b67d255a8d741861/cymem-2.0.13-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:742fc19764467a49ed22e56a4d2134c262d73a6c635409584ae3bf9afa092c33", size = 258346, upload_time = "2025-11-14T14:57:34.917Z" }, - { url = "https://files.pythonhosted.org/packages/eb/12/678d16f7aa1996f947bf17b8cfb917ea9c9674ef5e2bd3690c04123d5680/cymem-2.0.13-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f190a92fe46197ee64d32560eb121c2809bb843341733227f51538ce77b3410d", size = 260843, upload_time = "2025-11-14T14:57:36.503Z" }, - { url = "https://files.pythonhosted.org/packages/31/5d/0dd8c167c08cd85e70d274b7235cfe1e31b3cebc99221178eaf4bbb95c6f/cymem-2.0.13-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d670329ee8dbbbf241b7c08069fe3f1d3a1a3e2d69c7d05ea008a7010d826298", size = 254607, upload_time = "2025-11-14T14:57:38.036Z" }, - { url = "https://files.pythonhosted.org/packages/b7/c9/d6514a412a1160aa65db539836b3d47f9b59f6675f294ec34ae32f867c82/cymem-2.0.13-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a84ba3178d9128b9ffb52ce81ebab456e9fe959125b51109f5b73ebdfc6b60d6", size = 262421, upload_time = "2025-11-14T14:57:39.265Z" }, - { url = "https://files.pythonhosted.org/packages/dd/fe/3ee37d02ca4040f2fb22d34eb415198f955862b5dd47eee01df4c8f5454c/cymem-2.0.13-cp312-cp312-win_amd64.whl", hash = "sha256:2ff1c41fd59b789579fdace78aa587c5fc091991fa59458c382b116fc36e30dc", size = 40176, upload_time = "2025-11-14T14:57:40.706Z" }, - { url = "https://files.pythonhosted.org/packages/94/fb/1b681635bfd5f2274d0caa8f934b58435db6c091b97f5593738065ddb786/cymem-2.0.13-cp312-cp312-win_arm64.whl", hash = "sha256:6bbd701338df7bf408648191dff52472a9b334f71bcd31a21a41d83821050f67", size = 35959, upload_time = "2025-11-14T14:57:41.682Z" }, - { url = "https://files.pythonhosted.org/packages/ce/0f/95a4d1e3bebfdfa7829252369357cf9a764f67569328cd9221f21e2c952e/cymem-2.0.13-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:891fd9030293a8b652dc7fb9fdc79a910a6c76fc679cd775e6741b819ffea476", size = 43478, upload_time = "2025-11-14T14:57:42.682Z" }, - { url = "https://files.pythonhosted.org/packages/bf/a0/8fc929cc29ae466b7b4efc23ece99cbd3ea34992ccff319089c624d667fd/cymem-2.0.13-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:89c4889bd16513ce1644ccfe1e7c473ba7ca150f0621e66feac3a571bde09e7e", size = 42695, upload_time = "2025-11-14T14:57:43.741Z" }, - { url = "https://files.pythonhosted.org/packages/4a/b3/deeb01354ebaf384438083ffe0310209ef903db3e7ba5a8f584b06d28387/cymem-2.0.13-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:45dcaba0f48bef9cc3d8b0b92058640244a95a9f12542210b51318da97c2cf28", size = 250573, upload_time = "2025-11-14T14:57:44.81Z" }, - { url = "https://files.pythonhosted.org/packages/36/36/bc980b9a14409f3356309c45a8d88d58797d02002a9d794dd6c84e809d3a/cymem-2.0.13-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e96848faaafccc0abd631f1c5fb194eac0caee4f5a8777fdbb3e349d3a21741c", size = 254572, upload_time = "2025-11-14T14:57:46.023Z" }, - { url = "https://files.pythonhosted.org/packages/fd/dd/a12522952624685bd0f8968e26d2ed6d059c967413ce6eb52292f538f1b0/cymem-2.0.13-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e02d3e2c3bfeb21185d5a4a70790d9df40629a87d8d7617dc22b4e864f665fa3", size = 248060, upload_time = "2025-11-14T14:57:47.605Z" }, - { url = "https://files.pythonhosted.org/packages/08/11/5dc933ddfeb2dfea747a0b935cb965b9a7580b324d96fc5f5a1b5ff8df29/cymem-2.0.13-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fece5229fd5ecdcd7a0738affb8c59890e13073ae5626544e13825f26c019d3c", size = 254601, upload_time = "2025-11-14T14:57:48.861Z" }, - { url = "https://files.pythonhosted.org/packages/70/66/d23b06166864fa94e13a98e5922986ce774832936473578febce64448d75/cymem-2.0.13-cp313-cp313-win_amd64.whl", hash = "sha256:38aefeb269597c1a0c2ddf1567dd8605489b661fa0369c6406c1acd433b4c7ba", size = 40103, upload_time = "2025-11-14T14:57:50.396Z" }, - { url = "https://files.pythonhosted.org/packages/2f/9e/c7b21271ab88a21760f3afdec84d2bc09ffa9e6c8d774ad9d4f1afab0416/cymem-2.0.13-cp313-cp313-win_arm64.whl", hash = "sha256:717270dcfd8c8096b479c42708b151002ff98e434a7b6f1f916387a6c791e2ad", size = 36016, upload_time = "2025-11-14T14:57:51.611Z" }, - { url = "https://files.pythonhosted.org/packages/7f/28/d3b03427edc04ae04910edf1c24b993881c3ba93a9729a42bcbb816a1808/cymem-2.0.13-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7e1a863a7f144ffb345397813701509cfc74fc9ed360a4d92799805b4b865dd1", size = 46429, upload_time = "2025-11-14T14:57:52.582Z" }, - { url = "https://files.pythonhosted.org/packages/35/a9/7ed53e481f47ebfb922b0b42e980cec83e98ccb2137dc597ea156642440c/cymem-2.0.13-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c16cb80efc017b054f78998c6b4b013cef509c7b3d802707ce1f85a1d68361bf", size = 46205, upload_time = "2025-11-14T14:57:53.64Z" }, - { url = "https://files.pythonhosted.org/packages/61/39/a3d6ad073cf7f0fbbb8bbf09698c3c8fac11be3f791d710239a4e8dd3438/cymem-2.0.13-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0d78a27c88b26c89bd1ece247d1d5939dba05a1dae6305aad8fd8056b17ddb51", size = 296083, upload_time = "2025-11-14T14:57:55.922Z" }, - { url = "https://files.pythonhosted.org/packages/36/0c/20697c8bc19f624a595833e566f37d7bcb9167b0ce69de896eba7cfc9c2d/cymem-2.0.13-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6d36710760f817194dacb09d9fc45cb6a5062ed75e85f0ef7ad7aeeb13d80cc3", size = 286159, upload_time = "2025-11-14T14:57:57.106Z" }, - { url = "https://files.pythonhosted.org/packages/82/d4/9326e3422d1c2d2b4a8fb859bdcce80138f6ab721ddafa4cba328a505c71/cymem-2.0.13-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c8f30971cadd5dcf73bcfbbc5849b1f1e1f40db8cd846c4aa7d3b5e035c7b583", size = 288186, upload_time = "2025-11-14T14:57:58.334Z" }, - { url = "https://files.pythonhosted.org/packages/ed/bc/68da7dd749b72884dc22e898562f335002d70306069d496376e5ff3b6153/cymem-2.0.13-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:9d441d0e45798ec1fd330373bf7ffa6b795f229275f64016b6a193e6e2a51522", size = 290353, upload_time = "2025-11-14T14:58:00.562Z" }, - { url = "https://files.pythonhosted.org/packages/50/23/dbf2ad6ecd19b99b3aab6203b1a06608bbd04a09c522d836b854f2f30f73/cymem-2.0.13-cp313-cp313t-win_amd64.whl", hash = "sha256:d1c950eebb9f0f15e3ef3591313482a5a611d16fc12d545e2018cd607f40f472", size = 44764, upload_time = "2025-11-14T14:58:01.793Z" }, - { url = "https://files.pythonhosted.org/packages/54/3f/35701c13e1fc7b0895198c8b20068c569a841e0daf8e0b14d1dc0816b28f/cymem-2.0.13-cp313-cp313t-win_arm64.whl", hash = "sha256:042e8611ef862c34a97b13241f5d0da86d58aca3cecc45c533496678e75c5a1f", size = 38964, upload_time = "2025-11-14T14:58:02.87Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/2f0fbb32535c3731b7c2974c569fb9325e0a38ed5565a08e1139a3b71e82/cymem-2.0.13.tar.gz", hash = "sha256:1c91a92ae8c7104275ac26bd4d29b08ccd3e7faff5893d3858cb6fadf1bc1588", size = 12320, upload-time = "2025-11-14T14:58:36.902Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/14/462018dd384ee1848ac9c1951534a813a325abbfc161a74e2cbcb38d2469/cymem-2.0.13-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8efc4f308169237aade0e82877a65a563833dec32eb7ab2326120253e0e9e918", size = 43747, upload-time = "2025-11-14T14:57:11.287Z" }, + { url = "https://files.pythonhosted.org/packages/4b/9b/c123ba65dddcd8a2bc0b3c9046766c15abe0e257c315b3040eed22cce1e2/cymem-2.0.13-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e03bb575a96c59bc210d7d59862747f0012696b0dac3427ce8af33c7afb3d4a2", size = 43328, upload-time = "2025-11-14T14:57:12.578Z" }, + { url = "https://files.pythonhosted.org/packages/bd/be/7b7a4cf9cd2d37e674612a86fc90b3d59bff12177f83430e62b25afaf7fc/cymem-2.0.13-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1775d3fd34cf099929b79c3e48469283642463f977af6801231f3c0e5d9c9369", size = 231539, upload-time = "2025-11-14T14:57:14.441Z" }, + { url = "https://files.pythonhosted.org/packages/79/6d/d165c38cd4caaaf60942e2cec9998b667008f2384047ccfe0b4b5f7a1ffe/cymem-2.0.13-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:84e2976e38cd663f758e40b5497fa5cd183d7c5fb0d04ce81a4b42a1ba124ff0", size = 229674, upload-time = "2025-11-14T14:57:15.685Z" }, + { url = "https://files.pythonhosted.org/packages/95/c1/af83c03a93f890ca81149561b18a4a67a9aa36a1109f15e291dd2703ab12/cymem-2.0.13-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed9de1b9b042f76fe5c312e4359eab58bf52ac7dfdf6887368a760410d809440", size = 229805, upload-time = "2025-11-14T14:57:17.289Z" }, + { url = "https://files.pythonhosted.org/packages/03/2d/12900758b80345d9aed5892a9d61e8a5f6abbbe5837e4def373a53cd0da2/cymem-2.0.13-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1366c7437a209230f4b797fae10227a8206d4021d37c9f9c0d31fd97ea4feb35", size = 234018, upload-time = "2025-11-14T14:57:18.512Z" }, + { url = "https://files.pythonhosted.org/packages/a6/8b/5fcf5430fc81098aef58cc20340e51f37b49b9d8c15766e0d5d63e7288a3/cymem-2.0.13-cp310-cp310-win_amd64.whl", hash = "sha256:7700b116524b087e0169f10f267539223b48240ef2734c3a727a9e6b4db9a671", size = 40102, upload-time = "2025-11-14T14:57:19.972Z" }, + { url = "https://files.pythonhosted.org/packages/0d/d3/cb6c83758fe399443b858faafb7096b72535621a7af7dd9a54ff0989fa14/cymem-2.0.13-cp310-cp310-win_arm64.whl", hash = "sha256:c8dbfddfe5c604974e17c6f373cedd4d25cd67f84812ede7dea12128fa0c2015", size = 36282, upload-time = "2025-11-14T14:57:21.398Z" }, + { url = "https://files.pythonhosted.org/packages/10/64/1db41f7576a6b69f70367e3c15e968fd775ba7419e12059c9966ceb826f8/cymem-2.0.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:673183466b0ff2e060d97ec5116711d44200b8f7be524323e080d215ee2d44a5", size = 43587, upload-time = "2025-11-14T14:57:22.39Z" }, + { url = "https://files.pythonhosted.org/packages/81/13/57f936fc08551323aab3f92ff6b7f4d4b89d5b4e495c870a67cb8d279757/cymem-2.0.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bee2791b3f6fc034ce41268851462bf662ff87e8947e35fb6dd0115b4644a61f", size = 43139, upload-time = "2025-11-14T14:57:23.363Z" }, + { url = "https://files.pythonhosted.org/packages/32/a6/9345754be51e0479aa387b7b6cffc289d0fd3201aaeb8dade4623abd1e02/cymem-2.0.13-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f3aee3adf16272bca81c5826eed55ba3c938add6d8c9e273f01c6b829ecfde22", size = 245063, upload-time = "2025-11-14T14:57:24.839Z" }, + { url = "https://files.pythonhosted.org/packages/d6/01/6bc654101526fa86e82bf6b05d99b2cd47c30a333cfe8622c26c0592beb2/cymem-2.0.13-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:30c4e75a3a1d809e89106b0b21803eb78e839881aa1f5b9bd27b454bc73afde3", size = 244496, upload-time = "2025-11-14T14:57:26.42Z" }, + { url = "https://files.pythonhosted.org/packages/c4/fb/853b7b021e701a1f41687f3704d5f469aeb2a4f898c3fbb8076806885955/cymem-2.0.13-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec99efa03cf8ec11c8906aa4d4cc0c47df393bc9095c9dd64b89b9b43e220b04", size = 243287, upload-time = "2025-11-14T14:57:27.542Z" }, + { url = "https://files.pythonhosted.org/packages/d4/2b/0e4664cafc581de2896d75000651fd2ce7094d33263f466185c28ffc96e4/cymem-2.0.13-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c90a6ecba994a15b17a3f45d7ec74d34081df2f73bd1b090e2adc0317e4e01b6", size = 248287, upload-time = "2025-11-14T14:57:29.055Z" }, + { url = "https://files.pythonhosted.org/packages/21/0f/f94c6950edbfc2aafb81194fc40b6cacc8e994e9359d3cb4328c5705b9b5/cymem-2.0.13-cp311-cp311-win_amd64.whl", hash = "sha256:ce821e6ba59148ed17c4567113b8683a6a0be9c9ac86f14e969919121efb61a5", size = 40116, upload-time = "2025-11-14T14:57:30.592Z" }, + { url = "https://files.pythonhosted.org/packages/00/df/2455eff6ac0381ff165db6883b311f7016e222e3dd62185517f8e8187ed0/cymem-2.0.13-cp311-cp311-win_arm64.whl", hash = "sha256:0dca715e708e545fd1d97693542378a00394b20a37779c1ae2c8bdbb43acef79", size = 36349, upload-time = "2025-11-14T14:57:31.573Z" }, + { url = "https://files.pythonhosted.org/packages/c9/52/478a2911ab5028cb710b4900d64aceba6f4f882fcb13fd8d40a456a1b6dc/cymem-2.0.13-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e8afbc5162a0fe14b6463e1c4e45248a1b2fe2cbcecc8a5b9e511117080da0eb", size = 43745, upload-time = "2025-11-14T14:57:32.52Z" }, + { url = "https://files.pythonhosted.org/packages/f9/71/f0f8adee945524774b16af326bd314a14a478ed369a728a22834e6785a18/cymem-2.0.13-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9251d889348fe79a75e9b3e4d1b5fa651fca8a64500820685d73a3acc21b6a8", size = 42927, upload-time = "2025-11-14T14:57:33.827Z" }, + { url = "https://files.pythonhosted.org/packages/62/6d/159780fe162ff715d62b809246e5fc20901cef87ca28b67d255a8d741861/cymem-2.0.13-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:742fc19764467a49ed22e56a4d2134c262d73a6c635409584ae3bf9afa092c33", size = 258346, upload-time = "2025-11-14T14:57:34.917Z" }, + { url = "https://files.pythonhosted.org/packages/eb/12/678d16f7aa1996f947bf17b8cfb917ea9c9674ef5e2bd3690c04123d5680/cymem-2.0.13-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f190a92fe46197ee64d32560eb121c2809bb843341733227f51538ce77b3410d", size = 260843, upload-time = "2025-11-14T14:57:36.503Z" }, + { url = "https://files.pythonhosted.org/packages/31/5d/0dd8c167c08cd85e70d274b7235cfe1e31b3cebc99221178eaf4bbb95c6f/cymem-2.0.13-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d670329ee8dbbbf241b7c08069fe3f1d3a1a3e2d69c7d05ea008a7010d826298", size = 254607, upload-time = "2025-11-14T14:57:38.036Z" }, + { url = "https://files.pythonhosted.org/packages/b7/c9/d6514a412a1160aa65db539836b3d47f9b59f6675f294ec34ae32f867c82/cymem-2.0.13-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a84ba3178d9128b9ffb52ce81ebab456e9fe959125b51109f5b73ebdfc6b60d6", size = 262421, upload-time = "2025-11-14T14:57:39.265Z" }, + { url = "https://files.pythonhosted.org/packages/dd/fe/3ee37d02ca4040f2fb22d34eb415198f955862b5dd47eee01df4c8f5454c/cymem-2.0.13-cp312-cp312-win_amd64.whl", hash = "sha256:2ff1c41fd59b789579fdace78aa587c5fc091991fa59458c382b116fc36e30dc", size = 40176, upload-time = "2025-11-14T14:57:40.706Z" }, + { url = "https://files.pythonhosted.org/packages/94/fb/1b681635bfd5f2274d0caa8f934b58435db6c091b97f5593738065ddb786/cymem-2.0.13-cp312-cp312-win_arm64.whl", hash = "sha256:6bbd701338df7bf408648191dff52472a9b334f71bcd31a21a41d83821050f67", size = 35959, upload-time = "2025-11-14T14:57:41.682Z" }, + { url = "https://files.pythonhosted.org/packages/ce/0f/95a4d1e3bebfdfa7829252369357cf9a764f67569328cd9221f21e2c952e/cymem-2.0.13-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:891fd9030293a8b652dc7fb9fdc79a910a6c76fc679cd775e6741b819ffea476", size = 43478, upload-time = "2025-11-14T14:57:42.682Z" }, + { url = "https://files.pythonhosted.org/packages/bf/a0/8fc929cc29ae466b7b4efc23ece99cbd3ea34992ccff319089c624d667fd/cymem-2.0.13-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:89c4889bd16513ce1644ccfe1e7c473ba7ca150f0621e66feac3a571bde09e7e", size = 42695, upload-time = "2025-11-14T14:57:43.741Z" }, + { url = "https://files.pythonhosted.org/packages/4a/b3/deeb01354ebaf384438083ffe0310209ef903db3e7ba5a8f584b06d28387/cymem-2.0.13-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:45dcaba0f48bef9cc3d8b0b92058640244a95a9f12542210b51318da97c2cf28", size = 250573, upload-time = "2025-11-14T14:57:44.81Z" }, + { url = "https://files.pythonhosted.org/packages/36/36/bc980b9a14409f3356309c45a8d88d58797d02002a9d794dd6c84e809d3a/cymem-2.0.13-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e96848faaafccc0abd631f1c5fb194eac0caee4f5a8777fdbb3e349d3a21741c", size = 254572, upload-time = "2025-11-14T14:57:46.023Z" }, + { url = "https://files.pythonhosted.org/packages/fd/dd/a12522952624685bd0f8968e26d2ed6d059c967413ce6eb52292f538f1b0/cymem-2.0.13-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e02d3e2c3bfeb21185d5a4a70790d9df40629a87d8d7617dc22b4e864f665fa3", size = 248060, upload-time = "2025-11-14T14:57:47.605Z" }, + { url = "https://files.pythonhosted.org/packages/08/11/5dc933ddfeb2dfea747a0b935cb965b9a7580b324d96fc5f5a1b5ff8df29/cymem-2.0.13-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fece5229fd5ecdcd7a0738affb8c59890e13073ae5626544e13825f26c019d3c", size = 254601, upload-time = "2025-11-14T14:57:48.861Z" }, + { url = "https://files.pythonhosted.org/packages/70/66/d23b06166864fa94e13a98e5922986ce774832936473578febce64448d75/cymem-2.0.13-cp313-cp313-win_amd64.whl", hash = "sha256:38aefeb269597c1a0c2ddf1567dd8605489b661fa0369c6406c1acd433b4c7ba", size = 40103, upload-time = "2025-11-14T14:57:50.396Z" }, + { url = "https://files.pythonhosted.org/packages/2f/9e/c7b21271ab88a21760f3afdec84d2bc09ffa9e6c8d774ad9d4f1afab0416/cymem-2.0.13-cp313-cp313-win_arm64.whl", hash = "sha256:717270dcfd8c8096b479c42708b151002ff98e434a7b6f1f916387a6c791e2ad", size = 36016, upload-time = "2025-11-14T14:57:51.611Z" }, + { url = "https://files.pythonhosted.org/packages/7f/28/d3b03427edc04ae04910edf1c24b993881c3ba93a9729a42bcbb816a1808/cymem-2.0.13-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7e1a863a7f144ffb345397813701509cfc74fc9ed360a4d92799805b4b865dd1", size = 46429, upload-time = "2025-11-14T14:57:52.582Z" }, + { url = "https://files.pythonhosted.org/packages/35/a9/7ed53e481f47ebfb922b0b42e980cec83e98ccb2137dc597ea156642440c/cymem-2.0.13-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c16cb80efc017b054f78998c6b4b013cef509c7b3d802707ce1f85a1d68361bf", size = 46205, upload-time = "2025-11-14T14:57:53.64Z" }, + { url = "https://files.pythonhosted.org/packages/61/39/a3d6ad073cf7f0fbbb8bbf09698c3c8fac11be3f791d710239a4e8dd3438/cymem-2.0.13-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0d78a27c88b26c89bd1ece247d1d5939dba05a1dae6305aad8fd8056b17ddb51", size = 296083, upload-time = "2025-11-14T14:57:55.922Z" }, + { url = "https://files.pythonhosted.org/packages/36/0c/20697c8bc19f624a595833e566f37d7bcb9167b0ce69de896eba7cfc9c2d/cymem-2.0.13-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6d36710760f817194dacb09d9fc45cb6a5062ed75e85f0ef7ad7aeeb13d80cc3", size = 286159, upload-time = "2025-11-14T14:57:57.106Z" }, + { url = "https://files.pythonhosted.org/packages/82/d4/9326e3422d1c2d2b4a8fb859bdcce80138f6ab721ddafa4cba328a505c71/cymem-2.0.13-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c8f30971cadd5dcf73bcfbbc5849b1f1e1f40db8cd846c4aa7d3b5e035c7b583", size = 288186, upload-time = "2025-11-14T14:57:58.334Z" }, + { url = "https://files.pythonhosted.org/packages/ed/bc/68da7dd749b72884dc22e898562f335002d70306069d496376e5ff3b6153/cymem-2.0.13-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:9d441d0e45798ec1fd330373bf7ffa6b795f229275f64016b6a193e6e2a51522", size = 290353, upload-time = "2025-11-14T14:58:00.562Z" }, + { url = "https://files.pythonhosted.org/packages/50/23/dbf2ad6ecd19b99b3aab6203b1a06608bbd04a09c522d836b854f2f30f73/cymem-2.0.13-cp313-cp313t-win_amd64.whl", hash = "sha256:d1c950eebb9f0f15e3ef3591313482a5a611d16fc12d545e2018cd607f40f472", size = 44764, upload-time = "2025-11-14T14:58:01.793Z" }, + { url = "https://files.pythonhosted.org/packages/54/3f/35701c13e1fc7b0895198c8b20068c569a841e0daf8e0b14d1dc0816b28f/cymem-2.0.13-cp313-cp313t-win_arm64.whl", hash = "sha256:042e8611ef862c34a97b13241f5d0da86d58aca3cecc45c533496678e75c5a1f", size = 38964, upload-time = "2025-11-14T14:58:02.87Z" }, ] [[package]] name = "diff-match-patch" version = "20241021" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0e/ad/32e1777dd57d8e85fa31e3a243af66c538245b8d64b7265bec9a61f2ca33/diff_match_patch-20241021.tar.gz", hash = "sha256:beae57a99fa48084532935ee2968b8661db861862ec82c6f21f4acdd6d835073", size = 39962, upload_time = "2024-10-21T19:41:21.094Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0e/ad/32e1777dd57d8e85fa31e3a243af66c538245b8d64b7265bec9a61f2ca33/diff_match_patch-20241021.tar.gz", hash = "sha256:beae57a99fa48084532935ee2968b8661db861862ec82c6f21f4acdd6d835073", size = 39962, upload-time = "2024-10-21T19:41:21.094Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/bb/2aa9b46a01197398b901e458974c20ed107935c26e44e37ad5b0e5511e44/diff_match_patch-20241021-py3-none-any.whl", hash = "sha256:93cea333fb8b2bc0d181b0de5e16df50dd344ce64828226bda07728818936782", size = 43252, upload_time = "2024-10-21T19:41:19.914Z" }, + { url = "https://files.pythonhosted.org/packages/f7/bb/2aa9b46a01197398b901e458974c20ed107935c26e44e37ad5b0e5511e44/diff_match_patch-20241021-py3-none-any.whl", hash = "sha256:93cea333fb8b2bc0d181b0de5e16df50dd344ce64828226bda07728818936782", size = 43252, upload-time = "2024-10-21T19:41:19.914Z" }, ] [[package]] name = "distlib" version = "0.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d", size = 614605, upload_time = "2025-07-17T16:52:00.465Z" } +sdist = { url = "https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d", size = 614605, upload-time = "2025-07-17T16:52:00.465Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size = 469047, upload_time = "2025-07-17T16:51:58.613Z" }, + { url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size = 469047, upload-time = "2025-07-17T16:51:58.613Z" }, ] [[package]] name = "distro" version = "1.9.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fc/f8/98eea607f65de6527f8a2e8885fc8015d3e6f5775df186e443e0964a11c3/distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed", size = 60722, upload_time = "2023-12-24T09:54:32.31Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fc/f8/98eea607f65de6527f8a2e8885fc8015d3e6f5775df186e443e0964a11c3/distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed", size = 60722, upload-time = "2023-12-24T09:54:32.31Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277, upload_time = "2023-12-24T09:54:30.421Z" }, + { url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277, upload-time = "2023-12-24T09:54:30.421Z" }, ] [[package]] name = "dnspython" version = "2.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8c/8b/57666417c0f90f08bcafa776861060426765fdb422eb10212086fb811d26/dnspython-2.8.0.tar.gz", hash = "sha256:181d3c6996452cb1189c4046c61599b84a5a86e099562ffde77d26984ff26d0f", size = 368251, upload_time = "2025-09-07T18:58:00.022Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/8b/57666417c0f90f08bcafa776861060426765fdb422eb10212086fb811d26/dnspython-2.8.0.tar.gz", hash = "sha256:181d3c6996452cb1189c4046c61599b84a5a86e099562ffde77d26984ff26d0f", size = 368251, upload-time = "2025-09-07T18:58:00.022Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/5a/18ad964b0086c6e62e2e7500f7edc89e3faa45033c71c1893d34eed2b2de/dnspython-2.8.0-py3-none-any.whl", hash = "sha256:01d9bbc4a2d76bf0db7c1f729812ded6d912bd318d3b1cf81d30c0f845dbf3af", size = 331094, upload_time = "2025-09-07T18:57:58.071Z" }, + { url = "https://files.pythonhosted.org/packages/ba/5a/18ad964b0086c6e62e2e7500f7edc89e3faa45033c71c1893d34eed2b2de/dnspython-2.8.0-py3-none-any.whl", hash = "sha256:01d9bbc4a2d76bf0db7c1f729812ded6d912bd318d3b1cf81d30c0f845dbf3af", size = 331094, upload-time = "2025-09-07T18:57:58.071Z" }, ] [[package]] name = "docutils" version = "0.23" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/39/a4/5180d9afc57e8fca05601dd652bdff19604c218814037fe90ffc7625a50a/docutils-0.23.tar.gz", hash = "sha256:746f5060322511280a1e50eb76846ed6bf2342984b2ac04dc42caa1a8d78799e", size = 2303823, upload_time = "2026-05-27T17:41:06.934Z" } +sdist = { url = "https://files.pythonhosted.org/packages/39/a4/5180d9afc57e8fca05601dd652bdff19604c218814037fe90ffc7625a50a/docutils-0.23.tar.gz", hash = "sha256:746f5060322511280a1e50eb76846ed6bf2342984b2ac04dc42caa1a8d78799e", size = 2303823, upload-time = "2026-05-27T17:41:06.934Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/32/91/30151a39f7570f448ed84529390628a651d7f27c87d73c9b887f8189695e/docutils-0.23-py3-none-any.whl", hash = "sha256:25d013af9bf23bc1c7b2b093dff4208166c53a94786c9e447808335ef1185fea", size = 634701, upload_time = "2026-05-27T17:40:58.442Z" }, + { url = "https://files.pythonhosted.org/packages/32/91/30151a39f7570f448ed84529390628a651d7f27c87d73c9b887f8189695e/docutils-0.23-py3-none-any.whl", hash = "sha256:25d013af9bf23bc1c7b2b093dff4208166c53a94786c9e447808335ef1185fea", size = 634701, upload-time = "2026-05-27T17:40:58.442Z" }, ] [[package]] @@ -883,9 +885,9 @@ dependencies = [ { name = "dnspython" }, { name = "idna" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f5/22/900cb125c76b7aaa450ce02fd727f452243f2e91a61af068b40adba60ea9/email_validator-2.3.0.tar.gz", hash = "sha256:9fc05c37f2f6cf439ff414f8fc46d917929974a82244c20eb10231ba60c54426", size = 51238, upload_time = "2025-08-26T13:09:06.831Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f5/22/900cb125c76b7aaa450ce02fd727f452243f2e91a61af068b40adba60ea9/email_validator-2.3.0.tar.gz", hash = "sha256:9fc05c37f2f6cf439ff414f8fc46d917929974a82244c20eb10231ba60c54426", size = 51238, upload-time = "2025-08-26T13:09:06.831Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/de/15/545e2b6cf2e3be84bc1ed85613edd75b8aea69807a71c26f4ca6a9258e82/email_validator-2.3.0-py3-none-any.whl", hash = "sha256:80f13f623413e6b197ae73bb10bf4eb0908faf509ad8362c5edeb0be7fd450b4", size = 35604, upload_time = "2025-08-26T13:09:05.858Z" }, + { url = "https://files.pythonhosted.org/packages/de/15/545e2b6cf2e3be84bc1ed85613edd75b8aea69807a71c26f4ca6a9258e82/email_validator-2.3.0-py3-none-any.whl", hash = "sha256:80f13f623413e6b197ae73bb10bf4eb0908faf509ad8362c5edeb0be7fd450b4", size = 35604, upload-time = "2025-08-26T13:09:05.858Z" }, ] [[package]] @@ -900,18 +902,18 @@ dependencies = [ { name = "python-dateutil" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d3/f9/c1e315aa82ed9f037186c30109200fb4b4c51b5483b8065daa0ca836a336/emails-0.6.tar.gz", hash = "sha256:a4c2d67ea8b8831967a750d8edc6e77040d7693143fe280e6d2a367d9c36ff88", size = 44066, upload_time = "2020-06-19T11:20:41.644Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/f9/c1e315aa82ed9f037186c30109200fb4b4c51b5483b8065daa0ca836a336/emails-0.6.tar.gz", hash = "sha256:a4c2d67ea8b8831967a750d8edc6e77040d7693143fe280e6d2a367d9c36ff88", size = 44066, upload-time = "2020-06-19T11:20:41.644Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/55/7e/b648d640d88d31de49e566832aca9cce025c52d6349b0a0fc65e9df1f4c5/emails-0.6-py2.py3-none-any.whl", hash = "sha256:72c1e3198075709cc35f67e1b49e2da1a2bc087e9b444073db61a379adfb7f3c", size = 56250, upload_time = "2020-06-19T11:20:40.466Z" }, + { url = "https://files.pythonhosted.org/packages/55/7e/b648d640d88d31de49e566832aca9cce025c52d6349b0a0fc65e9df1f4c5/emails-0.6-py2.py3-none-any.whl", hash = "sha256:72c1e3198075709cc35f67e1b49e2da1a2bc087e9b444073db61a379adfb7f3c", size = 56250, upload-time = "2020-06-19T11:20:40.466Z" }, ] [[package]] name = "emoji" version = "2.15.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/78/0d2db9382c92a163d7095fc08efff7800880f830a152cfced40161e7638d/emoji-2.15.0.tar.gz", hash = "sha256:eae4ab7d86456a70a00a985125a03263a5eac54cd55e51d7e184b1ed3b6757e4", size = 615483, upload_time = "2025-09-21T12:13:02.755Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/78/0d2db9382c92a163d7095fc08efff7800880f830a152cfced40161e7638d/emoji-2.15.0.tar.gz", hash = "sha256:eae4ab7d86456a70a00a985125a03263a5eac54cd55e51d7e184b1ed3b6757e4", size = 615483, upload-time = "2025-09-21T12:13:02.755Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/5e/4b5aaaabddfacfe36ba7768817bd1f71a7a810a43705e531f3ae4c690767/emoji-2.15.0-py3-none-any.whl", hash = "sha256:205296793d66a89d88af4688fa57fd6496732eb48917a87175a023c8138995eb", size = 608433, upload_time = "2025-09-21T12:13:01.197Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5e/4b5aaaabddfacfe36ba7768817bd1f71a7a810a43705e531f3ae4c690767/emoji-2.15.0-py3-none-any.whl", hash = "sha256:205296793d66a89d88af4688fa57fd6496732eb48917a87175a023c8138995eb", size = 608433, upload-time = "2025-09-21T12:13:01.197Z" }, ] [[package]] @@ -921,9 +923,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload_time = "2025-11-21T23:01:54.787Z" } +sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload_time = "2025-11-21T23:01:53.443Z" }, + { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, ] [[package]] @@ -933,9 +935,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "tzdata" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3d/84/e95acaa848b855e15c83331d0401ee5f84b2f60889255c2e055cb4fb6bdf/faker-37.12.0.tar.gz", hash = "sha256:7505e59a7e02fa9010f06c3e1e92f8250d4cfbb30632296140c2d6dbef09b0fa", size = 1935741, upload_time = "2025-10-24T15:19:58.764Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3d/84/e95acaa848b855e15c83331d0401ee5f84b2f60889255c2e055cb4fb6bdf/faker-37.12.0.tar.gz", hash = "sha256:7505e59a7e02fa9010f06c3e1e92f8250d4cfbb30632296140c2d6dbef09b0fa", size = 1935741, upload-time = "2025-10-24T15:19:58.764Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8e/98/2c050dec90e295a524c9b65c4cb9e7c302386a296b2938710448cbd267d5/faker-37.12.0-py3-none-any.whl", hash = "sha256:afe7ccc038da92f2fbae30d8e16d19d91e92e242f8401ce9caf44de892bab4c4", size = 1975461, upload_time = "2025-10-24T15:19:55.739Z" }, + { url = "https://files.pythonhosted.org/packages/8e/98/2c050dec90e295a524c9b65c4cb9e7c302386a296b2938710448cbd267d5/faker-37.12.0-py3-none-any.whl", hash = "sha256:afe7ccc038da92f2fbae30d8e16d19d91e92e242f8401ce9caf44de892bab4c4", size = 1975461, upload-time = "2025-10-24T15:19:55.739Z" }, ] [[package]] @@ -947,9 +949,9 @@ dependencies = [ { name = "starlette" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ca/53/8c38a874844a8b0fa10dd8adf3836ac154082cf88d3f22b544e9ceea0a15/fastapi-0.115.14.tar.gz", hash = "sha256:b1de15cdc1c499a4da47914db35d0e4ef8f1ce62b624e94e0e5824421df99739", size = 296263, upload_time = "2025-06-26T15:29:08.21Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/53/8c38a874844a8b0fa10dd8adf3836ac154082cf88d3f22b544e9ceea0a15/fastapi-0.115.14.tar.gz", hash = "sha256:b1de15cdc1c499a4da47914db35d0e4ef8f1ce62b624e94e0e5824421df99739", size = 296263, upload-time = "2025-06-26T15:29:08.21Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/53/50/b1222562c6d270fea83e9c9075b8e8600b8479150a18e4516a6138b980d1/fastapi-0.115.14-py3-none-any.whl", hash = "sha256:6c0c8bf9420bd58f565e585036d971872472b4f7d3f6c73b698e10cffdefb3ca", size = 95514, upload_time = "2025-06-26T15:29:06.49Z" }, + { url = "https://files.pythonhosted.org/packages/53/50/b1222562c6d270fea83e9c9075b8e8600b8479150a18e4516a6138b980d1/fastapi-0.115.14-py3-none-any.whl", hash = "sha256:6c0c8bf9420bd58f565e585036d971872472b4f7d3f6c73b698e10cffdefb3ca", size = 95514, upload-time = "2025-06-26T15:29:06.49Z" }, ] [package.optional-dependencies] @@ -971,9 +973,9 @@ dependencies = [ { name = "typer" }, { name = "uvicorn", extra = ["standard"] }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fe/73/82a5831fbbf8ed75905bacf5b2d9d3dfd6f04d6968b29fe6f72a5ae9ceb1/fastapi_cli-0.0.7.tar.gz", hash = "sha256:02b3b65956f526412515907a0793c9094abd4bfb5457b389f645b0ea6ba3605e", size = 16753, upload_time = "2024-12-15T14:28:10.028Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/73/82a5831fbbf8ed75905bacf5b2d9d3dfd6f04d6968b29fe6f72a5ae9ceb1/fastapi_cli-0.0.7.tar.gz", hash = "sha256:02b3b65956f526412515907a0793c9094abd4bfb5457b389f645b0ea6ba3605e", size = 16753, upload-time = "2024-12-15T14:28:10.028Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/e6/5daefc851b514ce2287d8f5d358ae4341089185f78f3217a69d0ce3a390c/fastapi_cli-0.0.7-py3-none-any.whl", hash = "sha256:d549368ff584b2804336c61f192d86ddea080c11255f375959627911944804f4", size = 10705, upload_time = "2024-12-15T14:28:06.18Z" }, + { url = "https://files.pythonhosted.org/packages/a1/e6/5daefc851b514ce2287d8f5d358ae4341089185f78f3217a69d0ce3a390c/fastapi_cli-0.0.7-py3-none-any.whl", hash = "sha256:d549368ff584b2804336c61f192d86ddea080c11255f375959627911944804f4", size = 10705, upload-time = "2024-12-15T14:28:06.18Z" }, ] [package.optional-dependencies] @@ -985,168 +987,168 @@ standard = [ name = "fastuuid" version = "0.14.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c3/7d/d9daedf0f2ebcacd20d599928f8913e9d2aea1d56d2d355a93bfa2b611d7/fastuuid-0.14.0.tar.gz", hash = "sha256:178947fc2f995b38497a74172adee64fdeb8b7ec18f2a5934d037641ba265d26", size = 18232, upload_time = "2025-10-19T22:19:22.402Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ad/b2/731a6696e37cd20eed353f69a09f37a984a43c9713764ee3f7ad5f57f7f9/fastuuid-0.14.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:6e6243d40f6c793c3e2ee14c13769e341b90be5ef0c23c82fa6515a96145181a", size = 516760, upload_time = "2025-10-19T22:25:21.509Z" }, - { url = "https://files.pythonhosted.org/packages/c5/79/c73c47be2a3b8734d16e628982653517f80bbe0570e27185d91af6096507/fastuuid-0.14.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:13ec4f2c3b04271f62be2e1ce7e95ad2dd1cf97e94503a3760db739afbd48f00", size = 264748, upload_time = "2025-10-19T22:41:52.873Z" }, - { url = "https://files.pythonhosted.org/packages/24/c5/84c1eea05977c8ba5173555b0133e3558dc628bcf868d6bf1689ff14aedc/fastuuid-0.14.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b2fdd48b5e4236df145a149d7125badb28e0a383372add3fbaac9a6b7a394470", size = 254537, upload_time = "2025-10-19T22:33:55.603Z" }, - { url = "https://files.pythonhosted.org/packages/0e/23/4e362367b7fa17dbed646922f216b9921efb486e7abe02147e4b917359f8/fastuuid-0.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f74631b8322d2780ebcf2d2d75d58045c3e9378625ec51865fe0b5620800c39d", size = 278994, upload_time = "2025-10-19T22:26:17.631Z" }, - { url = "https://files.pythonhosted.org/packages/b2/72/3985be633b5a428e9eaec4287ed4b873b7c4c53a9639a8b416637223c4cd/fastuuid-0.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83cffc144dc93eb604b87b179837f2ce2af44871a7b323f2bfed40e8acb40ba8", size = 280003, upload_time = "2025-10-19T22:23:45.415Z" }, - { url = "https://files.pythonhosted.org/packages/b3/6d/6ef192a6df34e2266d5c9deb39cd3eea986df650cbcfeaf171aa52a059c3/fastuuid-0.14.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a771f135ab4523eb786e95493803942a5d1fc1610915f131b363f55af53b219", size = 303583, upload_time = "2025-10-19T22:26:00.756Z" }, - { url = "https://files.pythonhosted.org/packages/9d/11/8a2ea753c68d4fece29d5d7c6f3f903948cc6e82d1823bc9f7f7c0355db3/fastuuid-0.14.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4edc56b877d960b4eda2c4232f953a61490c3134da94f3c28af129fb9c62a4f6", size = 460955, upload_time = "2025-10-19T22:36:25.196Z" }, - { url = "https://files.pythonhosted.org/packages/23/42/7a32c93b6ce12642d9a152ee4753a078f372c9ebb893bc489d838dd4afd5/fastuuid-0.14.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bcc96ee819c282e7c09b2eed2b9bd13084e3b749fdb2faf58c318d498df2efbe", size = 480763, upload_time = "2025-10-19T22:24:28.451Z" }, - { url = "https://files.pythonhosted.org/packages/b9/e9/a5f6f686b46e3ed4ed3b93770111c233baac87dd6586a411b4988018ef1d/fastuuid-0.14.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7a3c0bca61eacc1843ea97b288d6789fbad7400d16db24e36a66c28c268cfe3d", size = 452613, upload_time = "2025-10-19T22:25:06.827Z" }, - { url = "https://files.pythonhosted.org/packages/b4/c9/18abc73c9c5b7fc0e476c1733b678783b2e8a35b0be9babd423571d44e98/fastuuid-0.14.0-cp310-cp310-win32.whl", hash = "sha256:7f2f3efade4937fae4e77efae1af571902263de7b78a0aee1a1653795a093b2a", size = 155045, upload_time = "2025-10-19T22:28:32.732Z" }, - { url = "https://files.pythonhosted.org/packages/5e/8a/d9e33f4eb4d4f6d9f2c5c7d7e96b5cdbb535c93f3b1ad6acce97ee9d4bf8/fastuuid-0.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:ae64ba730d179f439b0736208b4c279b8bc9c089b102aec23f86512ea458c8a4", size = 156122, upload_time = "2025-10-19T22:23:15.59Z" }, - { url = "https://files.pythonhosted.org/packages/98/f3/12481bda4e5b6d3e698fbf525df4443cc7dce746f246b86b6fcb2fba1844/fastuuid-0.14.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:73946cb950c8caf65127d4e9a325e2b6be0442a224fd51ba3b6ac44e1912ce34", size = 516386, upload_time = "2025-10-19T22:42:40.176Z" }, - { url = "https://files.pythonhosted.org/packages/59/19/2fc58a1446e4d72b655648eb0879b04e88ed6fa70d474efcf550f640f6ec/fastuuid-0.14.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:12ac85024637586a5b69645e7ed986f7535106ed3013640a393a03e461740cb7", size = 264569, upload_time = "2025-10-19T22:25:50.977Z" }, - { url = "https://files.pythonhosted.org/packages/78/29/3c74756e5b02c40cfcc8b1d8b5bac4edbd532b55917a6bcc9113550e99d1/fastuuid-0.14.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:05a8dde1f395e0c9b4be515b7a521403d1e8349443e7641761af07c7ad1624b1", size = 254366, upload_time = "2025-10-19T22:29:49.166Z" }, - { url = "https://files.pythonhosted.org/packages/52/96/d761da3fccfa84f0f353ce6e3eb8b7f76b3aa21fd25e1b00a19f9c80a063/fastuuid-0.14.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09378a05020e3e4883dfdab438926f31fea15fd17604908f3d39cbeb22a0b4dc", size = 278978, upload_time = "2025-10-19T22:35:41.306Z" }, - { url = "https://files.pythonhosted.org/packages/fc/c2/f84c90167cc7765cb82b3ff7808057608b21c14a38531845d933a4637307/fastuuid-0.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbb0c4b15d66b435d2538f3827f05e44e2baafcc003dd7d8472dc67807ab8fd8", size = 279692, upload_time = "2025-10-19T22:25:36.997Z" }, - { url = "https://files.pythonhosted.org/packages/af/7b/4bacd03897b88c12348e7bd77943bac32ccf80ff98100598fcff74f75f2e/fastuuid-0.14.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cd5a7f648d4365b41dbf0e38fe8da4884e57bed4e77c83598e076ac0c93995e7", size = 303384, upload_time = "2025-10-19T22:29:46.578Z" }, - { url = "https://files.pythonhosted.org/packages/c0/a2/584f2c29641df8bd810d00c1f21d408c12e9ad0c0dafdb8b7b29e5ddf787/fastuuid-0.14.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c0a94245afae4d7af8c43b3159d5e3934c53f47140be0be624b96acd672ceb73", size = 460921, upload_time = "2025-10-19T22:36:42.006Z" }, - { url = "https://files.pythonhosted.org/packages/24/68/c6b77443bb7764c760e211002c8638c0c7cce11cb584927e723215ba1398/fastuuid-0.14.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:2b29e23c97e77c3a9514d70ce343571e469098ac7f5a269320a0f0b3e193ab36", size = 480575, upload_time = "2025-10-19T22:28:18.975Z" }, - { url = "https://files.pythonhosted.org/packages/5a/87/93f553111b33f9bb83145be12868c3c475bf8ea87c107063d01377cc0e8e/fastuuid-0.14.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1e690d48f923c253f28151b3a6b4e335f2b06bf669c68a02665bc150b7839e94", size = 452317, upload_time = "2025-10-19T22:25:32.75Z" }, - { url = "https://files.pythonhosted.org/packages/9e/8c/a04d486ca55b5abb7eaa65b39df8d891b7b1635b22db2163734dc273579a/fastuuid-0.14.0-cp311-cp311-win32.whl", hash = "sha256:a6f46790d59ab38c6aa0e35c681c0484b50dc0acf9e2679c005d61e019313c24", size = 154804, upload_time = "2025-10-19T22:24:15.615Z" }, - { url = "https://files.pythonhosted.org/packages/9c/b2/2d40bf00820de94b9280366a122cbaa60090c8cf59e89ac3938cf5d75895/fastuuid-0.14.0-cp311-cp311-win_amd64.whl", hash = "sha256:e150eab56c95dc9e3fefc234a0eedb342fac433dacc273cd4d150a5b0871e1fa", size = 156099, upload_time = "2025-10-19T22:24:31.646Z" }, - { url = "https://files.pythonhosted.org/packages/02/a2/e78fcc5df65467f0d207661b7ef86c5b7ac62eea337c0c0fcedbeee6fb13/fastuuid-0.14.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:77e94728324b63660ebf8adb27055e92d2e4611645bf12ed9d88d30486471d0a", size = 510164, upload_time = "2025-10-19T22:31:45.635Z" }, - { url = "https://files.pythonhosted.org/packages/2b/b3/c846f933f22f581f558ee63f81f29fa924acd971ce903dab1a9b6701816e/fastuuid-0.14.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:caa1f14d2102cb8d353096bc6ef6c13b2c81f347e6ab9d6fbd48b9dea41c153d", size = 261837, upload_time = "2025-10-19T22:38:38.53Z" }, - { url = "https://files.pythonhosted.org/packages/54/ea/682551030f8c4fa9a769d9825570ad28c0c71e30cf34020b85c1f7ee7382/fastuuid-0.14.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d23ef06f9e67163be38cece704170486715b177f6baae338110983f99a72c070", size = 251370, upload_time = "2025-10-19T22:40:26.07Z" }, - { url = "https://files.pythonhosted.org/packages/14/dd/5927f0a523d8e6a76b70968e6004966ee7df30322f5fc9b6cdfb0276646a/fastuuid-0.14.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c9ec605ace243b6dbe3bd27ebdd5d33b00d8d1d3f580b39fdd15cd96fd71796", size = 277766, upload_time = "2025-10-19T22:37:23.779Z" }, - { url = "https://files.pythonhosted.org/packages/16/6e/c0fb547eef61293153348f12e0f75a06abb322664b34a1573a7760501336/fastuuid-0.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:808527f2407f58a76c916d6aa15d58692a4a019fdf8d4c32ac7ff303b7d7af09", size = 278105, upload_time = "2025-10-19T22:26:56.821Z" }, - { url = "https://files.pythonhosted.org/packages/2d/b1/b9c75e03b768f61cf2e84ee193dc18601aeaf89a4684b20f2f0e9f52b62c/fastuuid-0.14.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2fb3c0d7fef6674bbeacdd6dbd386924a7b60b26de849266d1ff6602937675c8", size = 301564, upload_time = "2025-10-19T22:30:31.604Z" }, - { url = "https://files.pythonhosted.org/packages/fc/fa/f7395fdac07c7a54f18f801744573707321ca0cee082e638e36452355a9d/fastuuid-0.14.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab3f5d36e4393e628a4df337c2c039069344db5f4b9d2a3c9cea48284f1dd741", size = 459659, upload_time = "2025-10-19T22:31:32.341Z" }, - { url = "https://files.pythonhosted.org/packages/66/49/c9fd06a4a0b1f0f048aacb6599e7d96e5d6bc6fa680ed0d46bf111929d1b/fastuuid-0.14.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:b9a0ca4f03b7e0b01425281ffd44e99d360e15c895f1907ca105854ed85e2057", size = 478430, upload_time = "2025-10-19T22:26:22.962Z" }, - { url = "https://files.pythonhosted.org/packages/be/9c/909e8c95b494e8e140e8be6165d5fc3f61fdc46198c1554df7b3e1764471/fastuuid-0.14.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3acdf655684cc09e60fb7e4cf524e8f42ea760031945aa8086c7eae2eeeabeb8", size = 450894, upload_time = "2025-10-19T22:27:01.647Z" }, - { url = "https://files.pythonhosted.org/packages/90/eb/d29d17521976e673c55ef7f210d4cdd72091a9ec6755d0fd4710d9b3c871/fastuuid-0.14.0-cp312-cp312-win32.whl", hash = "sha256:9579618be6280700ae36ac42c3efd157049fe4dd40ca49b021280481c78c3176", size = 154374, upload_time = "2025-10-19T22:29:19.879Z" }, - { url = "https://files.pythonhosted.org/packages/cc/fc/f5c799a6ea6d877faec0472d0b27c079b47c86b1cdc577720a5386483b36/fastuuid-0.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:d9e4332dc4ba054434a9594cbfaf7823b57993d7d8e7267831c3e059857cf397", size = 156550, upload_time = "2025-10-19T22:27:49.658Z" }, - { url = "https://files.pythonhosted.org/packages/a5/83/ae12dd39b9a39b55d7f90abb8971f1a5f3c321fd72d5aa83f90dc67fe9ed/fastuuid-0.14.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:77a09cb7427e7af74c594e409f7731a0cf887221de2f698e1ca0ebf0f3139021", size = 510720, upload_time = "2025-10-19T22:42:34.633Z" }, - { url = "https://files.pythonhosted.org/packages/53/b0/a4b03ff5d00f563cc7546b933c28cb3f2a07344b2aec5834e874f7d44143/fastuuid-0.14.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:9bd57289daf7b153bfa3e8013446aa144ce5e8c825e9e366d455155ede5ea2dc", size = 262024, upload_time = "2025-10-19T22:30:25.482Z" }, - { url = "https://files.pythonhosted.org/packages/9c/6d/64aee0a0f6a58eeabadd582e55d0d7d70258ffdd01d093b30c53d668303b/fastuuid-0.14.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ac60fc860cdf3c3f327374db87ab8e064c86566ca8c49d2e30df15eda1b0c2d5", size = 251679, upload_time = "2025-10-19T22:36:14.096Z" }, - { url = "https://files.pythonhosted.org/packages/60/f5/a7e9cda8369e4f7919d36552db9b2ae21db7915083bc6336f1b0082c8b2e/fastuuid-0.14.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab32f74bd56565b186f036e33129da77db8be09178cd2f5206a5d4035fb2a23f", size = 277862, upload_time = "2025-10-19T22:36:23.302Z" }, - { url = "https://files.pythonhosted.org/packages/f0/d3/8ce11827c783affffd5bd4d6378b28eb6cc6d2ddf41474006b8d62e7448e/fastuuid-0.14.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33e678459cf4addaedd9936bbb038e35b3f6b2061330fd8f2f6a1d80414c0f87", size = 278278, upload_time = "2025-10-19T22:29:43.809Z" }, - { url = "https://files.pythonhosted.org/packages/a2/51/680fb6352d0bbade04036da46264a8001f74b7484e2fd1f4da9e3db1c666/fastuuid-0.14.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1e3cc56742f76cd25ecb98e4b82a25f978ccffba02e4bdce8aba857b6d85d87b", size = 301788, upload_time = "2025-10-19T22:36:06.825Z" }, - { url = "https://files.pythonhosted.org/packages/fa/7c/2014b5785bd8ebdab04ec857635ebd84d5ee4950186a577db9eff0fb8ff6/fastuuid-0.14.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:cb9a030f609194b679e1660f7e32733b7a0f332d519c5d5a6a0a580991290022", size = 459819, upload_time = "2025-10-19T22:35:31.623Z" }, - { url = "https://files.pythonhosted.org/packages/01/d2/524d4ceeba9160e7a9bc2ea3e8f4ccf1ad78f3bde34090ca0c51f09a5e91/fastuuid-0.14.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:09098762aad4f8da3a888eb9ae01c84430c907a297b97166b8abc07b640f2995", size = 478546, upload_time = "2025-10-19T22:26:03.023Z" }, - { url = "https://files.pythonhosted.org/packages/bc/17/354d04951ce114bf4afc78e27a18cfbd6ee319ab1829c2d5fb5e94063ac6/fastuuid-0.14.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1383fff584fa249b16329a059c68ad45d030d5a4b70fb7c73a08d98fd53bcdab", size = 450921, upload_time = "2025-10-19T22:31:02.151Z" }, - { url = "https://files.pythonhosted.org/packages/fb/be/d7be8670151d16d88f15bb121c5b66cdb5ea6a0c2a362d0dcf30276ade53/fastuuid-0.14.0-cp313-cp313-win32.whl", hash = "sha256:a0809f8cc5731c066c909047f9a314d5f536c871a7a22e815cc4967c110ac9ad", size = 154559, upload_time = "2025-10-19T22:36:36.011Z" }, - { url = "https://files.pythonhosted.org/packages/22/1d/5573ef3624ceb7abf4a46073d3554e37191c868abc3aecd5289a72f9810a/fastuuid-0.14.0-cp313-cp313-win_amd64.whl", hash = "sha256:0df14e92e7ad3276327631c9e7cec09e32572ce82089c55cb1bb8df71cf394ed", size = 156539, upload_time = "2025-10-19T22:33:35.898Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/c3/7d/d9daedf0f2ebcacd20d599928f8913e9d2aea1d56d2d355a93bfa2b611d7/fastuuid-0.14.0.tar.gz", hash = "sha256:178947fc2f995b38497a74172adee64fdeb8b7ec18f2a5934d037641ba265d26", size = 18232, upload-time = "2025-10-19T22:19:22.402Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ad/b2/731a6696e37cd20eed353f69a09f37a984a43c9713764ee3f7ad5f57f7f9/fastuuid-0.14.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:6e6243d40f6c793c3e2ee14c13769e341b90be5ef0c23c82fa6515a96145181a", size = 516760, upload-time = "2025-10-19T22:25:21.509Z" }, + { url = "https://files.pythonhosted.org/packages/c5/79/c73c47be2a3b8734d16e628982653517f80bbe0570e27185d91af6096507/fastuuid-0.14.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:13ec4f2c3b04271f62be2e1ce7e95ad2dd1cf97e94503a3760db739afbd48f00", size = 264748, upload-time = "2025-10-19T22:41:52.873Z" }, + { url = "https://files.pythonhosted.org/packages/24/c5/84c1eea05977c8ba5173555b0133e3558dc628bcf868d6bf1689ff14aedc/fastuuid-0.14.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b2fdd48b5e4236df145a149d7125badb28e0a383372add3fbaac9a6b7a394470", size = 254537, upload-time = "2025-10-19T22:33:55.603Z" }, + { url = "https://files.pythonhosted.org/packages/0e/23/4e362367b7fa17dbed646922f216b9921efb486e7abe02147e4b917359f8/fastuuid-0.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f74631b8322d2780ebcf2d2d75d58045c3e9378625ec51865fe0b5620800c39d", size = 278994, upload-time = "2025-10-19T22:26:17.631Z" }, + { url = "https://files.pythonhosted.org/packages/b2/72/3985be633b5a428e9eaec4287ed4b873b7c4c53a9639a8b416637223c4cd/fastuuid-0.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83cffc144dc93eb604b87b179837f2ce2af44871a7b323f2bfed40e8acb40ba8", size = 280003, upload-time = "2025-10-19T22:23:45.415Z" }, + { url = "https://files.pythonhosted.org/packages/b3/6d/6ef192a6df34e2266d5c9deb39cd3eea986df650cbcfeaf171aa52a059c3/fastuuid-0.14.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a771f135ab4523eb786e95493803942a5d1fc1610915f131b363f55af53b219", size = 303583, upload-time = "2025-10-19T22:26:00.756Z" }, + { url = "https://files.pythonhosted.org/packages/9d/11/8a2ea753c68d4fece29d5d7c6f3f903948cc6e82d1823bc9f7f7c0355db3/fastuuid-0.14.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4edc56b877d960b4eda2c4232f953a61490c3134da94f3c28af129fb9c62a4f6", size = 460955, upload-time = "2025-10-19T22:36:25.196Z" }, + { url = "https://files.pythonhosted.org/packages/23/42/7a32c93b6ce12642d9a152ee4753a078f372c9ebb893bc489d838dd4afd5/fastuuid-0.14.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bcc96ee819c282e7c09b2eed2b9bd13084e3b749fdb2faf58c318d498df2efbe", size = 480763, upload-time = "2025-10-19T22:24:28.451Z" }, + { url = "https://files.pythonhosted.org/packages/b9/e9/a5f6f686b46e3ed4ed3b93770111c233baac87dd6586a411b4988018ef1d/fastuuid-0.14.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7a3c0bca61eacc1843ea97b288d6789fbad7400d16db24e36a66c28c268cfe3d", size = 452613, upload-time = "2025-10-19T22:25:06.827Z" }, + { url = "https://files.pythonhosted.org/packages/b4/c9/18abc73c9c5b7fc0e476c1733b678783b2e8a35b0be9babd423571d44e98/fastuuid-0.14.0-cp310-cp310-win32.whl", hash = "sha256:7f2f3efade4937fae4e77efae1af571902263de7b78a0aee1a1653795a093b2a", size = 155045, upload-time = "2025-10-19T22:28:32.732Z" }, + { url = "https://files.pythonhosted.org/packages/5e/8a/d9e33f4eb4d4f6d9f2c5c7d7e96b5cdbb535c93f3b1ad6acce97ee9d4bf8/fastuuid-0.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:ae64ba730d179f439b0736208b4c279b8bc9c089b102aec23f86512ea458c8a4", size = 156122, upload-time = "2025-10-19T22:23:15.59Z" }, + { url = "https://files.pythonhosted.org/packages/98/f3/12481bda4e5b6d3e698fbf525df4443cc7dce746f246b86b6fcb2fba1844/fastuuid-0.14.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:73946cb950c8caf65127d4e9a325e2b6be0442a224fd51ba3b6ac44e1912ce34", size = 516386, upload-time = "2025-10-19T22:42:40.176Z" }, + { url = "https://files.pythonhosted.org/packages/59/19/2fc58a1446e4d72b655648eb0879b04e88ed6fa70d474efcf550f640f6ec/fastuuid-0.14.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:12ac85024637586a5b69645e7ed986f7535106ed3013640a393a03e461740cb7", size = 264569, upload-time = "2025-10-19T22:25:50.977Z" }, + { url = "https://files.pythonhosted.org/packages/78/29/3c74756e5b02c40cfcc8b1d8b5bac4edbd532b55917a6bcc9113550e99d1/fastuuid-0.14.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:05a8dde1f395e0c9b4be515b7a521403d1e8349443e7641761af07c7ad1624b1", size = 254366, upload-time = "2025-10-19T22:29:49.166Z" }, + { url = "https://files.pythonhosted.org/packages/52/96/d761da3fccfa84f0f353ce6e3eb8b7f76b3aa21fd25e1b00a19f9c80a063/fastuuid-0.14.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09378a05020e3e4883dfdab438926f31fea15fd17604908f3d39cbeb22a0b4dc", size = 278978, upload-time = "2025-10-19T22:35:41.306Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c2/f84c90167cc7765cb82b3ff7808057608b21c14a38531845d933a4637307/fastuuid-0.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbb0c4b15d66b435d2538f3827f05e44e2baafcc003dd7d8472dc67807ab8fd8", size = 279692, upload-time = "2025-10-19T22:25:36.997Z" }, + { url = "https://files.pythonhosted.org/packages/af/7b/4bacd03897b88c12348e7bd77943bac32ccf80ff98100598fcff74f75f2e/fastuuid-0.14.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cd5a7f648d4365b41dbf0e38fe8da4884e57bed4e77c83598e076ac0c93995e7", size = 303384, upload-time = "2025-10-19T22:29:46.578Z" }, + { url = "https://files.pythonhosted.org/packages/c0/a2/584f2c29641df8bd810d00c1f21d408c12e9ad0c0dafdb8b7b29e5ddf787/fastuuid-0.14.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c0a94245afae4d7af8c43b3159d5e3934c53f47140be0be624b96acd672ceb73", size = 460921, upload-time = "2025-10-19T22:36:42.006Z" }, + { url = "https://files.pythonhosted.org/packages/24/68/c6b77443bb7764c760e211002c8638c0c7cce11cb584927e723215ba1398/fastuuid-0.14.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:2b29e23c97e77c3a9514d70ce343571e469098ac7f5a269320a0f0b3e193ab36", size = 480575, upload-time = "2025-10-19T22:28:18.975Z" }, + { url = "https://files.pythonhosted.org/packages/5a/87/93f553111b33f9bb83145be12868c3c475bf8ea87c107063d01377cc0e8e/fastuuid-0.14.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1e690d48f923c253f28151b3a6b4e335f2b06bf669c68a02665bc150b7839e94", size = 452317, upload-time = "2025-10-19T22:25:32.75Z" }, + { url = "https://files.pythonhosted.org/packages/9e/8c/a04d486ca55b5abb7eaa65b39df8d891b7b1635b22db2163734dc273579a/fastuuid-0.14.0-cp311-cp311-win32.whl", hash = "sha256:a6f46790d59ab38c6aa0e35c681c0484b50dc0acf9e2679c005d61e019313c24", size = 154804, upload-time = "2025-10-19T22:24:15.615Z" }, + { url = "https://files.pythonhosted.org/packages/9c/b2/2d40bf00820de94b9280366a122cbaa60090c8cf59e89ac3938cf5d75895/fastuuid-0.14.0-cp311-cp311-win_amd64.whl", hash = "sha256:e150eab56c95dc9e3fefc234a0eedb342fac433dacc273cd4d150a5b0871e1fa", size = 156099, upload-time = "2025-10-19T22:24:31.646Z" }, + { url = "https://files.pythonhosted.org/packages/02/a2/e78fcc5df65467f0d207661b7ef86c5b7ac62eea337c0c0fcedbeee6fb13/fastuuid-0.14.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:77e94728324b63660ebf8adb27055e92d2e4611645bf12ed9d88d30486471d0a", size = 510164, upload-time = "2025-10-19T22:31:45.635Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b3/c846f933f22f581f558ee63f81f29fa924acd971ce903dab1a9b6701816e/fastuuid-0.14.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:caa1f14d2102cb8d353096bc6ef6c13b2c81f347e6ab9d6fbd48b9dea41c153d", size = 261837, upload-time = "2025-10-19T22:38:38.53Z" }, + { url = "https://files.pythonhosted.org/packages/54/ea/682551030f8c4fa9a769d9825570ad28c0c71e30cf34020b85c1f7ee7382/fastuuid-0.14.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d23ef06f9e67163be38cece704170486715b177f6baae338110983f99a72c070", size = 251370, upload-time = "2025-10-19T22:40:26.07Z" }, + { url = "https://files.pythonhosted.org/packages/14/dd/5927f0a523d8e6a76b70968e6004966ee7df30322f5fc9b6cdfb0276646a/fastuuid-0.14.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c9ec605ace243b6dbe3bd27ebdd5d33b00d8d1d3f580b39fdd15cd96fd71796", size = 277766, upload-time = "2025-10-19T22:37:23.779Z" }, + { url = "https://files.pythonhosted.org/packages/16/6e/c0fb547eef61293153348f12e0f75a06abb322664b34a1573a7760501336/fastuuid-0.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:808527f2407f58a76c916d6aa15d58692a4a019fdf8d4c32ac7ff303b7d7af09", size = 278105, upload-time = "2025-10-19T22:26:56.821Z" }, + { url = "https://files.pythonhosted.org/packages/2d/b1/b9c75e03b768f61cf2e84ee193dc18601aeaf89a4684b20f2f0e9f52b62c/fastuuid-0.14.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2fb3c0d7fef6674bbeacdd6dbd386924a7b60b26de849266d1ff6602937675c8", size = 301564, upload-time = "2025-10-19T22:30:31.604Z" }, + { url = "https://files.pythonhosted.org/packages/fc/fa/f7395fdac07c7a54f18f801744573707321ca0cee082e638e36452355a9d/fastuuid-0.14.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab3f5d36e4393e628a4df337c2c039069344db5f4b9d2a3c9cea48284f1dd741", size = 459659, upload-time = "2025-10-19T22:31:32.341Z" }, + { url = "https://files.pythonhosted.org/packages/66/49/c9fd06a4a0b1f0f048aacb6599e7d96e5d6bc6fa680ed0d46bf111929d1b/fastuuid-0.14.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:b9a0ca4f03b7e0b01425281ffd44e99d360e15c895f1907ca105854ed85e2057", size = 478430, upload-time = "2025-10-19T22:26:22.962Z" }, + { url = "https://files.pythonhosted.org/packages/be/9c/909e8c95b494e8e140e8be6165d5fc3f61fdc46198c1554df7b3e1764471/fastuuid-0.14.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3acdf655684cc09e60fb7e4cf524e8f42ea760031945aa8086c7eae2eeeabeb8", size = 450894, upload-time = "2025-10-19T22:27:01.647Z" }, + { url = "https://files.pythonhosted.org/packages/90/eb/d29d17521976e673c55ef7f210d4cdd72091a9ec6755d0fd4710d9b3c871/fastuuid-0.14.0-cp312-cp312-win32.whl", hash = "sha256:9579618be6280700ae36ac42c3efd157049fe4dd40ca49b021280481c78c3176", size = 154374, upload-time = "2025-10-19T22:29:19.879Z" }, + { url = "https://files.pythonhosted.org/packages/cc/fc/f5c799a6ea6d877faec0472d0b27c079b47c86b1cdc577720a5386483b36/fastuuid-0.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:d9e4332dc4ba054434a9594cbfaf7823b57993d7d8e7267831c3e059857cf397", size = 156550, upload-time = "2025-10-19T22:27:49.658Z" }, + { url = "https://files.pythonhosted.org/packages/a5/83/ae12dd39b9a39b55d7f90abb8971f1a5f3c321fd72d5aa83f90dc67fe9ed/fastuuid-0.14.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:77a09cb7427e7af74c594e409f7731a0cf887221de2f698e1ca0ebf0f3139021", size = 510720, upload-time = "2025-10-19T22:42:34.633Z" }, + { url = "https://files.pythonhosted.org/packages/53/b0/a4b03ff5d00f563cc7546b933c28cb3f2a07344b2aec5834e874f7d44143/fastuuid-0.14.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:9bd57289daf7b153bfa3e8013446aa144ce5e8c825e9e366d455155ede5ea2dc", size = 262024, upload-time = "2025-10-19T22:30:25.482Z" }, + { url = "https://files.pythonhosted.org/packages/9c/6d/64aee0a0f6a58eeabadd582e55d0d7d70258ffdd01d093b30c53d668303b/fastuuid-0.14.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ac60fc860cdf3c3f327374db87ab8e064c86566ca8c49d2e30df15eda1b0c2d5", size = 251679, upload-time = "2025-10-19T22:36:14.096Z" }, + { url = "https://files.pythonhosted.org/packages/60/f5/a7e9cda8369e4f7919d36552db9b2ae21db7915083bc6336f1b0082c8b2e/fastuuid-0.14.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab32f74bd56565b186f036e33129da77db8be09178cd2f5206a5d4035fb2a23f", size = 277862, upload-time = "2025-10-19T22:36:23.302Z" }, + { url = "https://files.pythonhosted.org/packages/f0/d3/8ce11827c783affffd5bd4d6378b28eb6cc6d2ddf41474006b8d62e7448e/fastuuid-0.14.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33e678459cf4addaedd9936bbb038e35b3f6b2061330fd8f2f6a1d80414c0f87", size = 278278, upload-time = "2025-10-19T22:29:43.809Z" }, + { url = "https://files.pythonhosted.org/packages/a2/51/680fb6352d0bbade04036da46264a8001f74b7484e2fd1f4da9e3db1c666/fastuuid-0.14.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1e3cc56742f76cd25ecb98e4b82a25f978ccffba02e4bdce8aba857b6d85d87b", size = 301788, upload-time = "2025-10-19T22:36:06.825Z" }, + { url = "https://files.pythonhosted.org/packages/fa/7c/2014b5785bd8ebdab04ec857635ebd84d5ee4950186a577db9eff0fb8ff6/fastuuid-0.14.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:cb9a030f609194b679e1660f7e32733b7a0f332d519c5d5a6a0a580991290022", size = 459819, upload-time = "2025-10-19T22:35:31.623Z" }, + { url = "https://files.pythonhosted.org/packages/01/d2/524d4ceeba9160e7a9bc2ea3e8f4ccf1ad78f3bde34090ca0c51f09a5e91/fastuuid-0.14.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:09098762aad4f8da3a888eb9ae01c84430c907a297b97166b8abc07b640f2995", size = 478546, upload-time = "2025-10-19T22:26:03.023Z" }, + { url = "https://files.pythonhosted.org/packages/bc/17/354d04951ce114bf4afc78e27a18cfbd6ee319ab1829c2d5fb5e94063ac6/fastuuid-0.14.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1383fff584fa249b16329a059c68ad45d030d5a4b70fb7c73a08d98fd53bcdab", size = 450921, upload-time = "2025-10-19T22:31:02.151Z" }, + { url = "https://files.pythonhosted.org/packages/fb/be/d7be8670151d16d88f15bb121c5b66cdb5ea6a0c2a362d0dcf30276ade53/fastuuid-0.14.0-cp313-cp313-win32.whl", hash = "sha256:a0809f8cc5731c066c909047f9a314d5f536c871a7a22e815cc4967c110ac9ad", size = 154559, upload-time = "2025-10-19T22:36:36.011Z" }, + { url = "https://files.pythonhosted.org/packages/22/1d/5573ef3624ceb7abf4a46073d3554e37191c868abc3aecd5289a72f9810a/fastuuid-0.14.0-cp313-cp313-win_amd64.whl", hash = "sha256:0df14e92e7ad3276327631c9e7cec09e32572ce82089c55cb1bb8df71cf394ed", size = 156539, upload-time = "2025-10-19T22:33:35.898Z" }, ] [[package]] name = "filelock" version = "3.24.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/02/a8/dae62680be63cbb3ff87cfa2f51cf766269514ea5488479d42fec5aa6f3a/filelock-3.24.2.tar.gz", hash = "sha256:c22803117490f156e59fafce621f0550a7a853e2bbf4f87f112b11d469b6c81b", size = 37601, upload_time = "2026-02-16T02:50:45.614Z" } +sdist = { url = "https://files.pythonhosted.org/packages/02/a8/dae62680be63cbb3ff87cfa2f51cf766269514ea5488479d42fec5aa6f3a/filelock-3.24.2.tar.gz", hash = "sha256:c22803117490f156e59fafce621f0550a7a853e2bbf4f87f112b11d469b6c81b", size = 37601, upload-time = "2026-02-16T02:50:45.614Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/04/a94ebfb4eaaa08db56725a40de2887e95de4e8641b9e902c311bfa00aa39/filelock-3.24.2-py3-none-any.whl", hash = "sha256:667d7dc0b7d1e1064dd5f8f8e80bdac157a6482e8d2e02cd16fd3b6b33bd6556", size = 24152, upload_time = "2026-02-16T02:50:44Z" }, + { url = "https://files.pythonhosted.org/packages/e7/04/a94ebfb4eaaa08db56725a40de2887e95de4e8641b9e902c311bfa00aa39/filelock-3.24.2-py3-none-any.whl", hash = "sha256:667d7dc0b7d1e1064dd5f8f8e80bdac157a6482e8d2e02cd16fd3b6b33bd6556", size = 24152, upload-time = "2026-02-16T02:50:44Z" }, ] [[package]] name = "fqdn" version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015, upload_time = "2021-03-11T07:16:29.08Z" } +sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015, upload-time = "2021-03-11T07:16:29.08Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload_time = "2021-03-11T07:16:28.351Z" }, + { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload-time = "2021-03-11T07:16:28.351Z" }, ] [[package]] name = "frozenlist" version = "1.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2d/f5/c831fac6cc817d26fd54c7eaccd04ef7e0288806943f7cc5bbf69f3ac1f0/frozenlist-1.8.0.tar.gz", hash = "sha256:3ede829ed8d842f6cd48fc7081d7a41001a56f1f38603f9d49bf3020d59a31ad", size = 45875, upload_time = "2025-10-06T05:38:17.865Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/83/4a/557715d5047da48d54e659203b9335be7bfaafda2c3f627b7c47e0b3aaf3/frozenlist-1.8.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b37f6d31b3dcea7deb5e9696e529a6aa4a898adc33db82da12e4c60a7c4d2011", size = 86230, upload_time = "2025-10-06T05:35:23.699Z" }, - { url = "https://files.pythonhosted.org/packages/a2/fb/c85f9fed3ea8fe8740e5b46a59cc141c23b842eca617da8876cfce5f760e/frozenlist-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef2b7b394f208233e471abc541cc6991f907ffd47dc72584acee3147899d6565", size = 49621, upload_time = "2025-10-06T05:35:25.341Z" }, - { url = "https://files.pythonhosted.org/packages/63/70/26ca3f06aace16f2352796b08704338d74b6d1a24ca38f2771afbb7ed915/frozenlist-1.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a88f062f072d1589b7b46e951698950e7da00442fc1cacbe17e19e025dc327ad", size = 49889, upload_time = "2025-10-06T05:35:26.797Z" }, - { url = "https://files.pythonhosted.org/packages/5d/ed/c7895fd2fde7f3ee70d248175f9b6cdf792fb741ab92dc59cd9ef3bd241b/frozenlist-1.8.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f57fb59d9f385710aa7060e89410aeb5058b99e62f4d16b08b91986b9a2140c2", size = 219464, upload_time = "2025-10-06T05:35:28.254Z" }, - { url = "https://files.pythonhosted.org/packages/6b/83/4d587dccbfca74cb8b810472392ad62bfa100bf8108c7223eb4c4fa2f7b3/frozenlist-1.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:799345ab092bee59f01a915620b5d014698547afd011e691a208637312db9186", size = 221649, upload_time = "2025-10-06T05:35:29.454Z" }, - { url = "https://files.pythonhosted.org/packages/6a/c6/fd3b9cd046ec5fff9dab66831083bc2077006a874a2d3d9247dea93ddf7e/frozenlist-1.8.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c23c3ff005322a6e16f71bf8692fcf4d5a304aaafe1e262c98c6d4adc7be863e", size = 219188, upload_time = "2025-10-06T05:35:30.951Z" }, - { url = "https://files.pythonhosted.org/packages/ce/80/6693f55eb2e085fc8afb28cf611448fb5b90e98e068fa1d1b8d8e66e5c7d/frozenlist-1.8.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8a76ea0f0b9dfa06f254ee06053d93a600865b3274358ca48a352ce4f0798450", size = 231748, upload_time = "2025-10-06T05:35:32.101Z" }, - { url = "https://files.pythonhosted.org/packages/97/d6/e9459f7c5183854abd989ba384fe0cc1a0fb795a83c033f0571ec5933ca4/frozenlist-1.8.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c7366fe1418a6133d5aa824ee53d406550110984de7637d65a178010f759c6ef", size = 236351, upload_time = "2025-10-06T05:35:33.834Z" }, - { url = "https://files.pythonhosted.org/packages/97/92/24e97474b65c0262e9ecd076e826bfd1d3074adcc165a256e42e7b8a7249/frozenlist-1.8.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:13d23a45c4cebade99340c4165bd90eeb4a56c6d8a9d8aa49568cac19a6d0dc4", size = 218767, upload_time = "2025-10-06T05:35:35.205Z" }, - { url = "https://files.pythonhosted.org/packages/ee/bf/dc394a097508f15abff383c5108cb8ad880d1f64a725ed3b90d5c2fbf0bb/frozenlist-1.8.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:e4a3408834f65da56c83528fb52ce7911484f0d1eaf7b761fc66001db1646eff", size = 235887, upload_time = "2025-10-06T05:35:36.354Z" }, - { url = "https://files.pythonhosted.org/packages/40/90/25b201b9c015dbc999a5baf475a257010471a1fa8c200c843fd4abbee725/frozenlist-1.8.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:42145cd2748ca39f32801dad54aeea10039da6f86e303659db90db1c4b614c8c", size = 228785, upload_time = "2025-10-06T05:35:37.949Z" }, - { url = "https://files.pythonhosted.org/packages/84/f4/b5bc148df03082f05d2dd30c089e269acdbe251ac9a9cf4e727b2dbb8a3d/frozenlist-1.8.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e2de870d16a7a53901e41b64ffdf26f2fbb8917b3e6ebf398098d72c5b20bd7f", size = 230312, upload_time = "2025-10-06T05:35:39.178Z" }, - { url = "https://files.pythonhosted.org/packages/db/4b/87e95b5d15097c302430e647136b7d7ab2398a702390cf4c8601975709e7/frozenlist-1.8.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:20e63c9493d33ee48536600d1a5c95eefc870cd71e7ab037763d1fbb89cc51e7", size = 217650, upload_time = "2025-10-06T05:35:40.377Z" }, - { url = "https://files.pythonhosted.org/packages/e5/70/78a0315d1fea97120591a83e0acd644da638c872f142fd72a6cebee825f3/frozenlist-1.8.0-cp310-cp310-win32.whl", hash = "sha256:adbeebaebae3526afc3c96fad434367cafbfd1b25d72369a9e5858453b1bb71a", size = 39659, upload_time = "2025-10-06T05:35:41.863Z" }, - { url = "https://files.pythonhosted.org/packages/66/aa/3f04523fb189a00e147e60c5b2205126118f216b0aa908035c45336e27e4/frozenlist-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:667c3777ca571e5dbeb76f331562ff98b957431df140b54c85fd4d52eea8d8f6", size = 43837, upload_time = "2025-10-06T05:35:43.205Z" }, - { url = "https://files.pythonhosted.org/packages/39/75/1135feecdd7c336938bd55b4dc3b0dfc46d85b9be12ef2628574b28de776/frozenlist-1.8.0-cp310-cp310-win_arm64.whl", hash = "sha256:80f85f0a7cc86e7a54c46d99c9e1318ff01f4687c172ede30fd52d19d1da1c8e", size = 39989, upload_time = "2025-10-06T05:35:44.596Z" }, - { url = "https://files.pythonhosted.org/packages/bc/03/077f869d540370db12165c0aa51640a873fb661d8b315d1d4d67b284d7ac/frozenlist-1.8.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:09474e9831bc2b2199fad6da3c14c7b0fbdd377cce9d3d77131be28906cb7d84", size = 86912, upload_time = "2025-10-06T05:35:45.98Z" }, - { url = "https://files.pythonhosted.org/packages/df/b5/7610b6bd13e4ae77b96ba85abea1c8cb249683217ef09ac9e0ae93f25a91/frozenlist-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:17c883ab0ab67200b5f964d2b9ed6b00971917d5d8a92df149dc2c9779208ee9", size = 50046, upload_time = "2025-10-06T05:35:47.009Z" }, - { url = "https://files.pythonhosted.org/packages/6e/ef/0e8f1fe32f8a53dd26bdd1f9347efe0778b0fddf62789ea683f4cc7d787d/frozenlist-1.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fa47e444b8ba08fffd1c18e8cdb9a75db1b6a27f17507522834ad13ed5922b93", size = 50119, upload_time = "2025-10-06T05:35:48.38Z" }, - { url = "https://files.pythonhosted.org/packages/11/b1/71a477adc7c36e5fb628245dfbdea2166feae310757dea848d02bd0689fd/frozenlist-1.8.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2552f44204b744fba866e573be4c1f9048d6a324dfe14475103fd51613eb1d1f", size = 231067, upload_time = "2025-10-06T05:35:49.97Z" }, - { url = "https://files.pythonhosted.org/packages/45/7e/afe40eca3a2dc19b9904c0f5d7edfe82b5304cb831391edec0ac04af94c2/frozenlist-1.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:957e7c38f250991e48a9a73e6423db1bb9dd14e722a10f6b8bb8e16a0f55f695", size = 233160, upload_time = "2025-10-06T05:35:51.729Z" }, - { url = "https://files.pythonhosted.org/packages/a6/aa/7416eac95603ce428679d273255ffc7c998d4132cfae200103f164b108aa/frozenlist-1.8.0-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:8585e3bb2cdea02fc88ffa245069c36555557ad3609e83be0ec71f54fd4abb52", size = 228544, upload_time = "2025-10-06T05:35:53.246Z" }, - { url = "https://files.pythonhosted.org/packages/8b/3d/2a2d1f683d55ac7e3875e4263d28410063e738384d3adc294f5ff3d7105e/frozenlist-1.8.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:edee74874ce20a373d62dc28b0b18b93f645633c2943fd90ee9d898550770581", size = 243797, upload_time = "2025-10-06T05:35:54.497Z" }, - { url = "https://files.pythonhosted.org/packages/78/1e/2d5565b589e580c296d3bb54da08d206e797d941a83a6fdea42af23be79c/frozenlist-1.8.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c9a63152fe95756b85f31186bddf42e4c02c6321207fd6601a1c89ebac4fe567", size = 247923, upload_time = "2025-10-06T05:35:55.861Z" }, - { url = "https://files.pythonhosted.org/packages/aa/c3/65872fcf1d326a7f101ad4d86285c403c87be7d832b7470b77f6d2ed5ddc/frozenlist-1.8.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b6db2185db9be0a04fecf2f241c70b63b1a242e2805be291855078f2b404dd6b", size = 230886, upload_time = "2025-10-06T05:35:57.399Z" }, - { url = "https://files.pythonhosted.org/packages/a0/76/ac9ced601d62f6956f03cc794f9e04c81719509f85255abf96e2510f4265/frozenlist-1.8.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:f4be2e3d8bc8aabd566f8d5b8ba7ecc09249d74ba3c9ed52e54dc23a293f0b92", size = 245731, upload_time = "2025-10-06T05:35:58.563Z" }, - { url = "https://files.pythonhosted.org/packages/b9/49/ecccb5f2598daf0b4a1415497eba4c33c1e8ce07495eb07d2860c731b8d5/frozenlist-1.8.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:c8d1634419f39ea6f5c427ea2f90ca85126b54b50837f31497f3bf38266e853d", size = 241544, upload_time = "2025-10-06T05:35:59.719Z" }, - { url = "https://files.pythonhosted.org/packages/53/4b/ddf24113323c0bbcc54cb38c8b8916f1da7165e07b8e24a717b4a12cbf10/frozenlist-1.8.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:1a7fa382a4a223773ed64242dbe1c9c326ec09457e6b8428efb4118c685c3dfd", size = 241806, upload_time = "2025-10-06T05:36:00.959Z" }, - { url = "https://files.pythonhosted.org/packages/a7/fb/9b9a084d73c67175484ba2789a59f8eebebd0827d186a8102005ce41e1ba/frozenlist-1.8.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:11847b53d722050808926e785df837353bd4d75f1d494377e59b23594d834967", size = 229382, upload_time = "2025-10-06T05:36:02.22Z" }, - { url = "https://files.pythonhosted.org/packages/95/a3/c8fb25aac55bf5e12dae5c5aa6a98f85d436c1dc658f21c3ac73f9fa95e5/frozenlist-1.8.0-cp311-cp311-win32.whl", hash = "sha256:27c6e8077956cf73eadd514be8fb04d77fc946a7fe9f7fe167648b0b9085cc25", size = 39647, upload_time = "2025-10-06T05:36:03.409Z" }, - { url = "https://files.pythonhosted.org/packages/0a/f5/603d0d6a02cfd4c8f2a095a54672b3cf967ad688a60fb9faf04fc4887f65/frozenlist-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:ac913f8403b36a2c8610bbfd25b8013488533e71e62b4b4adce9c86c8cea905b", size = 44064, upload_time = "2025-10-06T05:36:04.368Z" }, - { url = "https://files.pythonhosted.org/packages/5d/16/c2c9ab44e181f043a86f9a8f84d5124b62dbcb3a02c0977ec72b9ac1d3e0/frozenlist-1.8.0-cp311-cp311-win_arm64.whl", hash = "sha256:d4d3214a0f8394edfa3e303136d0575eece0745ff2b47bd2cb2e66dd92d4351a", size = 39937, upload_time = "2025-10-06T05:36:05.669Z" }, - { url = "https://files.pythonhosted.org/packages/69/29/948b9aa87e75820a38650af445d2ef2b6b8a6fab1a23b6bb9e4ef0be2d59/frozenlist-1.8.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:78f7b9e5d6f2fdb88cdde9440dc147259b62b9d3b019924def9f6478be254ac1", size = 87782, upload_time = "2025-10-06T05:36:06.649Z" }, - { url = "https://files.pythonhosted.org/packages/64/80/4f6e318ee2a7c0750ed724fa33a4bdf1eacdc5a39a7a24e818a773cd91af/frozenlist-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:229bf37d2e4acdaf808fd3f06e854a4a7a3661e871b10dc1f8f1896a3b05f18b", size = 50594, upload_time = "2025-10-06T05:36:07.69Z" }, - { url = "https://files.pythonhosted.org/packages/2b/94/5c8a2b50a496b11dd519f4a24cb5496cf125681dd99e94c604ccdea9419a/frozenlist-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f833670942247a14eafbb675458b4e61c82e002a148f49e68257b79296e865c4", size = 50448, upload_time = "2025-10-06T05:36:08.78Z" }, - { url = "https://files.pythonhosted.org/packages/6a/bd/d91c5e39f490a49df14320f4e8c80161cfcce09f1e2cde1edd16a551abb3/frozenlist-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:494a5952b1c597ba44e0e78113a7266e656b9794eec897b19ead706bd7074383", size = 242411, upload_time = "2025-10-06T05:36:09.801Z" }, - { url = "https://files.pythonhosted.org/packages/8f/83/f61505a05109ef3293dfb1ff594d13d64a2324ac3482be2cedc2be818256/frozenlist-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96f423a119f4777a4a056b66ce11527366a8bb92f54e541ade21f2374433f6d4", size = 243014, upload_time = "2025-10-06T05:36:11.394Z" }, - { url = "https://files.pythonhosted.org/packages/d8/cb/cb6c7b0f7d4023ddda30cf56b8b17494eb3a79e3fda666bf735f63118b35/frozenlist-1.8.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3462dd9475af2025c31cc61be6652dfa25cbfb56cbbf52f4ccfe029f38decaf8", size = 234909, upload_time = "2025-10-06T05:36:12.598Z" }, - { url = "https://files.pythonhosted.org/packages/31/c5/cd7a1f3b8b34af009fb17d4123c5a778b44ae2804e3ad6b86204255f9ec5/frozenlist-1.8.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4c800524c9cd9bac5166cd6f55285957fcfc907db323e193f2afcd4d9abd69b", size = 250049, upload_time = "2025-10-06T05:36:14.065Z" }, - { url = "https://files.pythonhosted.org/packages/c0/01/2f95d3b416c584a1e7f0e1d6d31998c4a795f7544069ee2e0962a4b60740/frozenlist-1.8.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d6a5df73acd3399d893dafc71663ad22534b5aa4f94e8a2fabfe856c3c1b6a52", size = 256485, upload_time = "2025-10-06T05:36:15.39Z" }, - { url = "https://files.pythonhosted.org/packages/ce/03/024bf7720b3abaebcff6d0793d73c154237b85bdf67b7ed55e5e9596dc9a/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:405e8fe955c2280ce66428b3ca55e12b3c4e9c336fb2103a4937e891c69a4a29", size = 237619, upload_time = "2025-10-06T05:36:16.558Z" }, - { url = "https://files.pythonhosted.org/packages/69/fa/f8abdfe7d76b731f5d8bd217827cf6764d4f1d9763407e42717b4bed50a0/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:908bd3f6439f2fef9e85031b59fd4f1297af54415fb60e4254a95f75b3cab3f3", size = 250320, upload_time = "2025-10-06T05:36:17.821Z" }, - { url = "https://files.pythonhosted.org/packages/f5/3c/b051329f718b463b22613e269ad72138cc256c540f78a6de89452803a47d/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:294e487f9ec720bd8ffcebc99d575f7eff3568a08a253d1ee1a0378754b74143", size = 246820, upload_time = "2025-10-06T05:36:19.046Z" }, - { url = "https://files.pythonhosted.org/packages/0f/ae/58282e8f98e444b3f4dd42448ff36fa38bef29e40d40f330b22e7108f565/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:74c51543498289c0c43656701be6b077f4b265868fa7f8a8859c197006efb608", size = 250518, upload_time = "2025-10-06T05:36:20.763Z" }, - { url = "https://files.pythonhosted.org/packages/8f/96/007e5944694d66123183845a106547a15944fbbb7154788cbf7272789536/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:776f352e8329135506a1d6bf16ac3f87bc25b28e765949282dcc627af36123aa", size = 239096, upload_time = "2025-10-06T05:36:22.129Z" }, - { url = "https://files.pythonhosted.org/packages/66/bb/852b9d6db2fa40be96f29c0d1205c306288f0684df8fd26ca1951d461a56/frozenlist-1.8.0-cp312-cp312-win32.whl", hash = "sha256:433403ae80709741ce34038da08511d4a77062aa924baf411ef73d1146e74faf", size = 39985, upload_time = "2025-10-06T05:36:23.661Z" }, - { url = "https://files.pythonhosted.org/packages/b8/af/38e51a553dd66eb064cdf193841f16f077585d4d28394c2fa6235cb41765/frozenlist-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:34187385b08f866104f0c0617404c8eb08165ab1272e884abc89c112e9c00746", size = 44591, upload_time = "2025-10-06T05:36:24.958Z" }, - { url = "https://files.pythonhosted.org/packages/a7/06/1dc65480ab147339fecc70797e9c2f69d9cea9cf38934ce08df070fdb9cb/frozenlist-1.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:fe3c58d2f5db5fbd18c2987cba06d51b0529f52bc3a6cdc33d3f4eab725104bd", size = 40102, upload_time = "2025-10-06T05:36:26.333Z" }, - { url = "https://files.pythonhosted.org/packages/2d/40/0832c31a37d60f60ed79e9dfb5a92e1e2af4f40a16a29abcc7992af9edff/frozenlist-1.8.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8d92f1a84bb12d9e56f818b3a746f3efba93c1b63c8387a73dde655e1e42282a", size = 85717, upload_time = "2025-10-06T05:36:27.341Z" }, - { url = "https://files.pythonhosted.org/packages/30/ba/b0b3de23f40bc55a7057bd38434e25c34fa48e17f20ee273bbde5e0650f3/frozenlist-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96153e77a591c8adc2ee805756c61f59fef4cf4073a9275ee86fe8cba41241f7", size = 49651, upload_time = "2025-10-06T05:36:28.855Z" }, - { url = "https://files.pythonhosted.org/packages/0c/ab/6e5080ee374f875296c4243c381bbdef97a9ac39c6e3ce1d5f7d42cb78d6/frozenlist-1.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f21f00a91358803399890ab167098c131ec2ddd5f8f5fd5fe9c9f2c6fcd91e40", size = 49417, upload_time = "2025-10-06T05:36:29.877Z" }, - { url = "https://files.pythonhosted.org/packages/d5/4e/e4691508f9477ce67da2015d8c00acd751e6287739123113a9fca6f1604e/frozenlist-1.8.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fb30f9626572a76dfe4293c7194a09fb1fe93ba94c7d4f720dfae3b646b45027", size = 234391, upload_time = "2025-10-06T05:36:31.301Z" }, - { url = "https://files.pythonhosted.org/packages/40/76/c202df58e3acdf12969a7895fd6f3bc016c642e6726aa63bd3025e0fc71c/frozenlist-1.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaa352d7047a31d87dafcacbabe89df0aa506abb5b1b85a2fb91bc3faa02d822", size = 233048, upload_time = "2025-10-06T05:36:32.531Z" }, - { url = "https://files.pythonhosted.org/packages/f9/c0/8746afb90f17b73ca5979c7a3958116e105ff796e718575175319b5bb4ce/frozenlist-1.8.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:03ae967b4e297f58f8c774c7eabcce57fe3c2434817d4385c50661845a058121", size = 226549, upload_time = "2025-10-06T05:36:33.706Z" }, - { url = "https://files.pythonhosted.org/packages/7e/eb/4c7eefc718ff72f9b6c4893291abaae5fbc0c82226a32dcd8ef4f7a5dbef/frozenlist-1.8.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f6292f1de555ffcc675941d65fffffb0a5bcd992905015f85d0592201793e0e5", size = 239833, upload_time = "2025-10-06T05:36:34.947Z" }, - { url = "https://files.pythonhosted.org/packages/c2/4e/e5c02187cf704224f8b21bee886f3d713ca379535f16893233b9d672ea71/frozenlist-1.8.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:29548f9b5b5e3460ce7378144c3010363d8035cea44bc0bf02d57f5a685e084e", size = 245363, upload_time = "2025-10-06T05:36:36.534Z" }, - { url = "https://files.pythonhosted.org/packages/1f/96/cb85ec608464472e82ad37a17f844889c36100eed57bea094518bf270692/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ec3cc8c5d4084591b4237c0a272cc4f50a5b03396a47d9caaf76f5d7b38a4f11", size = 229314, upload_time = "2025-10-06T05:36:38.582Z" }, - { url = "https://files.pythonhosted.org/packages/5d/6f/4ae69c550e4cee66b57887daeebe006fe985917c01d0fff9caab9883f6d0/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:517279f58009d0b1f2e7c1b130b377a349405da3f7621ed6bfae50b10adf20c1", size = 243365, upload_time = "2025-10-06T05:36:40.152Z" }, - { url = "https://files.pythonhosted.org/packages/7a/58/afd56de246cf11780a40a2c28dc7cbabbf06337cc8ddb1c780a2d97e88d8/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:db1e72ede2d0d7ccb213f218df6a078a9c09a7de257c2fe8fcef16d5925230b1", size = 237763, upload_time = "2025-10-06T05:36:41.355Z" }, - { url = "https://files.pythonhosted.org/packages/cb/36/cdfaf6ed42e2644740d4a10452d8e97fa1c062e2a8006e4b09f1b5fd7d63/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b4dec9482a65c54a5044486847b8a66bf10c9cb4926d42927ec4e8fd5db7fed8", size = 240110, upload_time = "2025-10-06T05:36:42.716Z" }, - { url = "https://files.pythonhosted.org/packages/03/a8/9ea226fbefad669f11b52e864c55f0bd57d3c8d7eb07e9f2e9a0b39502e1/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:21900c48ae04d13d416f0e1e0c4d81f7931f73a9dfa0b7a8746fb2fe7dd970ed", size = 233717, upload_time = "2025-10-06T05:36:44.251Z" }, - { url = "https://files.pythonhosted.org/packages/1e/0b/1b5531611e83ba7d13ccc9988967ea1b51186af64c42b7a7af465dcc9568/frozenlist-1.8.0-cp313-cp313-win32.whl", hash = "sha256:8b7b94a067d1c504ee0b16def57ad5738701e4ba10cec90529f13fa03c833496", size = 39628, upload_time = "2025-10-06T05:36:45.423Z" }, - { url = "https://files.pythonhosted.org/packages/d8/cf/174c91dbc9cc49bc7b7aab74d8b734e974d1faa8f191c74af9b7e80848e6/frozenlist-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:878be833caa6a3821caf85eb39c5ba92d28e85df26d57afb06b35b2efd937231", size = 43882, upload_time = "2025-10-06T05:36:46.796Z" }, - { url = "https://files.pythonhosted.org/packages/c1/17/502cd212cbfa96eb1388614fe39a3fc9ab87dbbe042b66f97acb57474834/frozenlist-1.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:44389d135b3ff43ba8cc89ff7f51f5a0bb6b63d829c8300f79a2fe4fe61bcc62", size = 39676, upload_time = "2025-10-06T05:36:47.8Z" }, - { url = "https://files.pythonhosted.org/packages/d2/5c/3bbfaa920dfab09e76946a5d2833a7cbdf7b9b4a91c714666ac4855b88b4/frozenlist-1.8.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:e25ac20a2ef37e91c1b39938b591457666a0fa835c7783c3a8f33ea42870db94", size = 89235, upload_time = "2025-10-06T05:36:48.78Z" }, - { url = "https://files.pythonhosted.org/packages/d2/d6/f03961ef72166cec1687e84e8925838442b615bd0b8854b54923ce5b7b8a/frozenlist-1.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:07cdca25a91a4386d2e76ad992916a85038a9b97561bf7a3fd12d5d9ce31870c", size = 50742, upload_time = "2025-10-06T05:36:49.837Z" }, - { url = "https://files.pythonhosted.org/packages/1e/bb/a6d12b7ba4c3337667d0e421f7181c82dda448ce4e7ad7ecd249a16fa806/frozenlist-1.8.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4e0c11f2cc6717e0a741f84a527c52616140741cd812a50422f83dc31749fb52", size = 51725, upload_time = "2025-10-06T05:36:50.851Z" }, - { url = "https://files.pythonhosted.org/packages/bc/71/d1fed0ffe2c2ccd70b43714c6cab0f4188f09f8a67a7914a6b46ee30f274/frozenlist-1.8.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b3210649ee28062ea6099cfda39e147fa1bc039583c8ee4481cb7811e2448c51", size = 284533, upload_time = "2025-10-06T05:36:51.898Z" }, - { url = "https://files.pythonhosted.org/packages/c9/1f/fb1685a7b009d89f9bf78a42d94461bc06581f6e718c39344754a5d9bada/frozenlist-1.8.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:581ef5194c48035a7de2aefc72ac6539823bb71508189e5de01d60c9dcd5fa65", size = 292506, upload_time = "2025-10-06T05:36:53.101Z" }, - { url = "https://files.pythonhosted.org/packages/e6/3b/b991fe1612703f7e0d05c0cf734c1b77aaf7c7d321df4572e8d36e7048c8/frozenlist-1.8.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3ef2d026f16a2b1866e1d86fc4e1291e1ed8a387b2c333809419a2f8b3a77b82", size = 274161, upload_time = "2025-10-06T05:36:54.309Z" }, - { url = "https://files.pythonhosted.org/packages/ca/ec/c5c618767bcdf66e88945ec0157d7f6c4a1322f1473392319b7a2501ded7/frozenlist-1.8.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5500ef82073f599ac84d888e3a8c1f77ac831183244bfd7f11eaa0289fb30714", size = 294676, upload_time = "2025-10-06T05:36:55.566Z" }, - { url = "https://files.pythonhosted.org/packages/7c/ce/3934758637d8f8a88d11f0585d6495ef54b2044ed6ec84492a91fa3b27aa/frozenlist-1.8.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:50066c3997d0091c411a66e710f4e11752251e6d2d73d70d8d5d4c76442a199d", size = 300638, upload_time = "2025-10-06T05:36:56.758Z" }, - { url = "https://files.pythonhosted.org/packages/fc/4f/a7e4d0d467298f42de4b41cbc7ddaf19d3cfeabaf9ff97c20c6c7ee409f9/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5c1c8e78426e59b3f8005e9b19f6ff46e5845895adbde20ece9218319eca6506", size = 283067, upload_time = "2025-10-06T05:36:57.965Z" }, - { url = "https://files.pythonhosted.org/packages/dc/48/c7b163063d55a83772b268e6d1affb960771b0e203b632cfe09522d67ea5/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:eefdba20de0d938cec6a89bd4d70f346a03108a19b9df4248d3cf0d88f1b0f51", size = 292101, upload_time = "2025-10-06T05:36:59.237Z" }, - { url = "https://files.pythonhosted.org/packages/9f/d0/2366d3c4ecdc2fd391e0afa6e11500bfba0ea772764d631bbf82f0136c9d/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cf253e0e1c3ceb4aaff6df637ce033ff6535fb8c70a764a8f46aafd3d6ab798e", size = 289901, upload_time = "2025-10-06T05:37:00.811Z" }, - { url = "https://files.pythonhosted.org/packages/b8/94/daff920e82c1b70e3618a2ac39fbc01ae3e2ff6124e80739ce5d71c9b920/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:032efa2674356903cd0261c4317a561a6850f3ac864a63fc1583147fb05a79b0", size = 289395, upload_time = "2025-10-06T05:37:02.115Z" }, - { url = "https://files.pythonhosted.org/packages/e3/20/bba307ab4235a09fdcd3cc5508dbabd17c4634a1af4b96e0f69bfe551ebd/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6da155091429aeba16851ecb10a9104a108bcd32f6c1642867eadaee401c1c41", size = 283659, upload_time = "2025-10-06T05:37:03.711Z" }, - { url = "https://files.pythonhosted.org/packages/fd/00/04ca1c3a7a124b6de4f8a9a17cc2fcad138b4608e7a3fc5877804b8715d7/frozenlist-1.8.0-cp313-cp313t-win32.whl", hash = "sha256:0f96534f8bfebc1a394209427d0f8a63d343c9779cda6fc25e8e121b5fd8555b", size = 43492, upload_time = "2025-10-06T05:37:04.915Z" }, - { url = "https://files.pythonhosted.org/packages/59/5e/c69f733a86a94ab10f68e496dc6b7e8bc078ebb415281d5698313e3af3a1/frozenlist-1.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5d63a068f978fc69421fb0e6eb91a9603187527c86b7cd3f534a5b77a592b888", size = 48034, upload_time = "2025-10-06T05:37:06.343Z" }, - { url = "https://files.pythonhosted.org/packages/16/6c/be9d79775d8abe79b05fa6d23da99ad6e7763a1d080fbae7290b286093fd/frozenlist-1.8.0-cp313-cp313t-win_arm64.whl", hash = "sha256:bf0a7e10b077bf5fb9380ad3ae8ce20ef919a6ad93b4552896419ac7e1d8e042", size = 41749, upload_time = "2025-10-06T05:37:07.431Z" }, - { url = "https://files.pythonhosted.org/packages/9a/9a/e35b4a917281c0b8419d4207f4334c8e8c5dbf4f3f5f9ada73958d937dcc/frozenlist-1.8.0-py3-none-any.whl", hash = "sha256:0c18a16eab41e82c295618a77502e17b195883241c563b00f0aa5106fc4eaa0d", size = 13409, upload_time = "2025-10-06T05:38:16.721Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/2d/f5/c831fac6cc817d26fd54c7eaccd04ef7e0288806943f7cc5bbf69f3ac1f0/frozenlist-1.8.0.tar.gz", hash = "sha256:3ede829ed8d842f6cd48fc7081d7a41001a56f1f38603f9d49bf3020d59a31ad", size = 45875, upload-time = "2025-10-06T05:38:17.865Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/4a/557715d5047da48d54e659203b9335be7bfaafda2c3f627b7c47e0b3aaf3/frozenlist-1.8.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b37f6d31b3dcea7deb5e9696e529a6aa4a898adc33db82da12e4c60a7c4d2011", size = 86230, upload-time = "2025-10-06T05:35:23.699Z" }, + { url = "https://files.pythonhosted.org/packages/a2/fb/c85f9fed3ea8fe8740e5b46a59cc141c23b842eca617da8876cfce5f760e/frozenlist-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef2b7b394f208233e471abc541cc6991f907ffd47dc72584acee3147899d6565", size = 49621, upload-time = "2025-10-06T05:35:25.341Z" }, + { url = "https://files.pythonhosted.org/packages/63/70/26ca3f06aace16f2352796b08704338d74b6d1a24ca38f2771afbb7ed915/frozenlist-1.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a88f062f072d1589b7b46e951698950e7da00442fc1cacbe17e19e025dc327ad", size = 49889, upload-time = "2025-10-06T05:35:26.797Z" }, + { url = "https://files.pythonhosted.org/packages/5d/ed/c7895fd2fde7f3ee70d248175f9b6cdf792fb741ab92dc59cd9ef3bd241b/frozenlist-1.8.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f57fb59d9f385710aa7060e89410aeb5058b99e62f4d16b08b91986b9a2140c2", size = 219464, upload-time = "2025-10-06T05:35:28.254Z" }, + { url = "https://files.pythonhosted.org/packages/6b/83/4d587dccbfca74cb8b810472392ad62bfa100bf8108c7223eb4c4fa2f7b3/frozenlist-1.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:799345ab092bee59f01a915620b5d014698547afd011e691a208637312db9186", size = 221649, upload-time = "2025-10-06T05:35:29.454Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c6/fd3b9cd046ec5fff9dab66831083bc2077006a874a2d3d9247dea93ddf7e/frozenlist-1.8.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c23c3ff005322a6e16f71bf8692fcf4d5a304aaafe1e262c98c6d4adc7be863e", size = 219188, upload-time = "2025-10-06T05:35:30.951Z" }, + { url = "https://files.pythonhosted.org/packages/ce/80/6693f55eb2e085fc8afb28cf611448fb5b90e98e068fa1d1b8d8e66e5c7d/frozenlist-1.8.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8a76ea0f0b9dfa06f254ee06053d93a600865b3274358ca48a352ce4f0798450", size = 231748, upload-time = "2025-10-06T05:35:32.101Z" }, + { url = "https://files.pythonhosted.org/packages/97/d6/e9459f7c5183854abd989ba384fe0cc1a0fb795a83c033f0571ec5933ca4/frozenlist-1.8.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c7366fe1418a6133d5aa824ee53d406550110984de7637d65a178010f759c6ef", size = 236351, upload-time = "2025-10-06T05:35:33.834Z" }, + { url = "https://files.pythonhosted.org/packages/97/92/24e97474b65c0262e9ecd076e826bfd1d3074adcc165a256e42e7b8a7249/frozenlist-1.8.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:13d23a45c4cebade99340c4165bd90eeb4a56c6d8a9d8aa49568cac19a6d0dc4", size = 218767, upload-time = "2025-10-06T05:35:35.205Z" }, + { url = "https://files.pythonhosted.org/packages/ee/bf/dc394a097508f15abff383c5108cb8ad880d1f64a725ed3b90d5c2fbf0bb/frozenlist-1.8.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:e4a3408834f65da56c83528fb52ce7911484f0d1eaf7b761fc66001db1646eff", size = 235887, upload-time = "2025-10-06T05:35:36.354Z" }, + { url = "https://files.pythonhosted.org/packages/40/90/25b201b9c015dbc999a5baf475a257010471a1fa8c200c843fd4abbee725/frozenlist-1.8.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:42145cd2748ca39f32801dad54aeea10039da6f86e303659db90db1c4b614c8c", size = 228785, upload-time = "2025-10-06T05:35:37.949Z" }, + { url = "https://files.pythonhosted.org/packages/84/f4/b5bc148df03082f05d2dd30c089e269acdbe251ac9a9cf4e727b2dbb8a3d/frozenlist-1.8.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e2de870d16a7a53901e41b64ffdf26f2fbb8917b3e6ebf398098d72c5b20bd7f", size = 230312, upload-time = "2025-10-06T05:35:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/db/4b/87e95b5d15097c302430e647136b7d7ab2398a702390cf4c8601975709e7/frozenlist-1.8.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:20e63c9493d33ee48536600d1a5c95eefc870cd71e7ab037763d1fbb89cc51e7", size = 217650, upload-time = "2025-10-06T05:35:40.377Z" }, + { url = "https://files.pythonhosted.org/packages/e5/70/78a0315d1fea97120591a83e0acd644da638c872f142fd72a6cebee825f3/frozenlist-1.8.0-cp310-cp310-win32.whl", hash = "sha256:adbeebaebae3526afc3c96fad434367cafbfd1b25d72369a9e5858453b1bb71a", size = 39659, upload-time = "2025-10-06T05:35:41.863Z" }, + { url = "https://files.pythonhosted.org/packages/66/aa/3f04523fb189a00e147e60c5b2205126118f216b0aa908035c45336e27e4/frozenlist-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:667c3777ca571e5dbeb76f331562ff98b957431df140b54c85fd4d52eea8d8f6", size = 43837, upload-time = "2025-10-06T05:35:43.205Z" }, + { url = "https://files.pythonhosted.org/packages/39/75/1135feecdd7c336938bd55b4dc3b0dfc46d85b9be12ef2628574b28de776/frozenlist-1.8.0-cp310-cp310-win_arm64.whl", hash = "sha256:80f85f0a7cc86e7a54c46d99c9e1318ff01f4687c172ede30fd52d19d1da1c8e", size = 39989, upload-time = "2025-10-06T05:35:44.596Z" }, + { url = "https://files.pythonhosted.org/packages/bc/03/077f869d540370db12165c0aa51640a873fb661d8b315d1d4d67b284d7ac/frozenlist-1.8.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:09474e9831bc2b2199fad6da3c14c7b0fbdd377cce9d3d77131be28906cb7d84", size = 86912, upload-time = "2025-10-06T05:35:45.98Z" }, + { url = "https://files.pythonhosted.org/packages/df/b5/7610b6bd13e4ae77b96ba85abea1c8cb249683217ef09ac9e0ae93f25a91/frozenlist-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:17c883ab0ab67200b5f964d2b9ed6b00971917d5d8a92df149dc2c9779208ee9", size = 50046, upload-time = "2025-10-06T05:35:47.009Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ef/0e8f1fe32f8a53dd26bdd1f9347efe0778b0fddf62789ea683f4cc7d787d/frozenlist-1.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fa47e444b8ba08fffd1c18e8cdb9a75db1b6a27f17507522834ad13ed5922b93", size = 50119, upload-time = "2025-10-06T05:35:48.38Z" }, + { url = "https://files.pythonhosted.org/packages/11/b1/71a477adc7c36e5fb628245dfbdea2166feae310757dea848d02bd0689fd/frozenlist-1.8.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2552f44204b744fba866e573be4c1f9048d6a324dfe14475103fd51613eb1d1f", size = 231067, upload-time = "2025-10-06T05:35:49.97Z" }, + { url = "https://files.pythonhosted.org/packages/45/7e/afe40eca3a2dc19b9904c0f5d7edfe82b5304cb831391edec0ac04af94c2/frozenlist-1.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:957e7c38f250991e48a9a73e6423db1bb9dd14e722a10f6b8bb8e16a0f55f695", size = 233160, upload-time = "2025-10-06T05:35:51.729Z" }, + { url = "https://files.pythonhosted.org/packages/a6/aa/7416eac95603ce428679d273255ffc7c998d4132cfae200103f164b108aa/frozenlist-1.8.0-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:8585e3bb2cdea02fc88ffa245069c36555557ad3609e83be0ec71f54fd4abb52", size = 228544, upload-time = "2025-10-06T05:35:53.246Z" }, + { url = "https://files.pythonhosted.org/packages/8b/3d/2a2d1f683d55ac7e3875e4263d28410063e738384d3adc294f5ff3d7105e/frozenlist-1.8.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:edee74874ce20a373d62dc28b0b18b93f645633c2943fd90ee9d898550770581", size = 243797, upload-time = "2025-10-06T05:35:54.497Z" }, + { url = "https://files.pythonhosted.org/packages/78/1e/2d5565b589e580c296d3bb54da08d206e797d941a83a6fdea42af23be79c/frozenlist-1.8.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c9a63152fe95756b85f31186bddf42e4c02c6321207fd6601a1c89ebac4fe567", size = 247923, upload-time = "2025-10-06T05:35:55.861Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c3/65872fcf1d326a7f101ad4d86285c403c87be7d832b7470b77f6d2ed5ddc/frozenlist-1.8.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b6db2185db9be0a04fecf2f241c70b63b1a242e2805be291855078f2b404dd6b", size = 230886, upload-time = "2025-10-06T05:35:57.399Z" }, + { url = "https://files.pythonhosted.org/packages/a0/76/ac9ced601d62f6956f03cc794f9e04c81719509f85255abf96e2510f4265/frozenlist-1.8.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:f4be2e3d8bc8aabd566f8d5b8ba7ecc09249d74ba3c9ed52e54dc23a293f0b92", size = 245731, upload-time = "2025-10-06T05:35:58.563Z" }, + { url = "https://files.pythonhosted.org/packages/b9/49/ecccb5f2598daf0b4a1415497eba4c33c1e8ce07495eb07d2860c731b8d5/frozenlist-1.8.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:c8d1634419f39ea6f5c427ea2f90ca85126b54b50837f31497f3bf38266e853d", size = 241544, upload-time = "2025-10-06T05:35:59.719Z" }, + { url = "https://files.pythonhosted.org/packages/53/4b/ddf24113323c0bbcc54cb38c8b8916f1da7165e07b8e24a717b4a12cbf10/frozenlist-1.8.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:1a7fa382a4a223773ed64242dbe1c9c326ec09457e6b8428efb4118c685c3dfd", size = 241806, upload-time = "2025-10-06T05:36:00.959Z" }, + { url = "https://files.pythonhosted.org/packages/a7/fb/9b9a084d73c67175484ba2789a59f8eebebd0827d186a8102005ce41e1ba/frozenlist-1.8.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:11847b53d722050808926e785df837353bd4d75f1d494377e59b23594d834967", size = 229382, upload-time = "2025-10-06T05:36:02.22Z" }, + { url = "https://files.pythonhosted.org/packages/95/a3/c8fb25aac55bf5e12dae5c5aa6a98f85d436c1dc658f21c3ac73f9fa95e5/frozenlist-1.8.0-cp311-cp311-win32.whl", hash = "sha256:27c6e8077956cf73eadd514be8fb04d77fc946a7fe9f7fe167648b0b9085cc25", size = 39647, upload-time = "2025-10-06T05:36:03.409Z" }, + { url = "https://files.pythonhosted.org/packages/0a/f5/603d0d6a02cfd4c8f2a095a54672b3cf967ad688a60fb9faf04fc4887f65/frozenlist-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:ac913f8403b36a2c8610bbfd25b8013488533e71e62b4b4adce9c86c8cea905b", size = 44064, upload-time = "2025-10-06T05:36:04.368Z" }, + { url = "https://files.pythonhosted.org/packages/5d/16/c2c9ab44e181f043a86f9a8f84d5124b62dbcb3a02c0977ec72b9ac1d3e0/frozenlist-1.8.0-cp311-cp311-win_arm64.whl", hash = "sha256:d4d3214a0f8394edfa3e303136d0575eece0745ff2b47bd2cb2e66dd92d4351a", size = 39937, upload-time = "2025-10-06T05:36:05.669Z" }, + { url = "https://files.pythonhosted.org/packages/69/29/948b9aa87e75820a38650af445d2ef2b6b8a6fab1a23b6bb9e4ef0be2d59/frozenlist-1.8.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:78f7b9e5d6f2fdb88cdde9440dc147259b62b9d3b019924def9f6478be254ac1", size = 87782, upload-time = "2025-10-06T05:36:06.649Z" }, + { url = "https://files.pythonhosted.org/packages/64/80/4f6e318ee2a7c0750ed724fa33a4bdf1eacdc5a39a7a24e818a773cd91af/frozenlist-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:229bf37d2e4acdaf808fd3f06e854a4a7a3661e871b10dc1f8f1896a3b05f18b", size = 50594, upload-time = "2025-10-06T05:36:07.69Z" }, + { url = "https://files.pythonhosted.org/packages/2b/94/5c8a2b50a496b11dd519f4a24cb5496cf125681dd99e94c604ccdea9419a/frozenlist-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f833670942247a14eafbb675458b4e61c82e002a148f49e68257b79296e865c4", size = 50448, upload-time = "2025-10-06T05:36:08.78Z" }, + { url = "https://files.pythonhosted.org/packages/6a/bd/d91c5e39f490a49df14320f4e8c80161cfcce09f1e2cde1edd16a551abb3/frozenlist-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:494a5952b1c597ba44e0e78113a7266e656b9794eec897b19ead706bd7074383", size = 242411, upload-time = "2025-10-06T05:36:09.801Z" }, + { url = "https://files.pythonhosted.org/packages/8f/83/f61505a05109ef3293dfb1ff594d13d64a2324ac3482be2cedc2be818256/frozenlist-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96f423a119f4777a4a056b66ce11527366a8bb92f54e541ade21f2374433f6d4", size = 243014, upload-time = "2025-10-06T05:36:11.394Z" }, + { url = "https://files.pythonhosted.org/packages/d8/cb/cb6c7b0f7d4023ddda30cf56b8b17494eb3a79e3fda666bf735f63118b35/frozenlist-1.8.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3462dd9475af2025c31cc61be6652dfa25cbfb56cbbf52f4ccfe029f38decaf8", size = 234909, upload-time = "2025-10-06T05:36:12.598Z" }, + { url = "https://files.pythonhosted.org/packages/31/c5/cd7a1f3b8b34af009fb17d4123c5a778b44ae2804e3ad6b86204255f9ec5/frozenlist-1.8.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4c800524c9cd9bac5166cd6f55285957fcfc907db323e193f2afcd4d9abd69b", size = 250049, upload-time = "2025-10-06T05:36:14.065Z" }, + { url = "https://files.pythonhosted.org/packages/c0/01/2f95d3b416c584a1e7f0e1d6d31998c4a795f7544069ee2e0962a4b60740/frozenlist-1.8.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d6a5df73acd3399d893dafc71663ad22534b5aa4f94e8a2fabfe856c3c1b6a52", size = 256485, upload-time = "2025-10-06T05:36:15.39Z" }, + { url = "https://files.pythonhosted.org/packages/ce/03/024bf7720b3abaebcff6d0793d73c154237b85bdf67b7ed55e5e9596dc9a/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:405e8fe955c2280ce66428b3ca55e12b3c4e9c336fb2103a4937e891c69a4a29", size = 237619, upload-time = "2025-10-06T05:36:16.558Z" }, + { url = "https://files.pythonhosted.org/packages/69/fa/f8abdfe7d76b731f5d8bd217827cf6764d4f1d9763407e42717b4bed50a0/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:908bd3f6439f2fef9e85031b59fd4f1297af54415fb60e4254a95f75b3cab3f3", size = 250320, upload-time = "2025-10-06T05:36:17.821Z" }, + { url = "https://files.pythonhosted.org/packages/f5/3c/b051329f718b463b22613e269ad72138cc256c540f78a6de89452803a47d/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:294e487f9ec720bd8ffcebc99d575f7eff3568a08a253d1ee1a0378754b74143", size = 246820, upload-time = "2025-10-06T05:36:19.046Z" }, + { url = "https://files.pythonhosted.org/packages/0f/ae/58282e8f98e444b3f4dd42448ff36fa38bef29e40d40f330b22e7108f565/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:74c51543498289c0c43656701be6b077f4b265868fa7f8a8859c197006efb608", size = 250518, upload-time = "2025-10-06T05:36:20.763Z" }, + { url = "https://files.pythonhosted.org/packages/8f/96/007e5944694d66123183845a106547a15944fbbb7154788cbf7272789536/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:776f352e8329135506a1d6bf16ac3f87bc25b28e765949282dcc627af36123aa", size = 239096, upload-time = "2025-10-06T05:36:22.129Z" }, + { url = "https://files.pythonhosted.org/packages/66/bb/852b9d6db2fa40be96f29c0d1205c306288f0684df8fd26ca1951d461a56/frozenlist-1.8.0-cp312-cp312-win32.whl", hash = "sha256:433403ae80709741ce34038da08511d4a77062aa924baf411ef73d1146e74faf", size = 39985, upload-time = "2025-10-06T05:36:23.661Z" }, + { url = "https://files.pythonhosted.org/packages/b8/af/38e51a553dd66eb064cdf193841f16f077585d4d28394c2fa6235cb41765/frozenlist-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:34187385b08f866104f0c0617404c8eb08165ab1272e884abc89c112e9c00746", size = 44591, upload-time = "2025-10-06T05:36:24.958Z" }, + { url = "https://files.pythonhosted.org/packages/a7/06/1dc65480ab147339fecc70797e9c2f69d9cea9cf38934ce08df070fdb9cb/frozenlist-1.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:fe3c58d2f5db5fbd18c2987cba06d51b0529f52bc3a6cdc33d3f4eab725104bd", size = 40102, upload-time = "2025-10-06T05:36:26.333Z" }, + { url = "https://files.pythonhosted.org/packages/2d/40/0832c31a37d60f60ed79e9dfb5a92e1e2af4f40a16a29abcc7992af9edff/frozenlist-1.8.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8d92f1a84bb12d9e56f818b3a746f3efba93c1b63c8387a73dde655e1e42282a", size = 85717, upload-time = "2025-10-06T05:36:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/30/ba/b0b3de23f40bc55a7057bd38434e25c34fa48e17f20ee273bbde5e0650f3/frozenlist-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96153e77a591c8adc2ee805756c61f59fef4cf4073a9275ee86fe8cba41241f7", size = 49651, upload-time = "2025-10-06T05:36:28.855Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ab/6e5080ee374f875296c4243c381bbdef97a9ac39c6e3ce1d5f7d42cb78d6/frozenlist-1.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f21f00a91358803399890ab167098c131ec2ddd5f8f5fd5fe9c9f2c6fcd91e40", size = 49417, upload-time = "2025-10-06T05:36:29.877Z" }, + { url = "https://files.pythonhosted.org/packages/d5/4e/e4691508f9477ce67da2015d8c00acd751e6287739123113a9fca6f1604e/frozenlist-1.8.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fb30f9626572a76dfe4293c7194a09fb1fe93ba94c7d4f720dfae3b646b45027", size = 234391, upload-time = "2025-10-06T05:36:31.301Z" }, + { url = "https://files.pythonhosted.org/packages/40/76/c202df58e3acdf12969a7895fd6f3bc016c642e6726aa63bd3025e0fc71c/frozenlist-1.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaa352d7047a31d87dafcacbabe89df0aa506abb5b1b85a2fb91bc3faa02d822", size = 233048, upload-time = "2025-10-06T05:36:32.531Z" }, + { url = "https://files.pythonhosted.org/packages/f9/c0/8746afb90f17b73ca5979c7a3958116e105ff796e718575175319b5bb4ce/frozenlist-1.8.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:03ae967b4e297f58f8c774c7eabcce57fe3c2434817d4385c50661845a058121", size = 226549, upload-time = "2025-10-06T05:36:33.706Z" }, + { url = "https://files.pythonhosted.org/packages/7e/eb/4c7eefc718ff72f9b6c4893291abaae5fbc0c82226a32dcd8ef4f7a5dbef/frozenlist-1.8.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f6292f1de555ffcc675941d65fffffb0a5bcd992905015f85d0592201793e0e5", size = 239833, upload-time = "2025-10-06T05:36:34.947Z" }, + { url = "https://files.pythonhosted.org/packages/c2/4e/e5c02187cf704224f8b21bee886f3d713ca379535f16893233b9d672ea71/frozenlist-1.8.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:29548f9b5b5e3460ce7378144c3010363d8035cea44bc0bf02d57f5a685e084e", size = 245363, upload-time = "2025-10-06T05:36:36.534Z" }, + { url = "https://files.pythonhosted.org/packages/1f/96/cb85ec608464472e82ad37a17f844889c36100eed57bea094518bf270692/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ec3cc8c5d4084591b4237c0a272cc4f50a5b03396a47d9caaf76f5d7b38a4f11", size = 229314, upload-time = "2025-10-06T05:36:38.582Z" }, + { url = "https://files.pythonhosted.org/packages/5d/6f/4ae69c550e4cee66b57887daeebe006fe985917c01d0fff9caab9883f6d0/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:517279f58009d0b1f2e7c1b130b377a349405da3f7621ed6bfae50b10adf20c1", size = 243365, upload-time = "2025-10-06T05:36:40.152Z" }, + { url = "https://files.pythonhosted.org/packages/7a/58/afd56de246cf11780a40a2c28dc7cbabbf06337cc8ddb1c780a2d97e88d8/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:db1e72ede2d0d7ccb213f218df6a078a9c09a7de257c2fe8fcef16d5925230b1", size = 237763, upload-time = "2025-10-06T05:36:41.355Z" }, + { url = "https://files.pythonhosted.org/packages/cb/36/cdfaf6ed42e2644740d4a10452d8e97fa1c062e2a8006e4b09f1b5fd7d63/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b4dec9482a65c54a5044486847b8a66bf10c9cb4926d42927ec4e8fd5db7fed8", size = 240110, upload-time = "2025-10-06T05:36:42.716Z" }, + { url = "https://files.pythonhosted.org/packages/03/a8/9ea226fbefad669f11b52e864c55f0bd57d3c8d7eb07e9f2e9a0b39502e1/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:21900c48ae04d13d416f0e1e0c4d81f7931f73a9dfa0b7a8746fb2fe7dd970ed", size = 233717, upload-time = "2025-10-06T05:36:44.251Z" }, + { url = "https://files.pythonhosted.org/packages/1e/0b/1b5531611e83ba7d13ccc9988967ea1b51186af64c42b7a7af465dcc9568/frozenlist-1.8.0-cp313-cp313-win32.whl", hash = "sha256:8b7b94a067d1c504ee0b16def57ad5738701e4ba10cec90529f13fa03c833496", size = 39628, upload-time = "2025-10-06T05:36:45.423Z" }, + { url = "https://files.pythonhosted.org/packages/d8/cf/174c91dbc9cc49bc7b7aab74d8b734e974d1faa8f191c74af9b7e80848e6/frozenlist-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:878be833caa6a3821caf85eb39c5ba92d28e85df26d57afb06b35b2efd937231", size = 43882, upload-time = "2025-10-06T05:36:46.796Z" }, + { url = "https://files.pythonhosted.org/packages/c1/17/502cd212cbfa96eb1388614fe39a3fc9ab87dbbe042b66f97acb57474834/frozenlist-1.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:44389d135b3ff43ba8cc89ff7f51f5a0bb6b63d829c8300f79a2fe4fe61bcc62", size = 39676, upload-time = "2025-10-06T05:36:47.8Z" }, + { url = "https://files.pythonhosted.org/packages/d2/5c/3bbfaa920dfab09e76946a5d2833a7cbdf7b9b4a91c714666ac4855b88b4/frozenlist-1.8.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:e25ac20a2ef37e91c1b39938b591457666a0fa835c7783c3a8f33ea42870db94", size = 89235, upload-time = "2025-10-06T05:36:48.78Z" }, + { url = "https://files.pythonhosted.org/packages/d2/d6/f03961ef72166cec1687e84e8925838442b615bd0b8854b54923ce5b7b8a/frozenlist-1.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:07cdca25a91a4386d2e76ad992916a85038a9b97561bf7a3fd12d5d9ce31870c", size = 50742, upload-time = "2025-10-06T05:36:49.837Z" }, + { url = "https://files.pythonhosted.org/packages/1e/bb/a6d12b7ba4c3337667d0e421f7181c82dda448ce4e7ad7ecd249a16fa806/frozenlist-1.8.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4e0c11f2cc6717e0a741f84a527c52616140741cd812a50422f83dc31749fb52", size = 51725, upload-time = "2025-10-06T05:36:50.851Z" }, + { url = "https://files.pythonhosted.org/packages/bc/71/d1fed0ffe2c2ccd70b43714c6cab0f4188f09f8a67a7914a6b46ee30f274/frozenlist-1.8.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b3210649ee28062ea6099cfda39e147fa1bc039583c8ee4481cb7811e2448c51", size = 284533, upload-time = "2025-10-06T05:36:51.898Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/fb1685a7b009d89f9bf78a42d94461bc06581f6e718c39344754a5d9bada/frozenlist-1.8.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:581ef5194c48035a7de2aefc72ac6539823bb71508189e5de01d60c9dcd5fa65", size = 292506, upload-time = "2025-10-06T05:36:53.101Z" }, + { url = "https://files.pythonhosted.org/packages/e6/3b/b991fe1612703f7e0d05c0cf734c1b77aaf7c7d321df4572e8d36e7048c8/frozenlist-1.8.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3ef2d026f16a2b1866e1d86fc4e1291e1ed8a387b2c333809419a2f8b3a77b82", size = 274161, upload-time = "2025-10-06T05:36:54.309Z" }, + { url = "https://files.pythonhosted.org/packages/ca/ec/c5c618767bcdf66e88945ec0157d7f6c4a1322f1473392319b7a2501ded7/frozenlist-1.8.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5500ef82073f599ac84d888e3a8c1f77ac831183244bfd7f11eaa0289fb30714", size = 294676, upload-time = "2025-10-06T05:36:55.566Z" }, + { url = "https://files.pythonhosted.org/packages/7c/ce/3934758637d8f8a88d11f0585d6495ef54b2044ed6ec84492a91fa3b27aa/frozenlist-1.8.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:50066c3997d0091c411a66e710f4e11752251e6d2d73d70d8d5d4c76442a199d", size = 300638, upload-time = "2025-10-06T05:36:56.758Z" }, + { url = "https://files.pythonhosted.org/packages/fc/4f/a7e4d0d467298f42de4b41cbc7ddaf19d3cfeabaf9ff97c20c6c7ee409f9/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5c1c8e78426e59b3f8005e9b19f6ff46e5845895adbde20ece9218319eca6506", size = 283067, upload-time = "2025-10-06T05:36:57.965Z" }, + { url = "https://files.pythonhosted.org/packages/dc/48/c7b163063d55a83772b268e6d1affb960771b0e203b632cfe09522d67ea5/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:eefdba20de0d938cec6a89bd4d70f346a03108a19b9df4248d3cf0d88f1b0f51", size = 292101, upload-time = "2025-10-06T05:36:59.237Z" }, + { url = "https://files.pythonhosted.org/packages/9f/d0/2366d3c4ecdc2fd391e0afa6e11500bfba0ea772764d631bbf82f0136c9d/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cf253e0e1c3ceb4aaff6df637ce033ff6535fb8c70a764a8f46aafd3d6ab798e", size = 289901, upload-time = "2025-10-06T05:37:00.811Z" }, + { url = "https://files.pythonhosted.org/packages/b8/94/daff920e82c1b70e3618a2ac39fbc01ae3e2ff6124e80739ce5d71c9b920/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:032efa2674356903cd0261c4317a561a6850f3ac864a63fc1583147fb05a79b0", size = 289395, upload-time = "2025-10-06T05:37:02.115Z" }, + { url = "https://files.pythonhosted.org/packages/e3/20/bba307ab4235a09fdcd3cc5508dbabd17c4634a1af4b96e0f69bfe551ebd/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6da155091429aeba16851ecb10a9104a108bcd32f6c1642867eadaee401c1c41", size = 283659, upload-time = "2025-10-06T05:37:03.711Z" }, + { url = "https://files.pythonhosted.org/packages/fd/00/04ca1c3a7a124b6de4f8a9a17cc2fcad138b4608e7a3fc5877804b8715d7/frozenlist-1.8.0-cp313-cp313t-win32.whl", hash = "sha256:0f96534f8bfebc1a394209427d0f8a63d343c9779cda6fc25e8e121b5fd8555b", size = 43492, upload-time = "2025-10-06T05:37:04.915Z" }, + { url = "https://files.pythonhosted.org/packages/59/5e/c69f733a86a94ab10f68e496dc6b7e8bc078ebb415281d5698313e3af3a1/frozenlist-1.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5d63a068f978fc69421fb0e6eb91a9603187527c86b7cd3f534a5b77a592b888", size = 48034, upload-time = "2025-10-06T05:37:06.343Z" }, + { url = "https://files.pythonhosted.org/packages/16/6c/be9d79775d8abe79b05fa6d23da99ad6e7763a1d080fbae7290b286093fd/frozenlist-1.8.0-cp313-cp313t-win_arm64.whl", hash = "sha256:bf0a7e10b077bf5fb9380ad3ae8ce20ef919a6ad93b4552896419ac7e1d8e042", size = 41749, upload-time = "2025-10-06T05:37:07.431Z" }, + { url = "https://files.pythonhosted.org/packages/9a/9a/e35b4a917281c0b8419d4207f4334c8e8c5dbf4f3f5f9ada73958d937dcc/frozenlist-1.8.0-py3-none-any.whl", hash = "sha256:0c18a16eab41e82c295618a77502e17b195883241c563b00f0aa5106fc4eaa0d", size = 13409, upload-time = "2025-10-06T05:38:16.721Z" }, ] [[package]] name = "fsspec" version = "2026.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/7c/f60c259dcbf4f0c47cc4ddb8f7720d2dcdc8888c8e5ad84c73ea4531cc5b/fsspec-2026.2.0.tar.gz", hash = "sha256:6544e34b16869f5aacd5b90bdf1a71acb37792ea3ddf6125ee69a22a53fb8bff", size = 313441, upload_time = "2026-02-05T21:50:53.743Z" } +sdist = { url = "https://files.pythonhosted.org/packages/51/7c/f60c259dcbf4f0c47cc4ddb8f7720d2dcdc8888c8e5ad84c73ea4531cc5b/fsspec-2026.2.0.tar.gz", hash = "sha256:6544e34b16869f5aacd5b90bdf1a71acb37792ea3ddf6125ee69a22a53fb8bff", size = 313441, upload-time = "2026-02-05T21:50:53.743Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/ab/fb21f4c939bb440104cc2b396d3be1d9b7a9fd3c6c2a53d98c45b3d7c954/fsspec-2026.2.0-py3-none-any.whl", hash = "sha256:98de475b5cb3bd66bedd5c4679e87b4fdfe1a3bf4d707b151b3c07e58c9a2437", size = 202505, upload_time = "2026-02-05T21:50:51.819Z" }, + { url = "https://files.pythonhosted.org/packages/e6/ab/fb21f4c939bb440104cc2b396d3be1d9b7a9fd3c6c2a53d98c45b3d7c954/fsspec-2026.2.0-py3-none-any.whl", hash = "sha256:98de475b5cb3bd66bedd5c4679e87b4fdfe1a3bf4d707b151b3c07e58c9a2437", size = 202505, upload-time = "2026-02-05T21:50:51.819Z" }, ] [[package]] @@ -1156,9 +1158,44 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wcwidth" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a5/d3/8650919bc3c7c6e90ee3fa7fd618bf373cbbe55dff043bd67353dbb20cd8/ftfy-6.3.1.tar.gz", hash = "sha256:9b3c3d90f84fb267fe64d375a07b7f8912d817cf86009ae134aa03e1819506ec", size = 308927, upload_time = "2024-10-26T00:50:35.149Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/d3/8650919bc3c7c6e90ee3fa7fd618bf373cbbe55dff043bd67353dbb20cd8/ftfy-6.3.1.tar.gz", hash = "sha256:9b3c3d90f84fb267fe64d375a07b7f8912d817cf86009ae134aa03e1819506ec", size = 308927, upload-time = "2024-10-26T00:50:35.149Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ab/6e/81d47999aebc1b155f81eca4477a616a70f238a2549848c38983f3c22a82/ftfy-6.3.1-py3-none-any.whl", hash = "sha256:7c70eb532015cd2f9adb53f101fb6c7945988d023a085d127d1573dc49dd0083", size = 44821, upload_time = "2024-10-26T00:50:33.425Z" }, + { url = "https://files.pythonhosted.org/packages/ab/6e/81d47999aebc1b155f81eca4477a616a70f238a2549848c38983f3c22a82/ftfy-6.3.1-py3-none-any.whl", hash = "sha256:7c70eb532015cd2f9adb53f101fb6c7945988d023a085d127d1573dc49dd0083", size = 44821, upload-time = "2024-10-26T00:50:33.425Z" }, +] + +[[package]] +name = "fuzzysearch" +version = "0.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/b4/d92b429ba4bfe5461faa358f84092eceb5ea8985cd2e448daf38bba17737/fuzzysearch-0.8.1.tar.gz", hash = "sha256:e5f50962c6b1c3dfc6c8cdfd5e2604838c95cb10118e4cab518e5292e9e0b1c6", size = 39510, upload-time = "2025-11-11T08:47:10.321Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/66/60/07436c45651c310dac13f0eb383da5e3b34d717ffecf769b019ff5ab6b4c/fuzzysearch-0.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9d25c1e260f38dfda74cbbfd51211e4e644867d023131a5b8061050212d9a0d6", size = 31826, upload-time = "2025-11-11T08:46:20.779Z" }, + { url = "https://files.pythonhosted.org/packages/ce/6d/a771c014836bed5e074abf7bdd670370359453b7f935b664f86f899bb935/fuzzysearch-0.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:757f8d680411df73828bd3981613a8322ba18f9cf7e4a53792ad52c0f5203e09", size = 32541, upload-time = "2025-11-11T08:46:22.48Z" }, + { url = "https://files.pythonhosted.org/packages/75/55/b2c854fcdfde9a893985181495d05659739fc0d17f4515c0f3a7f4763058/fuzzysearch-0.8.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bd4f9e18b5decb8603d96b477e49dd3b81743bdc77dc5389f51eb4f8abc621", size = 54539, upload-time = "2025-11-11T08:46:23.502Z" }, + { url = "https://files.pythonhosted.org/packages/e8/9c/f85a643489dc9f3bd549940e6c47e44393f35684730f935fd23583244f84/fuzzysearch-0.8.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2acd7c3940f063e35bf34619100fa58ff88985264777f908458503a89b9bb33", size = 56279, upload-time = "2025-11-11T08:46:24.934Z" }, + { url = "https://files.pythonhosted.org/packages/98/0b/778a54487be30a7e1e5b3788cac7d2ee4e7134460a1db258fb72691958b0/fuzzysearch-0.8.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:928cef6c24b21120abb37e5bdd8a89dd2f71fb07af1e867c6ced282de81c0cc8", size = 55449, upload-time = "2025-11-11T08:46:26.025Z" }, + { url = "https://files.pythonhosted.org/packages/6e/80/70e5f0940555b62885c9a39e6fbc339875cd71d4149f66f28cfaf982d1fe/fuzzysearch-0.8.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e04ec175642e945b16ce01d2d61d1640385577b470301cf8d8c9545c01eb9ae0", size = 55619, upload-time = "2025-11-11T08:46:27.51Z" }, + { url = "https://files.pythonhosted.org/packages/ca/08/c2c6d04585f44ed8f6145bba383cace482237ae3d1acae9cc577d01f387a/fuzzysearch-0.8.1-cp310-cp310-win32.whl", hash = "sha256:7fac1c6db91dbaf9c5874ec9e87db884aa48bfdc264e8868af315d61140ba629", size = 35192, upload-time = "2025-11-11T08:46:28.96Z" }, + { url = "https://files.pythonhosted.org/packages/db/ee/4af7df35303ef8a3f095de2c6bea0ec2eeaf149e4b324c9f1408b778a7cb/fuzzysearch-0.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:797d4f6470e8287cdd0ca8de9993fdc932ce51ea75cd4ea963ce1e71dc20bc2a", size = 36798, upload-time = "2025-11-11T08:46:30.317Z" }, + { url = "https://files.pythonhosted.org/packages/f8/20/5fdd4fb37746a0b87104731e7237e7efb98e12cb0d91181ea9249a6ad14b/fuzzysearch-0.8.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:def3fc3379d3390cba7e2a34c55888b619484172f59b985f10e9784d79d6f14b", size = 31825, upload-time = "2025-11-11T08:46:31.723Z" }, + { url = "https://files.pythonhosted.org/packages/0a/e4/6aba3595fa67ab9bd0ff98fea2c6453b4a9587372b80d28fdbc51927b41b/fuzzysearch-0.8.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c0e9bbcf199907beac9b3d616bf3fec1695095bf4c813ef6c90307791fe18664", size = 32540, upload-time = "2025-11-11T08:46:32.745Z" }, + { url = "https://files.pythonhosted.org/packages/b7/71/7e4bd895b69538a6fe6744308eebf2742e2ad50aec50b433374c4a30b491/fuzzysearch-0.8.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4bc99cacb03c0f64ad64e0caaeb31298819cc7db63491fc9b876dd7f88ef81d", size = 54611, upload-time = "2025-11-11T08:46:33.799Z" }, + { url = "https://files.pythonhosted.org/packages/88/96/50a2c640e5c3a161a09235a262234792d01317fab466af64ad05180389db/fuzzysearch-0.8.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:066c3dafa48b3967f7d4a343c0a7ea081af9edafb99f2915a80d33a9b0a4bfc9", size = 56286, upload-time = "2025-11-11T08:46:35.057Z" }, + { url = "https://files.pythonhosted.org/packages/4a/59/645c1c3101875d9f07d7e28b6dc5ee2bb1d4c40ae42dbea22cb858f50042/fuzzysearch-0.8.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5eda34e841745c99873e02b2b425d806dbfc075d823f813d8cd68ff12e375095", size = 55523, upload-time = "2025-11-11T08:46:36.163Z" }, + { url = "https://files.pythonhosted.org/packages/e1/9f/55433fcbcfa681a0253b7bca17b1147ff771512b2f00f986c34b5beb014e/fuzzysearch-0.8.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:75d4669836d986135942268209e2b7686ed31dca552a7cf56c98e3802dbc5d9c", size = 55667, upload-time = "2025-11-11T08:46:37.852Z" }, + { url = "https://files.pythonhosted.org/packages/48/4a/064436a220277190fc2887ef5f050009d941adda9fb7232b9780e0c8d73e/fuzzysearch-0.8.1-cp311-cp311-win32.whl", hash = "sha256:80967eafa2cf44168fcd798a4bf62e6d8fd195cfb57ae62dff037cce2262b497", size = 35189, upload-time = "2025-11-11T08:46:39.382Z" }, + { url = "https://files.pythonhosted.org/packages/46/39/b5534c7b81b24d207343684f1403b16aa8f59d22e2931310a398bce650a3/fuzzysearch-0.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:b3aaa93889e309efa06754570fda8e98b5a7fd63cef8b67701deac7ef201acbf", size = 36798, upload-time = "2025-11-11T08:46:40.747Z" }, + { url = "https://files.pythonhosted.org/packages/ef/5f/0b0b2a56d59472becda3b7788e532e25d6a74451679d7d99b411a24553e7/fuzzysearch-0.8.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d3caa5c635ac87c67f58b8a50792073014989e0689263c494e81f5d2ced24101", size = 31830, upload-time = "2025-11-11T08:46:42.163Z" }, + { url = "https://files.pythonhosted.org/packages/2b/ce/f75349a22df809ea7a4433ff9e24edfbc3cfa160600f159b50e0e4e272a4/fuzzysearch-0.8.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a8187ebcfea9f76387b57a618480ff536ff2a5da67d5dd31af4c252bf8842d45", size = 32507, upload-time = "2025-11-11T08:46:43.315Z" }, + { url = "https://files.pythonhosted.org/packages/36/3c/d193b6b80d88d7e3b2c3a45fd582dedcb3b47c3bf2ffb2b85083e3b3ba8a/fuzzysearch-0.8.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5d19cf0ebfefe54737a0477defc218123a0addb9d52f43711286aab94603e288", size = 55361, upload-time = "2025-11-11T08:46:44.714Z" }, + { url = "https://files.pythonhosted.org/packages/7d/36/71a9bd65e361083ed3cbab135cd3a82ae2b089cbca6608af6106acc9017c/fuzzysearch-0.8.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85e5a4f8099517b2bfa384668160fd06b020106e86c6077d21e93a6b4fb348eb", size = 57213, upload-time = "2025-11-11T08:46:45.826Z" }, + { url = "https://files.pythonhosted.org/packages/0f/7d/23f8d9d137187f5dfececd14f16f79e8257eb0fd2e85397306474f987710/fuzzysearch-0.8.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ea17a28427fb750bbec47f2169f223f81a8388e81535f90d0590efd94489f803", size = 56287, upload-time = "2025-11-11T08:46:46.924Z" }, + { url = "https://files.pythonhosted.org/packages/ac/a6/c73e8ebc7e6e4ee7f8d2c509c232781dfc79451ebda2254915e0cef17566/fuzzysearch-0.8.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f4f11634b0d22dbd36513dae77b2f794d63b0275879da050b379f91bab398225", size = 56718, upload-time = "2025-11-11T08:46:47.921Z" }, + { url = "https://files.pythonhosted.org/packages/9b/3f/29d666a60f711a77354a5b23082fe210b4d0277e5d6e9e5146cf56162315/fuzzysearch-0.8.1-cp312-cp312-win32.whl", hash = "sha256:040693ed5c6c3b15807a240b7acf535cacd12771ca5094cec1df62c960010642", size = 35104, upload-time = "2025-11-11T08:46:49.378Z" }, + { url = "https://files.pythonhosted.org/packages/58/10/f2cef42d66311554723cfc1f7295ba1a83b3dd763845219bba3120bb3c08/fuzzysearch-0.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:46bb36a6c5a966d951125136379a8674377ceea9f755fd542536065a6d47d23e", size = 36766, upload-time = "2025-11-11T08:46:50.362Z" }, ] [[package]] @@ -1168,52 +1205,52 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "protobuf" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e5/7b/adfd75544c415c487b33061fe7ae526165241c1ea133f9a9125a56b39fd8/googleapis_common_protos-1.72.0.tar.gz", hash = "sha256:e55a601c1b32b52d7a3e65f43563e2aa61bcd737998ee672ac9b951cd49319f5", size = 147433, upload_time = "2025-11-06T18:29:24.087Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e5/7b/adfd75544c415c487b33061fe7ae526165241c1ea133f9a9125a56b39fd8/googleapis_common_protos-1.72.0.tar.gz", hash = "sha256:e55a601c1b32b52d7a3e65f43563e2aa61bcd737998ee672ac9b951cd49319f5", size = 147433, upload-time = "2025-11-06T18:29:24.087Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/ab/09169d5a4612a5f92490806649ac8d41e3ec9129c636754575b3553f4ea4/googleapis_common_protos-1.72.0-py3-none-any.whl", hash = "sha256:4299c5a82d5ae1a9702ada957347726b167f9f8d1fc352477702a1e851ff4038", size = 297515, upload_time = "2025-11-06T18:29:13.14Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ab/09169d5a4612a5f92490806649ac8d41e3ec9129c636754575b3553f4ea4/googleapis_common_protos-1.72.0-py3-none-any.whl", hash = "sha256:4299c5a82d5ae1a9702ada957347726b167f9f8d1fc352477702a1e851ff4038", size = 297515, upload-time = "2025-11-06T18:29:13.14Z" }, ] [[package]] name = "greenlet" version = "3.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/99/1cd3411c56a410994669062bd73dd58270c00cc074cac15f385a1fd91f8a/greenlet-3.3.1.tar.gz", hash = "sha256:41848f3230b58c08bb43dee542e74a2a2e34d3c59dc3076cec9151aeeedcae98", size = 184690, upload_time = "2026-01-23T15:31:02.076Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/65/5b235b40581ad75ab97dcd8b4218022ae8e3ab77c13c919f1a1dfe9171fd/greenlet-3.3.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:04bee4775f40ecefcdaa9d115ab44736cd4b9c5fba733575bfe9379419582e13", size = 273723, upload_time = "2026-01-23T15:30:37.521Z" }, - { url = "https://files.pythonhosted.org/packages/ce/ad/eb4729b85cba2d29499e0a04ca6fbdd8f540afd7be142fd571eea43d712f/greenlet-3.3.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50e1457f4fed12a50e427988a07f0f9df53cf0ee8da23fab16e6732c2ec909d4", size = 574874, upload_time = "2026-01-23T16:00:54.551Z" }, - { url = "https://files.pythonhosted.org/packages/87/32/57cad7fe4c8b82fdaa098c89498ef85ad92dfbb09d5eb713adedfc2ae1f5/greenlet-3.3.1-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:070472cd156f0656f86f92e954591644e158fd65aa415ffbe2d44ca77656a8f5", size = 586309, upload_time = "2026-01-23T16:05:25.18Z" }, - { url = "https://files.pythonhosted.org/packages/66/66/f041005cb87055e62b0d68680e88ec1a57f4688523d5e2fb305841bc8307/greenlet-3.3.1-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1108b61b06b5224656121c3c8ee8876161c491cbe74e5c519e0634c837cf93d5", size = 597461, upload_time = "2026-01-23T16:15:51.943Z" }, - { url = "https://files.pythonhosted.org/packages/87/eb/8a1ec2da4d55824f160594a75a9d8354a5fe0a300fb1c48e7944265217e1/greenlet-3.3.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3a300354f27dd86bae5fbf7002e6dd2b3255cd372e9242c933faf5e859b703fe", size = 586985, upload_time = "2026-01-23T15:32:47.968Z" }, - { url = "https://files.pythonhosted.org/packages/15/1c/0621dd4321dd8c351372ee8f9308136acb628600658a49be1b7504208738/greenlet-3.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e84b51cbebf9ae573b5fbd15df88887815e3253fc000a7d0ff95170e8f7e9729", size = 1547271, upload_time = "2026-01-23T16:04:18.977Z" }, - { url = "https://files.pythonhosted.org/packages/9d/53/24047f8924c83bea7a59c8678d9571209c6bfe5f4c17c94a78c06024e9f2/greenlet-3.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0093bd1a06d899892427217f0ff2a3c8f306182b8c754336d32e2d587c131b4", size = 1613427, upload_time = "2026-01-23T15:33:44.428Z" }, - { url = "https://files.pythonhosted.org/packages/ff/07/ac9bf1ec008916d1a3373cae212884c1dcff4a4ba0d41127ce81a8deb4e9/greenlet-3.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:7932f5f57609b6a3b82cc11877709aa7a98e3308983ed93552a1c377069b20c8", size = 226100, upload_time = "2026-01-23T15:30:56.957Z" }, - { url = "https://files.pythonhosted.org/packages/ec/e8/2e1462c8fdbe0f210feb5ac7ad2d9029af8be3bf45bd9fa39765f821642f/greenlet-3.3.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:5fd23b9bc6d37b563211c6abbb1b3cab27db385a4449af5c32e932f93017080c", size = 274974, upload_time = "2026-01-23T15:31:02.891Z" }, - { url = "https://files.pythonhosted.org/packages/7e/a8/530a401419a6b302af59f67aaf0b9ba1015855ea7e56c036b5928793c5bd/greenlet-3.3.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09f51496a0bfbaa9d74d36a52d2580d1ef5ed4fdfcff0a73730abfbbbe1403dd", size = 577175, upload_time = "2026-01-23T16:00:56.213Z" }, - { url = "https://files.pythonhosted.org/packages/8e/89/7e812bb9c05e1aaef9b597ac1d0962b9021d2c6269354966451e885c4e6b/greenlet-3.3.1-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb0feb07fe6e6a74615ee62a880007d976cf739b6669cce95daa7373d4fc69c5", size = 590401, upload_time = "2026-01-23T16:05:26.365Z" }, - { url = "https://files.pythonhosted.org/packages/70/ae/e2d5f0e59b94a2269b68a629173263fa40b63da32f5c231307c349315871/greenlet-3.3.1-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:67ea3fc73c8cd92f42467a72b75e8f05ed51a0e9b1d15398c913416f2dafd49f", size = 601161, upload_time = "2026-01-23T16:15:53.456Z" }, - { url = "https://files.pythonhosted.org/packages/5c/ae/8d472e1f5ac5efe55c563f3eabb38c98a44b832602e12910750a7c025802/greenlet-3.3.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:39eda9ba259cc9801da05351eaa8576e9aa83eb9411e8f0c299e05d712a210f2", size = 590272, upload_time = "2026-01-23T15:32:49.411Z" }, - { url = "https://files.pythonhosted.org/packages/a8/51/0fde34bebfcadc833550717eade64e35ec8738e6b097d5d248274a01258b/greenlet-3.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e2e7e882f83149f0a71ac822ebf156d902e7a5d22c9045e3e0d1daf59cee2cc9", size = 1550729, upload_time = "2026-01-23T16:04:20.867Z" }, - { url = "https://files.pythonhosted.org/packages/16/c9/2fb47bee83b25b119d5a35d580807bb8b92480a54b68fef009a02945629f/greenlet-3.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:80aa4d79eb5564f2e0a6144fcc744b5a37c56c4a92d60920720e99210d88db0f", size = 1615552, upload_time = "2026-01-23T15:33:45.743Z" }, - { url = "https://files.pythonhosted.org/packages/1f/54/dcf9f737b96606f82f8dd05becfb8d238db0633dd7397d542a296fe9cad3/greenlet-3.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:32e4ca9777c5addcbf42ff3915d99030d8e00173a56f80001fb3875998fe410b", size = 226462, upload_time = "2026-01-23T15:36:50.422Z" }, - { url = "https://files.pythonhosted.org/packages/91/37/61e1015cf944ddd2337447d8e97fb423ac9bc21f9963fb5f206b53d65649/greenlet-3.3.1-cp311-cp311-win_arm64.whl", hash = "sha256:da19609432f353fed186cc1b85e9440db93d489f198b4bdf42ae19cc9d9ac9b4", size = 225715, upload_time = "2026-01-23T15:33:17.298Z" }, - { url = "https://files.pythonhosted.org/packages/f9/c8/9d76a66421d1ae24340dfae7e79c313957f6e3195c144d2c73333b5bfe34/greenlet-3.3.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:7e806ca53acf6d15a888405880766ec84721aa4181261cd11a457dfe9a7a4975", size = 276443, upload_time = "2026-01-23T15:30:10.066Z" }, - { url = "https://files.pythonhosted.org/packages/81/99/401ff34bb3c032d1f10477d199724f5e5f6fbfb59816ad1455c79c1eb8e7/greenlet-3.3.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d842c94b9155f1c9b3058036c24ffb8ff78b428414a19792b2380be9cecf4f36", size = 597359, upload_time = "2026-01-23T16:00:57.394Z" }, - { url = "https://files.pythonhosted.org/packages/2b/bc/4dcc0871ed557792d304f50be0f7487a14e017952ec689effe2180a6ff35/greenlet-3.3.1-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:20fedaadd422fa02695f82093f9a98bad3dab5fcda793c658b945fcde2ab27ba", size = 607805, upload_time = "2026-01-23T16:05:28.068Z" }, - { url = "https://files.pythonhosted.org/packages/3b/cd/7a7ca57588dac3389e97f7c9521cb6641fd8b6602faf1eaa4188384757df/greenlet-3.3.1-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c620051669fd04ac6b60ebc70478210119c56e2d5d5df848baec4312e260e4ca", size = 622363, upload_time = "2026-01-23T16:15:54.754Z" }, - { url = "https://files.pythonhosted.org/packages/cf/05/821587cf19e2ce1f2b24945d890b164401e5085f9d09cbd969b0c193cd20/greenlet-3.3.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14194f5f4305800ff329cbf02c5fcc88f01886cadd29941b807668a45f0d2336", size = 609947, upload_time = "2026-01-23T15:32:51.004Z" }, - { url = "https://files.pythonhosted.org/packages/a4/52/ee8c46ed9f8babaa93a19e577f26e3d28a519feac6350ed6f25f1afee7e9/greenlet-3.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7b2fe4150a0cf59f847a67db8c155ac36aed89080a6a639e9f16df5d6c6096f1", size = 1567487, upload_time = "2026-01-23T16:04:22.125Z" }, - { url = "https://files.pythonhosted.org/packages/8f/7c/456a74f07029597626f3a6db71b273a3632aecb9afafeeca452cfa633197/greenlet-3.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:49f4ad195d45f4a66a0eb9c1ba4832bb380570d361912fa3554746830d332149", size = 1636087, upload_time = "2026-01-23T15:33:47.486Z" }, - { url = "https://files.pythonhosted.org/packages/34/2f/5e0e41f33c69655300a5e54aeb637cf8ff57f1786a3aba374eacc0228c1d/greenlet-3.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cc98b9c4e4870fa983436afa999d4eb16b12872fab7071423d5262fa7120d57a", size = 227156, upload_time = "2026-01-23T15:34:34.808Z" }, - { url = "https://files.pythonhosted.org/packages/c8/ab/717c58343cf02c5265b531384b248787e04d8160b8afe53d9eec053d7b44/greenlet-3.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:bfb2d1763d777de5ee495c85309460f6fd8146e50ec9d0ae0183dbf6f0a829d1", size = 226403, upload_time = "2026-01-23T15:31:39.372Z" }, - { url = "https://files.pythonhosted.org/packages/ec/ab/d26750f2b7242c2b90ea2ad71de70cfcd73a948a49513188a0fc0d6fc15a/greenlet-3.3.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:7ab327905cabb0622adca5971e488064e35115430cec2c35a50fd36e72a315b3", size = 275205, upload_time = "2026-01-23T15:30:24.556Z" }, - { url = "https://files.pythonhosted.org/packages/10/d3/be7d19e8fad7c5a78eeefb2d896a08cd4643e1e90c605c4be3b46264998f/greenlet-3.3.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:65be2f026ca6a176f88fb935ee23c18333ccea97048076aef4db1ef5bc0713ac", size = 599284, upload_time = "2026-01-23T16:00:58.584Z" }, - { url = "https://files.pythonhosted.org/packages/ae/21/fe703aaa056fdb0f17e5afd4b5c80195bbdab701208918938bd15b00d39b/greenlet-3.3.1-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7a3ae05b3d225b4155bda56b072ceb09d05e974bc74be6c3fc15463cf69f33fd", size = 610274, upload_time = "2026-01-23T16:05:29.312Z" }, - { url = "https://files.pythonhosted.org/packages/06/00/95df0b6a935103c0452dad2203f5be8377e551b8466a29650c4c5a5af6cc/greenlet-3.3.1-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:12184c61e5d64268a160226fb4818af4df02cfead8379d7f8b99a56c3a54ff3e", size = 624375, upload_time = "2026-01-23T16:15:55.915Z" }, - { url = "https://files.pythonhosted.org/packages/cb/86/5c6ab23bb3c28c21ed6bebad006515cfe08b04613eb105ca0041fecca852/greenlet-3.3.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6423481193bbbe871313de5fd06a082f2649e7ce6e08015d2a76c1e9186ca5b3", size = 612904, upload_time = "2026-01-23T15:32:52.317Z" }, - { url = "https://files.pythonhosted.org/packages/c2/f3/7949994264e22639e40718c2daf6f6df5169bf48fb038c008a489ec53a50/greenlet-3.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:33a956fe78bbbda82bfc95e128d61129b32d66bcf0a20a1f0c08aa4839ffa951", size = 1567316, upload_time = "2026-01-23T16:04:23.316Z" }, - { url = "https://files.pythonhosted.org/packages/8d/6e/d73c94d13b6465e9f7cd6231c68abde838bb22408596c05d9059830b7872/greenlet-3.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b065d3284be43728dd280f6f9a13990b56470b81be20375a207cdc814a983f2", size = 1636549, upload_time = "2026-01-23T15:33:48.643Z" }, - { url = "https://files.pythonhosted.org/packages/5e/b3/c9c23a6478b3bcc91f979ce4ca50879e4d0b2bd7b9a53d8ecded719b92e2/greenlet-3.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:27289986f4e5b0edec7b5a91063c109f0276abb09a7e9bdab08437525977c946", size = 227042, upload_time = "2026-01-23T15:33:58.216Z" }, - { url = "https://files.pythonhosted.org/packages/90/e7/824beda656097edee36ab15809fd063447b200cc03a7f6a24c34d520bc88/greenlet-3.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:2f080e028001c5273e0b42690eaf359aeef9cb1389da0f171ea51a5dc3c7608d", size = 226294, upload_time = "2026-01-23T15:30:52.73Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/8a/99/1cd3411c56a410994669062bd73dd58270c00cc074cac15f385a1fd91f8a/greenlet-3.3.1.tar.gz", hash = "sha256:41848f3230b58c08bb43dee542e74a2a2e34d3c59dc3076cec9151aeeedcae98", size = 184690, upload-time = "2026-01-23T15:31:02.076Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/65/5b235b40581ad75ab97dcd8b4218022ae8e3ab77c13c919f1a1dfe9171fd/greenlet-3.3.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:04bee4775f40ecefcdaa9d115ab44736cd4b9c5fba733575bfe9379419582e13", size = 273723, upload-time = "2026-01-23T15:30:37.521Z" }, + { url = "https://files.pythonhosted.org/packages/ce/ad/eb4729b85cba2d29499e0a04ca6fbdd8f540afd7be142fd571eea43d712f/greenlet-3.3.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50e1457f4fed12a50e427988a07f0f9df53cf0ee8da23fab16e6732c2ec909d4", size = 574874, upload-time = "2026-01-23T16:00:54.551Z" }, + { url = "https://files.pythonhosted.org/packages/87/32/57cad7fe4c8b82fdaa098c89498ef85ad92dfbb09d5eb713adedfc2ae1f5/greenlet-3.3.1-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:070472cd156f0656f86f92e954591644e158fd65aa415ffbe2d44ca77656a8f5", size = 586309, upload-time = "2026-01-23T16:05:25.18Z" }, + { url = "https://files.pythonhosted.org/packages/66/66/f041005cb87055e62b0d68680e88ec1a57f4688523d5e2fb305841bc8307/greenlet-3.3.1-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1108b61b06b5224656121c3c8ee8876161c491cbe74e5c519e0634c837cf93d5", size = 597461, upload-time = "2026-01-23T16:15:51.943Z" }, + { url = "https://files.pythonhosted.org/packages/87/eb/8a1ec2da4d55824f160594a75a9d8354a5fe0a300fb1c48e7944265217e1/greenlet-3.3.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3a300354f27dd86bae5fbf7002e6dd2b3255cd372e9242c933faf5e859b703fe", size = 586985, upload-time = "2026-01-23T15:32:47.968Z" }, + { url = "https://files.pythonhosted.org/packages/15/1c/0621dd4321dd8c351372ee8f9308136acb628600658a49be1b7504208738/greenlet-3.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e84b51cbebf9ae573b5fbd15df88887815e3253fc000a7d0ff95170e8f7e9729", size = 1547271, upload-time = "2026-01-23T16:04:18.977Z" }, + { url = "https://files.pythonhosted.org/packages/9d/53/24047f8924c83bea7a59c8678d9571209c6bfe5f4c17c94a78c06024e9f2/greenlet-3.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0093bd1a06d899892427217f0ff2a3c8f306182b8c754336d32e2d587c131b4", size = 1613427, upload-time = "2026-01-23T15:33:44.428Z" }, + { url = "https://files.pythonhosted.org/packages/ff/07/ac9bf1ec008916d1a3373cae212884c1dcff4a4ba0d41127ce81a8deb4e9/greenlet-3.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:7932f5f57609b6a3b82cc11877709aa7a98e3308983ed93552a1c377069b20c8", size = 226100, upload-time = "2026-01-23T15:30:56.957Z" }, + { url = "https://files.pythonhosted.org/packages/ec/e8/2e1462c8fdbe0f210feb5ac7ad2d9029af8be3bf45bd9fa39765f821642f/greenlet-3.3.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:5fd23b9bc6d37b563211c6abbb1b3cab27db385a4449af5c32e932f93017080c", size = 274974, upload-time = "2026-01-23T15:31:02.891Z" }, + { url = "https://files.pythonhosted.org/packages/7e/a8/530a401419a6b302af59f67aaf0b9ba1015855ea7e56c036b5928793c5bd/greenlet-3.3.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09f51496a0bfbaa9d74d36a52d2580d1ef5ed4fdfcff0a73730abfbbbe1403dd", size = 577175, upload-time = "2026-01-23T16:00:56.213Z" }, + { url = "https://files.pythonhosted.org/packages/8e/89/7e812bb9c05e1aaef9b597ac1d0962b9021d2c6269354966451e885c4e6b/greenlet-3.3.1-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb0feb07fe6e6a74615ee62a880007d976cf739b6669cce95daa7373d4fc69c5", size = 590401, upload-time = "2026-01-23T16:05:26.365Z" }, + { url = "https://files.pythonhosted.org/packages/70/ae/e2d5f0e59b94a2269b68a629173263fa40b63da32f5c231307c349315871/greenlet-3.3.1-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:67ea3fc73c8cd92f42467a72b75e8f05ed51a0e9b1d15398c913416f2dafd49f", size = 601161, upload-time = "2026-01-23T16:15:53.456Z" }, + { url = "https://files.pythonhosted.org/packages/5c/ae/8d472e1f5ac5efe55c563f3eabb38c98a44b832602e12910750a7c025802/greenlet-3.3.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:39eda9ba259cc9801da05351eaa8576e9aa83eb9411e8f0c299e05d712a210f2", size = 590272, upload-time = "2026-01-23T15:32:49.411Z" }, + { url = "https://files.pythonhosted.org/packages/a8/51/0fde34bebfcadc833550717eade64e35ec8738e6b097d5d248274a01258b/greenlet-3.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e2e7e882f83149f0a71ac822ebf156d902e7a5d22c9045e3e0d1daf59cee2cc9", size = 1550729, upload-time = "2026-01-23T16:04:20.867Z" }, + { url = "https://files.pythonhosted.org/packages/16/c9/2fb47bee83b25b119d5a35d580807bb8b92480a54b68fef009a02945629f/greenlet-3.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:80aa4d79eb5564f2e0a6144fcc744b5a37c56c4a92d60920720e99210d88db0f", size = 1615552, upload-time = "2026-01-23T15:33:45.743Z" }, + { url = "https://files.pythonhosted.org/packages/1f/54/dcf9f737b96606f82f8dd05becfb8d238db0633dd7397d542a296fe9cad3/greenlet-3.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:32e4ca9777c5addcbf42ff3915d99030d8e00173a56f80001fb3875998fe410b", size = 226462, upload-time = "2026-01-23T15:36:50.422Z" }, + { url = "https://files.pythonhosted.org/packages/91/37/61e1015cf944ddd2337447d8e97fb423ac9bc21f9963fb5f206b53d65649/greenlet-3.3.1-cp311-cp311-win_arm64.whl", hash = "sha256:da19609432f353fed186cc1b85e9440db93d489f198b4bdf42ae19cc9d9ac9b4", size = 225715, upload-time = "2026-01-23T15:33:17.298Z" }, + { url = "https://files.pythonhosted.org/packages/f9/c8/9d76a66421d1ae24340dfae7e79c313957f6e3195c144d2c73333b5bfe34/greenlet-3.3.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:7e806ca53acf6d15a888405880766ec84721aa4181261cd11a457dfe9a7a4975", size = 276443, upload-time = "2026-01-23T15:30:10.066Z" }, + { url = "https://files.pythonhosted.org/packages/81/99/401ff34bb3c032d1f10477d199724f5e5f6fbfb59816ad1455c79c1eb8e7/greenlet-3.3.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d842c94b9155f1c9b3058036c24ffb8ff78b428414a19792b2380be9cecf4f36", size = 597359, upload-time = "2026-01-23T16:00:57.394Z" }, + { url = "https://files.pythonhosted.org/packages/2b/bc/4dcc0871ed557792d304f50be0f7487a14e017952ec689effe2180a6ff35/greenlet-3.3.1-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:20fedaadd422fa02695f82093f9a98bad3dab5fcda793c658b945fcde2ab27ba", size = 607805, upload-time = "2026-01-23T16:05:28.068Z" }, + { url = "https://files.pythonhosted.org/packages/3b/cd/7a7ca57588dac3389e97f7c9521cb6641fd8b6602faf1eaa4188384757df/greenlet-3.3.1-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c620051669fd04ac6b60ebc70478210119c56e2d5d5df848baec4312e260e4ca", size = 622363, upload-time = "2026-01-23T16:15:54.754Z" }, + { url = "https://files.pythonhosted.org/packages/cf/05/821587cf19e2ce1f2b24945d890b164401e5085f9d09cbd969b0c193cd20/greenlet-3.3.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14194f5f4305800ff329cbf02c5fcc88f01886cadd29941b807668a45f0d2336", size = 609947, upload-time = "2026-01-23T15:32:51.004Z" }, + { url = "https://files.pythonhosted.org/packages/a4/52/ee8c46ed9f8babaa93a19e577f26e3d28a519feac6350ed6f25f1afee7e9/greenlet-3.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7b2fe4150a0cf59f847a67db8c155ac36aed89080a6a639e9f16df5d6c6096f1", size = 1567487, upload-time = "2026-01-23T16:04:22.125Z" }, + { url = "https://files.pythonhosted.org/packages/8f/7c/456a74f07029597626f3a6db71b273a3632aecb9afafeeca452cfa633197/greenlet-3.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:49f4ad195d45f4a66a0eb9c1ba4832bb380570d361912fa3554746830d332149", size = 1636087, upload-time = "2026-01-23T15:33:47.486Z" }, + { url = "https://files.pythonhosted.org/packages/34/2f/5e0e41f33c69655300a5e54aeb637cf8ff57f1786a3aba374eacc0228c1d/greenlet-3.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cc98b9c4e4870fa983436afa999d4eb16b12872fab7071423d5262fa7120d57a", size = 227156, upload-time = "2026-01-23T15:34:34.808Z" }, + { url = "https://files.pythonhosted.org/packages/c8/ab/717c58343cf02c5265b531384b248787e04d8160b8afe53d9eec053d7b44/greenlet-3.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:bfb2d1763d777de5ee495c85309460f6fd8146e50ec9d0ae0183dbf6f0a829d1", size = 226403, upload-time = "2026-01-23T15:31:39.372Z" }, + { url = "https://files.pythonhosted.org/packages/ec/ab/d26750f2b7242c2b90ea2ad71de70cfcd73a948a49513188a0fc0d6fc15a/greenlet-3.3.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:7ab327905cabb0622adca5971e488064e35115430cec2c35a50fd36e72a315b3", size = 275205, upload-time = "2026-01-23T15:30:24.556Z" }, + { url = "https://files.pythonhosted.org/packages/10/d3/be7d19e8fad7c5a78eeefb2d896a08cd4643e1e90c605c4be3b46264998f/greenlet-3.3.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:65be2f026ca6a176f88fb935ee23c18333ccea97048076aef4db1ef5bc0713ac", size = 599284, upload-time = "2026-01-23T16:00:58.584Z" }, + { url = "https://files.pythonhosted.org/packages/ae/21/fe703aaa056fdb0f17e5afd4b5c80195bbdab701208918938bd15b00d39b/greenlet-3.3.1-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7a3ae05b3d225b4155bda56b072ceb09d05e974bc74be6c3fc15463cf69f33fd", size = 610274, upload-time = "2026-01-23T16:05:29.312Z" }, + { url = "https://files.pythonhosted.org/packages/06/00/95df0b6a935103c0452dad2203f5be8377e551b8466a29650c4c5a5af6cc/greenlet-3.3.1-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:12184c61e5d64268a160226fb4818af4df02cfead8379d7f8b99a56c3a54ff3e", size = 624375, upload-time = "2026-01-23T16:15:55.915Z" }, + { url = "https://files.pythonhosted.org/packages/cb/86/5c6ab23bb3c28c21ed6bebad006515cfe08b04613eb105ca0041fecca852/greenlet-3.3.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6423481193bbbe871313de5fd06a082f2649e7ce6e08015d2a76c1e9186ca5b3", size = 612904, upload-time = "2026-01-23T15:32:52.317Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f3/7949994264e22639e40718c2daf6f6df5169bf48fb038c008a489ec53a50/greenlet-3.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:33a956fe78bbbda82bfc95e128d61129b32d66bcf0a20a1f0c08aa4839ffa951", size = 1567316, upload-time = "2026-01-23T16:04:23.316Z" }, + { url = "https://files.pythonhosted.org/packages/8d/6e/d73c94d13b6465e9f7cd6231c68abde838bb22408596c05d9059830b7872/greenlet-3.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b065d3284be43728dd280f6f9a13990b56470b81be20375a207cdc814a983f2", size = 1636549, upload-time = "2026-01-23T15:33:48.643Z" }, + { url = "https://files.pythonhosted.org/packages/5e/b3/c9c23a6478b3bcc91f979ce4ca50879e4d0b2bd7b9a53d8ecded719b92e2/greenlet-3.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:27289986f4e5b0edec7b5a91063c109f0276abb09a7e9bdab08437525977c946", size = 227042, upload-time = "2026-01-23T15:33:58.216Z" }, + { url = "https://files.pythonhosted.org/packages/90/e7/824beda656097edee36ab15809fd063447b200cc03a7f6a24c34d520bc88/greenlet-3.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:2f080e028001c5273e0b42690eaf359aeef9cb1389da0f171ea51a5dc3c7608d", size = 226294, upload-time = "2026-01-23T15:30:52.73Z" }, ] [[package]] @@ -1223,48 +1260,48 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/06/8a/3d098f35c143a89520e568e6539cc098fcd294495910e359889ce8741c84/grpcio-1.78.0.tar.gz", hash = "sha256:7382b95189546f375c174f53a5fa873cef91c4b8005faa05cc5b3beea9c4f1c5", size = 12852416, upload_time = "2026-02-06T09:57:18.093Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/a8/690a085b4d1fe066130de97a87de32c45062cf2ecd218df9675add895550/grpcio-1.78.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:7cc47943d524ee0096f973e1081cb8f4f17a4615f2116882a5f1416e4cfe92b5", size = 5946986, upload_time = "2026-02-06T09:54:34.043Z" }, - { url = "https://files.pythonhosted.org/packages/c7/1b/e5213c5c0ced9d2d92778d30529ad5bb2dcfb6c48c4e2d01b1f302d33d64/grpcio-1.78.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:c3f293fdc675ccba4db5a561048cca627b5e7bd1c8a6973ffedabe7d116e22e2", size = 11816533, upload_time = "2026-02-06T09:54:37.04Z" }, - { url = "https://files.pythonhosted.org/packages/18/37/1ba32dccf0a324cc5ace744c44331e300b000a924bf14840f948c559ede7/grpcio-1.78.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:10a9a644b5dd5aec3b82b5b0b90d41c0fa94c85ef42cb42cf78a23291ddb5e7d", size = 6519964, upload_time = "2026-02-06T09:54:40.268Z" }, - { url = "https://files.pythonhosted.org/packages/ed/f5/c0e178721b818072f2e8b6fde13faaba942406c634009caf065121ce246b/grpcio-1.78.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4c5533d03a6cbd7f56acfc9cfb44ea64f63d29091e40e44010d34178d392d7eb", size = 7198058, upload_time = "2026-02-06T09:54:42.389Z" }, - { url = "https://files.pythonhosted.org/packages/5b/b2/40d43c91ae9cd667edc960135f9f08e58faa1576dc95af29f66ec912985f/grpcio-1.78.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ff870aebe9a93a85283837801d35cd5f8814fe2ad01e606861a7fb47c762a2b7", size = 6727212, upload_time = "2026-02-06T09:54:44.91Z" }, - { url = "https://files.pythonhosted.org/packages/ed/88/9da42eed498f0efcfcd9156e48ae63c0cde3bea398a16c99fb5198c885b6/grpcio-1.78.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:391e93548644e6b2726f1bb84ed60048d4bcc424ce5e4af0843d28ca0b754fec", size = 7300845, upload_time = "2026-02-06T09:54:47.562Z" }, - { url = "https://files.pythonhosted.org/packages/23/3f/1c66b7b1b19a8828890e37868411a6e6925df5a9030bfa87ab318f34095d/grpcio-1.78.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:df2c8f3141f7cbd112a6ebbd760290b5849cda01884554f7c67acc14e7b1758a", size = 8284605, upload_time = "2026-02-06T09:54:50.475Z" }, - { url = "https://files.pythonhosted.org/packages/94/c4/ca1bd87394f7b033e88525384b4d1e269e8424ab441ea2fba1a0c5b50986/grpcio-1.78.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bd8cb8026e5f5b50498a3c4f196f57f9db344dad829ffae16b82e4fdbaea2813", size = 7726672, upload_time = "2026-02-06T09:54:53.11Z" }, - { url = "https://files.pythonhosted.org/packages/41/09/f16e487d4cc65ccaf670f6ebdd1a17566b965c74fc3d93999d3b2821e052/grpcio-1.78.0-cp310-cp310-win32.whl", hash = "sha256:f8dff3d9777e5d2703a962ee5c286c239bf0ba173877cc68dc02c17d042e29de", size = 4076715, upload_time = "2026-02-06T09:54:55.549Z" }, - { url = "https://files.pythonhosted.org/packages/2a/32/4ce60d94e242725fd3bcc5673c04502c82a8e87b21ea411a63992dc39f8f/grpcio-1.78.0-cp310-cp310-win_amd64.whl", hash = "sha256:94f95cf5d532d0e717eed4fc1810e8e6eded04621342ec54c89a7c2f14b581bf", size = 4799157, upload_time = "2026-02-06T09:54:59.838Z" }, - { url = "https://files.pythonhosted.org/packages/86/c7/d0b780a29b0837bf4ca9580904dfb275c1fc321ded7897d620af7047ec57/grpcio-1.78.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:2777b783f6c13b92bd7b716667452c329eefd646bfb3f2e9dabea2e05dbd34f6", size = 5951525, upload_time = "2026-02-06T09:55:01.989Z" }, - { url = "https://files.pythonhosted.org/packages/c5/b1/96920bf2ee61df85a9503cb6f733fe711c0ff321a5a697d791b075673281/grpcio-1.78.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:9dca934f24c732750389ce49d638069c3892ad065df86cb465b3fa3012b70c9e", size = 11830418, upload_time = "2026-02-06T09:55:04.462Z" }, - { url = "https://files.pythonhosted.org/packages/83/0c/7c1528f098aeb75a97de2bae18c530f56959fb7ad6c882db45d9884d6edc/grpcio-1.78.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:459ab414b35f4496138d0ecd735fed26f1318af5e52cb1efbc82a09f0d5aa911", size = 6524477, upload_time = "2026-02-06T09:55:07.111Z" }, - { url = "https://files.pythonhosted.org/packages/8d/52/e7c1f3688f949058e19a011c4e0dec973da3d0ae5e033909677f967ae1f4/grpcio-1.78.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:082653eecbdf290e6e3e2c276ab2c54b9e7c299e07f4221872380312d8cf395e", size = 7198266, upload_time = "2026-02-06T09:55:10.016Z" }, - { url = "https://files.pythonhosted.org/packages/e5/61/8ac32517c1e856677282c34f2e7812d6c328fa02b8f4067ab80e77fdc9c9/grpcio-1.78.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:85f93781028ec63f383f6bc90db785a016319c561cc11151fbb7b34e0d012303", size = 6730552, upload_time = "2026-02-06T09:55:12.207Z" }, - { url = "https://files.pythonhosted.org/packages/bd/98/b8ee0158199250220734f620b12e4a345955ac7329cfd908d0bf0fda77f0/grpcio-1.78.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f12857d24d98441af6a1d5c87442d624411db486f7ba12550b07788f74b67b04", size = 7304296, upload_time = "2026-02-06T09:55:15.044Z" }, - { url = "https://files.pythonhosted.org/packages/bd/0f/7b72762e0d8840b58032a56fdbd02b78fc645b9fa993d71abf04edbc54f4/grpcio-1.78.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5397fff416b79e4b284959642a4e95ac4b0f1ece82c9993658e0e477d40551ec", size = 8288298, upload_time = "2026-02-06T09:55:17.276Z" }, - { url = "https://files.pythonhosted.org/packages/24/ae/ae4ce56bc5bb5caa3a486d60f5f6083ac3469228faa734362487176c15c5/grpcio-1.78.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:fbe6e89c7ffb48518384068321621b2a69cab509f58e40e4399fdd378fa6d074", size = 7730953, upload_time = "2026-02-06T09:55:19.545Z" }, - { url = "https://files.pythonhosted.org/packages/b5/6e/8052e3a28eb6a820c372b2eb4b5e32d195c661e137d3eca94d534a4cfd8a/grpcio-1.78.0-cp311-cp311-win32.whl", hash = "sha256:6092beabe1966a3229f599d7088b38dfc8ffa1608b5b5cdda31e591e6500f856", size = 4076503, upload_time = "2026-02-06T09:55:21.521Z" }, - { url = "https://files.pythonhosted.org/packages/08/62/f22c98c5265dfad327251fa2f840b591b1df5f5e15d88b19c18c86965b27/grpcio-1.78.0-cp311-cp311-win_amd64.whl", hash = "sha256:1afa62af6e23f88629f2b29ec9e52ec7c65a7176c1e0a83292b93c76ca882558", size = 4799767, upload_time = "2026-02-06T09:55:24.107Z" }, - { url = "https://files.pythonhosted.org/packages/4e/f4/7384ed0178203d6074446b3c4f46c90a22ddf7ae0b3aee521627f54cfc2a/grpcio-1.78.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:f9ab915a267fc47c7e88c387a3a28325b58c898e23d4995f765728f4e3dedb97", size = 5913985, upload_time = "2026-02-06T09:55:26.832Z" }, - { url = "https://files.pythonhosted.org/packages/81/ed/be1caa25f06594463f685b3790b320f18aea49b33166f4141bfdc2bfb236/grpcio-1.78.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3f8904a8165ab21e07e58bf3e30a73f4dffc7a1e0dbc32d51c61b5360d26f43e", size = 11811853, upload_time = "2026-02-06T09:55:29.224Z" }, - { url = "https://files.pythonhosted.org/packages/24/a7/f06d151afc4e64b7e3cc3e872d331d011c279aaab02831e40a81c691fb65/grpcio-1.78.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:859b13906ce098c0b493af92142ad051bf64c7870fa58a123911c88606714996", size = 6475766, upload_time = "2026-02-06T09:55:31.825Z" }, - { url = "https://files.pythonhosted.org/packages/8a/a8/4482922da832ec0082d0f2cc3a10976d84a7424707f25780b82814aafc0a/grpcio-1.78.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b2342d87af32790f934a79c3112641e7b27d63c261b8b4395350dad43eff1dc7", size = 7170027, upload_time = "2026-02-06T09:55:34.7Z" }, - { url = "https://files.pythonhosted.org/packages/54/bf/f4a3b9693e35d25b24b0b39fa46d7d8a3c439e0a3036c3451764678fec20/grpcio-1.78.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:12a771591ae40bc65ba67048fa52ef4f0e6db8279e595fd349f9dfddeef571f9", size = 6690766, upload_time = "2026-02-06T09:55:36.902Z" }, - { url = "https://files.pythonhosted.org/packages/c7/b9/521875265cc99fe5ad4c5a17010018085cae2810a928bf15ebe7d8bcd9cc/grpcio-1.78.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:185dea0d5260cbb2d224c507bf2a5444d5abbb1fa3594c1ed7e4c709d5eb8383", size = 7266161, upload_time = "2026-02-06T09:55:39.824Z" }, - { url = "https://files.pythonhosted.org/packages/05/86/296a82844fd40a4ad4a95f100b55044b4f817dece732bf686aea1a284147/grpcio-1.78.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:51b13f9aed9d59ee389ad666b8c2214cc87b5de258fa712f9ab05f922e3896c6", size = 8253303, upload_time = "2026-02-06T09:55:42.353Z" }, - { url = "https://files.pythonhosted.org/packages/f3/e4/ea3c0caf5468537f27ad5aab92b681ed7cc0ef5f8c9196d3fd42c8c2286b/grpcio-1.78.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fd5f135b1bd58ab088930b3c613455796dfa0393626a6972663ccdda5b4ac6ce", size = 7698222, upload_time = "2026-02-06T09:55:44.629Z" }, - { url = "https://files.pythonhosted.org/packages/d7/47/7f05f81e4bb6b831e93271fb12fd52ba7b319b5402cbc101d588f435df00/grpcio-1.78.0-cp312-cp312-win32.whl", hash = "sha256:94309f498bcc07e5a7d16089ab984d42ad96af1d94b5a4eb966a266d9fcabf68", size = 4066123, upload_time = "2026-02-06T09:55:47.644Z" }, - { url = "https://files.pythonhosted.org/packages/ad/e7/d6914822c88aa2974dbbd10903d801a28a19ce9cd8bad7e694cbbcf61528/grpcio-1.78.0-cp312-cp312-win_amd64.whl", hash = "sha256:9566fe4ababbb2610c39190791e5b829869351d14369603702e890ef3ad2d06e", size = 4797657, upload_time = "2026-02-06T09:55:49.86Z" }, - { url = "https://files.pythonhosted.org/packages/05/a9/8f75894993895f361ed8636cd9237f4ab39ef87fd30db17467235ed1c045/grpcio-1.78.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:ce3a90455492bf8bfa38e56fbbe1dbd4f872a3d8eeaf7337dc3b1c8aa28c271b", size = 5920143, upload_time = "2026-02-06T09:55:52.035Z" }, - { url = "https://files.pythonhosted.org/packages/55/06/0b78408e938ac424100100fd081189451b472236e8a3a1f6500390dc4954/grpcio-1.78.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:2bf5e2e163b356978b23652c4818ce4759d40f4712ee9ec5a83c4be6f8c23a3a", size = 11803926, upload_time = "2026-02-06T09:55:55.494Z" }, - { url = "https://files.pythonhosted.org/packages/88/93/b59fe7832ff6ae3c78b813ea43dac60e295fa03606d14d89d2e0ec29f4f3/grpcio-1.78.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8f2ac84905d12918e4e55a16da17939eb63e433dc11b677267c35568aa63fc84", size = 6478628, upload_time = "2026-02-06T09:55:58.533Z" }, - { url = "https://files.pythonhosted.org/packages/ed/df/e67e3734527f9926b7d9c0dde6cd998d1d26850c3ed8eeec81297967ac67/grpcio-1.78.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b58f37edab4a3881bc6c9bca52670610e0c9ca14e2ea3cf9debf185b870457fb", size = 7173574, upload_time = "2026-02-06T09:56:01.786Z" }, - { url = "https://files.pythonhosted.org/packages/a6/62/cc03fffb07bfba982a9ec097b164e8835546980aec25ecfa5f9c1a47e022/grpcio-1.78.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:735e38e176a88ce41840c21bb49098ab66177c64c82426e24e0082500cc68af5", size = 6692639, upload_time = "2026-02-06T09:56:04.529Z" }, - { url = "https://files.pythonhosted.org/packages/bf/9a/289c32e301b85bdb67d7ec68b752155e674ee3ba2173a1858f118e399ef3/grpcio-1.78.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2045397e63a7a0ee7957c25f7dbb36ddc110e0cfb418403d110c0a7a68a844e9", size = 7268838, upload_time = "2026-02-06T09:56:08.397Z" }, - { url = "https://files.pythonhosted.org/packages/0e/79/1be93f32add280461fa4773880196572563e9c8510861ac2da0ea0f892b6/grpcio-1.78.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a9f136fbafe7ccf4ac7e8e0c28b31066e810be52d6e344ef954a3a70234e1702", size = 8251878, upload_time = "2026-02-06T09:56:10.914Z" }, - { url = "https://files.pythonhosted.org/packages/65/65/793f8e95296ab92e4164593674ae6291b204bb5f67f9d4a711489cd30ffa/grpcio-1.78.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:748b6138585379c737adc08aeffd21222abbda1a86a0dca2a39682feb9196c20", size = 7695412, upload_time = "2026-02-06T09:56:13.593Z" }, - { url = "https://files.pythonhosted.org/packages/1c/9f/1e233fe697ecc82845942c2822ed06bb522e70d6771c28d5528e4c50f6a4/grpcio-1.78.0-cp313-cp313-win32.whl", hash = "sha256:271c73e6e5676afe4fc52907686670c7cea22ab2310b76a59b678403ed40d670", size = 4064899, upload_time = "2026-02-06T09:56:15.601Z" }, - { url = "https://files.pythonhosted.org/packages/4d/27/d86b89e36de8a951501fb06a0f38df19853210f341d0b28f83f4aa0ffa08/grpcio-1.78.0-cp313-cp313-win_amd64.whl", hash = "sha256:f2d4e43ee362adfc05994ed479334d5a451ab7bc3f3fee1b796b8ca66895acb4", size = 4797393, upload_time = "2026-02-06T09:56:17.882Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/06/8a/3d098f35c143a89520e568e6539cc098fcd294495910e359889ce8741c84/grpcio-1.78.0.tar.gz", hash = "sha256:7382b95189546f375c174f53a5fa873cef91c4b8005faa05cc5b3beea9c4f1c5", size = 12852416, upload-time = "2026-02-06T09:57:18.093Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/a8/690a085b4d1fe066130de97a87de32c45062cf2ecd218df9675add895550/grpcio-1.78.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:7cc47943d524ee0096f973e1081cb8f4f17a4615f2116882a5f1416e4cfe92b5", size = 5946986, upload-time = "2026-02-06T09:54:34.043Z" }, + { url = "https://files.pythonhosted.org/packages/c7/1b/e5213c5c0ced9d2d92778d30529ad5bb2dcfb6c48c4e2d01b1f302d33d64/grpcio-1.78.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:c3f293fdc675ccba4db5a561048cca627b5e7bd1c8a6973ffedabe7d116e22e2", size = 11816533, upload-time = "2026-02-06T09:54:37.04Z" }, + { url = "https://files.pythonhosted.org/packages/18/37/1ba32dccf0a324cc5ace744c44331e300b000a924bf14840f948c559ede7/grpcio-1.78.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:10a9a644b5dd5aec3b82b5b0b90d41c0fa94c85ef42cb42cf78a23291ddb5e7d", size = 6519964, upload-time = "2026-02-06T09:54:40.268Z" }, + { url = "https://files.pythonhosted.org/packages/ed/f5/c0e178721b818072f2e8b6fde13faaba942406c634009caf065121ce246b/grpcio-1.78.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4c5533d03a6cbd7f56acfc9cfb44ea64f63d29091e40e44010d34178d392d7eb", size = 7198058, upload-time = "2026-02-06T09:54:42.389Z" }, + { url = "https://files.pythonhosted.org/packages/5b/b2/40d43c91ae9cd667edc960135f9f08e58faa1576dc95af29f66ec912985f/grpcio-1.78.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ff870aebe9a93a85283837801d35cd5f8814fe2ad01e606861a7fb47c762a2b7", size = 6727212, upload-time = "2026-02-06T09:54:44.91Z" }, + { url = "https://files.pythonhosted.org/packages/ed/88/9da42eed498f0efcfcd9156e48ae63c0cde3bea398a16c99fb5198c885b6/grpcio-1.78.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:391e93548644e6b2726f1bb84ed60048d4bcc424ce5e4af0843d28ca0b754fec", size = 7300845, upload-time = "2026-02-06T09:54:47.562Z" }, + { url = "https://files.pythonhosted.org/packages/23/3f/1c66b7b1b19a8828890e37868411a6e6925df5a9030bfa87ab318f34095d/grpcio-1.78.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:df2c8f3141f7cbd112a6ebbd760290b5849cda01884554f7c67acc14e7b1758a", size = 8284605, upload-time = "2026-02-06T09:54:50.475Z" }, + { url = "https://files.pythonhosted.org/packages/94/c4/ca1bd87394f7b033e88525384b4d1e269e8424ab441ea2fba1a0c5b50986/grpcio-1.78.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bd8cb8026e5f5b50498a3c4f196f57f9db344dad829ffae16b82e4fdbaea2813", size = 7726672, upload-time = "2026-02-06T09:54:53.11Z" }, + { url = "https://files.pythonhosted.org/packages/41/09/f16e487d4cc65ccaf670f6ebdd1a17566b965c74fc3d93999d3b2821e052/grpcio-1.78.0-cp310-cp310-win32.whl", hash = "sha256:f8dff3d9777e5d2703a962ee5c286c239bf0ba173877cc68dc02c17d042e29de", size = 4076715, upload-time = "2026-02-06T09:54:55.549Z" }, + { url = "https://files.pythonhosted.org/packages/2a/32/4ce60d94e242725fd3bcc5673c04502c82a8e87b21ea411a63992dc39f8f/grpcio-1.78.0-cp310-cp310-win_amd64.whl", hash = "sha256:94f95cf5d532d0e717eed4fc1810e8e6eded04621342ec54c89a7c2f14b581bf", size = 4799157, upload-time = "2026-02-06T09:54:59.838Z" }, + { url = "https://files.pythonhosted.org/packages/86/c7/d0b780a29b0837bf4ca9580904dfb275c1fc321ded7897d620af7047ec57/grpcio-1.78.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:2777b783f6c13b92bd7b716667452c329eefd646bfb3f2e9dabea2e05dbd34f6", size = 5951525, upload-time = "2026-02-06T09:55:01.989Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b1/96920bf2ee61df85a9503cb6f733fe711c0ff321a5a697d791b075673281/grpcio-1.78.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:9dca934f24c732750389ce49d638069c3892ad065df86cb465b3fa3012b70c9e", size = 11830418, upload-time = "2026-02-06T09:55:04.462Z" }, + { url = "https://files.pythonhosted.org/packages/83/0c/7c1528f098aeb75a97de2bae18c530f56959fb7ad6c882db45d9884d6edc/grpcio-1.78.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:459ab414b35f4496138d0ecd735fed26f1318af5e52cb1efbc82a09f0d5aa911", size = 6524477, upload-time = "2026-02-06T09:55:07.111Z" }, + { url = "https://files.pythonhosted.org/packages/8d/52/e7c1f3688f949058e19a011c4e0dec973da3d0ae5e033909677f967ae1f4/grpcio-1.78.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:082653eecbdf290e6e3e2c276ab2c54b9e7c299e07f4221872380312d8cf395e", size = 7198266, upload-time = "2026-02-06T09:55:10.016Z" }, + { url = "https://files.pythonhosted.org/packages/e5/61/8ac32517c1e856677282c34f2e7812d6c328fa02b8f4067ab80e77fdc9c9/grpcio-1.78.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:85f93781028ec63f383f6bc90db785a016319c561cc11151fbb7b34e0d012303", size = 6730552, upload-time = "2026-02-06T09:55:12.207Z" }, + { url = "https://files.pythonhosted.org/packages/bd/98/b8ee0158199250220734f620b12e4a345955ac7329cfd908d0bf0fda77f0/grpcio-1.78.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f12857d24d98441af6a1d5c87442d624411db486f7ba12550b07788f74b67b04", size = 7304296, upload-time = "2026-02-06T09:55:15.044Z" }, + { url = "https://files.pythonhosted.org/packages/bd/0f/7b72762e0d8840b58032a56fdbd02b78fc645b9fa993d71abf04edbc54f4/grpcio-1.78.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5397fff416b79e4b284959642a4e95ac4b0f1ece82c9993658e0e477d40551ec", size = 8288298, upload-time = "2026-02-06T09:55:17.276Z" }, + { url = "https://files.pythonhosted.org/packages/24/ae/ae4ce56bc5bb5caa3a486d60f5f6083ac3469228faa734362487176c15c5/grpcio-1.78.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:fbe6e89c7ffb48518384068321621b2a69cab509f58e40e4399fdd378fa6d074", size = 7730953, upload-time = "2026-02-06T09:55:19.545Z" }, + { url = "https://files.pythonhosted.org/packages/b5/6e/8052e3a28eb6a820c372b2eb4b5e32d195c661e137d3eca94d534a4cfd8a/grpcio-1.78.0-cp311-cp311-win32.whl", hash = "sha256:6092beabe1966a3229f599d7088b38dfc8ffa1608b5b5cdda31e591e6500f856", size = 4076503, upload-time = "2026-02-06T09:55:21.521Z" }, + { url = "https://files.pythonhosted.org/packages/08/62/f22c98c5265dfad327251fa2f840b591b1df5f5e15d88b19c18c86965b27/grpcio-1.78.0-cp311-cp311-win_amd64.whl", hash = "sha256:1afa62af6e23f88629f2b29ec9e52ec7c65a7176c1e0a83292b93c76ca882558", size = 4799767, upload-time = "2026-02-06T09:55:24.107Z" }, + { url = "https://files.pythonhosted.org/packages/4e/f4/7384ed0178203d6074446b3c4f46c90a22ddf7ae0b3aee521627f54cfc2a/grpcio-1.78.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:f9ab915a267fc47c7e88c387a3a28325b58c898e23d4995f765728f4e3dedb97", size = 5913985, upload-time = "2026-02-06T09:55:26.832Z" }, + { url = "https://files.pythonhosted.org/packages/81/ed/be1caa25f06594463f685b3790b320f18aea49b33166f4141bfdc2bfb236/grpcio-1.78.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3f8904a8165ab21e07e58bf3e30a73f4dffc7a1e0dbc32d51c61b5360d26f43e", size = 11811853, upload-time = "2026-02-06T09:55:29.224Z" }, + { url = "https://files.pythonhosted.org/packages/24/a7/f06d151afc4e64b7e3cc3e872d331d011c279aaab02831e40a81c691fb65/grpcio-1.78.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:859b13906ce098c0b493af92142ad051bf64c7870fa58a123911c88606714996", size = 6475766, upload-time = "2026-02-06T09:55:31.825Z" }, + { url = "https://files.pythonhosted.org/packages/8a/a8/4482922da832ec0082d0f2cc3a10976d84a7424707f25780b82814aafc0a/grpcio-1.78.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b2342d87af32790f934a79c3112641e7b27d63c261b8b4395350dad43eff1dc7", size = 7170027, upload-time = "2026-02-06T09:55:34.7Z" }, + { url = "https://files.pythonhosted.org/packages/54/bf/f4a3b9693e35d25b24b0b39fa46d7d8a3c439e0a3036c3451764678fec20/grpcio-1.78.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:12a771591ae40bc65ba67048fa52ef4f0e6db8279e595fd349f9dfddeef571f9", size = 6690766, upload-time = "2026-02-06T09:55:36.902Z" }, + { url = "https://files.pythonhosted.org/packages/c7/b9/521875265cc99fe5ad4c5a17010018085cae2810a928bf15ebe7d8bcd9cc/grpcio-1.78.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:185dea0d5260cbb2d224c507bf2a5444d5abbb1fa3594c1ed7e4c709d5eb8383", size = 7266161, upload-time = "2026-02-06T09:55:39.824Z" }, + { url = "https://files.pythonhosted.org/packages/05/86/296a82844fd40a4ad4a95f100b55044b4f817dece732bf686aea1a284147/grpcio-1.78.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:51b13f9aed9d59ee389ad666b8c2214cc87b5de258fa712f9ab05f922e3896c6", size = 8253303, upload-time = "2026-02-06T09:55:42.353Z" }, + { url = "https://files.pythonhosted.org/packages/f3/e4/ea3c0caf5468537f27ad5aab92b681ed7cc0ef5f8c9196d3fd42c8c2286b/grpcio-1.78.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fd5f135b1bd58ab088930b3c613455796dfa0393626a6972663ccdda5b4ac6ce", size = 7698222, upload-time = "2026-02-06T09:55:44.629Z" }, + { url = "https://files.pythonhosted.org/packages/d7/47/7f05f81e4bb6b831e93271fb12fd52ba7b319b5402cbc101d588f435df00/grpcio-1.78.0-cp312-cp312-win32.whl", hash = "sha256:94309f498bcc07e5a7d16089ab984d42ad96af1d94b5a4eb966a266d9fcabf68", size = 4066123, upload-time = "2026-02-06T09:55:47.644Z" }, + { url = "https://files.pythonhosted.org/packages/ad/e7/d6914822c88aa2974dbbd10903d801a28a19ce9cd8bad7e694cbbcf61528/grpcio-1.78.0-cp312-cp312-win_amd64.whl", hash = "sha256:9566fe4ababbb2610c39190791e5b829869351d14369603702e890ef3ad2d06e", size = 4797657, upload-time = "2026-02-06T09:55:49.86Z" }, + { url = "https://files.pythonhosted.org/packages/05/a9/8f75894993895f361ed8636cd9237f4ab39ef87fd30db17467235ed1c045/grpcio-1.78.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:ce3a90455492bf8bfa38e56fbbe1dbd4f872a3d8eeaf7337dc3b1c8aa28c271b", size = 5920143, upload-time = "2026-02-06T09:55:52.035Z" }, + { url = "https://files.pythonhosted.org/packages/55/06/0b78408e938ac424100100fd081189451b472236e8a3a1f6500390dc4954/grpcio-1.78.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:2bf5e2e163b356978b23652c4818ce4759d40f4712ee9ec5a83c4be6f8c23a3a", size = 11803926, upload-time = "2026-02-06T09:55:55.494Z" }, + { url = "https://files.pythonhosted.org/packages/88/93/b59fe7832ff6ae3c78b813ea43dac60e295fa03606d14d89d2e0ec29f4f3/grpcio-1.78.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8f2ac84905d12918e4e55a16da17939eb63e433dc11b677267c35568aa63fc84", size = 6478628, upload-time = "2026-02-06T09:55:58.533Z" }, + { url = "https://files.pythonhosted.org/packages/ed/df/e67e3734527f9926b7d9c0dde6cd998d1d26850c3ed8eeec81297967ac67/grpcio-1.78.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b58f37edab4a3881bc6c9bca52670610e0c9ca14e2ea3cf9debf185b870457fb", size = 7173574, upload-time = "2026-02-06T09:56:01.786Z" }, + { url = "https://files.pythonhosted.org/packages/a6/62/cc03fffb07bfba982a9ec097b164e8835546980aec25ecfa5f9c1a47e022/grpcio-1.78.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:735e38e176a88ce41840c21bb49098ab66177c64c82426e24e0082500cc68af5", size = 6692639, upload-time = "2026-02-06T09:56:04.529Z" }, + { url = "https://files.pythonhosted.org/packages/bf/9a/289c32e301b85bdb67d7ec68b752155e674ee3ba2173a1858f118e399ef3/grpcio-1.78.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2045397e63a7a0ee7957c25f7dbb36ddc110e0cfb418403d110c0a7a68a844e9", size = 7268838, upload-time = "2026-02-06T09:56:08.397Z" }, + { url = "https://files.pythonhosted.org/packages/0e/79/1be93f32add280461fa4773880196572563e9c8510861ac2da0ea0f892b6/grpcio-1.78.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a9f136fbafe7ccf4ac7e8e0c28b31066e810be52d6e344ef954a3a70234e1702", size = 8251878, upload-time = "2026-02-06T09:56:10.914Z" }, + { url = "https://files.pythonhosted.org/packages/65/65/793f8e95296ab92e4164593674ae6291b204bb5f67f9d4a711489cd30ffa/grpcio-1.78.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:748b6138585379c737adc08aeffd21222abbda1a86a0dca2a39682feb9196c20", size = 7695412, upload-time = "2026-02-06T09:56:13.593Z" }, + { url = "https://files.pythonhosted.org/packages/1c/9f/1e233fe697ecc82845942c2822ed06bb522e70d6771c28d5528e4c50f6a4/grpcio-1.78.0-cp313-cp313-win32.whl", hash = "sha256:271c73e6e5676afe4fc52907686670c7cea22ab2310b76a59b678403ed40d670", size = 4064899, upload-time = "2026-02-06T09:56:15.601Z" }, + { url = "https://files.pythonhosted.org/packages/4d/27/d86b89e36de8a951501fb06a0f38df19853210f341d0b28f83f4aa0ffa08/grpcio-1.78.0-cp313-cp313-win_amd64.whl", hash = "sha256:f2d4e43ee362adfc05994ed479334d5a451ab7bc3f3fee1b796b8ca66895acb4", size = 4797393, upload-time = "2026-02-06T09:56:17.882Z" }, ] [[package]] @@ -1301,6 +1338,19 @@ dependencies = [ { name = "typing-extensions" }, ] +[[package]] +name = "guardrails-ai-ban-list" +version = "0.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fuzzysearch" }, + { name = "guardrails-ai" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/49/8ab9d0d8cf475e0b501399971010d220e4b5caf7ed9945d885a94878f21d/guardrails_ai_ban_list-0.1.0.tar.gz", hash = "sha256:e547c24e69eb45bb2d483d8aa79b302568c2057d8b5c3f47b0a6aff20e67a2a6", size = 4338, upload-time = "2026-06-24T19:15:58.562Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d3/06/f7e79429d68159af2a9a2504bf09dcc024eabacb036845da63f67c43f295/guardrails_ai_ban_list-0.1.0-py3-none-any.whl", hash = "sha256:c685527dc6f808d43bcc81e587b21e6ce20f4f855f248ec089959458c69b7bde", size = 4407, upload-time = "2026-06-24T19:15:57.353Z" }, +] + [[package]] name = "guardrails-ai-types" version = "0.4.0" @@ -1308,51 +1358,51 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d2/c9/f29c6dcf8f0c98618173ff9be834869b68190e7980915b3d76a369ef5f80/guardrails_ai_types-0.4.0.tar.gz", hash = "sha256:82bb9802c29c8a5cd85130abec3104cdf3f35c9b5d5d4b98bfaa9329b8080711", size = 17109, upload_time = "2026-04-02T16:55:22.972Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d2/c9/f29c6dcf8f0c98618173ff9be834869b68190e7980915b3d76a369ef5f80/guardrails_ai_types-0.4.0.tar.gz", hash = "sha256:82bb9802c29c8a5cd85130abec3104cdf3f35c9b5d5d4b98bfaa9329b8080711", size = 17109, upload-time = "2026-04-02T16:55:22.972Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/aa/28/7efe998779eb353846835e4b56ffc96f8f2bb6ea968a16336d14fe9ef4b4/guardrails_ai_types-0.4.0-py3-none-any.whl", hash = "sha256:f9d218a01e23823d986837a91c38713fbd969d56a4eb2994fc732332e5a0fe3b", size = 14966, upload_time = "2026-04-02T16:55:22.078Z" }, + { url = "https://files.pythonhosted.org/packages/aa/28/7efe998779eb353846835e4b56ffc96f8f2bb6ea968a16336d14fe9ef4b4/guardrails_ai_types-0.4.0-py3-none-any.whl", hash = "sha256:f9d218a01e23823d986837a91c38713fbd969d56a4eb2994fc732332e5a0fe3b", size = 14966, upload-time = "2026-04-02T16:55:22.078Z" }, ] [[package]] name = "guardrails-hub-types" version = "0.0.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a4/e7/6fa86cbcf9e7e144e2a2cbad8c2df791a06567b7a7731a055c645a7820a8/guardrails_hub_types-0.0.4.tar.gz", hash = "sha256:a5ad863fd6b354e41c3d83d8c1e835f7243a0ae0ec944b6601d1e3ee5d806a51", size = 20587, upload_time = "2024-08-12T22:51:02.295Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a4/e7/6fa86cbcf9e7e144e2a2cbad8c2df791a06567b7a7731a055c645a7820a8/guardrails_hub_types-0.0.4.tar.gz", hash = "sha256:a5ad863fd6b354e41c3d83d8c1e835f7243a0ae0ec944b6601d1e3ee5d806a51", size = 20587, upload-time = "2024-08-12T22:51:02.295Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/f8/e543dda7db28afa1b8b7d6219f6e08d419736b43a679e054b8134b98c8b4/guardrails_hub_types-0.0.4-py3-none-any.whl", hash = "sha256:ad86faecc142e853d6c6fa24ecb50723c86f834fbe1f2e6b932f2921a08b60b3", size = 36263, upload_time = "2024-08-12T22:51:00.725Z" }, + { url = "https://files.pythonhosted.org/packages/e3/f8/e543dda7db28afa1b8b7d6219f6e08d419736b43a679e054b8134b98c8b4/guardrails_hub_types-0.0.4-py3-none-any.whl", hash = "sha256:ad86faecc142e853d6c6fa24ecb50723c86f834fbe1f2e6b932f2921a08b60b3", size = 36263, upload-time = "2024-08-12T22:51:00.725Z" }, ] [[package]] name = "h11" version = "0.16.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload_time = "2025-04-24T03:35:25.427Z" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload_time = "2025-04-24T03:35:24.344Z" }, + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, ] [[package]] name = "hf-xet" version = "1.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/74/d8/5c06fc76461418326a7decf8367480c35be11a41fd938633929c60a9ec6b/hf_xet-1.5.0.tar.gz", hash = "sha256:e0fb0a34d9f406eed88233e829a67ec016bec5af19e480eac65a233ea289a948", size = 837196, upload_time = "2026-05-06T06:18:15.583Z" } +sdist = { url = "https://files.pythonhosted.org/packages/74/d8/5c06fc76461418326a7decf8367480c35be11a41fd938633929c60a9ec6b/hf_xet-1.5.0.tar.gz", hash = "sha256:e0fb0a34d9f406eed88233e829a67ec016bec5af19e480eac65a233ea289a948", size = 837196, upload-time = "2026-05-06T06:18:15.583Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/68/9b/6912c99070915a4f28119e3c5b52a9abd1eec0ad5cb293b8c967a0c6f5a2/hf_xet-1.5.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:7d70fe2ce97b9db73b9c9b9c81fe3693640aec83416a966c446afea54acfae3c", size = 4023383, upload_time = "2026-05-06T06:17:53.947Z" }, - { url = "https://files.pythonhosted.org/packages/0f/6d/9563cfde59b5d8128a9c7ec972a087f4c782e4f7bac5a85234edfd5d5e49/hf_xet-1.5.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:73a0dae8c71de3b0633a45c73f4a4a5ed09e94b43441d82981a781d4f12baa42", size = 3792751, upload_time = "2026-05-06T06:17:51.791Z" }, - { url = "https://files.pythonhosted.org/packages/07/a5/ed5a0cf35b49a0571af5a8f53416dad1877a718c021c9937c3a53cb45781/hf_xet-1.5.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a60290ec57e9b71767fba7c3645ddafdd0759974b540441510c629c6db6db24a", size = 4456058, upload_time = "2026-05-06T06:17:40.735Z" }, - { url = "https://files.pythonhosted.org/packages/60/fb/3ae8bf2a7a37a4197d0195d7247fd25b3952e15cb8a599e285dfaa6f52b3/hf_xet-1.5.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:e5de0f6deada0dada870bb376a11bcd1f08abf3a968a6d118f33e72d1b1eb480", size = 4250783, upload_time = "2026-05-06T06:17:38.412Z" }, - { url = "https://files.pythonhosted.org/packages/a2/9b/8bae40d4d91525085137196e84eb0ed49cf65b5e96e5c3ecdadd8bd0fac2/hf_xet-1.5.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c799d49f1a5544a0ef7591c0ee75e0d6b93d6f56dc7a4979f59f7518d2872216", size = 4445594, upload_time = "2026-05-06T06:18:04.219Z" }, - { url = "https://files.pythonhosted.org/packages/13/59/c74efbbd4e8728172b2cc72a2bc014d2947a4b7bdced932fbd3f5da1a4e5/hf_xet-1.5.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2baea1b0b989e5c152fe81425f7745ddc8901280ba3d97c98d8cdece7b706c60", size = 4663995, upload_time = "2026-05-06T06:18:06.1Z" }, - { url = "https://files.pythonhosted.org/packages/73/32/8e1e0410af64cda9b139d1dcebdc993a8ff9c8c7c0e2696ae356d75ccc0d/hf_xet-1.5.0-cp313-cp313t-win_amd64.whl", hash = "sha256:526345b3ed45f374f6317349df489167606736c876241ba984105afe7fd4839d", size = 3966608, upload_time = "2026-05-06T06:18:19.74Z" }, - { url = "https://files.pythonhosted.org/packages/fc/34/a8febc8f4edbea8b3e21b02ebc8b628679b84ba7e45cde624a7736b51500/hf_xet-1.5.0-cp313-cp313t-win_arm64.whl", hash = "sha256:786d28e2eb8315d5035544b9d137b4a842d600c434bb91bf7d0d953cce906ad4", size = 3796946, upload_time = "2026-05-06T06:18:17.568Z" }, - { url = "https://files.pythonhosted.org/packages/3d/fb/69ff198a82cae7eb1a69fb84d93b3a3e4816564d76817fe541ddc96874eb/hf_xet-1.5.0-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:dad0dc84e941b8ba3c860659fe1fdc35c049d47cce293f003287757e971a8f56", size = 4030814, upload_time = "2026-05-06T06:17:57.933Z" }, - { url = "https://files.pythonhosted.org/packages/9b/ff/edcc2b40162bef3ff78e14ab637e5f3b89243d6aee72f5949d3bb6a5af83/hf_xet-1.5.0-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:fd6e5a9b0fdac4ed03ed45ef79254a655b1aaab514a02202617fbf643f5fdf7a", size = 3798444, upload_time = "2026-05-06T06:17:55.79Z" }, - { url = "https://files.pythonhosted.org/packages/49/4d/103f76b04310e5e57656696cc184690d20c466af0bca3ca88f8c8ea5d4f3/hf_xet-1.5.0-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3531b1823a0e6d77d80f9ed15ca0e00f0d115094f8ac033d5cae88f4564cc949", size = 4465986, upload_time = "2026-05-06T06:17:44.886Z" }, - { url = "https://files.pythonhosted.org/packages/c4/a2/546f47f464737b3edbab6f8ddb57f2599b93d2cbb66f06abb475ccb48651/hf_xet-1.5.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:9a0ee58cd18d5ea799f7ed11290bbccbe56bdd8b1d97ca74b9cc49a3945d7a3b", size = 4259865, upload_time = "2026-05-06T06:17:42.639Z" }, - { url = "https://files.pythonhosted.org/packages/95/7f/1be593c1f28613be2e196473481cd81bfc5910795e30a34e8f744f6cac4f/hf_xet-1.5.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1e60df5a42e9bed8628b6416af2cba4cba57ae9f02de226a06b020d98e1aab18", size = 4459835, upload_time = "2026-05-06T06:18:08.026Z" }, - { url = "https://files.pythonhosted.org/packages/aa/b2/703569fc881f3284487e68cda7b42179978480da3c438042a6bbbb4a671c/hf_xet-1.5.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4b35549ce62601b84da4ff9b24d970032ace3d4430f52d91bcbb26c901d6c690", size = 4672414, upload_time = "2026-05-06T06:18:09.864Z" }, - { url = "https://files.pythonhosted.org/packages/af/37/1b6def445c567286b50aa3b33828158e135b1be44938dde59f11382a500c/hf_xet-1.5.0-cp37-abi3-win_amd64.whl", hash = "sha256:2806c7c17b4d23f8d88f7c4814f838c3b6150773fe339c20af23e1cfaf2797e4", size = 3977238, upload_time = "2026-05-06T06:18:23.621Z" }, - { url = "https://files.pythonhosted.org/packages/62/94/3b66b148778ee100dcfd69c2ca22b57b41b44d3063ceec934f209e9184ce/hf_xet-1.5.0-cp37-abi3-win_arm64.whl", hash = "sha256:b6c9df403040248c76d808d3e047d64db2d923bae593eb244c41e425cf6cd7be", size = 3806916, upload_time = "2026-05-06T06:18:21.7Z" }, + { url = "https://files.pythonhosted.org/packages/68/9b/6912c99070915a4f28119e3c5b52a9abd1eec0ad5cb293b8c967a0c6f5a2/hf_xet-1.5.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:7d70fe2ce97b9db73b9c9b9c81fe3693640aec83416a966c446afea54acfae3c", size = 4023383, upload-time = "2026-05-06T06:17:53.947Z" }, + { url = "https://files.pythonhosted.org/packages/0f/6d/9563cfde59b5d8128a9c7ec972a087f4c782e4f7bac5a85234edfd5d5e49/hf_xet-1.5.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:73a0dae8c71de3b0633a45c73f4a4a5ed09e94b43441d82981a781d4f12baa42", size = 3792751, upload-time = "2026-05-06T06:17:51.791Z" }, + { url = "https://files.pythonhosted.org/packages/07/a5/ed5a0cf35b49a0571af5a8f53416dad1877a718c021c9937c3a53cb45781/hf_xet-1.5.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a60290ec57e9b71767fba7c3645ddafdd0759974b540441510c629c6db6db24a", size = 4456058, upload-time = "2026-05-06T06:17:40.735Z" }, + { url = "https://files.pythonhosted.org/packages/60/fb/3ae8bf2a7a37a4197d0195d7247fd25b3952e15cb8a599e285dfaa6f52b3/hf_xet-1.5.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:e5de0f6deada0dada870bb376a11bcd1f08abf3a968a6d118f33e72d1b1eb480", size = 4250783, upload-time = "2026-05-06T06:17:38.412Z" }, + { url = "https://files.pythonhosted.org/packages/a2/9b/8bae40d4d91525085137196e84eb0ed49cf65b5e96e5c3ecdadd8bd0fac2/hf_xet-1.5.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c799d49f1a5544a0ef7591c0ee75e0d6b93d6f56dc7a4979f59f7518d2872216", size = 4445594, upload-time = "2026-05-06T06:18:04.219Z" }, + { url = "https://files.pythonhosted.org/packages/13/59/c74efbbd4e8728172b2cc72a2bc014d2947a4b7bdced932fbd3f5da1a4e5/hf_xet-1.5.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2baea1b0b989e5c152fe81425f7745ddc8901280ba3d97c98d8cdece7b706c60", size = 4663995, upload-time = "2026-05-06T06:18:06.1Z" }, + { url = "https://files.pythonhosted.org/packages/73/32/8e1e0410af64cda9b139d1dcebdc993a8ff9c8c7c0e2696ae356d75ccc0d/hf_xet-1.5.0-cp313-cp313t-win_amd64.whl", hash = "sha256:526345b3ed45f374f6317349df489167606736c876241ba984105afe7fd4839d", size = 3966608, upload-time = "2026-05-06T06:18:19.74Z" }, + { url = "https://files.pythonhosted.org/packages/fc/34/a8febc8f4edbea8b3e21b02ebc8b628679b84ba7e45cde624a7736b51500/hf_xet-1.5.0-cp313-cp313t-win_arm64.whl", hash = "sha256:786d28e2eb8315d5035544b9d137b4a842d600c434bb91bf7d0d953cce906ad4", size = 3796946, upload-time = "2026-05-06T06:18:17.568Z" }, + { url = "https://files.pythonhosted.org/packages/3d/fb/69ff198a82cae7eb1a69fb84d93b3a3e4816564d76817fe541ddc96874eb/hf_xet-1.5.0-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:dad0dc84e941b8ba3c860659fe1fdc35c049d47cce293f003287757e971a8f56", size = 4030814, upload-time = "2026-05-06T06:17:57.933Z" }, + { url = "https://files.pythonhosted.org/packages/9b/ff/edcc2b40162bef3ff78e14ab637e5f3b89243d6aee72f5949d3bb6a5af83/hf_xet-1.5.0-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:fd6e5a9b0fdac4ed03ed45ef79254a655b1aaab514a02202617fbf643f5fdf7a", size = 3798444, upload-time = "2026-05-06T06:17:55.79Z" }, + { url = "https://files.pythonhosted.org/packages/49/4d/103f76b04310e5e57656696cc184690d20c466af0bca3ca88f8c8ea5d4f3/hf_xet-1.5.0-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3531b1823a0e6d77d80f9ed15ca0e00f0d115094f8ac033d5cae88f4564cc949", size = 4465986, upload-time = "2026-05-06T06:17:44.886Z" }, + { url = "https://files.pythonhosted.org/packages/c4/a2/546f47f464737b3edbab6f8ddb57f2599b93d2cbb66f06abb475ccb48651/hf_xet-1.5.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:9a0ee58cd18d5ea799f7ed11290bbccbe56bdd8b1d97ca74b9cc49a3945d7a3b", size = 4259865, upload-time = "2026-05-06T06:17:42.639Z" }, + { url = "https://files.pythonhosted.org/packages/95/7f/1be593c1f28613be2e196473481cd81bfc5910795e30a34e8f744f6cac4f/hf_xet-1.5.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1e60df5a42e9bed8628b6416af2cba4cba57ae9f02de226a06b020d98e1aab18", size = 4459835, upload-time = "2026-05-06T06:18:08.026Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b2/703569fc881f3284487e68cda7b42179978480da3c438042a6bbbb4a671c/hf_xet-1.5.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4b35549ce62601b84da4ff9b24d970032ace3d4430f52d91bcbb26c901d6c690", size = 4672414, upload-time = "2026-05-06T06:18:09.864Z" }, + { url = "https://files.pythonhosted.org/packages/af/37/1b6def445c567286b50aa3b33828158e135b1be44938dde59f11382a500c/hf_xet-1.5.0-cp37-abi3-win_amd64.whl", hash = "sha256:2806c7c17b4d23f8d88f7c4814f838c3b6150773fe339c20af23e1cfaf2797e4", size = 3977238, upload-time = "2026-05-06T06:18:23.621Z" }, + { url = "https://files.pythonhosted.org/packages/62/94/3b66b148778ee100dcfd69c2ca22b57b41b44d3063ceec934f209e9184ce/hf_xet-1.5.0-cp37-abi3-win_arm64.whl", hash = "sha256:b6c9df403040248c76d808d3e047d64db2d923bae593eb244c41e425cf6cd7be", size = 3806916, upload-time = "2026-05-06T06:18:21.7Z" }, ] [[package]] @@ -1363,45 +1413,45 @@ dependencies = [ { name = "certifi" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload_time = "2025-04-24T22:06:22.219Z" } +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload_time = "2025-04-24T22:06:20.566Z" }, + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, ] [[package]] name = "httptools" version = "0.7.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b5/46/120a669232c7bdedb9d52d4aeae7e6c7dfe151e99dc70802e2fc7a5e1993/httptools-0.7.1.tar.gz", hash = "sha256:abd72556974f8e7c74a259655924a717a2365b236c882c3f6f8a45fe94703ac9", size = 258961, upload_time = "2025-10-10T03:55:08.559Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/e5/c07e0bcf4ec8db8164e9f6738c048b2e66aabf30e7506f440c4cc6953f60/httptools-0.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:11d01b0ff1fe02c4c32d60af61a4d613b74fad069e47e06e9067758c01e9ac78", size = 204531, upload_time = "2025-10-10T03:54:20.887Z" }, - { url = "https://files.pythonhosted.org/packages/7e/4f/35e3a63f863a659f92ffd92bef131f3e81cf849af26e6435b49bd9f6f751/httptools-0.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:84d86c1e5afdc479a6fdabf570be0d3eb791df0ae727e8dbc0259ed1249998d4", size = 109408, upload_time = "2025-10-10T03:54:22.455Z" }, - { url = "https://files.pythonhosted.org/packages/f5/71/b0a9193641d9e2471ac541d3b1b869538a5fb6419d52fd2669fa9c79e4b8/httptools-0.7.1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c8c751014e13d88d2be5f5f14fc8b89612fcfa92a9cc480f2bc1598357a23a05", size = 440889, upload_time = "2025-10-10T03:54:23.753Z" }, - { url = "https://files.pythonhosted.org/packages/eb/d9/2e34811397b76718750fea44658cb0205b84566e895192115252e008b152/httptools-0.7.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:654968cb6b6c77e37b832a9be3d3ecabb243bbe7a0b8f65fbc5b6b04c8fcabed", size = 440460, upload_time = "2025-10-10T03:54:25.313Z" }, - { url = "https://files.pythonhosted.org/packages/01/3f/a04626ebeacc489866bb4d82362c0657b2262bef381d68310134be7f40bb/httptools-0.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b580968316348b474b020edf3988eecd5d6eec4634ee6561e72ae3a2a0e00a8a", size = 425267, upload_time = "2025-10-10T03:54:26.81Z" }, - { url = "https://files.pythonhosted.org/packages/a5/99/adcd4f66614db627b587627c8ad6f4c55f18881549bab10ecf180562e7b9/httptools-0.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d496e2f5245319da9d764296e86c5bb6fcf0cf7a8806d3d000717a889c8c0b7b", size = 424429, upload_time = "2025-10-10T03:54:28.174Z" }, - { url = "https://files.pythonhosted.org/packages/d5/72/ec8fc904a8fd30ba022dfa85f3bbc64c3c7cd75b669e24242c0658e22f3c/httptools-0.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:cbf8317bfccf0fed3b5680c559d3459cccf1abe9039bfa159e62e391c7270568", size = 86173, upload_time = "2025-10-10T03:54:29.5Z" }, - { url = "https://files.pythonhosted.org/packages/9c/08/17e07e8d89ab8f343c134616d72eebfe03798835058e2ab579dcc8353c06/httptools-0.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:474d3b7ab469fefcca3697a10d11a32ee2b9573250206ba1e50d5980910da657", size = 206521, upload_time = "2025-10-10T03:54:31.002Z" }, - { url = "https://files.pythonhosted.org/packages/aa/06/c9c1b41ff52f16aee526fd10fbda99fa4787938aa776858ddc4a1ea825ec/httptools-0.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3c3b7366bb6c7b96bd72d0dbe7f7d5eead261361f013be5f6d9590465ea1c70", size = 110375, upload_time = "2025-10-10T03:54:31.941Z" }, - { url = "https://files.pythonhosted.org/packages/cc/cc/10935db22fda0ee34c76f047590ca0a8bd9de531406a3ccb10a90e12ea21/httptools-0.7.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:379b479408b8747f47f3b253326183d7c009a3936518cdb70db58cffd369d9df", size = 456621, upload_time = "2025-10-10T03:54:33.176Z" }, - { url = "https://files.pythonhosted.org/packages/0e/84/875382b10d271b0c11aa5d414b44f92f8dd53e9b658aec338a79164fa548/httptools-0.7.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cad6b591a682dcc6cf1397c3900527f9affef1e55a06c4547264796bbd17cf5e", size = 454954, upload_time = "2025-10-10T03:54:34.226Z" }, - { url = "https://files.pythonhosted.org/packages/30/e1/44f89b280f7e46c0b1b2ccee5737d46b3bb13136383958f20b580a821ca0/httptools-0.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eb844698d11433d2139bbeeb56499102143beb582bd6c194e3ba69c22f25c274", size = 440175, upload_time = "2025-10-10T03:54:35.942Z" }, - { url = "https://files.pythonhosted.org/packages/6f/7e/b9287763159e700e335028bc1824359dc736fa9b829dacedace91a39b37e/httptools-0.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f65744d7a8bdb4bda5e1fa23e4ba16832860606fcc09d674d56e425e991539ec", size = 440310, upload_time = "2025-10-10T03:54:37.1Z" }, - { url = "https://files.pythonhosted.org/packages/b3/07/5b614f592868e07f5c94b1f301b5e14a21df4e8076215a3bccb830a687d8/httptools-0.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:135fbe974b3718eada677229312e97f3b31f8a9c8ffa3ae6f565bf808d5b6bcb", size = 86875, upload_time = "2025-10-10T03:54:38.421Z" }, - { url = "https://files.pythonhosted.org/packages/53/7f/403e5d787dc4942316e515e949b0c8a013d84078a915910e9f391ba9b3ed/httptools-0.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:38e0c83a2ea9746ebbd643bdfb521b9aa4a91703e2cd705c20443405d2fd16a5", size = 206280, upload_time = "2025-10-10T03:54:39.274Z" }, - { url = "https://files.pythonhosted.org/packages/2a/0d/7f3fd28e2ce311ccc998c388dd1c53b18120fda3b70ebb022b135dc9839b/httptools-0.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f25bbaf1235e27704f1a7b86cd3304eabc04f569c828101d94a0e605ef7205a5", size = 110004, upload_time = "2025-10-10T03:54:40.403Z" }, - { url = "https://files.pythonhosted.org/packages/84/a6/b3965e1e146ef5762870bbe76117876ceba51a201e18cc31f5703e454596/httptools-0.7.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2c15f37ef679ab9ecc06bfc4e6e8628c32a8e4b305459de7cf6785acd57e4d03", size = 517655, upload_time = "2025-10-10T03:54:41.347Z" }, - { url = "https://files.pythonhosted.org/packages/11/7d/71fee6f1844e6fa378f2eddde6c3e41ce3a1fb4b2d81118dd544e3441ec0/httptools-0.7.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7fe6e96090df46b36ccfaf746f03034e5ab723162bc51b0a4cf58305324036f2", size = 511440, upload_time = "2025-10-10T03:54:42.452Z" }, - { url = "https://files.pythonhosted.org/packages/22/a5/079d216712a4f3ffa24af4a0381b108aa9c45b7a5cc6eb141f81726b1823/httptools-0.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f72fdbae2dbc6e68b8239defb48e6a5937b12218e6ffc2c7846cc37befa84362", size = 495186, upload_time = "2025-10-10T03:54:43.937Z" }, - { url = "https://files.pythonhosted.org/packages/e9/9e/025ad7b65278745dee3bd0ebf9314934c4592560878308a6121f7f812084/httptools-0.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e99c7b90a29fd82fea9ef57943d501a16f3404d7b9ee81799d41639bdaae412c", size = 499192, upload_time = "2025-10-10T03:54:45.003Z" }, - { url = "https://files.pythonhosted.org/packages/6d/de/40a8f202b987d43afc4d54689600ff03ce65680ede2f31df348d7f368b8f/httptools-0.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:3e14f530fefa7499334a79b0cf7e7cd2992870eb893526fb097d51b4f2d0f321", size = 86694, upload_time = "2025-10-10T03:54:45.923Z" }, - { url = "https://files.pythonhosted.org/packages/09/8f/c77b1fcbfd262d422f12da02feb0d218fa228d52485b77b953832105bb90/httptools-0.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6babce6cfa2a99545c60bfef8bee0cc0545413cb0018f617c8059a30ad985de3", size = 202889, upload_time = "2025-10-10T03:54:47.089Z" }, - { url = "https://files.pythonhosted.org/packages/0a/1a/22887f53602feaa066354867bc49a68fc295c2293433177ee90870a7d517/httptools-0.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:601b7628de7504077dd3dcb3791c6b8694bbd967148a6d1f01806509254fb1ca", size = 108180, upload_time = "2025-10-10T03:54:48.052Z" }, - { url = "https://files.pythonhosted.org/packages/32/6a/6aaa91937f0010d288d3d124ca2946d48d60c3a5ee7ca62afe870e3ea011/httptools-0.7.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:04c6c0e6c5fb0739c5b8a9eb046d298650a0ff38cf42537fc372b28dc7e4472c", size = 478596, upload_time = "2025-10-10T03:54:48.919Z" }, - { url = "https://files.pythonhosted.org/packages/6d/70/023d7ce117993107be88d2cbca566a7c1323ccbaf0af7eabf2064fe356f6/httptools-0.7.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:69d4f9705c405ae3ee83d6a12283dc9feba8cc6aaec671b412917e644ab4fa66", size = 473268, upload_time = "2025-10-10T03:54:49.993Z" }, - { url = "https://files.pythonhosted.org/packages/32/4d/9dd616c38da088e3f436e9a616e1d0cc66544b8cdac405cc4e81c8679fc7/httptools-0.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:44c8f4347d4b31269c8a9205d8a5ee2df5322b09bbbd30f8f862185bb6b05346", size = 455517, upload_time = "2025-10-10T03:54:51.066Z" }, - { url = "https://files.pythonhosted.org/packages/1d/3a/a6c595c310b7df958e739aae88724e24f9246a514d909547778d776799be/httptools-0.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:465275d76db4d554918aba40bf1cbebe324670f3dfc979eaffaa5d108e2ed650", size = 458337, upload_time = "2025-10-10T03:54:52.196Z" }, - { url = "https://files.pythonhosted.org/packages/fd/82/88e8d6d2c51edc1cc391b6e044c6c435b6aebe97b1abc33db1b0b24cd582/httptools-0.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:322d00c2068d125bd570f7bf78b2d367dad02b919d8581d7476d8b75b294e3e6", size = 85743, upload_time = "2025-10-10T03:54:53.448Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/b5/46/120a669232c7bdedb9d52d4aeae7e6c7dfe151e99dc70802e2fc7a5e1993/httptools-0.7.1.tar.gz", hash = "sha256:abd72556974f8e7c74a259655924a717a2365b236c882c3f6f8a45fe94703ac9", size = 258961, upload-time = "2025-10-10T03:55:08.559Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/e5/c07e0bcf4ec8db8164e9f6738c048b2e66aabf30e7506f440c4cc6953f60/httptools-0.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:11d01b0ff1fe02c4c32d60af61a4d613b74fad069e47e06e9067758c01e9ac78", size = 204531, upload-time = "2025-10-10T03:54:20.887Z" }, + { url = "https://files.pythonhosted.org/packages/7e/4f/35e3a63f863a659f92ffd92bef131f3e81cf849af26e6435b49bd9f6f751/httptools-0.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:84d86c1e5afdc479a6fdabf570be0d3eb791df0ae727e8dbc0259ed1249998d4", size = 109408, upload-time = "2025-10-10T03:54:22.455Z" }, + { url = "https://files.pythonhosted.org/packages/f5/71/b0a9193641d9e2471ac541d3b1b869538a5fb6419d52fd2669fa9c79e4b8/httptools-0.7.1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c8c751014e13d88d2be5f5f14fc8b89612fcfa92a9cc480f2bc1598357a23a05", size = 440889, upload-time = "2025-10-10T03:54:23.753Z" }, + { url = "https://files.pythonhosted.org/packages/eb/d9/2e34811397b76718750fea44658cb0205b84566e895192115252e008b152/httptools-0.7.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:654968cb6b6c77e37b832a9be3d3ecabb243bbe7a0b8f65fbc5b6b04c8fcabed", size = 440460, upload-time = "2025-10-10T03:54:25.313Z" }, + { url = "https://files.pythonhosted.org/packages/01/3f/a04626ebeacc489866bb4d82362c0657b2262bef381d68310134be7f40bb/httptools-0.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b580968316348b474b020edf3988eecd5d6eec4634ee6561e72ae3a2a0e00a8a", size = 425267, upload-time = "2025-10-10T03:54:26.81Z" }, + { url = "https://files.pythonhosted.org/packages/a5/99/adcd4f66614db627b587627c8ad6f4c55f18881549bab10ecf180562e7b9/httptools-0.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d496e2f5245319da9d764296e86c5bb6fcf0cf7a8806d3d000717a889c8c0b7b", size = 424429, upload-time = "2025-10-10T03:54:28.174Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/ec8fc904a8fd30ba022dfa85f3bbc64c3c7cd75b669e24242c0658e22f3c/httptools-0.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:cbf8317bfccf0fed3b5680c559d3459cccf1abe9039bfa159e62e391c7270568", size = 86173, upload-time = "2025-10-10T03:54:29.5Z" }, + { url = "https://files.pythonhosted.org/packages/9c/08/17e07e8d89ab8f343c134616d72eebfe03798835058e2ab579dcc8353c06/httptools-0.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:474d3b7ab469fefcca3697a10d11a32ee2b9573250206ba1e50d5980910da657", size = 206521, upload-time = "2025-10-10T03:54:31.002Z" }, + { url = "https://files.pythonhosted.org/packages/aa/06/c9c1b41ff52f16aee526fd10fbda99fa4787938aa776858ddc4a1ea825ec/httptools-0.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3c3b7366bb6c7b96bd72d0dbe7f7d5eead261361f013be5f6d9590465ea1c70", size = 110375, upload-time = "2025-10-10T03:54:31.941Z" }, + { url = "https://files.pythonhosted.org/packages/cc/cc/10935db22fda0ee34c76f047590ca0a8bd9de531406a3ccb10a90e12ea21/httptools-0.7.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:379b479408b8747f47f3b253326183d7c009a3936518cdb70db58cffd369d9df", size = 456621, upload-time = "2025-10-10T03:54:33.176Z" }, + { url = "https://files.pythonhosted.org/packages/0e/84/875382b10d271b0c11aa5d414b44f92f8dd53e9b658aec338a79164fa548/httptools-0.7.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cad6b591a682dcc6cf1397c3900527f9affef1e55a06c4547264796bbd17cf5e", size = 454954, upload-time = "2025-10-10T03:54:34.226Z" }, + { url = "https://files.pythonhosted.org/packages/30/e1/44f89b280f7e46c0b1b2ccee5737d46b3bb13136383958f20b580a821ca0/httptools-0.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eb844698d11433d2139bbeeb56499102143beb582bd6c194e3ba69c22f25c274", size = 440175, upload-time = "2025-10-10T03:54:35.942Z" }, + { url = "https://files.pythonhosted.org/packages/6f/7e/b9287763159e700e335028bc1824359dc736fa9b829dacedace91a39b37e/httptools-0.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f65744d7a8bdb4bda5e1fa23e4ba16832860606fcc09d674d56e425e991539ec", size = 440310, upload-time = "2025-10-10T03:54:37.1Z" }, + { url = "https://files.pythonhosted.org/packages/b3/07/5b614f592868e07f5c94b1f301b5e14a21df4e8076215a3bccb830a687d8/httptools-0.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:135fbe974b3718eada677229312e97f3b31f8a9c8ffa3ae6f565bf808d5b6bcb", size = 86875, upload-time = "2025-10-10T03:54:38.421Z" }, + { url = "https://files.pythonhosted.org/packages/53/7f/403e5d787dc4942316e515e949b0c8a013d84078a915910e9f391ba9b3ed/httptools-0.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:38e0c83a2ea9746ebbd643bdfb521b9aa4a91703e2cd705c20443405d2fd16a5", size = 206280, upload-time = "2025-10-10T03:54:39.274Z" }, + { url = "https://files.pythonhosted.org/packages/2a/0d/7f3fd28e2ce311ccc998c388dd1c53b18120fda3b70ebb022b135dc9839b/httptools-0.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f25bbaf1235e27704f1a7b86cd3304eabc04f569c828101d94a0e605ef7205a5", size = 110004, upload-time = "2025-10-10T03:54:40.403Z" }, + { url = "https://files.pythonhosted.org/packages/84/a6/b3965e1e146ef5762870bbe76117876ceba51a201e18cc31f5703e454596/httptools-0.7.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2c15f37ef679ab9ecc06bfc4e6e8628c32a8e4b305459de7cf6785acd57e4d03", size = 517655, upload-time = "2025-10-10T03:54:41.347Z" }, + { url = "https://files.pythonhosted.org/packages/11/7d/71fee6f1844e6fa378f2eddde6c3e41ce3a1fb4b2d81118dd544e3441ec0/httptools-0.7.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7fe6e96090df46b36ccfaf746f03034e5ab723162bc51b0a4cf58305324036f2", size = 511440, upload-time = "2025-10-10T03:54:42.452Z" }, + { url = "https://files.pythonhosted.org/packages/22/a5/079d216712a4f3ffa24af4a0381b108aa9c45b7a5cc6eb141f81726b1823/httptools-0.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f72fdbae2dbc6e68b8239defb48e6a5937b12218e6ffc2c7846cc37befa84362", size = 495186, upload-time = "2025-10-10T03:54:43.937Z" }, + { url = "https://files.pythonhosted.org/packages/e9/9e/025ad7b65278745dee3bd0ebf9314934c4592560878308a6121f7f812084/httptools-0.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e99c7b90a29fd82fea9ef57943d501a16f3404d7b9ee81799d41639bdaae412c", size = 499192, upload-time = "2025-10-10T03:54:45.003Z" }, + { url = "https://files.pythonhosted.org/packages/6d/de/40a8f202b987d43afc4d54689600ff03ce65680ede2f31df348d7f368b8f/httptools-0.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:3e14f530fefa7499334a79b0cf7e7cd2992870eb893526fb097d51b4f2d0f321", size = 86694, upload-time = "2025-10-10T03:54:45.923Z" }, + { url = "https://files.pythonhosted.org/packages/09/8f/c77b1fcbfd262d422f12da02feb0d218fa228d52485b77b953832105bb90/httptools-0.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6babce6cfa2a99545c60bfef8bee0cc0545413cb0018f617c8059a30ad985de3", size = 202889, upload-time = "2025-10-10T03:54:47.089Z" }, + { url = "https://files.pythonhosted.org/packages/0a/1a/22887f53602feaa066354867bc49a68fc295c2293433177ee90870a7d517/httptools-0.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:601b7628de7504077dd3dcb3791c6b8694bbd967148a6d1f01806509254fb1ca", size = 108180, upload-time = "2025-10-10T03:54:48.052Z" }, + { url = "https://files.pythonhosted.org/packages/32/6a/6aaa91937f0010d288d3d124ca2946d48d60c3a5ee7ca62afe870e3ea011/httptools-0.7.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:04c6c0e6c5fb0739c5b8a9eb046d298650a0ff38cf42537fc372b28dc7e4472c", size = 478596, upload-time = "2025-10-10T03:54:48.919Z" }, + { url = "https://files.pythonhosted.org/packages/6d/70/023d7ce117993107be88d2cbca566a7c1323ccbaf0af7eabf2064fe356f6/httptools-0.7.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:69d4f9705c405ae3ee83d6a12283dc9feba8cc6aaec671b412917e644ab4fa66", size = 473268, upload-time = "2025-10-10T03:54:49.993Z" }, + { url = "https://files.pythonhosted.org/packages/32/4d/9dd616c38da088e3f436e9a616e1d0cc66544b8cdac405cc4e81c8679fc7/httptools-0.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:44c8f4347d4b31269c8a9205d8a5ee2df5322b09bbbd30f8f862185bb6b05346", size = 455517, upload-time = "2025-10-10T03:54:51.066Z" }, + { url = "https://files.pythonhosted.org/packages/1d/3a/a6c595c310b7df958e739aae88724e24f9246a514d909547778d776799be/httptools-0.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:465275d76db4d554918aba40bf1cbebe324670f3dfc979eaffaa5d108e2ed650", size = 458337, upload-time = "2025-10-10T03:54:52.196Z" }, + { url = "https://files.pythonhosted.org/packages/fd/82/88e8d6d2c51edc1cc391b6e044c6c435b6aebe97b1abc33db1b0b24cd582/httptools-0.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:322d00c2068d125bd570f7bf78b2d367dad02b919d8581d7476d8b75b294e3e6", size = 85743, upload-time = "2025-10-10T03:54:53.448Z" }, ] [[package]] @@ -1414,9 +1464,9 @@ dependencies = [ { name = "httpcore" }, { name = "idna" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload_time = "2024-12-06T15:37:23.222Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload_time = "2024-12-06T15:37:21.509Z" }, + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, ] [[package]] @@ -1434,27 +1484,27 @@ dependencies = [ { name = "typer" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/89/ff/ec7ed2eb43bd7ce8bb2233d109cc235c3e807ffe5e469dc09db261fac05e/huggingface_hub-1.13.0.tar.gz", hash = "sha256:f6df2dac5abe82ce2fe05873d10d5ff47bc677d616a2f521f4ee26db9415d9d0", size = 781788, upload_time = "2026-04-30T11:57:33.858Z" } +sdist = { url = "https://files.pythonhosted.org/packages/89/ff/ec7ed2eb43bd7ce8bb2233d109cc235c3e807ffe5e469dc09db261fac05e/huggingface_hub-1.13.0.tar.gz", hash = "sha256:f6df2dac5abe82ce2fe05873d10d5ff47bc677d616a2f521f4ee26db9415d9d0", size = 781788, upload-time = "2026-04-30T11:57:33.858Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/93/db/4b1cdae9460ae1f3ca020cd767f013430ce23eb1d9c890ae3a0609b38d26/huggingface_hub-1.13.0-py3-none-any.whl", hash = "sha256:e942cb50d6a08dd5306688b1ac05bda157fd2fcc88b63dae405f7bd0d3234005", size = 660643, upload_time = "2026-04-30T11:57:31.802Z" }, + { url = "https://files.pythonhosted.org/packages/93/db/4b1cdae9460ae1f3ca020cd767f013430ce23eb1d9c890ae3a0609b38d26/huggingface_hub-1.13.0-py3-none-any.whl", hash = "sha256:e942cb50d6a08dd5306688b1ac05bda157fd2fcc88b63dae405f7bd0d3234005", size = 660643, upload-time = "2026-04-30T11:57:31.802Z" }, ] [[package]] name = "identify" version = "2.6.16" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5b/8d/e8b97e6bd3fb6fb271346f7981362f1e04d6a7463abd0de79e1fda17c067/identify-2.6.16.tar.gz", hash = "sha256:846857203b5511bbe94d5a352a48ef2359532bc8f6727b5544077a0dcfb24980", size = 99360, upload_time = "2026-01-12T18:58:58.201Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/8d/e8b97e6bd3fb6fb271346f7981362f1e04d6a7463abd0de79e1fda17c067/identify-2.6.16.tar.gz", hash = "sha256:846857203b5511bbe94d5a352a48ef2359532bc8f6727b5544077a0dcfb24980", size = 99360, upload-time = "2026-01-12T18:58:58.201Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/58/40fbbcefeda82364720eba5cf2270f98496bdfa19ea75b4cccae79c698e6/identify-2.6.16-py2.py3-none-any.whl", hash = "sha256:391ee4d77741d994189522896270b787aed8670389bfd60f326d677d64a6dfb0", size = 99202, upload_time = "2026-01-12T18:58:56.627Z" }, + { url = "https://files.pythonhosted.org/packages/b8/58/40fbbcefeda82364720eba5cf2270f98496bdfa19ea75b4cccae79c698e6/identify-2.6.16-py2.py3-none-any.whl", hash = "sha256:391ee4d77741d994189522896270b787aed8670389bfd60f326d677d64a6dfb0", size = 99202, upload-time = "2026-01-12T18:58:56.627Z" }, ] [[package]] name = "idna" version = "3.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload_time = "2025-10-12T14:55:20.501Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload_time = "2025-10-12T14:55:18.883Z" }, + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, ] [[package]] @@ -1464,18 +1514,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb", size = 57107, upload_time = "2025-12-21T10:00:19.278Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb", size = 57107, upload-time = "2025-12-21T10:00:19.278Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151", size = 27865, upload_time = "2025-12-21T10:00:18.329Z" }, + { url = "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151", size = 27865, upload-time = "2025-12-21T10:00:18.329Z" }, ] [[package]] name = "iniconfig" version = "2.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload_time = "2025-10-18T21:55:43.219Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload_time = "2025-10-18T21:55:41.639Z" }, + { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, ] [[package]] @@ -1485,18 +1535,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "arrow" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649, upload_time = "2020-11-01T11:00:00.312Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649, upload-time = "2020-11-01T11:00:00.312Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321, upload_time = "2020-11-01T10:59:58.02Z" }, + { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321, upload-time = "2020-11-01T10:59:58.02Z" }, ] [[package]] name = "itsdangerous" version = "2.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410, upload_time = "2024-04-16T21:28:15.614Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410, upload-time = "2024-04-16T21:28:15.614Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234, upload_time = "2024-04-16T21:28:14.499Z" }, + { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234, upload-time = "2024-04-16T21:28:14.499Z" }, ] [[package]] @@ -1506,9 +1556,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "parso" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload_time = "2024-11-11T01:41:42.873Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload_time = "2024-11-11T01:41:40.175Z" }, + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, ] [[package]] @@ -1518,90 +1568,90 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload_time = "2025-03-05T20:05:02.478Z" } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload_time = "2025-03-05T20:05:00.369Z" }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, ] [[package]] name = "jiter" version = "0.13.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0d/5e/4ec91646aee381d01cdb9974e30882c9cd3b8c5d1079d6b5ff4af522439a/jiter-0.13.0.tar.gz", hash = "sha256:f2839f9c2c7e2dffc1bc5929a510e14ce0a946be9365fd1219e7ef342dae14f4", size = 164847, upload_time = "2026-02-02T12:37:56.441Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/5a/41da76c5ea07bec1b0472b6b2fdb1b651074d504b19374d7e130e0cdfb25/jiter-0.13.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2ffc63785fd6c7977defe49b9824ae6ce2b2e2b77ce539bdaf006c26da06342e", size = 311164, upload_time = "2026-02-02T12:35:17.688Z" }, - { url = "https://files.pythonhosted.org/packages/40/cb/4a1bf994a3e869f0d39d10e11efb471b76d0ad70ecbfb591427a46c880c2/jiter-0.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4a638816427006c1e3f0013eb66d391d7a3acda99a7b0cf091eff4497ccea33a", size = 320296, upload_time = "2026-02-02T12:35:19.828Z" }, - { url = "https://files.pythonhosted.org/packages/09/82/acd71ca9b50ecebadc3979c541cd717cce2fe2bc86236f4fa597565d8f1a/jiter-0.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19928b5d1ce0ff8c1ee1b9bdef3b5bfc19e8304f1b904e436caf30bc15dc6cf5", size = 352742, upload_time = "2026-02-02T12:35:21.258Z" }, - { url = "https://files.pythonhosted.org/packages/71/03/d1fc996f3aecfd42eb70922edecfb6dd26421c874503e241153ad41df94f/jiter-0.13.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:309549b778b949d731a2f0e1594a3f805716be704a73bf3ad9a807eed5eb5721", size = 363145, upload_time = "2026-02-02T12:35:24.653Z" }, - { url = "https://files.pythonhosted.org/packages/f1/61/a30492366378cc7a93088858f8991acd7d959759fe6138c12a4644e58e81/jiter-0.13.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcdabaea26cb04e25df3103ce47f97466627999260290349a88c8136ecae0060", size = 487683, upload_time = "2026-02-02T12:35:26.162Z" }, - { url = "https://files.pythonhosted.org/packages/20/4e/4223cffa9dbbbc96ed821c5aeb6bca510848c72c02086d1ed3f1da3d58a7/jiter-0.13.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a3a377af27b236abbf665a69b2bdd680e3b5a0bd2af825cd3b81245279a7606c", size = 373579, upload_time = "2026-02-02T12:35:27.582Z" }, - { url = "https://files.pythonhosted.org/packages/fe/c9/b0489a01329ab07a83812d9ebcffe7820a38163c6d9e7da644f926ff877c/jiter-0.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe49d3ff6db74321f144dff9addd4a5874d3105ac5ba7c5b77fac099cfae31ae", size = 362904, upload_time = "2026-02-02T12:35:28.925Z" }, - { url = "https://files.pythonhosted.org/packages/05/af/53e561352a44afcba9a9bc67ee1d320b05a370aed8df54eafe714c4e454d/jiter-0.13.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2113c17c9a67071b0f820733c0893ed1d467b5fcf4414068169e5c2cabddb1e2", size = 392380, upload_time = "2026-02-02T12:35:30.385Z" }, - { url = "https://files.pythonhosted.org/packages/76/2a/dd805c3afb8ed5b326c5ae49e725d1b1255b9754b1b77dbecdc621b20773/jiter-0.13.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ab1185ca5c8b9491b55ebf6c1e8866b8f68258612899693e24a92c5fdb9455d5", size = 517939, upload_time = "2026-02-02T12:35:31.865Z" }, - { url = "https://files.pythonhosted.org/packages/20/2a/7b67d76f55b8fe14c937e7640389612f05f9a4145fc28ae128aaa5e62257/jiter-0.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9621ca242547edc16400981ca3231e0c91c0c4c1ab8573a596cd9bb3575d5c2b", size = 551696, upload_time = "2026-02-02T12:35:33.306Z" }, - { url = "https://files.pythonhosted.org/packages/85/9c/57cdd64dac8f4c6ab8f994fe0eb04dc9fd1db102856a4458fcf8a99dfa62/jiter-0.13.0-cp310-cp310-win32.whl", hash = "sha256:a7637d92b1c9d7a771e8c56f445c7f84396d48f2e756e5978840ecba2fac0894", size = 204592, upload_time = "2026-02-02T12:35:34.58Z" }, - { url = "https://files.pythonhosted.org/packages/a7/38/f4f3ea5788b8a5bae7510a678cdc747eda0c45ffe534f9878ff37e7cf3b3/jiter-0.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c1b609e5cbd2f52bb74fb721515745b407df26d7b800458bd97cb3b972c29e7d", size = 206016, upload_time = "2026-02-02T12:35:36.435Z" }, - { url = "https://files.pythonhosted.org/packages/71/29/499f8c9eaa8a16751b1c0e45e6f5f1761d180da873d417996cc7bddc8eef/jiter-0.13.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ea026e70a9a28ebbdddcbcf0f1323128a8db66898a06eaad3a4e62d2f554d096", size = 311157, upload_time = "2026-02-02T12:35:37.758Z" }, - { url = "https://files.pythonhosted.org/packages/50/f6/566364c777d2ab450b92100bea11333c64c38d32caf8dc378b48e5b20c46/jiter-0.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66aa3e663840152d18cc8ff1e4faad3dd181373491b9cfdc6004b92198d67911", size = 319729, upload_time = "2026-02-02T12:35:39.246Z" }, - { url = "https://files.pythonhosted.org/packages/73/dd/560f13ec5e4f116d8ad2658781646cca91b617ae3b8758d4a5076b278f70/jiter-0.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3524798e70655ff19aec58c7d05adb1f074fecff62da857ea9be2b908b6d701", size = 354766, upload_time = "2026-02-02T12:35:40.662Z" }, - { url = "https://files.pythonhosted.org/packages/7c/0d/061faffcfe94608cbc28a0d42a77a74222bdf5055ccdbe5fd2292b94f510/jiter-0.13.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ec7e287d7fbd02cb6e22f9a00dd9c9cd504c40a61f2c61e7e1f9690a82726b4c", size = 362587, upload_time = "2026-02-02T12:35:42.025Z" }, - { url = "https://files.pythonhosted.org/packages/92/c9/c66a7864982fd38a9773ec6e932e0398d1262677b8c60faecd02ffb67bf3/jiter-0.13.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:47455245307e4debf2ce6c6e65a717550a0244231240dcf3b8f7d64e4c2f22f4", size = 487537, upload_time = "2026-02-02T12:35:43.459Z" }, - { url = "https://files.pythonhosted.org/packages/6c/86/84eb4352cd3668f16d1a88929b5888a3fe0418ea8c1dfc2ad4e7bf6e069a/jiter-0.13.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ee9da221dca6e0429c2704c1b3655fe7b025204a71d4d9b73390c759d776d165", size = 373717, upload_time = "2026-02-02T12:35:44.928Z" }, - { url = "https://files.pythonhosted.org/packages/6e/09/9fe4c159358176f82d4390407a03f506a8659ed13ca3ac93a843402acecf/jiter-0.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24ab43126d5e05f3d53a36a8e11eb2f23304c6c1117844aaaf9a0aa5e40b5018", size = 362683, upload_time = "2026-02-02T12:35:46.636Z" }, - { url = "https://files.pythonhosted.org/packages/c9/5e/85f3ab9caca0c1d0897937d378b4a515cae9e119730563572361ea0c48ae/jiter-0.13.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9da38b4fedde4fb528c740c2564628fbab737166a0e73d6d46cb4bb5463ff411", size = 392345, upload_time = "2026-02-02T12:35:48.088Z" }, - { url = "https://files.pythonhosted.org/packages/12/4c/05b8629ad546191939e6f0c2f17e29f542a398f4a52fb987bc70b6d1eb8b/jiter-0.13.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0b34c519e17658ed88d5047999a93547f8889f3c1824120c26ad6be5f27b6cf5", size = 517775, upload_time = "2026-02-02T12:35:49.482Z" }, - { url = "https://files.pythonhosted.org/packages/4d/88/367ea2eb6bc582c7052e4baf5ddf57ebe5ab924a88e0e09830dfb585c02d/jiter-0.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d2a6394e6af690d462310a86b53c47ad75ac8c21dc79f120714ea449979cb1d3", size = 551325, upload_time = "2026-02-02T12:35:51.104Z" }, - { url = "https://files.pythonhosted.org/packages/f3/12/fa377ffb94a2f28c41afaed093e0d70cfe512035d5ecb0cad0ae4792d35e/jiter-0.13.0-cp311-cp311-win32.whl", hash = "sha256:0f0c065695f616a27c920a56ad0d4fc46415ef8b806bf8fc1cacf25002bd24e1", size = 204709, upload_time = "2026-02-02T12:35:52.467Z" }, - { url = "https://files.pythonhosted.org/packages/cb/16/8e8203ce92f844dfcd3d9d6a5a7322c77077248dbb12da52d23193a839cd/jiter-0.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:0733312953b909688ae3c2d58d043aa040f9f1a6a75693defed7bc2cc4bf2654", size = 204560, upload_time = "2026-02-02T12:35:53.925Z" }, - { url = "https://files.pythonhosted.org/packages/44/26/97cc40663deb17b9e13c3a5cf29251788c271b18ee4d262c8f94798b8336/jiter-0.13.0-cp311-cp311-win_arm64.whl", hash = "sha256:5d9b34ad56761b3bf0fbe8f7e55468704107608512350962d3317ffd7a4382d5", size = 189608, upload_time = "2026-02-02T12:35:55.304Z" }, - { url = "https://files.pythonhosted.org/packages/2e/30/7687e4f87086829955013ca12a9233523349767f69653ebc27036313def9/jiter-0.13.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0a2bd69fc1d902e89925fc34d1da51b2128019423d7b339a45d9e99c894e0663", size = 307958, upload_time = "2026-02-02T12:35:57.165Z" }, - { url = "https://files.pythonhosted.org/packages/c3/27/e57f9a783246ed95481e6749cc5002a8a767a73177a83c63ea71f0528b90/jiter-0.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f917a04240ef31898182f76a332f508f2cc4b57d2b4d7ad2dbfebbfe167eb505", size = 318597, upload_time = "2026-02-02T12:35:58.591Z" }, - { url = "https://files.pythonhosted.org/packages/cf/52/e5719a60ac5d4d7c5995461a94ad5ef962a37c8bf5b088390e6fad59b2ff/jiter-0.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1e2b199f446d3e82246b4fd9236d7cb502dc2222b18698ba0d986d2fecc6152", size = 348821, upload_time = "2026-02-02T12:36:00.093Z" }, - { url = "https://files.pythonhosted.org/packages/61/db/c1efc32b8ba4c740ab3fc2d037d8753f67685f475e26b9d6536a4322bcdd/jiter-0.13.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04670992b576fa65bd056dbac0c39fe8bd67681c380cb2b48efa885711d9d726", size = 364163, upload_time = "2026-02-02T12:36:01.937Z" }, - { url = "https://files.pythonhosted.org/packages/55/8a/fb75556236047c8806995671a18e4a0ad646ed255276f51a20f32dceaeec/jiter-0.13.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5a1aff1fbdb803a376d4d22a8f63f8e7ccbce0b4890c26cc7af9e501ab339ef0", size = 483709, upload_time = "2026-02-02T12:36:03.41Z" }, - { url = "https://files.pythonhosted.org/packages/7e/16/43512e6ee863875693a8e6f6d532e19d650779d6ba9a81593ae40a9088ff/jiter-0.13.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b3fb8c2053acaef8580809ac1d1f7481a0a0bdc012fd7f5d8b18fb696a5a089", size = 370480, upload_time = "2026-02-02T12:36:04.791Z" }, - { url = "https://files.pythonhosted.org/packages/f8/4c/09b93e30e984a187bc8aaa3510e1ec8dcbdcd71ca05d2f56aac0492453aa/jiter-0.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdaba7d87e66f26a2c45d8cbadcbfc4bf7884182317907baf39cfe9775bb4d93", size = 360735, upload_time = "2026-02-02T12:36:06.994Z" }, - { url = "https://files.pythonhosted.org/packages/1a/1b/46c5e349019874ec5dfa508c14c37e29864ea108d376ae26d90bee238cd7/jiter-0.13.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7b88d649135aca526da172e48083da915ec086b54e8e73a425ba50999468cc08", size = 391814, upload_time = "2026-02-02T12:36:08.368Z" }, - { url = "https://files.pythonhosted.org/packages/15/9e/26184760e85baee7162ad37b7912797d2077718476bf91517641c92b3639/jiter-0.13.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e404ea551d35438013c64b4f357b0474c7abf9f781c06d44fcaf7a14c69ff9e2", size = 513990, upload_time = "2026-02-02T12:36:09.993Z" }, - { url = "https://files.pythonhosted.org/packages/e9/34/2c9355247d6debad57a0a15e76ab1566ab799388042743656e566b3b7de1/jiter-0.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1f4748aad1b4a93c8bdd70f604d0f748cdc0e8744c5547798acfa52f10e79228", size = 548021, upload_time = "2026-02-02T12:36:11.376Z" }, - { url = "https://files.pythonhosted.org/packages/ac/4a/9f2c23255d04a834398b9c2e0e665382116911dc4d06b795710503cdad25/jiter-0.13.0-cp312-cp312-win32.whl", hash = "sha256:0bf670e3b1445fc4d31612199f1744f67f889ee1bbae703c4b54dc097e5dd394", size = 203024, upload_time = "2026-02-02T12:36:12.682Z" }, - { url = "https://files.pythonhosted.org/packages/09/ee/f0ae675a957ae5a8f160be3e87acea6b11dc7b89f6b7ab057e77b2d2b13a/jiter-0.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:15db60e121e11fe186c0b15236bd5d18381b9ddacdcf4e659feb96fc6c969c92", size = 205424, upload_time = "2026-02-02T12:36:13.93Z" }, - { url = "https://files.pythonhosted.org/packages/1b/02/ae611edf913d3cbf02c97cdb90374af2082c48d7190d74c1111dde08bcdd/jiter-0.13.0-cp312-cp312-win_arm64.whl", hash = "sha256:41f92313d17989102f3cb5dd533a02787cdb99454d494344b0361355da52fcb9", size = 186818, upload_time = "2026-02-02T12:36:15.308Z" }, - { url = "https://files.pythonhosted.org/packages/91/9c/7ee5a6ff4b9991e1a45263bfc46731634c4a2bde27dfda6c8251df2d958c/jiter-0.13.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1f8a55b848cbabf97d861495cd65f1e5c590246fabca8b48e1747c4dfc8f85bf", size = 306897, upload_time = "2026-02-02T12:36:16.748Z" }, - { url = "https://files.pythonhosted.org/packages/7c/02/be5b870d1d2be5dd6a91bdfb90f248fbb7dcbd21338f092c6b89817c3dbf/jiter-0.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f556aa591c00f2c45eb1b89f68f52441a016034d18b65da60e2d2875bbbf344a", size = 317507, upload_time = "2026-02-02T12:36:18.351Z" }, - { url = "https://files.pythonhosted.org/packages/da/92/b25d2ec333615f5f284f3a4024f7ce68cfa0604c322c6808b2344c7f5d2b/jiter-0.13.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7e1d61da332ec412350463891923f960c3073cf1aae93b538f0bb4c8cd46efb", size = 350560, upload_time = "2026-02-02T12:36:19.746Z" }, - { url = "https://files.pythonhosted.org/packages/be/ec/74dcb99fef0aca9fbe56b303bf79f6bd839010cb18ad41000bf6cc71eec0/jiter-0.13.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3097d665a27bc96fd9bbf7f86178037db139f319f785e4757ce7ccbf390db6c2", size = 363232, upload_time = "2026-02-02T12:36:21.243Z" }, - { url = "https://files.pythonhosted.org/packages/1b/37/f17375e0bb2f6a812d4dd92d7616e41917f740f3e71343627da9db2824ce/jiter-0.13.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d01ecc3a8cbdb6f25a37bd500510550b64ddf9f7d64a107d92f3ccb25035d0f", size = 483727, upload_time = "2026-02-02T12:36:22.688Z" }, - { url = "https://files.pythonhosted.org/packages/77/d2/a71160a5ae1a1e66c1395b37ef77da67513b0adba73b993a27fbe47eb048/jiter-0.13.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ed9bbc30f5d60a3bdf63ae76beb3f9db280d7f195dfcfa61af792d6ce912d159", size = 370799, upload_time = "2026-02-02T12:36:24.106Z" }, - { url = "https://files.pythonhosted.org/packages/01/99/ed5e478ff0eb4e8aa5fd998f9d69603c9fd3f32de3bd16c2b1194f68361c/jiter-0.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98fbafb6e88256f4454de33c1f40203d09fc33ed19162a68b3b257b29ca7f663", size = 359120, upload_time = "2026-02-02T12:36:25.519Z" }, - { url = "https://files.pythonhosted.org/packages/16/be/7ffd08203277a813f732ba897352797fa9493faf8dc7995b31f3d9cb9488/jiter-0.13.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5467696f6b827f1116556cb0db620440380434591e93ecee7fd14d1a491b6daa", size = 390664, upload_time = "2026-02-02T12:36:26.866Z" }, - { url = "https://files.pythonhosted.org/packages/d1/84/e0787856196d6d346264d6dcccb01f741e5f0bd014c1d9a2ebe149caf4f3/jiter-0.13.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:2d08c9475d48b92892583df9da592a0e2ac49bcd41fae1fec4f39ba6cf107820", size = 513543, upload_time = "2026-02-02T12:36:28.217Z" }, - { url = "https://files.pythonhosted.org/packages/65/50/ecbd258181c4313cf79bca6c88fb63207d04d5bf5e4f65174114d072aa55/jiter-0.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:aed40e099404721d7fcaf5b89bd3b4568a4666358bcac7b6b15c09fb6252ab68", size = 547262, upload_time = "2026-02-02T12:36:29.678Z" }, - { url = "https://files.pythonhosted.org/packages/27/da/68f38d12e7111d2016cd198161b36e1f042bd115c169255bcb7ec823a3bf/jiter-0.13.0-cp313-cp313-win32.whl", hash = "sha256:36ebfbcffafb146d0e6ffb3e74d51e03d9c35ce7c625c8066cdbfc7b953bdc72", size = 200630, upload_time = "2026-02-02T12:36:31.808Z" }, - { url = "https://files.pythonhosted.org/packages/25/65/3bd1a972c9a08ecd22eb3b08a95d1941ebe6938aea620c246cf426ae09c2/jiter-0.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:8d76029f077379374cf0dbc78dbe45b38dec4a2eb78b08b5194ce836b2517afc", size = 202602, upload_time = "2026-02-02T12:36:33.679Z" }, - { url = "https://files.pythonhosted.org/packages/15/fe/13bd3678a311aa67686bb303654792c48206a112068f8b0b21426eb6851e/jiter-0.13.0-cp313-cp313-win_arm64.whl", hash = "sha256:bb7613e1a427cfcb6ea4544f9ac566b93d5bf67e0d48c787eca673ff9c9dff2b", size = 185939, upload_time = "2026-02-02T12:36:35.065Z" }, - { url = "https://files.pythonhosted.org/packages/49/19/a929ec002ad3228bc97ca01dbb14f7632fffdc84a95ec92ceaf4145688ae/jiter-0.13.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fa476ab5dd49f3bf3a168e05f89358c75a17608dbabb080ef65f96b27c19ab10", size = 316616, upload_time = "2026-02-02T12:36:36.579Z" }, - { url = "https://files.pythonhosted.org/packages/52/56/d19a9a194afa37c1728831e5fb81b7722c3de18a3109e8f282bfc23e587a/jiter-0.13.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ade8cb6ff5632a62b7dbd4757d8c5573f7a2e9ae285d6b5b841707d8363205ef", size = 346850, upload_time = "2026-02-02T12:36:38.058Z" }, - { url = "https://files.pythonhosted.org/packages/36/4a/94e831c6bf287754a8a019cb966ed39ff8be6ab78cadecf08df3bb02d505/jiter-0.13.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9950290340acc1adaded363edd94baebcee7dabdfa8bee4790794cd5cfad2af6", size = 358551, upload_time = "2026-02-02T12:36:39.417Z" }, - { url = "https://files.pythonhosted.org/packages/a2/ec/a4c72c822695fa80e55d2b4142b73f0012035d9fcf90eccc56bc060db37c/jiter-0.13.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2b4972c6df33731aac0742b64fd0d18e0a69bc7d6e03108ce7d40c85fd9e3e6d", size = 201950, upload_time = "2026-02-02T12:36:40.791Z" }, - { url = "https://files.pythonhosted.org/packages/b6/00/393553ec27b824fbc29047e9c7cd4a3951d7fbe4a76743f17e44034fa4e4/jiter-0.13.0-cp313-cp313t-win_arm64.whl", hash = "sha256:701a1e77d1e593c1b435315ff625fd071f0998c5f02792038a5ca98899261b7d", size = 185852, upload_time = "2026-02-02T12:36:42.077Z" }, - { url = "https://files.pythonhosted.org/packages/79/b3/3c29819a27178d0e461a8571fb63c6ae38be6dc36b78b3ec2876bbd6a910/jiter-0.13.0-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:b1cbfa133241d0e6bdab48dcdc2604e8ba81512f6bbd68ec3e8e1357dd3c316c", size = 307016, upload_time = "2026-02-02T12:37:42.755Z" }, - { url = "https://files.pythonhosted.org/packages/eb/ae/60993e4b07b1ac5ebe46da7aa99fdbb802eb986c38d26e3883ac0125c4e0/jiter-0.13.0-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:db367d8be9fad6e8ebbac4a7578b7af562e506211036cba2c06c3b998603c3d2", size = 305024, upload_time = "2026-02-02T12:37:44.774Z" }, - { url = "https://files.pythonhosted.org/packages/77/fa/2227e590e9cf98803db2811f172b2d6460a21539ab73006f251c66f44b14/jiter-0.13.0-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45f6f8efb2f3b0603092401dc2df79fa89ccbc027aaba4174d2d4133ed661434", size = 339337, upload_time = "2026-02-02T12:37:46.668Z" }, - { url = "https://files.pythonhosted.org/packages/2d/92/015173281f7eb96c0ef580c997da8ef50870d4f7f4c9e03c845a1d62ae04/jiter-0.13.0-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:597245258e6ad085d064780abfb23a284d418d3e61c57362d9449c6c7317ee2d", size = 346395, upload_time = "2026-02-02T12:37:48.09Z" }, - { url = "https://files.pythonhosted.org/packages/80/60/e50fa45dd7e2eae049f0ce964663849e897300433921198aef94b6ffa23a/jiter-0.13.0-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:3d744a6061afba08dd7ae375dcde870cffb14429b7477e10f67e9e6d68772a0a", size = 305169, upload_time = "2026-02-02T12:37:50.376Z" }, - { url = "https://files.pythonhosted.org/packages/d2/73/a009f41c5eed71c49bec53036c4b33555afcdee70682a18c6f66e396c039/jiter-0.13.0-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:ff732bd0a0e778f43d5009840f20b935e79087b4dc65bd36f1cd0f9b04b8ff7f", size = 303808, upload_time = "2026-02-02T12:37:52.092Z" }, - { url = "https://files.pythonhosted.org/packages/c4/10/528b439290763bff3d939268085d03382471b442f212dca4ff5f12802d43/jiter-0.13.0-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab44b178f7981fcaea7e0a5df20e773c663d06ffda0198f1a524e91b2fde7e59", size = 337384, upload_time = "2026-02-02T12:37:53.582Z" }, - { url = "https://files.pythonhosted.org/packages/67/8a/a342b2f0251f3dac4ca17618265d93bf244a2a4d089126e81e4c1056ac50/jiter-0.13.0-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bb00b6d26db67a05fe3e12c76edc75f32077fb51deed13822dc648fa373bc19", size = 343768, upload_time = "2026-02-02T12:37:55.055Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/0d/5e/4ec91646aee381d01cdb9974e30882c9cd3b8c5d1079d6b5ff4af522439a/jiter-0.13.0.tar.gz", hash = "sha256:f2839f9c2c7e2dffc1bc5929a510e14ce0a946be9365fd1219e7ef342dae14f4", size = 164847, upload-time = "2026-02-02T12:37:56.441Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/5a/41da76c5ea07bec1b0472b6b2fdb1b651074d504b19374d7e130e0cdfb25/jiter-0.13.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2ffc63785fd6c7977defe49b9824ae6ce2b2e2b77ce539bdaf006c26da06342e", size = 311164, upload-time = "2026-02-02T12:35:17.688Z" }, + { url = "https://files.pythonhosted.org/packages/40/cb/4a1bf994a3e869f0d39d10e11efb471b76d0ad70ecbfb591427a46c880c2/jiter-0.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4a638816427006c1e3f0013eb66d391d7a3acda99a7b0cf091eff4497ccea33a", size = 320296, upload-time = "2026-02-02T12:35:19.828Z" }, + { url = "https://files.pythonhosted.org/packages/09/82/acd71ca9b50ecebadc3979c541cd717cce2fe2bc86236f4fa597565d8f1a/jiter-0.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19928b5d1ce0ff8c1ee1b9bdef3b5bfc19e8304f1b904e436caf30bc15dc6cf5", size = 352742, upload-time = "2026-02-02T12:35:21.258Z" }, + { url = "https://files.pythonhosted.org/packages/71/03/d1fc996f3aecfd42eb70922edecfb6dd26421c874503e241153ad41df94f/jiter-0.13.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:309549b778b949d731a2f0e1594a3f805716be704a73bf3ad9a807eed5eb5721", size = 363145, upload-time = "2026-02-02T12:35:24.653Z" }, + { url = "https://files.pythonhosted.org/packages/f1/61/a30492366378cc7a93088858f8991acd7d959759fe6138c12a4644e58e81/jiter-0.13.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcdabaea26cb04e25df3103ce47f97466627999260290349a88c8136ecae0060", size = 487683, upload-time = "2026-02-02T12:35:26.162Z" }, + { url = "https://files.pythonhosted.org/packages/20/4e/4223cffa9dbbbc96ed821c5aeb6bca510848c72c02086d1ed3f1da3d58a7/jiter-0.13.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a3a377af27b236abbf665a69b2bdd680e3b5a0bd2af825cd3b81245279a7606c", size = 373579, upload-time = "2026-02-02T12:35:27.582Z" }, + { url = "https://files.pythonhosted.org/packages/fe/c9/b0489a01329ab07a83812d9ebcffe7820a38163c6d9e7da644f926ff877c/jiter-0.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe49d3ff6db74321f144dff9addd4a5874d3105ac5ba7c5b77fac099cfae31ae", size = 362904, upload-time = "2026-02-02T12:35:28.925Z" }, + { url = "https://files.pythonhosted.org/packages/05/af/53e561352a44afcba9a9bc67ee1d320b05a370aed8df54eafe714c4e454d/jiter-0.13.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2113c17c9a67071b0f820733c0893ed1d467b5fcf4414068169e5c2cabddb1e2", size = 392380, upload-time = "2026-02-02T12:35:30.385Z" }, + { url = "https://files.pythonhosted.org/packages/76/2a/dd805c3afb8ed5b326c5ae49e725d1b1255b9754b1b77dbecdc621b20773/jiter-0.13.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ab1185ca5c8b9491b55ebf6c1e8866b8f68258612899693e24a92c5fdb9455d5", size = 517939, upload-time = "2026-02-02T12:35:31.865Z" }, + { url = "https://files.pythonhosted.org/packages/20/2a/7b67d76f55b8fe14c937e7640389612f05f9a4145fc28ae128aaa5e62257/jiter-0.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9621ca242547edc16400981ca3231e0c91c0c4c1ab8573a596cd9bb3575d5c2b", size = 551696, upload-time = "2026-02-02T12:35:33.306Z" }, + { url = "https://files.pythonhosted.org/packages/85/9c/57cdd64dac8f4c6ab8f994fe0eb04dc9fd1db102856a4458fcf8a99dfa62/jiter-0.13.0-cp310-cp310-win32.whl", hash = "sha256:a7637d92b1c9d7a771e8c56f445c7f84396d48f2e756e5978840ecba2fac0894", size = 204592, upload-time = "2026-02-02T12:35:34.58Z" }, + { url = "https://files.pythonhosted.org/packages/a7/38/f4f3ea5788b8a5bae7510a678cdc747eda0c45ffe534f9878ff37e7cf3b3/jiter-0.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c1b609e5cbd2f52bb74fb721515745b407df26d7b800458bd97cb3b972c29e7d", size = 206016, upload-time = "2026-02-02T12:35:36.435Z" }, + { url = "https://files.pythonhosted.org/packages/71/29/499f8c9eaa8a16751b1c0e45e6f5f1761d180da873d417996cc7bddc8eef/jiter-0.13.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ea026e70a9a28ebbdddcbcf0f1323128a8db66898a06eaad3a4e62d2f554d096", size = 311157, upload-time = "2026-02-02T12:35:37.758Z" }, + { url = "https://files.pythonhosted.org/packages/50/f6/566364c777d2ab450b92100bea11333c64c38d32caf8dc378b48e5b20c46/jiter-0.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66aa3e663840152d18cc8ff1e4faad3dd181373491b9cfdc6004b92198d67911", size = 319729, upload-time = "2026-02-02T12:35:39.246Z" }, + { url = "https://files.pythonhosted.org/packages/73/dd/560f13ec5e4f116d8ad2658781646cca91b617ae3b8758d4a5076b278f70/jiter-0.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3524798e70655ff19aec58c7d05adb1f074fecff62da857ea9be2b908b6d701", size = 354766, upload-time = "2026-02-02T12:35:40.662Z" }, + { url = "https://files.pythonhosted.org/packages/7c/0d/061faffcfe94608cbc28a0d42a77a74222bdf5055ccdbe5fd2292b94f510/jiter-0.13.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ec7e287d7fbd02cb6e22f9a00dd9c9cd504c40a61f2c61e7e1f9690a82726b4c", size = 362587, upload-time = "2026-02-02T12:35:42.025Z" }, + { url = "https://files.pythonhosted.org/packages/92/c9/c66a7864982fd38a9773ec6e932e0398d1262677b8c60faecd02ffb67bf3/jiter-0.13.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:47455245307e4debf2ce6c6e65a717550a0244231240dcf3b8f7d64e4c2f22f4", size = 487537, upload-time = "2026-02-02T12:35:43.459Z" }, + { url = "https://files.pythonhosted.org/packages/6c/86/84eb4352cd3668f16d1a88929b5888a3fe0418ea8c1dfc2ad4e7bf6e069a/jiter-0.13.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ee9da221dca6e0429c2704c1b3655fe7b025204a71d4d9b73390c759d776d165", size = 373717, upload-time = "2026-02-02T12:35:44.928Z" }, + { url = "https://files.pythonhosted.org/packages/6e/09/9fe4c159358176f82d4390407a03f506a8659ed13ca3ac93a843402acecf/jiter-0.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24ab43126d5e05f3d53a36a8e11eb2f23304c6c1117844aaaf9a0aa5e40b5018", size = 362683, upload-time = "2026-02-02T12:35:46.636Z" }, + { url = "https://files.pythonhosted.org/packages/c9/5e/85f3ab9caca0c1d0897937d378b4a515cae9e119730563572361ea0c48ae/jiter-0.13.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9da38b4fedde4fb528c740c2564628fbab737166a0e73d6d46cb4bb5463ff411", size = 392345, upload-time = "2026-02-02T12:35:48.088Z" }, + { url = "https://files.pythonhosted.org/packages/12/4c/05b8629ad546191939e6f0c2f17e29f542a398f4a52fb987bc70b6d1eb8b/jiter-0.13.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0b34c519e17658ed88d5047999a93547f8889f3c1824120c26ad6be5f27b6cf5", size = 517775, upload-time = "2026-02-02T12:35:49.482Z" }, + { url = "https://files.pythonhosted.org/packages/4d/88/367ea2eb6bc582c7052e4baf5ddf57ebe5ab924a88e0e09830dfb585c02d/jiter-0.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d2a6394e6af690d462310a86b53c47ad75ac8c21dc79f120714ea449979cb1d3", size = 551325, upload-time = "2026-02-02T12:35:51.104Z" }, + { url = "https://files.pythonhosted.org/packages/f3/12/fa377ffb94a2f28c41afaed093e0d70cfe512035d5ecb0cad0ae4792d35e/jiter-0.13.0-cp311-cp311-win32.whl", hash = "sha256:0f0c065695f616a27c920a56ad0d4fc46415ef8b806bf8fc1cacf25002bd24e1", size = 204709, upload-time = "2026-02-02T12:35:52.467Z" }, + { url = "https://files.pythonhosted.org/packages/cb/16/8e8203ce92f844dfcd3d9d6a5a7322c77077248dbb12da52d23193a839cd/jiter-0.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:0733312953b909688ae3c2d58d043aa040f9f1a6a75693defed7bc2cc4bf2654", size = 204560, upload-time = "2026-02-02T12:35:53.925Z" }, + { url = "https://files.pythonhosted.org/packages/44/26/97cc40663deb17b9e13c3a5cf29251788c271b18ee4d262c8f94798b8336/jiter-0.13.0-cp311-cp311-win_arm64.whl", hash = "sha256:5d9b34ad56761b3bf0fbe8f7e55468704107608512350962d3317ffd7a4382d5", size = 189608, upload-time = "2026-02-02T12:35:55.304Z" }, + { url = "https://files.pythonhosted.org/packages/2e/30/7687e4f87086829955013ca12a9233523349767f69653ebc27036313def9/jiter-0.13.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0a2bd69fc1d902e89925fc34d1da51b2128019423d7b339a45d9e99c894e0663", size = 307958, upload-time = "2026-02-02T12:35:57.165Z" }, + { url = "https://files.pythonhosted.org/packages/c3/27/e57f9a783246ed95481e6749cc5002a8a767a73177a83c63ea71f0528b90/jiter-0.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f917a04240ef31898182f76a332f508f2cc4b57d2b4d7ad2dbfebbfe167eb505", size = 318597, upload-time = "2026-02-02T12:35:58.591Z" }, + { url = "https://files.pythonhosted.org/packages/cf/52/e5719a60ac5d4d7c5995461a94ad5ef962a37c8bf5b088390e6fad59b2ff/jiter-0.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1e2b199f446d3e82246b4fd9236d7cb502dc2222b18698ba0d986d2fecc6152", size = 348821, upload-time = "2026-02-02T12:36:00.093Z" }, + { url = "https://files.pythonhosted.org/packages/61/db/c1efc32b8ba4c740ab3fc2d037d8753f67685f475e26b9d6536a4322bcdd/jiter-0.13.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04670992b576fa65bd056dbac0c39fe8bd67681c380cb2b48efa885711d9d726", size = 364163, upload-time = "2026-02-02T12:36:01.937Z" }, + { url = "https://files.pythonhosted.org/packages/55/8a/fb75556236047c8806995671a18e4a0ad646ed255276f51a20f32dceaeec/jiter-0.13.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5a1aff1fbdb803a376d4d22a8f63f8e7ccbce0b4890c26cc7af9e501ab339ef0", size = 483709, upload-time = "2026-02-02T12:36:03.41Z" }, + { url = "https://files.pythonhosted.org/packages/7e/16/43512e6ee863875693a8e6f6d532e19d650779d6ba9a81593ae40a9088ff/jiter-0.13.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b3fb8c2053acaef8580809ac1d1f7481a0a0bdc012fd7f5d8b18fb696a5a089", size = 370480, upload-time = "2026-02-02T12:36:04.791Z" }, + { url = "https://files.pythonhosted.org/packages/f8/4c/09b93e30e984a187bc8aaa3510e1ec8dcbdcd71ca05d2f56aac0492453aa/jiter-0.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdaba7d87e66f26a2c45d8cbadcbfc4bf7884182317907baf39cfe9775bb4d93", size = 360735, upload-time = "2026-02-02T12:36:06.994Z" }, + { url = "https://files.pythonhosted.org/packages/1a/1b/46c5e349019874ec5dfa508c14c37e29864ea108d376ae26d90bee238cd7/jiter-0.13.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7b88d649135aca526da172e48083da915ec086b54e8e73a425ba50999468cc08", size = 391814, upload-time = "2026-02-02T12:36:08.368Z" }, + { url = "https://files.pythonhosted.org/packages/15/9e/26184760e85baee7162ad37b7912797d2077718476bf91517641c92b3639/jiter-0.13.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e404ea551d35438013c64b4f357b0474c7abf9f781c06d44fcaf7a14c69ff9e2", size = 513990, upload-time = "2026-02-02T12:36:09.993Z" }, + { url = "https://files.pythonhosted.org/packages/e9/34/2c9355247d6debad57a0a15e76ab1566ab799388042743656e566b3b7de1/jiter-0.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1f4748aad1b4a93c8bdd70f604d0f748cdc0e8744c5547798acfa52f10e79228", size = 548021, upload-time = "2026-02-02T12:36:11.376Z" }, + { url = "https://files.pythonhosted.org/packages/ac/4a/9f2c23255d04a834398b9c2e0e665382116911dc4d06b795710503cdad25/jiter-0.13.0-cp312-cp312-win32.whl", hash = "sha256:0bf670e3b1445fc4d31612199f1744f67f889ee1bbae703c4b54dc097e5dd394", size = 203024, upload-time = "2026-02-02T12:36:12.682Z" }, + { url = "https://files.pythonhosted.org/packages/09/ee/f0ae675a957ae5a8f160be3e87acea6b11dc7b89f6b7ab057e77b2d2b13a/jiter-0.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:15db60e121e11fe186c0b15236bd5d18381b9ddacdcf4e659feb96fc6c969c92", size = 205424, upload-time = "2026-02-02T12:36:13.93Z" }, + { url = "https://files.pythonhosted.org/packages/1b/02/ae611edf913d3cbf02c97cdb90374af2082c48d7190d74c1111dde08bcdd/jiter-0.13.0-cp312-cp312-win_arm64.whl", hash = "sha256:41f92313d17989102f3cb5dd533a02787cdb99454d494344b0361355da52fcb9", size = 186818, upload-time = "2026-02-02T12:36:15.308Z" }, + { url = "https://files.pythonhosted.org/packages/91/9c/7ee5a6ff4b9991e1a45263bfc46731634c4a2bde27dfda6c8251df2d958c/jiter-0.13.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1f8a55b848cbabf97d861495cd65f1e5c590246fabca8b48e1747c4dfc8f85bf", size = 306897, upload-time = "2026-02-02T12:36:16.748Z" }, + { url = "https://files.pythonhosted.org/packages/7c/02/be5b870d1d2be5dd6a91bdfb90f248fbb7dcbd21338f092c6b89817c3dbf/jiter-0.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f556aa591c00f2c45eb1b89f68f52441a016034d18b65da60e2d2875bbbf344a", size = 317507, upload-time = "2026-02-02T12:36:18.351Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/b25d2ec333615f5f284f3a4024f7ce68cfa0604c322c6808b2344c7f5d2b/jiter-0.13.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7e1d61da332ec412350463891923f960c3073cf1aae93b538f0bb4c8cd46efb", size = 350560, upload-time = "2026-02-02T12:36:19.746Z" }, + { url = "https://files.pythonhosted.org/packages/be/ec/74dcb99fef0aca9fbe56b303bf79f6bd839010cb18ad41000bf6cc71eec0/jiter-0.13.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3097d665a27bc96fd9bbf7f86178037db139f319f785e4757ce7ccbf390db6c2", size = 363232, upload-time = "2026-02-02T12:36:21.243Z" }, + { url = "https://files.pythonhosted.org/packages/1b/37/f17375e0bb2f6a812d4dd92d7616e41917f740f3e71343627da9db2824ce/jiter-0.13.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d01ecc3a8cbdb6f25a37bd500510550b64ddf9f7d64a107d92f3ccb25035d0f", size = 483727, upload-time = "2026-02-02T12:36:22.688Z" }, + { url = "https://files.pythonhosted.org/packages/77/d2/a71160a5ae1a1e66c1395b37ef77da67513b0adba73b993a27fbe47eb048/jiter-0.13.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ed9bbc30f5d60a3bdf63ae76beb3f9db280d7f195dfcfa61af792d6ce912d159", size = 370799, upload-time = "2026-02-02T12:36:24.106Z" }, + { url = "https://files.pythonhosted.org/packages/01/99/ed5e478ff0eb4e8aa5fd998f9d69603c9fd3f32de3bd16c2b1194f68361c/jiter-0.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98fbafb6e88256f4454de33c1f40203d09fc33ed19162a68b3b257b29ca7f663", size = 359120, upload-time = "2026-02-02T12:36:25.519Z" }, + { url = "https://files.pythonhosted.org/packages/16/be/7ffd08203277a813f732ba897352797fa9493faf8dc7995b31f3d9cb9488/jiter-0.13.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5467696f6b827f1116556cb0db620440380434591e93ecee7fd14d1a491b6daa", size = 390664, upload-time = "2026-02-02T12:36:26.866Z" }, + { url = "https://files.pythonhosted.org/packages/d1/84/e0787856196d6d346264d6dcccb01f741e5f0bd014c1d9a2ebe149caf4f3/jiter-0.13.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:2d08c9475d48b92892583df9da592a0e2ac49bcd41fae1fec4f39ba6cf107820", size = 513543, upload-time = "2026-02-02T12:36:28.217Z" }, + { url = "https://files.pythonhosted.org/packages/65/50/ecbd258181c4313cf79bca6c88fb63207d04d5bf5e4f65174114d072aa55/jiter-0.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:aed40e099404721d7fcaf5b89bd3b4568a4666358bcac7b6b15c09fb6252ab68", size = 547262, upload-time = "2026-02-02T12:36:29.678Z" }, + { url = "https://files.pythonhosted.org/packages/27/da/68f38d12e7111d2016cd198161b36e1f042bd115c169255bcb7ec823a3bf/jiter-0.13.0-cp313-cp313-win32.whl", hash = "sha256:36ebfbcffafb146d0e6ffb3e74d51e03d9c35ce7c625c8066cdbfc7b953bdc72", size = 200630, upload-time = "2026-02-02T12:36:31.808Z" }, + { url = "https://files.pythonhosted.org/packages/25/65/3bd1a972c9a08ecd22eb3b08a95d1941ebe6938aea620c246cf426ae09c2/jiter-0.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:8d76029f077379374cf0dbc78dbe45b38dec4a2eb78b08b5194ce836b2517afc", size = 202602, upload-time = "2026-02-02T12:36:33.679Z" }, + { url = "https://files.pythonhosted.org/packages/15/fe/13bd3678a311aa67686bb303654792c48206a112068f8b0b21426eb6851e/jiter-0.13.0-cp313-cp313-win_arm64.whl", hash = "sha256:bb7613e1a427cfcb6ea4544f9ac566b93d5bf67e0d48c787eca673ff9c9dff2b", size = 185939, upload-time = "2026-02-02T12:36:35.065Z" }, + { url = "https://files.pythonhosted.org/packages/49/19/a929ec002ad3228bc97ca01dbb14f7632fffdc84a95ec92ceaf4145688ae/jiter-0.13.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fa476ab5dd49f3bf3a168e05f89358c75a17608dbabb080ef65f96b27c19ab10", size = 316616, upload-time = "2026-02-02T12:36:36.579Z" }, + { url = "https://files.pythonhosted.org/packages/52/56/d19a9a194afa37c1728831e5fb81b7722c3de18a3109e8f282bfc23e587a/jiter-0.13.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ade8cb6ff5632a62b7dbd4757d8c5573f7a2e9ae285d6b5b841707d8363205ef", size = 346850, upload-time = "2026-02-02T12:36:38.058Z" }, + { url = "https://files.pythonhosted.org/packages/36/4a/94e831c6bf287754a8a019cb966ed39ff8be6ab78cadecf08df3bb02d505/jiter-0.13.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9950290340acc1adaded363edd94baebcee7dabdfa8bee4790794cd5cfad2af6", size = 358551, upload-time = "2026-02-02T12:36:39.417Z" }, + { url = "https://files.pythonhosted.org/packages/a2/ec/a4c72c822695fa80e55d2b4142b73f0012035d9fcf90eccc56bc060db37c/jiter-0.13.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2b4972c6df33731aac0742b64fd0d18e0a69bc7d6e03108ce7d40c85fd9e3e6d", size = 201950, upload-time = "2026-02-02T12:36:40.791Z" }, + { url = "https://files.pythonhosted.org/packages/b6/00/393553ec27b824fbc29047e9c7cd4a3951d7fbe4a76743f17e44034fa4e4/jiter-0.13.0-cp313-cp313t-win_arm64.whl", hash = "sha256:701a1e77d1e593c1b435315ff625fd071f0998c5f02792038a5ca98899261b7d", size = 185852, upload-time = "2026-02-02T12:36:42.077Z" }, + { url = "https://files.pythonhosted.org/packages/79/b3/3c29819a27178d0e461a8571fb63c6ae38be6dc36b78b3ec2876bbd6a910/jiter-0.13.0-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:b1cbfa133241d0e6bdab48dcdc2604e8ba81512f6bbd68ec3e8e1357dd3c316c", size = 307016, upload-time = "2026-02-02T12:37:42.755Z" }, + { url = "https://files.pythonhosted.org/packages/eb/ae/60993e4b07b1ac5ebe46da7aa99fdbb802eb986c38d26e3883ac0125c4e0/jiter-0.13.0-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:db367d8be9fad6e8ebbac4a7578b7af562e506211036cba2c06c3b998603c3d2", size = 305024, upload-time = "2026-02-02T12:37:44.774Z" }, + { url = "https://files.pythonhosted.org/packages/77/fa/2227e590e9cf98803db2811f172b2d6460a21539ab73006f251c66f44b14/jiter-0.13.0-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45f6f8efb2f3b0603092401dc2df79fa89ccbc027aaba4174d2d4133ed661434", size = 339337, upload-time = "2026-02-02T12:37:46.668Z" }, + { url = "https://files.pythonhosted.org/packages/2d/92/015173281f7eb96c0ef580c997da8ef50870d4f7f4c9e03c845a1d62ae04/jiter-0.13.0-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:597245258e6ad085d064780abfb23a284d418d3e61c57362d9449c6c7317ee2d", size = 346395, upload-time = "2026-02-02T12:37:48.09Z" }, + { url = "https://files.pythonhosted.org/packages/80/60/e50fa45dd7e2eae049f0ce964663849e897300433921198aef94b6ffa23a/jiter-0.13.0-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:3d744a6061afba08dd7ae375dcde870cffb14429b7477e10f67e9e6d68772a0a", size = 305169, upload-time = "2026-02-02T12:37:50.376Z" }, + { url = "https://files.pythonhosted.org/packages/d2/73/a009f41c5eed71c49bec53036c4b33555afcdee70682a18c6f66e396c039/jiter-0.13.0-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:ff732bd0a0e778f43d5009840f20b935e79087b4dc65bd36f1cd0f9b04b8ff7f", size = 303808, upload-time = "2026-02-02T12:37:52.092Z" }, + { url = "https://files.pythonhosted.org/packages/c4/10/528b439290763bff3d939268085d03382471b442f212dca4ff5f12802d43/jiter-0.13.0-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab44b178f7981fcaea7e0a5df20e773c663d06ffda0198f1a524e91b2fde7e59", size = 337384, upload-time = "2026-02-02T12:37:53.582Z" }, + { url = "https://files.pythonhosted.org/packages/67/8a/a342b2f0251f3dac4ca17618265d93bf244a2a4d089126e81e4c1056ac50/jiter-0.13.0-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bb00b6d26db67a05fe3e12c76edc75f32077fb51deed13822dc648fa373bc19", size = 343768, upload-time = "2026-02-02T12:37:55.055Z" }, ] [[package]] name = "joblib" version = "1.5.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/41/f2/d34e8b3a08a9cc79a50b2208a93dce981fe615b64d5a4d4abee421d898df/joblib-1.5.3.tar.gz", hash = "sha256:8561a3269e6801106863fd0d6d84bb737be9e7631e33aaed3fb9ce5953688da3", size = 331603, upload_time = "2025-12-15T08:41:46.427Z" } +sdist = { url = "https://files.pythonhosted.org/packages/41/f2/d34e8b3a08a9cc79a50b2208a93dce981fe615b64d5a4d4abee421d898df/joblib-1.5.3.tar.gz", hash = "sha256:8561a3269e6801106863fd0d6d84bb737be9e7631e33aaed3fb9ce5953688da3", size = 331603, upload-time = "2025-12-15T08:41:46.427Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713", size = 309071, upload_time = "2025-12-15T08:41:44.973Z" }, + { url = "https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713", size = 309071, upload-time = "2025-12-15T08:41:44.973Z" }, ] [[package]] @@ -1611,27 +1661,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jsonpointer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/42/78/18813351fe5d63acad16aec57f94ec2b70a09e53ca98145589e185423873/jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c", size = 21699, upload_time = "2023-06-26T12:07:29.144Z" } +sdist = { url = "https://files.pythonhosted.org/packages/42/78/18813351fe5d63acad16aec57f94ec2b70a09e53ca98145589e185423873/jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c", size = 21699, upload-time = "2023-06-26T12:07:29.144Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/73/07/02e16ed01e04a374e644b575638ec7987ae846d25ad97bcc9945a3ee4b0e/jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade", size = 12898, upload_time = "2023-06-16T21:01:28.466Z" }, + { url = "https://files.pythonhosted.org/packages/73/07/02e16ed01e04a374e644b575638ec7987ae846d25ad97bcc9945a3ee4b0e/jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade", size = 12898, upload-time = "2023-06-16T21:01:28.466Z" }, ] [[package]] name = "jsonpointer" version = "3.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload_time = "2024-06-10T19:24:42.462Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload_time = "2024-06-10T19:24:40.698Z" }, + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, ] [[package]] name = "jsonref" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/aa/0d/c1f3277e90ccdb50d33ed5ba1ec5b3f0a242ed8c1b1a85d3afeb68464dca/jsonref-1.1.0.tar.gz", hash = "sha256:32fe8e1d85af0fdefbebce950af85590b22b60f9e95443176adbde4e1ecea552", size = 8814, upload_time = "2023-01-16T16:10:04.455Z" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/0d/c1f3277e90ccdb50d33ed5ba1ec5b3f0a242ed8c1b1a85d3afeb68464dca/jsonref-1.1.0.tar.gz", hash = "sha256:32fe8e1d85af0fdefbebce950af85590b22b60f9e95443176adbde4e1ecea552", size = 8814, upload-time = "2023-01-16T16:10:04.455Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/ec/e1db9922bceb168197a558a2b8c03a7963f1afe93517ddd3cf99f202f996/jsonref-1.1.0-py3-none-any.whl", hash = "sha256:590dc7773df6c21cbf948b5dac07a72a251db28b0238ceecce0a2abfa8ec30a9", size = 9425, upload_time = "2023-01-16T16:10:02.255Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ec/e1db9922bceb168197a558a2b8c03a7963f1afe93517ddd3cf99f202f996/jsonref-1.1.0-py3-none-any.whl", hash = "sha256:590dc7773df6c21cbf948b5dac07a72a251db28b0238ceecce0a2abfa8ec30a9", size = 9425, upload-time = "2023-01-16T16:10:02.255Z" }, ] [[package]] @@ -1644,9 +1694,9 @@ dependencies = [ { name = "referencing" }, { name = "rpds-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326", size = 366583, upload_time = "2026-01-07T13:41:07.246Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326", size = 366583, upload-time = "2026-01-07T13:41:07.246Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce", size = 90630, upload_time = "2026-01-07T13:41:05.306Z" }, + { url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce", size = 90630, upload-time = "2026-01-07T13:41:05.306Z" }, ] [package.optional-dependencies] @@ -1669,9 +1719,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "referencing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload_time = "2025-09-08T01:34:59.186Z" } +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload_time = "2025-09-08T01:34:57.871Z" }, + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, ] [[package]] @@ -1688,9 +1738,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "uuid-utils" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fb/bb/c501ca60556c11ac80d1454bdcac63cb33583ce4e64fc4535ad5a7d5c6ba/langchain_core-1.2.13.tar.gz", hash = "sha256:d2773d0d0130a356378db9a858cfeef64c3d64bc03722f1d4d6c40eb46fdf01b", size = 831612, upload_time = "2026-02-15T07:45:57.014Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/bb/c501ca60556c11ac80d1454bdcac63cb33583ce4e64fc4535ad5a7d5c6ba/langchain_core-1.2.13.tar.gz", hash = "sha256:d2773d0d0130a356378db9a858cfeef64c3d64bc03722f1d4d6c40eb46fdf01b", size = 831612, upload-time = "2026-02-15T07:45:57.014Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/12/ab/60fd69e5d55f67d422baefddaaca523c42cd7510ab6aeb17db6ae57fb107/langchain_core-1.2.13-py3-none-any.whl", hash = "sha256:b31823e28d3eff1e237096d0bd3bf80c6f9624eb471a9496dbfbd427779f8d82", size = 500485, upload_time = "2026-02-15T07:45:55.422Z" }, + { url = "https://files.pythonhosted.org/packages/12/ab/60fd69e5d55f67d422baefddaaca523c42cd7510ab6aeb17db6ae57fb107/langchain_core-1.2.13-py3-none-any.whl", hash = "sha256:b31823e28d3eff1e237096d0bd3bf80c6f9624eb471a9496dbfbd427779f8d82", size = 500485, upload-time = "2026-02-15T07:45:55.422Z" }, ] [[package]] @@ -1708,77 +1758,77 @@ dependencies = [ { name = "xxhash" }, { name = "zstandard" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8d/bc/8172fefad4f2da888a6d564a27d1fb7d4dbf3c640899c2b40c46235cbe98/langsmith-0.7.3.tar.gz", hash = "sha256:0223b97021af62d2cf53c8a378a27bd22e90a7327e45b353e0069ae60d5d6f9e", size = 988575, upload_time = "2026-02-13T23:25:32.916Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8d/bc/8172fefad4f2da888a6d564a27d1fb7d4dbf3c640899c2b40c46235cbe98/langsmith-0.7.3.tar.gz", hash = "sha256:0223b97021af62d2cf53c8a378a27bd22e90a7327e45b353e0069ae60d5d6f9e", size = 988575, upload-time = "2026-02-13T23:25:32.916Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/9d/5a68b6b5e313ffabbb9725d18a71edb48177fd6d3ad329c07801d2a8e862/langsmith-0.7.3-py3-none-any.whl", hash = "sha256:03659bf9274e6efcead361c9c31a7849ea565ae0d6c0d73e1d8b239029eff3be", size = 325718, upload_time = "2026-02-13T23:25:31.52Z" }, + { url = "https://files.pythonhosted.org/packages/f4/9d/5a68b6b5e313ffabbb9725d18a71edb48177fd6d3ad329c07801d2a8e862/langsmith-0.7.3-py3-none-any.whl", hash = "sha256:03659bf9274e6efcead361c9c31a7849ea565ae0d6c0d73e1d8b239029eff3be", size = 325718, upload-time = "2026-02-13T23:25:31.52Z" }, ] [[package]] name = "lark" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/da/34/28fff3ab31ccff1fd4f6c7c7b0ceb2b6968d8ea4950663eadcb5720591a0/lark-1.3.1.tar.gz", hash = "sha256:b426a7a6d6d53189d318f2b6236ab5d6429eaf09259f1ca33eb716eed10d2905", size = 382732, upload_time = "2025-10-27T18:25:56.653Z" } +sdist = { url = "https://files.pythonhosted.org/packages/da/34/28fff3ab31ccff1fd4f6c7c7b0ceb2b6968d8ea4950663eadcb5720591a0/lark-1.3.1.tar.gz", hash = "sha256:b426a7a6d6d53189d318f2b6236ab5d6429eaf09259f1ca33eb716eed10d2905", size = 382732, upload-time = "2025-10-27T18:25:56.653Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/82/3d/14ce75ef66813643812f3093ab17e46d3a206942ce7376d31ec2d36229e7/lark-1.3.1-py3-none-any.whl", hash = "sha256:c629b661023a014c37da873b4ff58a817398d12635d3bbb2c5a03be7fe5d1e12", size = 113151, upload_time = "2025-10-27T18:25:54.882Z" }, + { url = "https://files.pythonhosted.org/packages/82/3d/14ce75ef66813643812f3093ab17e46d3a206942ce7376d31ec2d36229e7/lark-1.3.1-py3-none-any.whl", hash = "sha256:c629b661023a014c37da873b4ff58a817398d12635d3bbb2c5a03be7fe5d1e12", size = 113151, upload-time = "2025-10-27T18:25:54.882Z" }, ] [[package]] name = "librt" version = "0.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/3f/4ca7dd7819bf8ff303aca39c3c60e5320e46e766ab7f7dd627d3b9c11bdf/librt-0.8.0.tar.gz", hash = "sha256:cb74cdcbc0103fc988e04e5c58b0b31e8e5dd2babb9182b6f9490488eb36324b", size = 177306, upload_time = "2026-02-12T14:53:54.743Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d5/e9/018cfd60629e0404e6917943789800aa2231defbea540a17b90cc4547b97/librt-0.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:db63cf3586a24241e89ca1ce0b56baaec9d371a328bd186c529b27c914c9a1ef", size = 65690, upload_time = "2026-02-12T14:51:57.761Z" }, - { url = "https://files.pythonhosted.org/packages/b5/80/8d39980860e4d1c9497ee50e5cd7c4766d8cfd90d105578eae418e8ffcbc/librt-0.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ba9d9e60651615bc614be5e21a82cdb7b1769a029369cf4b4d861e4f19686fb6", size = 68373, upload_time = "2026-02-12T14:51:59.013Z" }, - { url = "https://files.pythonhosted.org/packages/2d/76/6e6f7a443af63977e421bd542551fec4072d9eaba02e671b05b238fe73bc/librt-0.8.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cb4b3ad543084ed79f186741470b251b9d269cd8b03556f15a8d1a99a64b7de5", size = 197091, upload_time = "2026-02-12T14:52:00.642Z" }, - { url = "https://files.pythonhosted.org/packages/14/40/fa064181c231334c9f4cb69eb338132d39510c8928e84beba34b861d0a71/librt-0.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3d2720335020219197380ccfa5c895f079ac364b4c429e96952cd6509934d8eb", size = 207350, upload_time = "2026-02-12T14:52:02.32Z" }, - { url = "https://files.pythonhosted.org/packages/50/49/e7f8438dd226305e3e5955d495114ad01448e6a6ffc0303289b4153b5fc5/librt-0.8.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9726305d3e53419d27fc8cdfcd3f9571f0ceae22fa6b5ea1b3662c2e538f833e", size = 219962, upload_time = "2026-02-12T14:52:03.884Z" }, - { url = "https://files.pythonhosted.org/packages/1f/2c/74086fc5d52e77107a3cc80a9a3209be6ad1c9b6bc99969d8d9bbf9fdfe4/librt-0.8.0-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cc3d107f603b5ee7a79b6aa6f166551b99b32fb4a5303c4dfcb4222fc6a0335e", size = 212939, upload_time = "2026-02-12T14:52:05.537Z" }, - { url = "https://files.pythonhosted.org/packages/c8/ae/d6917c0ebec9bc2e0293903d6a5ccc7cdb64c228e529e96520b277318f25/librt-0.8.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:41064a0c07b4cc7a81355ccc305cb097d6027002209ffca51306e65ee8293630", size = 221393, upload_time = "2026-02-12T14:52:07.164Z" }, - { url = "https://files.pythonhosted.org/packages/04/97/15df8270f524ce09ad5c19cbbe0e8f95067582507149a6c90594e7795370/librt-0.8.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c6e4c10761ddbc0d67d2f6e2753daf99908db85d8b901729bf2bf5eaa60e0567", size = 216721, upload_time = "2026-02-12T14:52:08.857Z" }, - { url = "https://files.pythonhosted.org/packages/c4/52/17cbcf9b7a1bae5016d9d3561bc7169b32c3bd216c47d934d3f270602c0c/librt-0.8.0-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:ba581acad5ac8f33e2ff1746e8a57e001b47c6721873121bf8bbcf7ba8bd3aa4", size = 214790, upload_time = "2026-02-12T14:52:10.033Z" }, - { url = "https://files.pythonhosted.org/packages/2a/2d/010a236e8dc4d717dd545c46fd036dcced2c7ede71ef85cf55325809ff92/librt-0.8.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bdab762e2c0b48bab76f1a08acb3f4c77afd2123bedac59446aeaaeed3d086cf", size = 237384, upload_time = "2026-02-12T14:52:11.244Z" }, - { url = "https://files.pythonhosted.org/packages/38/14/f1c0eff3df8760dee761029efb72991c554d9f3282f1048e8c3d0eb60997/librt-0.8.0-cp310-cp310-win32.whl", hash = "sha256:6a3146c63220d814c4a2c7d6a1eacc8d5c14aed0ff85115c1dfea868080cd18f", size = 54289, upload_time = "2026-02-12T14:52:12.798Z" }, - { url = "https://files.pythonhosted.org/packages/2f/0b/2684d473e64890882729f91866ed97ccc0a751a0afc3b4bf1a7b57094dbb/librt-0.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:bbebd2bba5c6ae02907df49150e55870fdd7440d727b6192c46b6f754723dde9", size = 61347, upload_time = "2026-02-12T14:52:13.793Z" }, - { url = "https://files.pythonhosted.org/packages/51/e9/42af181c89b65abfd557c1b017cba5b82098eef7bf26d1649d82ce93ccc7/librt-0.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ce33a9778e294507f3a0e3468eccb6a698b5166df7db85661543eca1cfc5369", size = 65314, upload_time = "2026-02-12T14:52:14.778Z" }, - { url = "https://files.pythonhosted.org/packages/9d/4a/15a847fca119dc0334a4b8012b1e15fdc5fc19d505b71e227eaf1bcdba09/librt-0.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8070aa3368559de81061ef752770d03ca1f5fc9467d4d512d405bd0483bfffe6", size = 68015, upload_time = "2026-02-12T14:52:15.797Z" }, - { url = "https://files.pythonhosted.org/packages/e1/87/ffc8dbd6ab68dd91b736c88529411a6729649d2b74b887f91f3aaff8d992/librt-0.8.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:20f73d4fecba969efc15cdefd030e382502d56bb6f1fc66b580cce582836c9fa", size = 194508, upload_time = "2026-02-12T14:52:16.835Z" }, - { url = "https://files.pythonhosted.org/packages/89/92/a7355cea28d6c48ff6ff5083ac4a2a866fb9b07b786aa70d1f1116680cd5/librt-0.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a512c88900bdb1d448882f5623a0b1ad27ba81a9bd75dacfe17080b72272ca1f", size = 205630, upload_time = "2026-02-12T14:52:18.58Z" }, - { url = "https://files.pythonhosted.org/packages/ac/5e/54509038d7ac527828db95b8ba1c8f5d2649bc32fd8f39b1718ec9957dce/librt-0.8.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:015e2dde6e096d27c10238bf9f6492ba6c65822dfb69d2bf74c41a8e88b7ddef", size = 218289, upload_time = "2026-02-12T14:52:20.134Z" }, - { url = "https://files.pythonhosted.org/packages/6d/17/0ee0d13685cefee6d6f2d47bb643ddad3c62387e2882139794e6a5f1288a/librt-0.8.0-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1c25a131013eadd3c600686a0c0333eb2896483cbc7f65baa6a7ee761017aef9", size = 211508, upload_time = "2026-02-12T14:52:21.413Z" }, - { url = "https://files.pythonhosted.org/packages/4b/a8/1714ef6e9325582e3727de3be27e4c1b2f428ea411d09f1396374180f130/librt-0.8.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:21b14464bee0b604d80a638cf1ee3148d84ca4cc163dcdcecb46060c1b3605e4", size = 219129, upload_time = "2026-02-12T14:52:22.61Z" }, - { url = "https://files.pythonhosted.org/packages/89/d3/2d9fe353edff91cdc0ece179348054a6fa61f3de992c44b9477cb973509b/librt-0.8.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:05a3dd3f116747f7e1a2b475ccdc6fb637fd4987126d109e03013a79d40bf9e6", size = 213126, upload_time = "2026-02-12T14:52:23.819Z" }, - { url = "https://files.pythonhosted.org/packages/ad/8e/9f5c60444880f6ad50e3ff7475e5529e787797e7f3ad5432241633733b92/librt-0.8.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:fa37f99bff354ff191c6bcdffbc9d7cdd4fc37faccfc9be0ef3a4fd5613977da", size = 212279, upload_time = "2026-02-12T14:52:25.034Z" }, - { url = "https://files.pythonhosted.org/packages/fe/eb/d4a2cfa647da3022ae977f50d7eda1d91f70d7d1883cf958a4b6ef689eab/librt-0.8.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1566dbb9d1eb0987264c9b9460d212e809ba908d2f4a3999383a84d765f2f3f1", size = 234654, upload_time = "2026-02-12T14:52:26.204Z" }, - { url = "https://files.pythonhosted.org/packages/6a/31/26b978861c7983b036a3aea08bdbb2ec32bbaab1ad1d57c5e022be59afc1/librt-0.8.0-cp311-cp311-win32.whl", hash = "sha256:70defb797c4d5402166787a6b3c66dfb3fa7f93d118c0509ffafa35a392f4258", size = 54603, upload_time = "2026-02-12T14:52:27.342Z" }, - { url = "https://files.pythonhosted.org/packages/d0/78/f194ed7c48dacf875677e749c5d0d1d69a9daa7c994314a39466237fb1be/librt-0.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:db953b675079884ffda33d1dca7189fb961b6d372153750beb81880384300817", size = 61730, upload_time = "2026-02-12T14:52:28.31Z" }, - { url = "https://files.pythonhosted.org/packages/97/ee/ad71095478d02137b6f49469dc808c595cfe89b50985f6b39c5345f0faab/librt-0.8.0-cp311-cp311-win_arm64.whl", hash = "sha256:75d1a8cab20b2043f03f7aab730551e9e440adc034d776f15f6f8d582b0a5ad4", size = 52274, upload_time = "2026-02-12T14:52:29.345Z" }, - { url = "https://files.pythonhosted.org/packages/fb/53/f3bc0c4921adb0d4a5afa0656f2c0fbe20e18e3e0295e12985b9a5dc3f55/librt-0.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:17269dd2745dbe8e42475acb28e419ad92dfa38214224b1b01020b8cac70b645", size = 66511, upload_time = "2026-02-12T14:52:30.34Z" }, - { url = "https://files.pythonhosted.org/packages/89/4b/4c96357432007c25a1b5e363045373a6c39481e49f6ba05234bb59a839c1/librt-0.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f4617cef654fca552f00ce5ffdf4f4b68770f18950e4246ce94629b789b92467", size = 68628, upload_time = "2026-02-12T14:52:31.491Z" }, - { url = "https://files.pythonhosted.org/packages/47/16/52d75374d1012e8fc709216b5eaa25f471370e2a2331b8be00f18670a6c7/librt-0.8.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5cb11061a736a9db45e3c1293cfcb1e3caf205912dfa085734ba750f2197ff9a", size = 198941, upload_time = "2026-02-12T14:52:32.489Z" }, - { url = "https://files.pythonhosted.org/packages/fc/11/d5dd89e5a2228567b1228d8602d896736247424484db086eea6b8010bcba/librt-0.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4bb00bd71b448f16749909b08a0ff16f58b079e2261c2e1000f2bbb2a4f0a45", size = 210009, upload_time = "2026-02-12T14:52:33.634Z" }, - { url = "https://files.pythonhosted.org/packages/49/d8/fc1a92a77c3020ee08ce2dc48aed4b42ab7c30fb43ce488d388673b0f164/librt-0.8.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95a719a049f0eefaf1952673223cf00d442952273cbd20cf2ed7ec423a0ef58d", size = 224461, upload_time = "2026-02-12T14:52:34.868Z" }, - { url = "https://files.pythonhosted.org/packages/7f/98/eb923e8b028cece924c246104aa800cf72e02d023a8ad4ca87135b05a2fe/librt-0.8.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bd32add59b58fba3439d48d6f36ac695830388e3da3e92e4fc26d2d02670d19c", size = 217538, upload_time = "2026-02-12T14:52:36.078Z" }, - { url = "https://files.pythonhosted.org/packages/fd/67/24e80ab170674a1d8ee9f9a83081dca4635519dbd0473b8321deecddb5be/librt-0.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4f764b2424cb04524ff7a486b9c391e93f93dc1bd8305b2136d25e582e99aa2f", size = 225110, upload_time = "2026-02-12T14:52:37.301Z" }, - { url = "https://files.pythonhosted.org/packages/d8/c7/6fbdcbd1a6e5243c7989c21d68ab967c153b391351174b4729e359d9977f/librt-0.8.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f04ca50e847abc486fa8f4107250566441e693779a5374ba211e96e238f298b9", size = 217758, upload_time = "2026-02-12T14:52:38.89Z" }, - { url = "https://files.pythonhosted.org/packages/4b/bd/4d6b36669db086e3d747434430073e14def032dd58ad97959bf7e2d06c67/librt-0.8.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:9ab3a3475a55b89b87ffd7e6665838e8458e0b596c22e0177e0f961434ec474a", size = 218384, upload_time = "2026-02-12T14:52:40.637Z" }, - { url = "https://files.pythonhosted.org/packages/50/2d/afe966beb0a8f179b132f3e95c8dd90738a23e9ebdba10f89a3f192f9366/librt-0.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3e36a8da17134ffc29373775d88c04832f9ecfab1880470661813e6c7991ef79", size = 241187, upload_time = "2026-02-12T14:52:43.55Z" }, - { url = "https://files.pythonhosted.org/packages/02/d0/6172ea4af2b538462785ab1a68e52d5c99cfb9866a7caf00fdf388299734/librt-0.8.0-cp312-cp312-win32.whl", hash = "sha256:4eb5e06ebcc668677ed6389164f52f13f71737fc8be471101fa8b4ce77baeb0c", size = 54914, upload_time = "2026-02-12T14:52:44.676Z" }, - { url = "https://files.pythonhosted.org/packages/d4/cb/ceb6ed6175612a4337ad49fb01ef594712b934b4bc88ce8a63554832eb44/librt-0.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:0a33335eb59921e77c9acc05d0e654e4e32e45b014a4d61517897c11591094f8", size = 62020, upload_time = "2026-02-12T14:52:45.676Z" }, - { url = "https://files.pythonhosted.org/packages/f1/7e/61701acbc67da74ce06ddc7ba9483e81c70f44236b2d00f6a4bfee1aacbf/librt-0.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:24a01c13a2a9bdad20997a4443ebe6e329df063d1978bbe2ebbf637878a46d1e", size = 52443, upload_time = "2026-02-12T14:52:47.218Z" }, - { url = "https://files.pythonhosted.org/packages/6d/32/3edb0bcb4113a9c8bdcd1750663a54565d255027657a5df9d90f13ee07fa/librt-0.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7f820210e21e3a8bf8fde2ae3c3d10106d4de9ead28cbfdf6d0f0f41f5b12fa1", size = 66522, upload_time = "2026-02-12T14:52:48.219Z" }, - { url = "https://files.pythonhosted.org/packages/30/ab/e8c3d05e281f5d405ebdcc5bc8ab36df23e1a4b40ac9da8c3eb9928b72b9/librt-0.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4831c44b8919e75ca0dfb52052897c1ef59fdae19d3589893fbd068f1e41afbf", size = 68658, upload_time = "2026-02-12T14:52:50.351Z" }, - { url = "https://files.pythonhosted.org/packages/7c/d3/74a206c47b7748bbc8c43942de3ed67de4c231156e148b4f9250869593df/librt-0.8.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:88c6e75540f1f10f5e0fc5e87b4b6c290f0e90d1db8c6734f670840494764af8", size = 199287, upload_time = "2026-02-12T14:52:51.938Z" }, - { url = "https://files.pythonhosted.org/packages/fa/29/ef98a9131cf12cb95771d24e4c411fda96c89dc78b09c2de4704877ebee4/librt-0.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9646178cd794704d722306c2c920c221abbf080fede3ba539d5afdec16c46dad", size = 210293, upload_time = "2026-02-12T14:52:53.128Z" }, - { url = "https://files.pythonhosted.org/packages/5b/3e/89b4968cb08c53d4c2d8b02517081dfe4b9e07a959ec143d333d76899f6c/librt-0.8.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e1af31a710e17891d9adf0dbd9a5fcd94901a3922a96499abdbf7ce658f4e01", size = 224801, upload_time = "2026-02-12T14:52:54.367Z" }, - { url = "https://files.pythonhosted.org/packages/6d/28/f38526d501f9513f8b48d78e6be4a241e15dd4b000056dc8b3f06ee9ce5d/librt-0.8.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:507e94f4bec00b2f590fbe55f48cd518a208e2474a3b90a60aa8f29136ddbada", size = 218090, upload_time = "2026-02-12T14:52:55.758Z" }, - { url = "https://files.pythonhosted.org/packages/02/ec/64e29887c5009c24dc9c397116c680caffc50286f62bd99c39e3875a2854/librt-0.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f1178e0de0c271231a660fbef9be6acdfa1d596803464706862bef6644cc1cae", size = 225483, upload_time = "2026-02-12T14:52:57.375Z" }, - { url = "https://files.pythonhosted.org/packages/ee/16/7850bdbc9f1a32d3feff2708d90c56fc0490b13f1012e438532781aa598c/librt-0.8.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:71fc517efc14f75c2f74b1f0a5d5eb4a8e06aa135c34d18eaf3522f4a53cd62d", size = 218226, upload_time = "2026-02-12T14:52:58.534Z" }, - { url = "https://files.pythonhosted.org/packages/1c/4a/166bffc992d65ddefa7c47052010a87c059b44a458ebaf8f5eba384b0533/librt-0.8.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:0583aef7e9a720dd40f26a2ad5a1bf2ccbb90059dac2b32ac516df232c701db3", size = 218755, upload_time = "2026-02-12T14:52:59.701Z" }, - { url = "https://files.pythonhosted.org/packages/da/5d/9aeee038bcc72a9cfaaee934463fe9280a73c5440d36bd3175069d2cb97b/librt-0.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5d0f76fc73480d42285c609c0ea74d79856c160fa828ff9aceab574ea4ecfd7b", size = 241617, upload_time = "2026-02-12T14:53:00.966Z" }, - { url = "https://files.pythonhosted.org/packages/64/ff/2bec6b0296b9d0402aa6ec8540aa19ebcb875d669c37800cb43d10d9c3a3/librt-0.8.0-cp313-cp313-win32.whl", hash = "sha256:e79dbc8f57de360f0ed987dc7de7be814b4803ef0e8fc6d3ff86e16798c99935", size = 54966, upload_time = "2026-02-12T14:53:02.042Z" }, - { url = "https://files.pythonhosted.org/packages/08/8d/bf44633b0182996b2c7ea69a03a5c529683fa1f6b8e45c03fe874ff40d56/librt-0.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:25b3e667cbfc9000c4740b282df599ebd91dbdcc1aa6785050e4c1d6be5329ab", size = 62000, upload_time = "2026-02-12T14:53:03.822Z" }, - { url = "https://files.pythonhosted.org/packages/5c/fd/c6472b8e0eac0925001f75e366cf5500bcb975357a65ef1f6b5749389d3a/librt-0.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:e9a3a38eb4134ad33122a6d575e6324831f930a771d951a15ce232e0237412c2", size = 52496, upload_time = "2026-02-12T14:53:04.889Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/8a/3f/4ca7dd7819bf8ff303aca39c3c60e5320e46e766ab7f7dd627d3b9c11bdf/librt-0.8.0.tar.gz", hash = "sha256:cb74cdcbc0103fc988e04e5c58b0b31e8e5dd2babb9182b6f9490488eb36324b", size = 177306, upload-time = "2026-02-12T14:53:54.743Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/e9/018cfd60629e0404e6917943789800aa2231defbea540a17b90cc4547b97/librt-0.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:db63cf3586a24241e89ca1ce0b56baaec9d371a328bd186c529b27c914c9a1ef", size = 65690, upload-time = "2026-02-12T14:51:57.761Z" }, + { url = "https://files.pythonhosted.org/packages/b5/80/8d39980860e4d1c9497ee50e5cd7c4766d8cfd90d105578eae418e8ffcbc/librt-0.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ba9d9e60651615bc614be5e21a82cdb7b1769a029369cf4b4d861e4f19686fb6", size = 68373, upload-time = "2026-02-12T14:51:59.013Z" }, + { url = "https://files.pythonhosted.org/packages/2d/76/6e6f7a443af63977e421bd542551fec4072d9eaba02e671b05b238fe73bc/librt-0.8.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cb4b3ad543084ed79f186741470b251b9d269cd8b03556f15a8d1a99a64b7de5", size = 197091, upload-time = "2026-02-12T14:52:00.642Z" }, + { url = "https://files.pythonhosted.org/packages/14/40/fa064181c231334c9f4cb69eb338132d39510c8928e84beba34b861d0a71/librt-0.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3d2720335020219197380ccfa5c895f079ac364b4c429e96952cd6509934d8eb", size = 207350, upload-time = "2026-02-12T14:52:02.32Z" }, + { url = "https://files.pythonhosted.org/packages/50/49/e7f8438dd226305e3e5955d495114ad01448e6a6ffc0303289b4153b5fc5/librt-0.8.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9726305d3e53419d27fc8cdfcd3f9571f0ceae22fa6b5ea1b3662c2e538f833e", size = 219962, upload-time = "2026-02-12T14:52:03.884Z" }, + { url = "https://files.pythonhosted.org/packages/1f/2c/74086fc5d52e77107a3cc80a9a3209be6ad1c9b6bc99969d8d9bbf9fdfe4/librt-0.8.0-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cc3d107f603b5ee7a79b6aa6f166551b99b32fb4a5303c4dfcb4222fc6a0335e", size = 212939, upload-time = "2026-02-12T14:52:05.537Z" }, + { url = "https://files.pythonhosted.org/packages/c8/ae/d6917c0ebec9bc2e0293903d6a5ccc7cdb64c228e529e96520b277318f25/librt-0.8.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:41064a0c07b4cc7a81355ccc305cb097d6027002209ffca51306e65ee8293630", size = 221393, upload-time = "2026-02-12T14:52:07.164Z" }, + { url = "https://files.pythonhosted.org/packages/04/97/15df8270f524ce09ad5c19cbbe0e8f95067582507149a6c90594e7795370/librt-0.8.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c6e4c10761ddbc0d67d2f6e2753daf99908db85d8b901729bf2bf5eaa60e0567", size = 216721, upload-time = "2026-02-12T14:52:08.857Z" }, + { url = "https://files.pythonhosted.org/packages/c4/52/17cbcf9b7a1bae5016d9d3561bc7169b32c3bd216c47d934d3f270602c0c/librt-0.8.0-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:ba581acad5ac8f33e2ff1746e8a57e001b47c6721873121bf8bbcf7ba8bd3aa4", size = 214790, upload-time = "2026-02-12T14:52:10.033Z" }, + { url = "https://files.pythonhosted.org/packages/2a/2d/010a236e8dc4d717dd545c46fd036dcced2c7ede71ef85cf55325809ff92/librt-0.8.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bdab762e2c0b48bab76f1a08acb3f4c77afd2123bedac59446aeaaeed3d086cf", size = 237384, upload-time = "2026-02-12T14:52:11.244Z" }, + { url = "https://files.pythonhosted.org/packages/38/14/f1c0eff3df8760dee761029efb72991c554d9f3282f1048e8c3d0eb60997/librt-0.8.0-cp310-cp310-win32.whl", hash = "sha256:6a3146c63220d814c4a2c7d6a1eacc8d5c14aed0ff85115c1dfea868080cd18f", size = 54289, upload-time = "2026-02-12T14:52:12.798Z" }, + { url = "https://files.pythonhosted.org/packages/2f/0b/2684d473e64890882729f91866ed97ccc0a751a0afc3b4bf1a7b57094dbb/librt-0.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:bbebd2bba5c6ae02907df49150e55870fdd7440d727b6192c46b6f754723dde9", size = 61347, upload-time = "2026-02-12T14:52:13.793Z" }, + { url = "https://files.pythonhosted.org/packages/51/e9/42af181c89b65abfd557c1b017cba5b82098eef7bf26d1649d82ce93ccc7/librt-0.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ce33a9778e294507f3a0e3468eccb6a698b5166df7db85661543eca1cfc5369", size = 65314, upload-time = "2026-02-12T14:52:14.778Z" }, + { url = "https://files.pythonhosted.org/packages/9d/4a/15a847fca119dc0334a4b8012b1e15fdc5fc19d505b71e227eaf1bcdba09/librt-0.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8070aa3368559de81061ef752770d03ca1f5fc9467d4d512d405bd0483bfffe6", size = 68015, upload-time = "2026-02-12T14:52:15.797Z" }, + { url = "https://files.pythonhosted.org/packages/e1/87/ffc8dbd6ab68dd91b736c88529411a6729649d2b74b887f91f3aaff8d992/librt-0.8.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:20f73d4fecba969efc15cdefd030e382502d56bb6f1fc66b580cce582836c9fa", size = 194508, upload-time = "2026-02-12T14:52:16.835Z" }, + { url = "https://files.pythonhosted.org/packages/89/92/a7355cea28d6c48ff6ff5083ac4a2a866fb9b07b786aa70d1f1116680cd5/librt-0.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a512c88900bdb1d448882f5623a0b1ad27ba81a9bd75dacfe17080b72272ca1f", size = 205630, upload-time = "2026-02-12T14:52:18.58Z" }, + { url = "https://files.pythonhosted.org/packages/ac/5e/54509038d7ac527828db95b8ba1c8f5d2649bc32fd8f39b1718ec9957dce/librt-0.8.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:015e2dde6e096d27c10238bf9f6492ba6c65822dfb69d2bf74c41a8e88b7ddef", size = 218289, upload-time = "2026-02-12T14:52:20.134Z" }, + { url = "https://files.pythonhosted.org/packages/6d/17/0ee0d13685cefee6d6f2d47bb643ddad3c62387e2882139794e6a5f1288a/librt-0.8.0-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1c25a131013eadd3c600686a0c0333eb2896483cbc7f65baa6a7ee761017aef9", size = 211508, upload-time = "2026-02-12T14:52:21.413Z" }, + { url = "https://files.pythonhosted.org/packages/4b/a8/1714ef6e9325582e3727de3be27e4c1b2f428ea411d09f1396374180f130/librt-0.8.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:21b14464bee0b604d80a638cf1ee3148d84ca4cc163dcdcecb46060c1b3605e4", size = 219129, upload-time = "2026-02-12T14:52:22.61Z" }, + { url = "https://files.pythonhosted.org/packages/89/d3/2d9fe353edff91cdc0ece179348054a6fa61f3de992c44b9477cb973509b/librt-0.8.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:05a3dd3f116747f7e1a2b475ccdc6fb637fd4987126d109e03013a79d40bf9e6", size = 213126, upload-time = "2026-02-12T14:52:23.819Z" }, + { url = "https://files.pythonhosted.org/packages/ad/8e/9f5c60444880f6ad50e3ff7475e5529e787797e7f3ad5432241633733b92/librt-0.8.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:fa37f99bff354ff191c6bcdffbc9d7cdd4fc37faccfc9be0ef3a4fd5613977da", size = 212279, upload-time = "2026-02-12T14:52:25.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/eb/d4a2cfa647da3022ae977f50d7eda1d91f70d7d1883cf958a4b6ef689eab/librt-0.8.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1566dbb9d1eb0987264c9b9460d212e809ba908d2f4a3999383a84d765f2f3f1", size = 234654, upload-time = "2026-02-12T14:52:26.204Z" }, + { url = "https://files.pythonhosted.org/packages/6a/31/26b978861c7983b036a3aea08bdbb2ec32bbaab1ad1d57c5e022be59afc1/librt-0.8.0-cp311-cp311-win32.whl", hash = "sha256:70defb797c4d5402166787a6b3c66dfb3fa7f93d118c0509ffafa35a392f4258", size = 54603, upload-time = "2026-02-12T14:52:27.342Z" }, + { url = "https://files.pythonhosted.org/packages/d0/78/f194ed7c48dacf875677e749c5d0d1d69a9daa7c994314a39466237fb1be/librt-0.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:db953b675079884ffda33d1dca7189fb961b6d372153750beb81880384300817", size = 61730, upload-time = "2026-02-12T14:52:28.31Z" }, + { url = "https://files.pythonhosted.org/packages/97/ee/ad71095478d02137b6f49469dc808c595cfe89b50985f6b39c5345f0faab/librt-0.8.0-cp311-cp311-win_arm64.whl", hash = "sha256:75d1a8cab20b2043f03f7aab730551e9e440adc034d776f15f6f8d582b0a5ad4", size = 52274, upload-time = "2026-02-12T14:52:29.345Z" }, + { url = "https://files.pythonhosted.org/packages/fb/53/f3bc0c4921adb0d4a5afa0656f2c0fbe20e18e3e0295e12985b9a5dc3f55/librt-0.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:17269dd2745dbe8e42475acb28e419ad92dfa38214224b1b01020b8cac70b645", size = 66511, upload-time = "2026-02-12T14:52:30.34Z" }, + { url = "https://files.pythonhosted.org/packages/89/4b/4c96357432007c25a1b5e363045373a6c39481e49f6ba05234bb59a839c1/librt-0.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f4617cef654fca552f00ce5ffdf4f4b68770f18950e4246ce94629b789b92467", size = 68628, upload-time = "2026-02-12T14:52:31.491Z" }, + { url = "https://files.pythonhosted.org/packages/47/16/52d75374d1012e8fc709216b5eaa25f471370e2a2331b8be00f18670a6c7/librt-0.8.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5cb11061a736a9db45e3c1293cfcb1e3caf205912dfa085734ba750f2197ff9a", size = 198941, upload-time = "2026-02-12T14:52:32.489Z" }, + { url = "https://files.pythonhosted.org/packages/fc/11/d5dd89e5a2228567b1228d8602d896736247424484db086eea6b8010bcba/librt-0.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4bb00bd71b448f16749909b08a0ff16f58b079e2261c2e1000f2bbb2a4f0a45", size = 210009, upload-time = "2026-02-12T14:52:33.634Z" }, + { url = "https://files.pythonhosted.org/packages/49/d8/fc1a92a77c3020ee08ce2dc48aed4b42ab7c30fb43ce488d388673b0f164/librt-0.8.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95a719a049f0eefaf1952673223cf00d442952273cbd20cf2ed7ec423a0ef58d", size = 224461, upload-time = "2026-02-12T14:52:34.868Z" }, + { url = "https://files.pythonhosted.org/packages/7f/98/eb923e8b028cece924c246104aa800cf72e02d023a8ad4ca87135b05a2fe/librt-0.8.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bd32add59b58fba3439d48d6f36ac695830388e3da3e92e4fc26d2d02670d19c", size = 217538, upload-time = "2026-02-12T14:52:36.078Z" }, + { url = "https://files.pythonhosted.org/packages/fd/67/24e80ab170674a1d8ee9f9a83081dca4635519dbd0473b8321deecddb5be/librt-0.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4f764b2424cb04524ff7a486b9c391e93f93dc1bd8305b2136d25e582e99aa2f", size = 225110, upload-time = "2026-02-12T14:52:37.301Z" }, + { url = "https://files.pythonhosted.org/packages/d8/c7/6fbdcbd1a6e5243c7989c21d68ab967c153b391351174b4729e359d9977f/librt-0.8.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f04ca50e847abc486fa8f4107250566441e693779a5374ba211e96e238f298b9", size = 217758, upload-time = "2026-02-12T14:52:38.89Z" }, + { url = "https://files.pythonhosted.org/packages/4b/bd/4d6b36669db086e3d747434430073e14def032dd58ad97959bf7e2d06c67/librt-0.8.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:9ab3a3475a55b89b87ffd7e6665838e8458e0b596c22e0177e0f961434ec474a", size = 218384, upload-time = "2026-02-12T14:52:40.637Z" }, + { url = "https://files.pythonhosted.org/packages/50/2d/afe966beb0a8f179b132f3e95c8dd90738a23e9ebdba10f89a3f192f9366/librt-0.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3e36a8da17134ffc29373775d88c04832f9ecfab1880470661813e6c7991ef79", size = 241187, upload-time = "2026-02-12T14:52:43.55Z" }, + { url = "https://files.pythonhosted.org/packages/02/d0/6172ea4af2b538462785ab1a68e52d5c99cfb9866a7caf00fdf388299734/librt-0.8.0-cp312-cp312-win32.whl", hash = "sha256:4eb5e06ebcc668677ed6389164f52f13f71737fc8be471101fa8b4ce77baeb0c", size = 54914, upload-time = "2026-02-12T14:52:44.676Z" }, + { url = "https://files.pythonhosted.org/packages/d4/cb/ceb6ed6175612a4337ad49fb01ef594712b934b4bc88ce8a63554832eb44/librt-0.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:0a33335eb59921e77c9acc05d0e654e4e32e45b014a4d61517897c11591094f8", size = 62020, upload-time = "2026-02-12T14:52:45.676Z" }, + { url = "https://files.pythonhosted.org/packages/f1/7e/61701acbc67da74ce06ddc7ba9483e81c70f44236b2d00f6a4bfee1aacbf/librt-0.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:24a01c13a2a9bdad20997a4443ebe6e329df063d1978bbe2ebbf637878a46d1e", size = 52443, upload-time = "2026-02-12T14:52:47.218Z" }, + { url = "https://files.pythonhosted.org/packages/6d/32/3edb0bcb4113a9c8bdcd1750663a54565d255027657a5df9d90f13ee07fa/librt-0.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7f820210e21e3a8bf8fde2ae3c3d10106d4de9ead28cbfdf6d0f0f41f5b12fa1", size = 66522, upload-time = "2026-02-12T14:52:48.219Z" }, + { url = "https://files.pythonhosted.org/packages/30/ab/e8c3d05e281f5d405ebdcc5bc8ab36df23e1a4b40ac9da8c3eb9928b72b9/librt-0.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4831c44b8919e75ca0dfb52052897c1ef59fdae19d3589893fbd068f1e41afbf", size = 68658, upload-time = "2026-02-12T14:52:50.351Z" }, + { url = "https://files.pythonhosted.org/packages/7c/d3/74a206c47b7748bbc8c43942de3ed67de4c231156e148b4f9250869593df/librt-0.8.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:88c6e75540f1f10f5e0fc5e87b4b6c290f0e90d1db8c6734f670840494764af8", size = 199287, upload-time = "2026-02-12T14:52:51.938Z" }, + { url = "https://files.pythonhosted.org/packages/fa/29/ef98a9131cf12cb95771d24e4c411fda96c89dc78b09c2de4704877ebee4/librt-0.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9646178cd794704d722306c2c920c221abbf080fede3ba539d5afdec16c46dad", size = 210293, upload-time = "2026-02-12T14:52:53.128Z" }, + { url = "https://files.pythonhosted.org/packages/5b/3e/89b4968cb08c53d4c2d8b02517081dfe4b9e07a959ec143d333d76899f6c/librt-0.8.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e1af31a710e17891d9adf0dbd9a5fcd94901a3922a96499abdbf7ce658f4e01", size = 224801, upload-time = "2026-02-12T14:52:54.367Z" }, + { url = "https://files.pythonhosted.org/packages/6d/28/f38526d501f9513f8b48d78e6be4a241e15dd4b000056dc8b3f06ee9ce5d/librt-0.8.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:507e94f4bec00b2f590fbe55f48cd518a208e2474a3b90a60aa8f29136ddbada", size = 218090, upload-time = "2026-02-12T14:52:55.758Z" }, + { url = "https://files.pythonhosted.org/packages/02/ec/64e29887c5009c24dc9c397116c680caffc50286f62bd99c39e3875a2854/librt-0.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f1178e0de0c271231a660fbef9be6acdfa1d596803464706862bef6644cc1cae", size = 225483, upload-time = "2026-02-12T14:52:57.375Z" }, + { url = "https://files.pythonhosted.org/packages/ee/16/7850bdbc9f1a32d3feff2708d90c56fc0490b13f1012e438532781aa598c/librt-0.8.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:71fc517efc14f75c2f74b1f0a5d5eb4a8e06aa135c34d18eaf3522f4a53cd62d", size = 218226, upload-time = "2026-02-12T14:52:58.534Z" }, + { url = "https://files.pythonhosted.org/packages/1c/4a/166bffc992d65ddefa7c47052010a87c059b44a458ebaf8f5eba384b0533/librt-0.8.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:0583aef7e9a720dd40f26a2ad5a1bf2ccbb90059dac2b32ac516df232c701db3", size = 218755, upload-time = "2026-02-12T14:52:59.701Z" }, + { url = "https://files.pythonhosted.org/packages/da/5d/9aeee038bcc72a9cfaaee934463fe9280a73c5440d36bd3175069d2cb97b/librt-0.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5d0f76fc73480d42285c609c0ea74d79856c160fa828ff9aceab574ea4ecfd7b", size = 241617, upload-time = "2026-02-12T14:53:00.966Z" }, + { url = "https://files.pythonhosted.org/packages/64/ff/2bec6b0296b9d0402aa6ec8540aa19ebcb875d669c37800cb43d10d9c3a3/librt-0.8.0-cp313-cp313-win32.whl", hash = "sha256:e79dbc8f57de360f0ed987dc7de7be814b4803ef0e8fc6d3ff86e16798c99935", size = 54966, upload-time = "2026-02-12T14:53:02.042Z" }, + { url = "https://files.pythonhosted.org/packages/08/8d/bf44633b0182996b2c7ea69a03a5c529683fa1f6b8e45c03fe874ff40d56/librt-0.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:25b3e667cbfc9000c4740b282df599ebd91dbdcc1aa6785050e4c1d6be5329ab", size = 62000, upload-time = "2026-02-12T14:53:03.822Z" }, + { url = "https://files.pythonhosted.org/packages/5c/fd/c6472b8e0eac0925001f75e366cf5500bcb975357a65ef1f6b5749389d3a/librt-0.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:e9a3a38eb4134ad33122a6d575e6324831f930a771d951a15ce232e0237412c2", size = 52496, upload-time = "2026-02-12T14:53:04.889Z" }, ] [[package]] @@ -1799,179 +1849,179 @@ dependencies = [ { name = "tiktoken" }, { name = "tokenizers" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/80/b6cb799e7100953d848e106d0575db34c75bc3b57f31f2eefdfb1e23655f/litellm-1.81.13.tar.gz", hash = "sha256:083788d9c94e3371ff1c42e40e0e8198c497772643292a65b1bc91a3b3b537ea", size = 16562861, upload_time = "2026-02-17T02:00:47.466Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/80/b6cb799e7100953d848e106d0575db34c75bc3b57f31f2eefdfb1e23655f/litellm-1.81.13.tar.gz", hash = "sha256:083788d9c94e3371ff1c42e40e0e8198c497772643292a65b1bc91a3b3b537ea", size = 16562861, upload-time = "2026-02-17T02:00:47.466Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/be/f3/fffb7932870163cea7addc392165647a9a8a5489967de486c854226f1141/litellm-1.81.13-py3-none-any.whl", hash = "sha256:ae4aea2a55e85993f5f6dd36d036519422d24812a1a3e8540d9e987f2d7a4304", size = 14587505, upload_time = "2026-02-17T02:00:44.22Z" }, + { url = "https://files.pythonhosted.org/packages/be/f3/fffb7932870163cea7addc392165647a9a8a5489967de486c854226f1141/litellm-1.81.13-py3-none-any.whl", hash = "sha256:ae4aea2a55e85993f5f6dd36d036519422d24812a1a3e8540d9e987f2d7a4304", size = 14587505, upload-time = "2026-02-17T02:00:44.22Z" }, ] [[package]] name = "loro" version = "1.13.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9c/0a/a5171cc085b08a066bd1f7b686db9f6493fc45b69b4047ccea682255fdea/loro-1.13.1.tar.gz", hash = "sha256:0c3727bc52f5098576532edd399efc08ceb234c5d9235a19cbd5ea37c4fba485", size = 70462, upload_time = "2026-06-14T09:44:08.296Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/19/0e/78d538a3a4ed549bf67ddbcbc94c7f283f9bbb023b91615cb6e94aebe3e0/loro-1.13.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:881a45d7e557064b9749a86d390c256712c5313a08b89cfb832da6085764cb8c", size = 3389576, upload_time = "2026-06-14T09:41:13.695Z" }, - { url = "https://files.pythonhosted.org/packages/16/fc/97adb97b98871dd5837770effe54f8aa384eada9f8a92169de556d3c86fc/loro-1.13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d8197e6ad7577950b7989d5e2e631195319e5da9eb1d37b88fb153813c3462ec", size = 3214088, upload_time = "2026-06-14T09:40:56.383Z" }, - { url = "https://files.pythonhosted.org/packages/8d/e2/3a6cfaaeef365f2dce48522397270ab8ab3738aa5ee0d57600bb55bbadb4/loro-1.13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:634d3d271e586c8ee5f461f4fcca033509ebe18f12bbd6fc1cf5015b6d451961", size = 3456589, upload_time = "2026-06-14T09:37:29.065Z" }, - { url = "https://files.pythonhosted.org/packages/27/27/4a8dd890a2b286d44cc551ee7f7e99af840e665e2fd7302d9a854109b8c5/loro-1.13.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:585289f1ce720e64ed4c11b5dcdcd820696b140c7ec01169049979c079835a75", size = 3479469, upload_time = "2026-06-14T09:38:06.753Z" }, - { url = "https://files.pythonhosted.org/packages/18/65/4e73c5c25c9b524d8e8198b4fcfc528d854390ca57cfea027aaaf9082b71/loro-1.13.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:016f8ce02e15be615b91e503143ee57380cc88c882bd25a06f7ee36e14a83cfa", size = 3867965, upload_time = "2026-06-14T09:38:43.888Z" }, - { url = "https://files.pythonhosted.org/packages/6f/0c/ea0aee61f2a08eac87c6cf71ffdb85681f2d0842310df11c94b6aca41189/loro-1.13.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e307f6b18d698f1230aafca0e10791c268d9ed2d663d385fc4cac69145cba12", size = 3557253, upload_time = "2026-06-14T09:39:21.897Z" }, - { url = "https://files.pythonhosted.org/packages/89/99/fc1cf20c7f5db88417a46aabbe17e9f4d4aa046fd4036c3f5395c8907f6b/loro-1.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa325d3b519ec005d57abc0e1cf6c093a8bfbdc2b6fcce2202339a9c1af8fdc7", size = 3498675, upload_time = "2026-06-14T09:40:28.595Z" }, - { url = "https://files.pythonhosted.org/packages/b9/9a/bf3f976141c7a981b92e38cdacdc7e287fdf460f412f2d6c8c6fb2714ced/loro-1.13.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:be581dd2a0b9ec61aa7f8b2805883d94e7db5408e15991c612507d3bb2c6e969", size = 3814885, upload_time = "2026-06-14T09:39:59.165Z" }, - { url = "https://files.pythonhosted.org/packages/86/bd/e3a9ccabc8d9b59a621f570b9aa267c9306286aa601e1661bd506d57ac12/loro-1.13.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b99d7f919bdfc2ae29dd69dfccef890dd9ac225b9802ce20b85260a90efa45fc", size = 3632197, upload_time = "2026-06-14T09:41:32.04Z" }, - { url = "https://files.pythonhosted.org/packages/a2/c9/4a9e7799e327a007cd869e70586ac65d5e4ee0b0998194549335519906a0/loro-1.13.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a0cbd507903dd0f1017d602ef59f15a185493aaa5fe597149026c4f6d19a86ad", size = 3748608, upload_time = "2026-06-14T09:42:10.336Z" }, - { url = "https://files.pythonhosted.org/packages/69/f0/b16183e3bf647135077e59778ab74ff30292b1ba4ea0563ace3a26ecf848/loro-1.13.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6836ed89e71a70a2a48fa989247ef463cfc53bd192315fe5df56f1d702a77c5f", size = 3836328, upload_time = "2026-06-14T09:42:49.429Z" }, - { url = "https://files.pythonhosted.org/packages/cc/e2/98bd5558b47e46952b85cc374a6433c9de068af40936777759f0b4a2c593/loro-1.13.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e3b3b52fb6a326fe33a6c8dda2725ab8678e35995042966e4cbc0dda884d89f", size = 3758591, upload_time = "2026-06-14T09:43:27.852Z" }, - { url = "https://files.pythonhosted.org/packages/74/8a/bec03707e0e724ef0b3b1c4b318e1f732b79ca0bff0ccb6fddb7f51db071/loro-1.13.1-cp310-cp310-win32.whl", hash = "sha256:defc33602140c410ac63bc8301ee2ae91141119b9622aa9a8481f5ab019179e8", size = 2858413, upload_time = "2026-06-14T09:44:29.256Z" }, - { url = "https://files.pythonhosted.org/packages/d8/0f/e37c22d1c24f97423c213c81c4b0c1979da506a47fcb7c4252ddfae259e1/loro-1.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:24bd4f961ff269c332754467410fe54e30084f11e09b390842d88a8d7aef3d84", size = 3087131, upload_time = "2026-06-14T09:44:09.371Z" }, - { url = "https://files.pythonhosted.org/packages/6f/73/9f28cc5d626cae0b1129a62a6edd0922ce979aae67ccbd162a3052aa70c6/loro-1.13.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ca89672a72fd211caddec137cb5539ca7b9906e9afebabd25948590c042a52d7", size = 3388491, upload_time = "2026-06-14T09:41:15.078Z" }, - { url = "https://files.pythonhosted.org/packages/68/ee/8ada6f1ae19b9e1d69c7d9760fe4544a6a8baa6015951f260d368311beb3/loro-1.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:84026a187d2fab3f7a1386eb239042a8c334ef2493621fb7684fe758229d3f78", size = 3212708, upload_time = "2026-06-14T09:40:57.617Z" }, - { url = "https://files.pythonhosted.org/packages/5a/d8/f0c7430e9a767cc956f6f4414e8cc69b1382e15c13dd5fe8a6d099ac4270/loro-1.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1e5e572e69f3aeedd3dce43bb4cda602bd20c91ea001f6d034b89ce511affc5", size = 3454249, upload_time = "2026-06-14T09:37:30.905Z" }, - { url = "https://files.pythonhosted.org/packages/2e/c2/c8b10557879cabf6f9fb3858dee5fe0e4d72c0bbf390d5a3f4a1aa8c86fb/loro-1.13.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e87166c9bff35908e2a2b378def56c8a5ae6286ca7d3c14dd7d6a94a2018713e", size = 3478994, upload_time = "2026-06-14T09:38:08.32Z" }, - { url = "https://files.pythonhosted.org/packages/95/82/37a9163194b097c89f7c87062e8dc3067af288ffe36acf17d83e50577a03/loro-1.13.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:984f2c7c17f7ff5c11cad04d5aa22f76247800b4b10465845a64b0e7d5491a4a", size = 3868397, upload_time = "2026-06-14T09:38:45.22Z" }, - { url = "https://files.pythonhosted.org/packages/69/57/e2453b4fcb83c0ce238fe43e6073d32c257f1298c2209a7ca532701e24d6/loro-1.13.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3a91938bd8812f4aa445d8dc7f4a2296aae6993ae99b2573b8346d95a3112f9", size = 3556776, upload_time = "2026-06-14T09:39:23.613Z" }, - { url = "https://files.pythonhosted.org/packages/82/7a/8d0b98fd2cb7459ce662fc09d09f2c7759dace5281041f1a40ce88da7118/loro-1.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb40d659067c6d393e28c7fa1d47a74f02c21b002f631b296bc5956ed10e4e03", size = 3498669, upload_time = "2026-06-14T09:40:30.223Z" }, - { url = "https://files.pythonhosted.org/packages/56/e6/44cbc490efeb482ffdab05a9911de479cde2c5b15cf78cc380c461569770/loro-1.13.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ba14aac864efa39060f429e13fe826dd7a3eea51770c7ba18f7ab417a966733e", size = 3814637, upload_time = "2026-06-14T09:40:00.704Z" }, - { url = "https://files.pythonhosted.org/packages/b9/57/1983a2c4febe009d8000c46c2aae91fa2a063ff006cbdce08c19ff3b691c/loro-1.13.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:236f0b5a606890782e9830233f049e9bf711999fe12163b6e57b2f16656477ab", size = 3631426, upload_time = "2026-06-14T09:41:33.545Z" }, - { url = "https://files.pythonhosted.org/packages/b4/6c/b825f30215048473451bbfc68570dac846d6b5c9a566c38e69fe4cf2c171/loro-1.13.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:86500c195f3542c1b286564ff283dd2d29acf87c029e3a968fce658f492eb70c", size = 3747911, upload_time = "2026-06-14T09:42:11.925Z" }, - { url = "https://files.pythonhosted.org/packages/b4/76/7c80c176de31b068cce0b608664541f7c45dc1522a0afac323454d6ea565/loro-1.13.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1e57c441619090013730a1ff64f4a541df56230f56f386004da54d4bbdfa5b49", size = 3836322, upload_time = "2026-06-14T09:42:51.032Z" }, - { url = "https://files.pythonhosted.org/packages/d4/b8/f26e7e04146a0958eeb136ce9e1584d6a0a663e917eee0019cbbfcd3fd95/loro-1.13.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c3115e10224001e517b262760126bd998c871168cbcfe822ecf0f32ba843d13a", size = 3758094, upload_time = "2026-06-14T09:43:29.478Z" }, - { url = "https://files.pythonhosted.org/packages/70/50/ff05b94aad55319162982fc81c7f5beab8c1fb4c77dec1364f79a2dab4d9/loro-1.13.1-cp311-cp311-win32.whl", hash = "sha256:6367d8b6f0e682e17f281df51f502d8c7034b3e115899169fffe5c47943f044a", size = 2859108, upload_time = "2026-06-14T09:44:30.842Z" }, - { url = "https://files.pythonhosted.org/packages/63/d9/9268de0d259470e9f5ccd64b502d5267cb83e22e5b9eb9680cfde916314e/loro-1.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:10ee34b857c0d0fe175874abc20aca2d900f464fda0873eb40eea64a13d120c5", size = 3087237, upload_time = "2026-06-14T09:44:10.946Z" }, - { url = "https://files.pythonhosted.org/packages/1d/63/9d58b58fa07691682056a1869332acde98ad3f5604c5167bc2c67a3499ac/loro-1.13.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:62944de6a84c71f7fb87dc5ea59e70f68c3910dbee08fa29f1d87d2aa79361f9", size = 3372403, upload_time = "2026-06-14T09:41:16.448Z" }, - { url = "https://files.pythonhosted.org/packages/8c/a7/1e00449128a0124f05a0070ed042f6e6e6a1ae9d42462f341e5782d0b1c6/loro-1.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:18483499a361ca72dd6512a889fea097ddd203d6d048cdeb202cfdb454daa6da", size = 3201108, upload_time = "2026-06-14T09:40:59.18Z" }, - { url = "https://files.pythonhosted.org/packages/6f/a1/94c3ae7ca30252caed58895e9f0c711045f93903891f59cb17c255b1832b/loro-1.13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f24b880c6ef075e092956e6cc8a1ca10d75dd0c42100c93314d941d21ce7e825", size = 3458390, upload_time = "2026-06-14T09:37:32.334Z" }, - { url = "https://files.pythonhosted.org/packages/9c/e5/fbe091e3da9518b22cf81227d102a792c5f2427f011461192262082b4981/loro-1.13.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1692f6cd32715106fa6512cffd77dae386c19aa3d269e0aa540f562c901b4fb3", size = 3481720, upload_time = "2026-06-14T09:38:09.71Z" }, - { url = "https://files.pythonhosted.org/packages/f9/c5/efe3ed6991bc2fca078e6f065e9b3c6af9caabcd37de9c45d001e27d02f7/loro-1.13.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c974a0c7534cdb3885922fac0762276726f2c6212ea42ff9f94fb66458646163", size = 3868987, upload_time = "2026-06-14T09:38:46.803Z" }, - { url = "https://files.pythonhosted.org/packages/4d/a4/3e879c36de0d0726686a8863cc4c7cbd27977ab54602d9d5b519a6c038ad/loro-1.13.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ad60e62ee97de40e345a79dd0e8e1890589827517a85f2795499ecbe0c772d", size = 3563937, upload_time = "2026-06-14T09:39:25.155Z" }, - { url = "https://files.pythonhosted.org/packages/1b/24/384088890d15867dcec61420afcfe37c6a185dc38302426b53b77ab9a944/loro-1.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4bb41b0fc46d7310f9b863359bd9073e8be042906792418810c45246d52f3e2c", size = 3506609, upload_time = "2026-06-14T09:40:31.647Z" }, - { url = "https://files.pythonhosted.org/packages/59/fa/93a33f1e4f4482dfc3463be3395d29ad5769c213cc89890167aca6c7d682/loro-1.13.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2fc251ab7ec8d4f45d6afba76b5c0fa804815df8322a7c5b4855c69d574fa3e4", size = 3820553, upload_time = "2026-06-14T09:40:02.103Z" }, - { url = "https://files.pythonhosted.org/packages/5e/77/209513ad828529b52bcadd43b438aa0c419d951c67dd8573c2d7fea29c5c/loro-1.13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:799f93099a7397e3d4975507769beaca49b1545c28ce2f565e0c6a9d7114c7c5", size = 3635451, upload_time = "2026-06-14T09:41:35.078Z" }, - { url = "https://files.pythonhosted.org/packages/66/dc/9a800ea8c377af8b839d052e1c6dce090a5bb1a8d62f9bb72d8ac74d7fae/loro-1.13.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:dddaa54ab925096efae42d017e3ec3e1a5e96109f011c9457a364370346d8d57", size = 3751844, upload_time = "2026-06-14T09:42:13.511Z" }, - { url = "https://files.pythonhosted.org/packages/48/c9/0d4ea932f2a2aa5143ddc5abda9afc45036d99af068ed9176baa19f8e5b0/loro-1.13.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5438af35c12fcdfed73515bfec9d675ccee9ae0f6206402d42699f13921c489b", size = 3839548, upload_time = "2026-06-14T09:42:52.713Z" }, - { url = "https://files.pythonhosted.org/packages/ee/9b/ab9b732f43ccc895b97e848003f72edcdf46dc6adac77f5313e520699c86/loro-1.13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aa9ab0684b64eea6bb4088697063c536e322688828946ef29ada34cdd7ab97fe", size = 3766156, upload_time = "2026-06-14T09:43:31.825Z" }, - { url = "https://files.pythonhosted.org/packages/ca/c3/7f7e28ccac959d2d0085fadec194f6b45713517155bb67939392a8675b0f/loro-1.13.1-cp312-cp312-win32.whl", hash = "sha256:f13be6490fd9afb86474cf8c20270c64efcb0b3a9b32309bae5611ffc5d4ec30", size = 2852620, upload_time = "2026-06-14T09:44:32.61Z" }, - { url = "https://files.pythonhosted.org/packages/22/10/42e780e90c5a0a8e35c4e4cc6467dd2158324f389d6183bf763434c51e89/loro-1.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:b40a60be6900f84704824d44d11d7a721e5b3602f472b71d9aa8310b301478f3", size = 3096879, upload_time = "2026-06-14T09:44:12.476Z" }, - { url = "https://files.pythonhosted.org/packages/93/06/e369dac8102485a1140d18c4823b88c97c97577adb5c0029e5163917f726/loro-1.13.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:969916c8747b8f3fc0234c1d8c04f3433d3dbf88ce1f5f90c816c7e2c80c8d5d", size = 3371860, upload_time = "2026-06-14T09:41:17.899Z" }, - { url = "https://files.pythonhosted.org/packages/4d/cc/0f661d4779efe66e61d825b31ff13da3277140820a1db2f846e466d5b5f2/loro-1.13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:00b85365ff695dbff3b4e0513976025d92e80741475449857f0b18a143694c39", size = 3200732, upload_time = "2026-06-14T09:41:00.581Z" }, - { url = "https://files.pythonhosted.org/packages/c6/ba/314c26e89492b4486634e96844bf5acf4ea88b1dc4fa04b06e47e92403be/loro-1.13.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c46783fa28dd5144f7ca5f20ac949ad7568ef6d511e4aec077566bd0e011f3da", size = 3457717, upload_time = "2026-06-14T09:37:33.867Z" }, - { url = "https://files.pythonhosted.org/packages/e8/42/990572d3e7f71f6930420185b9fb6669490078b88a8ff2e8171310b861b5/loro-1.13.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2ba4caa9b52d64dd2d1aaa0672cb058618e4fc722ab26393f5b2db51bd715fc5", size = 3481891, upload_time = "2026-06-14T09:38:11.153Z" }, - { url = "https://files.pythonhosted.org/packages/e7/b7/3a1dc21ba8b5ea4362df8d21f61b4273fdcc84504969a4868621faf428a4/loro-1.13.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e8bd1b7b65b552b7863c2d8d0e041dc35b3ccaf86422c2d03cbd89903feee890", size = 3868735, upload_time = "2026-06-14T09:38:48.233Z" }, - { url = "https://files.pythonhosted.org/packages/9c/64/838072fc73ae993316df8d80aedc537092c73b5e0f27132de60b9cfaa31b/loro-1.13.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a1591e115e874d9e0ad7cf7b413390d26cafb5750d707897fd79a5d1f69b7e7", size = 3564176, upload_time = "2026-06-14T09:39:26.573Z" }, - { url = "https://files.pythonhosted.org/packages/57/c2/8c122a862b8f773ba40c6ade7a89afb9ed26382d23e024f4e66f47ad639f/loro-1.13.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05703492391f21bb251181a2ee9f1f68425d73efa94810271e25087faca5c23d", size = 3506207, upload_time = "2026-06-14T09:40:33.132Z" }, - { url = "https://files.pythonhosted.org/packages/35/ff/49426f106fcc8b3cdc22dc46af68a1f74ab1675aea07c5244616e2b7b805/loro-1.13.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:862f4948e3a0da4eee417d159a728a8f75a309d02e9aeb4309cbc96e5e48f3c6", size = 3820941, upload_time = "2026-06-14T09:40:05.009Z" }, - { url = "https://files.pythonhosted.org/packages/ab/23/a40c73fb33eb5cc4bbf44ea81efe147cb804c1b9c4d41c37e2dc5e1e1a21/loro-1.13.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5f44bb3e017b851c518a75253a5648c168796080a7dd7c370f991e4c26c929eb", size = 3634400, upload_time = "2026-06-14T09:41:36.483Z" }, - { url = "https://files.pythonhosted.org/packages/3b/06/5e1460d701c1617d424e6fc930f73772e4aba7ba4c0afc35c14aaea66b64/loro-1.13.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:ee1819567c55821d18bae00779427ed57e9287e2620dc773922d9efc9215d361", size = 3750693, upload_time = "2026-06-14T09:42:15.047Z" }, - { url = "https://files.pythonhosted.org/packages/0a/70/abd113d4211f843b2fc5425049225bd0453ba51dd4536be0f170c59cd89f/loro-1.13.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8e0ed665870c2e63e3b56a56e4cf4dcecd483e4658ecbbe7c913d09f251ccd9a", size = 3839587, upload_time = "2026-06-14T09:42:54.423Z" }, - { url = "https://files.pythonhosted.org/packages/b9/42/a04aa38208dfe8d66619a5a5dda9b586ca30069347ffd5eafb9f2e3c645d/loro-1.13.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:063a137ecd547259058abfecaa0dccfebbece1bb852960f811fff8ff07ff1549", size = 3765347, upload_time = "2026-06-14T09:43:33.507Z" }, - { url = "https://files.pythonhosted.org/packages/66/43/016a4904c0973965904b795599631becf74f42f7e5ab569790dcc02bc2ea/loro-1.13.1-cp313-cp313-win32.whl", hash = "sha256:89fa0c1d0ce435ff593d65bd6173ef7da0b1794cb8b542a275cc36052d147d13", size = 2852202, upload_time = "2026-06-14T09:44:34.904Z" }, - { url = "https://files.pythonhosted.org/packages/d9/7c/7f24a599aa6f1f6bd52052937f8e7089f8daf4269998e48836bc38c4c353/loro-1.13.1-cp313-cp313-win_amd64.whl", hash = "sha256:31060b96a1a085dc585b7d81de56816ee52f50b3328580e6b0b778058c673b02", size = 3095693, upload_time = "2026-06-14T09:44:14.105Z" }, - { url = "https://files.pythonhosted.org/packages/9e/96/1a5d508afe5570af35a37c6af65152f58848f54b498083f445fb4daf27ae/loro-1.13.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0962308ad8e53d3cb74a151062f3d075b994b3324b3217af67b136225af5204", size = 3453807, upload_time = "2026-06-14T09:37:41.689Z" }, - { url = "https://files.pythonhosted.org/packages/b8/5a/164b13e23a9897d895b4612eb0a7c2140b4c941eb12925c350bca96d01a5/loro-1.13.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99385246166f3bddc0bb686cdf61909969d214ff0c1f0e36db5fec9aa1244579", size = 3478688, upload_time = "2026-06-14T09:38:18.911Z" }, - { url = "https://files.pythonhosted.org/packages/38/d6/a57a182629f6ff20c3e650d303b5d821e21edb1539cd64886c2659f171af/loro-1.13.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a29d5cbb17e8f317a1818dc87280c389e3c22c0f0da8e5f1e34c95333d311c48", size = 3862744, upload_time = "2026-06-14T09:38:55.463Z" }, - { url = "https://files.pythonhosted.org/packages/17/89/2eb3b0643c5249ae98cbb259ecd6a737986ecec215ff31e7c682ebd198d1/loro-1.13.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:837251c39e43c99e241bb253e3b05a1a5424282ddc905d34d0f554ede8bcbe39", size = 3555358, upload_time = "2026-06-14T09:39:33.923Z" }, - { url = "https://files.pythonhosted.org/packages/6d/3a/8ec8674a323b9872b4b7b59e2c2bfad14aa825a7d551df0ae0ffe1001c3e/loro-1.13.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:70dc63bbf6dcbf20cfe0210e23beb0a509d3608d5ad4d3004c6d85107f945d1d", size = 3630381, upload_time = "2026-06-14T09:41:44.317Z" }, - { url = "https://files.pythonhosted.org/packages/70/19/9993e6b0bb882f219d6768ffc0cde96efd6bf07d54db92fa02dbca40a8d0/loro-1.13.1-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:3caa4acb70cba3d562cd939618b4d72c2a46000e060b5077a0712c53e9276747", size = 3747925, upload_time = "2026-06-14T09:42:23.226Z" }, - { url = "https://files.pythonhosted.org/packages/87/3c/b0500c59856c6f807ec0459105584ed78e8fc2827520ca198dc5d94e4a47/loro-1.13.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:01ed5d2fae9cb10c7ad0c8cb31f7b25bef938077a1094a1449340c48cca130cd", size = 3838478, upload_time = "2026-06-14T09:43:02.285Z" }, - { url = "https://files.pythonhosted.org/packages/2d/4e/a8d486bc7cce088e50124b25da24a3347d4a909f315562d2cf8bbc7cd742/loro-1.13.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:19823f7fcedb24e7c90708c25135311dacc87b00091a8c28688eeac7e59d17be", size = 3759483, upload_time = "2026-06-14T09:43:41.507Z" }, - { url = "https://files.pythonhosted.org/packages/66/57/35da08c298f0f74212a5b03aa7b2eabb49f03d79d7c7d1dc9b85795a1f53/loro-1.13.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df3cc735e6e514fa700c1142ef5aa003eb2fa972cfe6cf5a1faad73a5b2b9f35", size = 3452474, upload_time = "2026-06-14T09:37:42.941Z" }, - { url = "https://files.pythonhosted.org/packages/60/7b/ba4a7542bcce0c6c542fcdddf058140fed930c43763faa449d37060a8d1d/loro-1.13.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:774d466c51506e9bd2e2d889078d405642f14474d5b3d97323ba64e1709792cf", size = 3476693, upload_time = "2026-06-14T09:38:20.352Z" }, - { url = "https://files.pythonhosted.org/packages/01/37/2bea377c69e277d5c89fb53e7ca5a55ed025f58ed91ec8b7d879cd7363ad/loro-1.13.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fea37c8a2d307340fefd9ecf9dfe2d0cd050e5fe52d28dc59f3b74e2f4d86a59", size = 3862157, upload_time = "2026-06-14T09:38:57.247Z" }, - { url = "https://files.pythonhosted.org/packages/03/08/2c7a178b5a761f081b72a8001e42b71c0f7b1d088242bdd739fda7332d71/loro-1.13.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a18812dd5129975c89ed3c279b96d05a7129d671b3c4e07d47da5d2a5a44143", size = 3553687, upload_time = "2026-06-14T09:39:35.415Z" }, - { url = "https://files.pythonhosted.org/packages/ab/91/b61a37a2044cd36f0b89c1ab97a6444fd5eb4256f17ed5e41b855f05ecd5/loro-1.13.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a252b6badfcd7d43f45c58c61282a256a2bebb50315d363409d34eebb576fa86", size = 3497885, upload_time = "2026-06-14T09:40:39.316Z" }, - { url = "https://files.pythonhosted.org/packages/9f/1c/ae412692eb78f270ce31b95fe212902c3906869426c11a5d4905a22ca776/loro-1.13.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:26be461277ea678a47e937b077b4fcc9b7985083b3b7eba5e33bcdcffb511ab0", size = 3816446, upload_time = "2026-06-14T09:40:11.179Z" }, - { url = "https://files.pythonhosted.org/packages/4a/fe/e65cead425aa667b2d4b484c418609f088b23321062103bdb3751d4fafaa/loro-1.13.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:88359d12071cb96c1c96912a90c4102f538354bef2100b3797c225418aca8588", size = 3629093, upload_time = "2026-06-14T09:41:45.795Z" }, - { url = "https://files.pythonhosted.org/packages/2e/12/479dfce8e159f6b238a9dc5e0daf8b55626ff245a292415d902d3dda3b58/loro-1.13.1-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:403ca90311137f94d6a26723dbb0bf60af0a83c98577668f3939e5b67b9359e6", size = 3747230, upload_time = "2026-06-14T09:42:25.177Z" }, - { url = "https://files.pythonhosted.org/packages/26/53/0a56911f810bfbcf426a85048ad51413f80d48643ee9e75e359e7f301309/loro-1.13.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:24ac898cf8089df7a7dd1adb116acba8e1a68dde0060db5bb29f4067858fa068", size = 3838314, upload_time = "2026-06-14T09:43:03.81Z" }, - { url = "https://files.pythonhosted.org/packages/85/e7/1f4d4b588d1c20bececfb3e90d8d035ec4f8e7c0d9b45925eaa6c9b5e511/loro-1.13.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:531635135306ef42681837d8a0f7bafd34fcf146435ae9077f31fd89e949e5cf", size = 3758462, upload_time = "2026-06-14T09:43:43.649Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/9c/0a/a5171cc085b08a066bd1f7b686db9f6493fc45b69b4047ccea682255fdea/loro-1.13.1.tar.gz", hash = "sha256:0c3727bc52f5098576532edd399efc08ceb234c5d9235a19cbd5ea37c4fba485", size = 70462, upload-time = "2026-06-14T09:44:08.296Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/0e/78d538a3a4ed549bf67ddbcbc94c7f283f9bbb023b91615cb6e94aebe3e0/loro-1.13.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:881a45d7e557064b9749a86d390c256712c5313a08b89cfb832da6085764cb8c", size = 3389576, upload-time = "2026-06-14T09:41:13.695Z" }, + { url = "https://files.pythonhosted.org/packages/16/fc/97adb97b98871dd5837770effe54f8aa384eada9f8a92169de556d3c86fc/loro-1.13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d8197e6ad7577950b7989d5e2e631195319e5da9eb1d37b88fb153813c3462ec", size = 3214088, upload-time = "2026-06-14T09:40:56.383Z" }, + { url = "https://files.pythonhosted.org/packages/8d/e2/3a6cfaaeef365f2dce48522397270ab8ab3738aa5ee0d57600bb55bbadb4/loro-1.13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:634d3d271e586c8ee5f461f4fcca033509ebe18f12bbd6fc1cf5015b6d451961", size = 3456589, upload-time = "2026-06-14T09:37:29.065Z" }, + { url = "https://files.pythonhosted.org/packages/27/27/4a8dd890a2b286d44cc551ee7f7e99af840e665e2fd7302d9a854109b8c5/loro-1.13.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:585289f1ce720e64ed4c11b5dcdcd820696b140c7ec01169049979c079835a75", size = 3479469, upload-time = "2026-06-14T09:38:06.753Z" }, + { url = "https://files.pythonhosted.org/packages/18/65/4e73c5c25c9b524d8e8198b4fcfc528d854390ca57cfea027aaaf9082b71/loro-1.13.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:016f8ce02e15be615b91e503143ee57380cc88c882bd25a06f7ee36e14a83cfa", size = 3867965, upload-time = "2026-06-14T09:38:43.888Z" }, + { url = "https://files.pythonhosted.org/packages/6f/0c/ea0aee61f2a08eac87c6cf71ffdb85681f2d0842310df11c94b6aca41189/loro-1.13.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e307f6b18d698f1230aafca0e10791c268d9ed2d663d385fc4cac69145cba12", size = 3557253, upload-time = "2026-06-14T09:39:21.897Z" }, + { url = "https://files.pythonhosted.org/packages/89/99/fc1cf20c7f5db88417a46aabbe17e9f4d4aa046fd4036c3f5395c8907f6b/loro-1.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa325d3b519ec005d57abc0e1cf6c093a8bfbdc2b6fcce2202339a9c1af8fdc7", size = 3498675, upload-time = "2026-06-14T09:40:28.595Z" }, + { url = "https://files.pythonhosted.org/packages/b9/9a/bf3f976141c7a981b92e38cdacdc7e287fdf460f412f2d6c8c6fb2714ced/loro-1.13.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:be581dd2a0b9ec61aa7f8b2805883d94e7db5408e15991c612507d3bb2c6e969", size = 3814885, upload-time = "2026-06-14T09:39:59.165Z" }, + { url = "https://files.pythonhosted.org/packages/86/bd/e3a9ccabc8d9b59a621f570b9aa267c9306286aa601e1661bd506d57ac12/loro-1.13.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b99d7f919bdfc2ae29dd69dfccef890dd9ac225b9802ce20b85260a90efa45fc", size = 3632197, upload-time = "2026-06-14T09:41:32.04Z" }, + { url = "https://files.pythonhosted.org/packages/a2/c9/4a9e7799e327a007cd869e70586ac65d5e4ee0b0998194549335519906a0/loro-1.13.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a0cbd507903dd0f1017d602ef59f15a185493aaa5fe597149026c4f6d19a86ad", size = 3748608, upload-time = "2026-06-14T09:42:10.336Z" }, + { url = "https://files.pythonhosted.org/packages/69/f0/b16183e3bf647135077e59778ab74ff30292b1ba4ea0563ace3a26ecf848/loro-1.13.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6836ed89e71a70a2a48fa989247ef463cfc53bd192315fe5df56f1d702a77c5f", size = 3836328, upload-time = "2026-06-14T09:42:49.429Z" }, + { url = "https://files.pythonhosted.org/packages/cc/e2/98bd5558b47e46952b85cc374a6433c9de068af40936777759f0b4a2c593/loro-1.13.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e3b3b52fb6a326fe33a6c8dda2725ab8678e35995042966e4cbc0dda884d89f", size = 3758591, upload-time = "2026-06-14T09:43:27.852Z" }, + { url = "https://files.pythonhosted.org/packages/74/8a/bec03707e0e724ef0b3b1c4b318e1f732b79ca0bff0ccb6fddb7f51db071/loro-1.13.1-cp310-cp310-win32.whl", hash = "sha256:defc33602140c410ac63bc8301ee2ae91141119b9622aa9a8481f5ab019179e8", size = 2858413, upload-time = "2026-06-14T09:44:29.256Z" }, + { url = "https://files.pythonhosted.org/packages/d8/0f/e37c22d1c24f97423c213c81c4b0c1979da506a47fcb7c4252ddfae259e1/loro-1.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:24bd4f961ff269c332754467410fe54e30084f11e09b390842d88a8d7aef3d84", size = 3087131, upload-time = "2026-06-14T09:44:09.371Z" }, + { url = "https://files.pythonhosted.org/packages/6f/73/9f28cc5d626cae0b1129a62a6edd0922ce979aae67ccbd162a3052aa70c6/loro-1.13.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ca89672a72fd211caddec137cb5539ca7b9906e9afebabd25948590c042a52d7", size = 3388491, upload-time = "2026-06-14T09:41:15.078Z" }, + { url = "https://files.pythonhosted.org/packages/68/ee/8ada6f1ae19b9e1d69c7d9760fe4544a6a8baa6015951f260d368311beb3/loro-1.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:84026a187d2fab3f7a1386eb239042a8c334ef2493621fb7684fe758229d3f78", size = 3212708, upload-time = "2026-06-14T09:40:57.617Z" }, + { url = "https://files.pythonhosted.org/packages/5a/d8/f0c7430e9a767cc956f6f4414e8cc69b1382e15c13dd5fe8a6d099ac4270/loro-1.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1e5e572e69f3aeedd3dce43bb4cda602bd20c91ea001f6d034b89ce511affc5", size = 3454249, upload-time = "2026-06-14T09:37:30.905Z" }, + { url = "https://files.pythonhosted.org/packages/2e/c2/c8b10557879cabf6f9fb3858dee5fe0e4d72c0bbf390d5a3f4a1aa8c86fb/loro-1.13.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e87166c9bff35908e2a2b378def56c8a5ae6286ca7d3c14dd7d6a94a2018713e", size = 3478994, upload-time = "2026-06-14T09:38:08.32Z" }, + { url = "https://files.pythonhosted.org/packages/95/82/37a9163194b097c89f7c87062e8dc3067af288ffe36acf17d83e50577a03/loro-1.13.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:984f2c7c17f7ff5c11cad04d5aa22f76247800b4b10465845a64b0e7d5491a4a", size = 3868397, upload-time = "2026-06-14T09:38:45.22Z" }, + { url = "https://files.pythonhosted.org/packages/69/57/e2453b4fcb83c0ce238fe43e6073d32c257f1298c2209a7ca532701e24d6/loro-1.13.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3a91938bd8812f4aa445d8dc7f4a2296aae6993ae99b2573b8346d95a3112f9", size = 3556776, upload-time = "2026-06-14T09:39:23.613Z" }, + { url = "https://files.pythonhosted.org/packages/82/7a/8d0b98fd2cb7459ce662fc09d09f2c7759dace5281041f1a40ce88da7118/loro-1.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb40d659067c6d393e28c7fa1d47a74f02c21b002f631b296bc5956ed10e4e03", size = 3498669, upload-time = "2026-06-14T09:40:30.223Z" }, + { url = "https://files.pythonhosted.org/packages/56/e6/44cbc490efeb482ffdab05a9911de479cde2c5b15cf78cc380c461569770/loro-1.13.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ba14aac864efa39060f429e13fe826dd7a3eea51770c7ba18f7ab417a966733e", size = 3814637, upload-time = "2026-06-14T09:40:00.704Z" }, + { url = "https://files.pythonhosted.org/packages/b9/57/1983a2c4febe009d8000c46c2aae91fa2a063ff006cbdce08c19ff3b691c/loro-1.13.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:236f0b5a606890782e9830233f049e9bf711999fe12163b6e57b2f16656477ab", size = 3631426, upload-time = "2026-06-14T09:41:33.545Z" }, + { url = "https://files.pythonhosted.org/packages/b4/6c/b825f30215048473451bbfc68570dac846d6b5c9a566c38e69fe4cf2c171/loro-1.13.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:86500c195f3542c1b286564ff283dd2d29acf87c029e3a968fce658f492eb70c", size = 3747911, upload-time = "2026-06-14T09:42:11.925Z" }, + { url = "https://files.pythonhosted.org/packages/b4/76/7c80c176de31b068cce0b608664541f7c45dc1522a0afac323454d6ea565/loro-1.13.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1e57c441619090013730a1ff64f4a541df56230f56f386004da54d4bbdfa5b49", size = 3836322, upload-time = "2026-06-14T09:42:51.032Z" }, + { url = "https://files.pythonhosted.org/packages/d4/b8/f26e7e04146a0958eeb136ce9e1584d6a0a663e917eee0019cbbfcd3fd95/loro-1.13.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c3115e10224001e517b262760126bd998c871168cbcfe822ecf0f32ba843d13a", size = 3758094, upload-time = "2026-06-14T09:43:29.478Z" }, + { url = "https://files.pythonhosted.org/packages/70/50/ff05b94aad55319162982fc81c7f5beab8c1fb4c77dec1364f79a2dab4d9/loro-1.13.1-cp311-cp311-win32.whl", hash = "sha256:6367d8b6f0e682e17f281df51f502d8c7034b3e115899169fffe5c47943f044a", size = 2859108, upload-time = "2026-06-14T09:44:30.842Z" }, + { url = "https://files.pythonhosted.org/packages/63/d9/9268de0d259470e9f5ccd64b502d5267cb83e22e5b9eb9680cfde916314e/loro-1.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:10ee34b857c0d0fe175874abc20aca2d900f464fda0873eb40eea64a13d120c5", size = 3087237, upload-time = "2026-06-14T09:44:10.946Z" }, + { url = "https://files.pythonhosted.org/packages/1d/63/9d58b58fa07691682056a1869332acde98ad3f5604c5167bc2c67a3499ac/loro-1.13.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:62944de6a84c71f7fb87dc5ea59e70f68c3910dbee08fa29f1d87d2aa79361f9", size = 3372403, upload-time = "2026-06-14T09:41:16.448Z" }, + { url = "https://files.pythonhosted.org/packages/8c/a7/1e00449128a0124f05a0070ed042f6e6e6a1ae9d42462f341e5782d0b1c6/loro-1.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:18483499a361ca72dd6512a889fea097ddd203d6d048cdeb202cfdb454daa6da", size = 3201108, upload-time = "2026-06-14T09:40:59.18Z" }, + { url = "https://files.pythonhosted.org/packages/6f/a1/94c3ae7ca30252caed58895e9f0c711045f93903891f59cb17c255b1832b/loro-1.13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f24b880c6ef075e092956e6cc8a1ca10d75dd0c42100c93314d941d21ce7e825", size = 3458390, upload-time = "2026-06-14T09:37:32.334Z" }, + { url = "https://files.pythonhosted.org/packages/9c/e5/fbe091e3da9518b22cf81227d102a792c5f2427f011461192262082b4981/loro-1.13.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1692f6cd32715106fa6512cffd77dae386c19aa3d269e0aa540f562c901b4fb3", size = 3481720, upload-time = "2026-06-14T09:38:09.71Z" }, + { url = "https://files.pythonhosted.org/packages/f9/c5/efe3ed6991bc2fca078e6f065e9b3c6af9caabcd37de9c45d001e27d02f7/loro-1.13.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c974a0c7534cdb3885922fac0762276726f2c6212ea42ff9f94fb66458646163", size = 3868987, upload-time = "2026-06-14T09:38:46.803Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a4/3e879c36de0d0726686a8863cc4c7cbd27977ab54602d9d5b519a6c038ad/loro-1.13.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ad60e62ee97de40e345a79dd0e8e1890589827517a85f2795499ecbe0c772d", size = 3563937, upload-time = "2026-06-14T09:39:25.155Z" }, + { url = "https://files.pythonhosted.org/packages/1b/24/384088890d15867dcec61420afcfe37c6a185dc38302426b53b77ab9a944/loro-1.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4bb41b0fc46d7310f9b863359bd9073e8be042906792418810c45246d52f3e2c", size = 3506609, upload-time = "2026-06-14T09:40:31.647Z" }, + { url = "https://files.pythonhosted.org/packages/59/fa/93a33f1e4f4482dfc3463be3395d29ad5769c213cc89890167aca6c7d682/loro-1.13.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2fc251ab7ec8d4f45d6afba76b5c0fa804815df8322a7c5b4855c69d574fa3e4", size = 3820553, upload-time = "2026-06-14T09:40:02.103Z" }, + { url = "https://files.pythonhosted.org/packages/5e/77/209513ad828529b52bcadd43b438aa0c419d951c67dd8573c2d7fea29c5c/loro-1.13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:799f93099a7397e3d4975507769beaca49b1545c28ce2f565e0c6a9d7114c7c5", size = 3635451, upload-time = "2026-06-14T09:41:35.078Z" }, + { url = "https://files.pythonhosted.org/packages/66/dc/9a800ea8c377af8b839d052e1c6dce090a5bb1a8d62f9bb72d8ac74d7fae/loro-1.13.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:dddaa54ab925096efae42d017e3ec3e1a5e96109f011c9457a364370346d8d57", size = 3751844, upload-time = "2026-06-14T09:42:13.511Z" }, + { url = "https://files.pythonhosted.org/packages/48/c9/0d4ea932f2a2aa5143ddc5abda9afc45036d99af068ed9176baa19f8e5b0/loro-1.13.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5438af35c12fcdfed73515bfec9d675ccee9ae0f6206402d42699f13921c489b", size = 3839548, upload-time = "2026-06-14T09:42:52.713Z" }, + { url = "https://files.pythonhosted.org/packages/ee/9b/ab9b732f43ccc895b97e848003f72edcdf46dc6adac77f5313e520699c86/loro-1.13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aa9ab0684b64eea6bb4088697063c536e322688828946ef29ada34cdd7ab97fe", size = 3766156, upload-time = "2026-06-14T09:43:31.825Z" }, + { url = "https://files.pythonhosted.org/packages/ca/c3/7f7e28ccac959d2d0085fadec194f6b45713517155bb67939392a8675b0f/loro-1.13.1-cp312-cp312-win32.whl", hash = "sha256:f13be6490fd9afb86474cf8c20270c64efcb0b3a9b32309bae5611ffc5d4ec30", size = 2852620, upload-time = "2026-06-14T09:44:32.61Z" }, + { url = "https://files.pythonhosted.org/packages/22/10/42e780e90c5a0a8e35c4e4cc6467dd2158324f389d6183bf763434c51e89/loro-1.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:b40a60be6900f84704824d44d11d7a721e5b3602f472b71d9aa8310b301478f3", size = 3096879, upload-time = "2026-06-14T09:44:12.476Z" }, + { url = "https://files.pythonhosted.org/packages/93/06/e369dac8102485a1140d18c4823b88c97c97577adb5c0029e5163917f726/loro-1.13.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:969916c8747b8f3fc0234c1d8c04f3433d3dbf88ce1f5f90c816c7e2c80c8d5d", size = 3371860, upload-time = "2026-06-14T09:41:17.899Z" }, + { url = "https://files.pythonhosted.org/packages/4d/cc/0f661d4779efe66e61d825b31ff13da3277140820a1db2f846e466d5b5f2/loro-1.13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:00b85365ff695dbff3b4e0513976025d92e80741475449857f0b18a143694c39", size = 3200732, upload-time = "2026-06-14T09:41:00.581Z" }, + { url = "https://files.pythonhosted.org/packages/c6/ba/314c26e89492b4486634e96844bf5acf4ea88b1dc4fa04b06e47e92403be/loro-1.13.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c46783fa28dd5144f7ca5f20ac949ad7568ef6d511e4aec077566bd0e011f3da", size = 3457717, upload-time = "2026-06-14T09:37:33.867Z" }, + { url = "https://files.pythonhosted.org/packages/e8/42/990572d3e7f71f6930420185b9fb6669490078b88a8ff2e8171310b861b5/loro-1.13.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2ba4caa9b52d64dd2d1aaa0672cb058618e4fc722ab26393f5b2db51bd715fc5", size = 3481891, upload-time = "2026-06-14T09:38:11.153Z" }, + { url = "https://files.pythonhosted.org/packages/e7/b7/3a1dc21ba8b5ea4362df8d21f61b4273fdcc84504969a4868621faf428a4/loro-1.13.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e8bd1b7b65b552b7863c2d8d0e041dc35b3ccaf86422c2d03cbd89903feee890", size = 3868735, upload-time = "2026-06-14T09:38:48.233Z" }, + { url = "https://files.pythonhosted.org/packages/9c/64/838072fc73ae993316df8d80aedc537092c73b5e0f27132de60b9cfaa31b/loro-1.13.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a1591e115e874d9e0ad7cf7b413390d26cafb5750d707897fd79a5d1f69b7e7", size = 3564176, upload-time = "2026-06-14T09:39:26.573Z" }, + { url = "https://files.pythonhosted.org/packages/57/c2/8c122a862b8f773ba40c6ade7a89afb9ed26382d23e024f4e66f47ad639f/loro-1.13.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05703492391f21bb251181a2ee9f1f68425d73efa94810271e25087faca5c23d", size = 3506207, upload-time = "2026-06-14T09:40:33.132Z" }, + { url = "https://files.pythonhosted.org/packages/35/ff/49426f106fcc8b3cdc22dc46af68a1f74ab1675aea07c5244616e2b7b805/loro-1.13.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:862f4948e3a0da4eee417d159a728a8f75a309d02e9aeb4309cbc96e5e48f3c6", size = 3820941, upload-time = "2026-06-14T09:40:05.009Z" }, + { url = "https://files.pythonhosted.org/packages/ab/23/a40c73fb33eb5cc4bbf44ea81efe147cb804c1b9c4d41c37e2dc5e1e1a21/loro-1.13.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5f44bb3e017b851c518a75253a5648c168796080a7dd7c370f991e4c26c929eb", size = 3634400, upload-time = "2026-06-14T09:41:36.483Z" }, + { url = "https://files.pythonhosted.org/packages/3b/06/5e1460d701c1617d424e6fc930f73772e4aba7ba4c0afc35c14aaea66b64/loro-1.13.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:ee1819567c55821d18bae00779427ed57e9287e2620dc773922d9efc9215d361", size = 3750693, upload-time = "2026-06-14T09:42:15.047Z" }, + { url = "https://files.pythonhosted.org/packages/0a/70/abd113d4211f843b2fc5425049225bd0453ba51dd4536be0f170c59cd89f/loro-1.13.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8e0ed665870c2e63e3b56a56e4cf4dcecd483e4658ecbbe7c913d09f251ccd9a", size = 3839587, upload-time = "2026-06-14T09:42:54.423Z" }, + { url = "https://files.pythonhosted.org/packages/b9/42/a04aa38208dfe8d66619a5a5dda9b586ca30069347ffd5eafb9f2e3c645d/loro-1.13.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:063a137ecd547259058abfecaa0dccfebbece1bb852960f811fff8ff07ff1549", size = 3765347, upload-time = "2026-06-14T09:43:33.507Z" }, + { url = "https://files.pythonhosted.org/packages/66/43/016a4904c0973965904b795599631becf74f42f7e5ab569790dcc02bc2ea/loro-1.13.1-cp313-cp313-win32.whl", hash = "sha256:89fa0c1d0ce435ff593d65bd6173ef7da0b1794cb8b542a275cc36052d147d13", size = 2852202, upload-time = "2026-06-14T09:44:34.904Z" }, + { url = "https://files.pythonhosted.org/packages/d9/7c/7f24a599aa6f1f6bd52052937f8e7089f8daf4269998e48836bc38c4c353/loro-1.13.1-cp313-cp313-win_amd64.whl", hash = "sha256:31060b96a1a085dc585b7d81de56816ee52f50b3328580e6b0b778058c673b02", size = 3095693, upload-time = "2026-06-14T09:44:14.105Z" }, + { url = "https://files.pythonhosted.org/packages/9e/96/1a5d508afe5570af35a37c6af65152f58848f54b498083f445fb4daf27ae/loro-1.13.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0962308ad8e53d3cb74a151062f3d075b994b3324b3217af67b136225af5204", size = 3453807, upload-time = "2026-06-14T09:37:41.689Z" }, + { url = "https://files.pythonhosted.org/packages/b8/5a/164b13e23a9897d895b4612eb0a7c2140b4c941eb12925c350bca96d01a5/loro-1.13.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99385246166f3bddc0bb686cdf61909969d214ff0c1f0e36db5fec9aa1244579", size = 3478688, upload-time = "2026-06-14T09:38:18.911Z" }, + { url = "https://files.pythonhosted.org/packages/38/d6/a57a182629f6ff20c3e650d303b5d821e21edb1539cd64886c2659f171af/loro-1.13.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a29d5cbb17e8f317a1818dc87280c389e3c22c0f0da8e5f1e34c95333d311c48", size = 3862744, upload-time = "2026-06-14T09:38:55.463Z" }, + { url = "https://files.pythonhosted.org/packages/17/89/2eb3b0643c5249ae98cbb259ecd6a737986ecec215ff31e7c682ebd198d1/loro-1.13.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:837251c39e43c99e241bb253e3b05a1a5424282ddc905d34d0f554ede8bcbe39", size = 3555358, upload-time = "2026-06-14T09:39:33.923Z" }, + { url = "https://files.pythonhosted.org/packages/6d/3a/8ec8674a323b9872b4b7b59e2c2bfad14aa825a7d551df0ae0ffe1001c3e/loro-1.13.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:70dc63bbf6dcbf20cfe0210e23beb0a509d3608d5ad4d3004c6d85107f945d1d", size = 3630381, upload-time = "2026-06-14T09:41:44.317Z" }, + { url = "https://files.pythonhosted.org/packages/70/19/9993e6b0bb882f219d6768ffc0cde96efd6bf07d54db92fa02dbca40a8d0/loro-1.13.1-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:3caa4acb70cba3d562cd939618b4d72c2a46000e060b5077a0712c53e9276747", size = 3747925, upload-time = "2026-06-14T09:42:23.226Z" }, + { url = "https://files.pythonhosted.org/packages/87/3c/b0500c59856c6f807ec0459105584ed78e8fc2827520ca198dc5d94e4a47/loro-1.13.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:01ed5d2fae9cb10c7ad0c8cb31f7b25bef938077a1094a1449340c48cca130cd", size = 3838478, upload-time = "2026-06-14T09:43:02.285Z" }, + { url = "https://files.pythonhosted.org/packages/2d/4e/a8d486bc7cce088e50124b25da24a3347d4a909f315562d2cf8bbc7cd742/loro-1.13.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:19823f7fcedb24e7c90708c25135311dacc87b00091a8c28688eeac7e59d17be", size = 3759483, upload-time = "2026-06-14T09:43:41.507Z" }, + { url = "https://files.pythonhosted.org/packages/66/57/35da08c298f0f74212a5b03aa7b2eabb49f03d79d7c7d1dc9b85795a1f53/loro-1.13.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df3cc735e6e514fa700c1142ef5aa003eb2fa972cfe6cf5a1faad73a5b2b9f35", size = 3452474, upload-time = "2026-06-14T09:37:42.941Z" }, + { url = "https://files.pythonhosted.org/packages/60/7b/ba4a7542bcce0c6c542fcdddf058140fed930c43763faa449d37060a8d1d/loro-1.13.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:774d466c51506e9bd2e2d889078d405642f14474d5b3d97323ba64e1709792cf", size = 3476693, upload-time = "2026-06-14T09:38:20.352Z" }, + { url = "https://files.pythonhosted.org/packages/01/37/2bea377c69e277d5c89fb53e7ca5a55ed025f58ed91ec8b7d879cd7363ad/loro-1.13.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fea37c8a2d307340fefd9ecf9dfe2d0cd050e5fe52d28dc59f3b74e2f4d86a59", size = 3862157, upload-time = "2026-06-14T09:38:57.247Z" }, + { url = "https://files.pythonhosted.org/packages/03/08/2c7a178b5a761f081b72a8001e42b71c0f7b1d088242bdd739fda7332d71/loro-1.13.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a18812dd5129975c89ed3c279b96d05a7129d671b3c4e07d47da5d2a5a44143", size = 3553687, upload-time = "2026-06-14T09:39:35.415Z" }, + { url = "https://files.pythonhosted.org/packages/ab/91/b61a37a2044cd36f0b89c1ab97a6444fd5eb4256f17ed5e41b855f05ecd5/loro-1.13.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a252b6badfcd7d43f45c58c61282a256a2bebb50315d363409d34eebb576fa86", size = 3497885, upload-time = "2026-06-14T09:40:39.316Z" }, + { url = "https://files.pythonhosted.org/packages/9f/1c/ae412692eb78f270ce31b95fe212902c3906869426c11a5d4905a22ca776/loro-1.13.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:26be461277ea678a47e937b077b4fcc9b7985083b3b7eba5e33bcdcffb511ab0", size = 3816446, upload-time = "2026-06-14T09:40:11.179Z" }, + { url = "https://files.pythonhosted.org/packages/4a/fe/e65cead425aa667b2d4b484c418609f088b23321062103bdb3751d4fafaa/loro-1.13.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:88359d12071cb96c1c96912a90c4102f538354bef2100b3797c225418aca8588", size = 3629093, upload-time = "2026-06-14T09:41:45.795Z" }, + { url = "https://files.pythonhosted.org/packages/2e/12/479dfce8e159f6b238a9dc5e0daf8b55626ff245a292415d902d3dda3b58/loro-1.13.1-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:403ca90311137f94d6a26723dbb0bf60af0a83c98577668f3939e5b67b9359e6", size = 3747230, upload-time = "2026-06-14T09:42:25.177Z" }, + { url = "https://files.pythonhosted.org/packages/26/53/0a56911f810bfbcf426a85048ad51413f80d48643ee9e75e359e7f301309/loro-1.13.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:24ac898cf8089df7a7dd1adb116acba8e1a68dde0060db5bb29f4067858fa068", size = 3838314, upload-time = "2026-06-14T09:43:03.81Z" }, + { url = "https://files.pythonhosted.org/packages/85/e7/1f4d4b588d1c20bececfb3e90d8d035ec4f8e7c0d9b45925eaa6c9b5e511/loro-1.13.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:531635135306ef42681837d8a0f7bafd34fcf146435ae9077f31fd89e949e5cf", size = 3758462, upload-time = "2026-06-14T09:43:43.649Z" }, ] [[package]] name = "lxml" version = "6.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/aa/88/262177de60548e5a2bfc46ad28232c9e9cbde697bd94132aeb80364675cb/lxml-6.0.2.tar.gz", hash = "sha256:cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62", size = 4073426, upload_time = "2025-09-22T04:04:59.287Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/db/8a/f8192a08237ef2fb1b19733f709db88a4c43bc8ab8357f01cb41a27e7f6a/lxml-6.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e77dd455b9a16bbd2a5036a63ddbd479c19572af81b624e79ef422f929eef388", size = 8590589, upload_time = "2025-09-22T04:00:10.51Z" }, - { url = "https://files.pythonhosted.org/packages/12/64/27bcd07ae17ff5e5536e8d88f4c7d581b48963817a13de11f3ac3329bfa2/lxml-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d444858b9f07cefff6455b983aea9a67f7462ba1f6cbe4a21e8bf6791bf2153", size = 4629671, upload_time = "2025-09-22T04:00:15.411Z" }, - { url = "https://files.pythonhosted.org/packages/02/5a/a7d53b3291c324e0b6e48f3c797be63836cc52156ddf8f33cd72aac78866/lxml-6.0.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f952dacaa552f3bb8834908dddd500ba7d508e6ea6eb8c52eb2d28f48ca06a31", size = 4999961, upload_time = "2025-09-22T04:00:17.619Z" }, - { url = "https://files.pythonhosted.org/packages/f5/55/d465e9b89df1761674d8672bb3e4ae2c47033b01ec243964b6e334c6743f/lxml-6.0.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:71695772df6acea9f3c0e59e44ba8ac50c4f125217e84aab21074a1a55e7e5c9", size = 5157087, upload_time = "2025-09-22T04:00:19.868Z" }, - { url = "https://files.pythonhosted.org/packages/62/38/3073cd7e3e8dfc3ba3c3a139e33bee3a82de2bfb0925714351ad3d255c13/lxml-6.0.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:17f68764f35fd78d7c4cc4ef209a184c38b65440378013d24b8aecd327c3e0c8", size = 5067620, upload_time = "2025-09-22T04:00:21.877Z" }, - { url = "https://files.pythonhosted.org/packages/4a/d3/1e001588c5e2205637b08985597827d3827dbaaece16348c8822bfe61c29/lxml-6.0.2-cp310-cp310-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:058027e261afed589eddcfe530fcc6f3402d7fd7e89bfd0532df82ebc1563dba", size = 5406664, upload_time = "2025-09-22T04:00:23.714Z" }, - { url = "https://files.pythonhosted.org/packages/20/cf/cab09478699b003857ed6ebfe95e9fb9fa3d3c25f1353b905c9b73cfb624/lxml-6.0.2-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8ffaeec5dfea5881d4c9d8913a32d10cfe3923495386106e4a24d45300ef79c", size = 5289397, upload_time = "2025-09-22T04:00:25.544Z" }, - { url = "https://files.pythonhosted.org/packages/a3/84/02a2d0c38ac9a8b9f9e5e1bbd3f24b3f426044ad618b552e9549ee91bd63/lxml-6.0.2-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:f2e3b1a6bb38de0bc713edd4d612969dd250ca8b724be8d460001a387507021c", size = 4772178, upload_time = "2025-09-22T04:00:27.602Z" }, - { url = "https://files.pythonhosted.org/packages/56/87/e1ceadcc031ec4aa605fe95476892d0b0ba3b7f8c7dcdf88fdeff59a9c86/lxml-6.0.2-cp310-cp310-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d6690ec5ec1cce0385cb20896b16be35247ac8c2046e493d03232f1c2414d321", size = 5358148, upload_time = "2025-09-22T04:00:29.323Z" }, - { url = "https://files.pythonhosted.org/packages/fe/13/5bb6cf42bb228353fd4ac5f162c6a84fd68a4d6f67c1031c8cf97e131fc6/lxml-6.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f2a50c3c1d11cad0ebebbac357a97b26aa79d2bcaf46f256551152aa85d3a4d1", size = 5112035, upload_time = "2025-09-22T04:00:31.061Z" }, - { url = "https://files.pythonhosted.org/packages/e4/e2/ea0498552102e59834e297c5c6dff8d8ded3db72ed5e8aad77871476f073/lxml-6.0.2-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:3efe1b21c7801ffa29a1112fab3b0f643628c30472d507f39544fd48e9549e34", size = 4799111, upload_time = "2025-09-22T04:00:33.11Z" }, - { url = "https://files.pythonhosted.org/packages/6a/9e/8de42b52a73abb8af86c66c969b3b4c2a96567b6ac74637c037d2e3baa60/lxml-6.0.2-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:59c45e125140b2c4b33920d21d83681940ca29f0b83f8629ea1a2196dc8cfe6a", size = 5351662, upload_time = "2025-09-22T04:00:35.237Z" }, - { url = "https://files.pythonhosted.org/packages/28/a2/de776a573dfb15114509a37351937c367530865edb10a90189d0b4b9b70a/lxml-6.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:452b899faa64f1805943ec1c0c9ebeaece01a1af83e130b69cdefeda180bb42c", size = 5314973, upload_time = "2025-09-22T04:00:37.086Z" }, - { url = "https://files.pythonhosted.org/packages/50/a0/3ae1b1f8964c271b5eec91db2043cf8c6c0bce101ebb2a633b51b044db6c/lxml-6.0.2-cp310-cp310-win32.whl", hash = "sha256:1e786a464c191ca43b133906c6903a7e4d56bef376b75d97ccbb8ec5cf1f0a4b", size = 3611953, upload_time = "2025-09-22T04:00:39.224Z" }, - { url = "https://files.pythonhosted.org/packages/d1/70/bd42491f0634aad41bdfc1e46f5cff98825fb6185688dc82baa35d509f1a/lxml-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:dacf3c64ef3f7440e3167aa4b49aa9e0fb99e0aa4f9ff03795640bf94531bcb0", size = 4032695, upload_time = "2025-09-22T04:00:41.402Z" }, - { url = "https://files.pythonhosted.org/packages/d2/d0/05c6a72299f54c2c561a6c6cbb2f512e047fca20ea97a05e57931f194ac4/lxml-6.0.2-cp310-cp310-win_arm64.whl", hash = "sha256:45f93e6f75123f88d7f0cfd90f2d05f441b808562bf0bc01070a00f53f5028b5", size = 3680051, upload_time = "2025-09-22T04:00:43.525Z" }, - { url = "https://files.pythonhosted.org/packages/77/d5/becbe1e2569b474a23f0c672ead8a29ac50b2dc1d5b9de184831bda8d14c/lxml-6.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:13e35cbc684aadf05d8711a5d1b5857c92e5e580efa9a0d2be197199c8def607", size = 8634365, upload_time = "2025-09-22T04:00:45.672Z" }, - { url = "https://files.pythonhosted.org/packages/28/66/1ced58f12e804644426b85d0bb8a4478ca77bc1761455da310505f1a3526/lxml-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b1675e096e17c6fe9c0e8c81434f5736c0739ff9ac6123c87c2d452f48fc938", size = 4650793, upload_time = "2025-09-22T04:00:47.783Z" }, - { url = "https://files.pythonhosted.org/packages/11/84/549098ffea39dfd167e3f174b4ce983d0eed61f9d8d25b7bf2a57c3247fc/lxml-6.0.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8ac6e5811ae2870953390452e3476694196f98d447573234592d30488147404d", size = 4944362, upload_time = "2025-09-22T04:00:49.845Z" }, - { url = "https://files.pythonhosted.org/packages/ac/bd/f207f16abf9749d2037453d56b643a7471d8fde855a231a12d1e095c4f01/lxml-6.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5aa0fc67ae19d7a64c3fe725dc9a1bb11f80e01f78289d05c6f62545affec438", size = 5083152, upload_time = "2025-09-22T04:00:51.709Z" }, - { url = "https://files.pythonhosted.org/packages/15/ae/bd813e87d8941d52ad5b65071b1affb48da01c4ed3c9c99e40abb266fbff/lxml-6.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:de496365750cc472b4e7902a485d3f152ecf57bd3ba03ddd5578ed8ceb4c5964", size = 5023539, upload_time = "2025-09-22T04:00:53.593Z" }, - { url = "https://files.pythonhosted.org/packages/02/cd/9bfef16bd1d874fbe0cb51afb00329540f30a3283beb9f0780adbb7eec03/lxml-6.0.2-cp311-cp311-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:200069a593c5e40b8f6fc0d84d86d970ba43138c3e68619ffa234bc9bb806a4d", size = 5344853, upload_time = "2025-09-22T04:00:55.524Z" }, - { url = "https://files.pythonhosted.org/packages/b8/89/ea8f91594bc5dbb879734d35a6f2b0ad50605d7fb419de2b63d4211765cc/lxml-6.0.2-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7d2de809c2ee3b888b59f995625385f74629707c9355e0ff856445cdcae682b7", size = 5225133, upload_time = "2025-09-22T04:00:57.269Z" }, - { url = "https://files.pythonhosted.org/packages/b9/37/9c735274f5dbec726b2db99b98a43950395ba3d4a1043083dba2ad814170/lxml-6.0.2-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:b2c3da8d93cf5db60e8858c17684c47d01fee6405e554fb55018dd85fc23b178", size = 4677944, upload_time = "2025-09-22T04:00:59.052Z" }, - { url = "https://files.pythonhosted.org/packages/20/28/7dfe1ba3475d8bfca3878365075abe002e05d40dfaaeb7ec01b4c587d533/lxml-6.0.2-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:442de7530296ef5e188373a1ea5789a46ce90c4847e597856570439621d9c553", size = 5284535, upload_time = "2025-09-22T04:01:01.335Z" }, - { url = "https://files.pythonhosted.org/packages/e7/cf/5f14bc0de763498fc29510e3532bf2b4b3a1c1d5d0dff2e900c16ba021ef/lxml-6.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2593c77efde7bfea7f6389f1ab249b15ed4aa5bc5cb5131faa3b843c429fbedb", size = 5067343, upload_time = "2025-09-22T04:01:03.13Z" }, - { url = "https://files.pythonhosted.org/packages/1c/b0/bb8275ab5472f32b28cfbbcc6db7c9d092482d3439ca279d8d6fa02f7025/lxml-6.0.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:3e3cb08855967a20f553ff32d147e14329b3ae70ced6edc2f282b94afbc74b2a", size = 4725419, upload_time = "2025-09-22T04:01:05.013Z" }, - { url = "https://files.pythonhosted.org/packages/25/4c/7c222753bc72edca3b99dbadba1b064209bc8ed4ad448af990e60dcce462/lxml-6.0.2-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:2ed6c667fcbb8c19c6791bbf40b7268ef8ddf5a96940ba9404b9f9a304832f6c", size = 5275008, upload_time = "2025-09-22T04:01:07.327Z" }, - { url = "https://files.pythonhosted.org/packages/6c/8c/478a0dc6b6ed661451379447cdbec77c05741a75736d97e5b2b729687828/lxml-6.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b8f18914faec94132e5b91e69d76a5c1d7b0c73e2489ea8929c4aaa10b76bbf7", size = 5248906, upload_time = "2025-09-22T04:01:09.452Z" }, - { url = "https://files.pythonhosted.org/packages/2d/d9/5be3a6ab2784cdf9accb0703b65e1b64fcdd9311c9f007630c7db0cfcce1/lxml-6.0.2-cp311-cp311-win32.whl", hash = "sha256:6605c604e6daa9e0d7f0a2137bdc47a2e93b59c60a65466353e37f8272f47c46", size = 3610357, upload_time = "2025-09-22T04:01:11.102Z" }, - { url = "https://files.pythonhosted.org/packages/e2/7d/ca6fb13349b473d5732fb0ee3eec8f6c80fc0688e76b7d79c1008481bf1f/lxml-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e5867f2651016a3afd8dd2c8238baa66f1e2802f44bc17e236f547ace6647078", size = 4036583, upload_time = "2025-09-22T04:01:12.766Z" }, - { url = "https://files.pythonhosted.org/packages/ab/a2/51363b5ecd3eab46563645f3a2c3836a2fc67d01a1b87c5017040f39f567/lxml-6.0.2-cp311-cp311-win_arm64.whl", hash = "sha256:4197fb2534ee05fd3e7afaab5d8bfd6c2e186f65ea7f9cd6a82809c887bd1285", size = 3680591, upload_time = "2025-09-22T04:01:14.874Z" }, - { url = "https://files.pythonhosted.org/packages/f3/c8/8ff2bc6b920c84355146cd1ab7d181bc543b89241cfb1ebee824a7c81457/lxml-6.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a59f5448ba2ceccd06995c95ea59a7674a10de0810f2ce90c9006f3cbc044456", size = 8661887, upload_time = "2025-09-22T04:01:17.265Z" }, - { url = "https://files.pythonhosted.org/packages/37/6f/9aae1008083bb501ef63284220ce81638332f9ccbfa53765b2b7502203cf/lxml-6.0.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e8113639f3296706fbac34a30813929e29247718e88173ad849f57ca59754924", size = 4667818, upload_time = "2025-09-22T04:01:19.688Z" }, - { url = "https://files.pythonhosted.org/packages/f1/ca/31fb37f99f37f1536c133476674c10b577e409c0a624384147653e38baf2/lxml-6.0.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a8bef9b9825fa8bc816a6e641bb67219489229ebc648be422af695f6e7a4fa7f", size = 4950807, upload_time = "2025-09-22T04:01:21.487Z" }, - { url = "https://files.pythonhosted.org/packages/da/87/f6cb9442e4bada8aab5ae7e1046264f62fdbeaa6e3f6211b93f4c0dd97f1/lxml-6.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:65ea18d710fd14e0186c2f973dc60bb52039a275f82d3c44a0e42b43440ea534", size = 5109179, upload_time = "2025-09-22T04:01:23.32Z" }, - { url = "https://files.pythonhosted.org/packages/c8/20/a7760713e65888db79bbae4f6146a6ae5c04e4a204a3c48896c408cd6ed2/lxml-6.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c371aa98126a0d4c739ca93ceffa0fd7a5d732e3ac66a46e74339acd4d334564", size = 5023044, upload_time = "2025-09-22T04:01:25.118Z" }, - { url = "https://files.pythonhosted.org/packages/a2/b0/7e64e0460fcb36471899f75831509098f3fd7cd02a3833ac517433cb4f8f/lxml-6.0.2-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:700efd30c0fa1a3581d80a748157397559396090a51d306ea59a70020223d16f", size = 5359685, upload_time = "2025-09-22T04:01:27.398Z" }, - { url = "https://files.pythonhosted.org/packages/b9/e1/e5df362e9ca4e2f48ed6411bd4b3a0ae737cc842e96877f5bf9428055ab4/lxml-6.0.2-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c33e66d44fe60e72397b487ee92e01da0d09ba2d66df8eae42d77b6d06e5eba0", size = 5654127, upload_time = "2025-09-22T04:01:29.629Z" }, - { url = "https://files.pythonhosted.org/packages/c6/d1/232b3309a02d60f11e71857778bfcd4acbdb86c07db8260caf7d008b08f8/lxml-6.0.2-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90a345bbeaf9d0587a3aaffb7006aa39ccb6ff0e96a57286c0cb2fd1520ea192", size = 5253958, upload_time = "2025-09-22T04:01:31.535Z" }, - { url = "https://files.pythonhosted.org/packages/35/35/d955a070994725c4f7d80583a96cab9c107c57a125b20bb5f708fe941011/lxml-6.0.2-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:064fdadaf7a21af3ed1dcaa106b854077fbeada827c18f72aec9346847cd65d0", size = 4711541, upload_time = "2025-09-22T04:01:33.801Z" }, - { url = "https://files.pythonhosted.org/packages/1e/be/667d17363b38a78c4bd63cfd4b4632029fd68d2c2dc81f25ce9eb5224dd5/lxml-6.0.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fbc74f42c3525ac4ffa4b89cbdd00057b6196bcefe8bce794abd42d33a018092", size = 5267426, upload_time = "2025-09-22T04:01:35.639Z" }, - { url = "https://files.pythonhosted.org/packages/ea/47/62c70aa4a1c26569bc958c9ca86af2bb4e1f614e8c04fb2989833874f7ae/lxml-6.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6ddff43f702905a4e32bc24f3f2e2edfe0f8fde3277d481bffb709a4cced7a1f", size = 5064917, upload_time = "2025-09-22T04:01:37.448Z" }, - { url = "https://files.pythonhosted.org/packages/bd/55/6ceddaca353ebd0f1908ef712c597f8570cc9c58130dbb89903198e441fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:6da5185951d72e6f5352166e3da7b0dc27aa70bd1090b0eb3f7f7212b53f1bb8", size = 4788795, upload_time = "2025-09-22T04:01:39.165Z" }, - { url = "https://files.pythonhosted.org/packages/cf/e8/fd63e15da5e3fd4c2146f8bbb3c14e94ab850589beab88e547b2dbce22e1/lxml-6.0.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:57a86e1ebb4020a38d295c04fc79603c7899e0df71588043eb218722dabc087f", size = 5676759, upload_time = "2025-09-22T04:01:41.506Z" }, - { url = "https://files.pythonhosted.org/packages/76/47/b3ec58dc5c374697f5ba37412cd2728f427d056315d124dd4b61da381877/lxml-6.0.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2047d8234fe735ab77802ce5f2297e410ff40f5238aec569ad7c8e163d7b19a6", size = 5255666, upload_time = "2025-09-22T04:01:43.363Z" }, - { url = "https://files.pythonhosted.org/packages/19/93/03ba725df4c3d72afd9596eef4a37a837ce8e4806010569bedfcd2cb68fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6f91fd2b2ea15a6800c8e24418c0775a1694eefc011392da73bc6cef2623b322", size = 5277989, upload_time = "2025-09-22T04:01:45.215Z" }, - { url = "https://files.pythonhosted.org/packages/c6/80/c06de80bfce881d0ad738576f243911fccf992687ae09fd80b734712b39c/lxml-6.0.2-cp312-cp312-win32.whl", hash = "sha256:3ae2ce7d6fedfb3414a2b6c5e20b249c4c607f72cb8d2bb7cc9c6ec7c6f4e849", size = 3611456, upload_time = "2025-09-22T04:01:48.243Z" }, - { url = "https://files.pythonhosted.org/packages/f7/d7/0cdfb6c3e30893463fb3d1e52bc5f5f99684a03c29a0b6b605cfae879cd5/lxml-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:72c87e5ee4e58a8354fb9c7c84cbf95a1c8236c127a5d1b7683f04bed8361e1f", size = 4011793, upload_time = "2025-09-22T04:01:50.042Z" }, - { url = "https://files.pythonhosted.org/packages/ea/7b/93c73c67db235931527301ed3785f849c78991e2e34f3fd9a6663ffda4c5/lxml-6.0.2-cp312-cp312-win_arm64.whl", hash = "sha256:61cb10eeb95570153e0c0e554f58df92ecf5109f75eacad4a95baa709e26c3d6", size = 3672836, upload_time = "2025-09-22T04:01:52.145Z" }, - { url = "https://files.pythonhosted.org/packages/53/fd/4e8f0540608977aea078bf6d79f128e0e2c2bba8af1acf775c30baa70460/lxml-6.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9b33d21594afab46f37ae58dfadd06636f154923c4e8a4d754b0127554eb2e77", size = 8648494, upload_time = "2025-09-22T04:01:54.242Z" }, - { url = "https://files.pythonhosted.org/packages/5d/f4/2a94a3d3dfd6c6b433501b8d470a1960a20ecce93245cf2db1706adf6c19/lxml-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c8963287d7a4c5c9a432ff487c52e9c5618667179c18a204bdedb27310f022f", size = 4661146, upload_time = "2025-09-22T04:01:56.282Z" }, - { url = "https://files.pythonhosted.org/packages/25/2e/4efa677fa6b322013035d38016f6ae859d06cac67437ca7dc708a6af7028/lxml-6.0.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1941354d92699fb5ffe6ed7b32f9649e43c2feb4b97205f75866f7d21aa91452", size = 4946932, upload_time = "2025-09-22T04:01:58.989Z" }, - { url = "https://files.pythonhosted.org/packages/ce/0f/526e78a6d38d109fdbaa5049c62e1d32fdd70c75fb61c4eadf3045d3d124/lxml-6.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bb2f6ca0ae2d983ded09357b84af659c954722bbf04dea98030064996d156048", size = 5100060, upload_time = "2025-09-22T04:02:00.812Z" }, - { url = "https://files.pythonhosted.org/packages/81/76/99de58d81fa702cc0ea7edae4f4640416c2062813a00ff24bd70ac1d9c9b/lxml-6.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb2a12d704f180a902d7fa778c6d71f36ceb7b0d317f34cdc76a5d05aa1dd1df", size = 5019000, upload_time = "2025-09-22T04:02:02.671Z" }, - { url = "https://files.pythonhosted.org/packages/b5/35/9e57d25482bc9a9882cb0037fdb9cc18f4b79d85df94fa9d2a89562f1d25/lxml-6.0.2-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:6ec0e3f745021bfed19c456647f0298d60a24c9ff86d9d051f52b509663feeb1", size = 5348496, upload_time = "2025-09-22T04:02:04.904Z" }, - { url = "https://files.pythonhosted.org/packages/a6/8e/cb99bd0b83ccc3e8f0f528e9aa1f7a9965dfec08c617070c5db8d63a87ce/lxml-6.0.2-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:846ae9a12d54e368933b9759052d6206a9e8b250291109c48e350c1f1f49d916", size = 5643779, upload_time = "2025-09-22T04:02:06.689Z" }, - { url = "https://files.pythonhosted.org/packages/d0/34/9e591954939276bb679b73773836c6684c22e56d05980e31d52a9a8deb18/lxml-6.0.2-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef9266d2aa545d7374938fb5c484531ef5a2ec7f2d573e62f8ce722c735685fd", size = 5244072, upload_time = "2025-09-22T04:02:08.587Z" }, - { url = "https://files.pythonhosted.org/packages/8d/27/b29ff065f9aaca443ee377aff699714fcbffb371b4fce5ac4ca759e436d5/lxml-6.0.2-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:4077b7c79f31755df33b795dc12119cb557a0106bfdab0d2c2d97bd3cf3dffa6", size = 4718675, upload_time = "2025-09-22T04:02:10.783Z" }, - { url = "https://files.pythonhosted.org/packages/2b/9f/f756f9c2cd27caa1a6ef8c32ae47aadea697f5c2c6d07b0dae133c244fbe/lxml-6.0.2-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a7c5d5e5f1081955358533be077166ee97ed2571d6a66bdba6ec2f609a715d1a", size = 5255171, upload_time = "2025-09-22T04:02:12.631Z" }, - { url = "https://files.pythonhosted.org/packages/61/46/bb85ea42d2cb1bd8395484fd72f38e3389611aa496ac7772da9205bbda0e/lxml-6.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8f8d0cbd0674ee89863a523e6994ac25fd5be9c8486acfc3e5ccea679bad2679", size = 5057175, upload_time = "2025-09-22T04:02:14.718Z" }, - { url = "https://files.pythonhosted.org/packages/95/0c/443fc476dcc8e41577f0af70458c50fe299a97bb6b7505bb1ae09aa7f9ac/lxml-6.0.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2cbcbf6d6e924c28f04a43f3b6f6e272312a090f269eff68a2982e13e5d57659", size = 4785688, upload_time = "2025-09-22T04:02:16.957Z" }, - { url = "https://files.pythonhosted.org/packages/48/78/6ef0b359d45bb9697bc5a626e1992fa5d27aa3f8004b137b2314793b50a0/lxml-6.0.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dfb874cfa53340009af6bdd7e54ebc0d21012a60a4e65d927c2e477112e63484", size = 5660655, upload_time = "2025-09-22T04:02:18.815Z" }, - { url = "https://files.pythonhosted.org/packages/ff/ea/e1d33808f386bc1339d08c0dcada6e4712d4ed8e93fcad5f057070b7988a/lxml-6.0.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:fb8dae0b6b8b7f9e96c26fdd8121522ce5de9bb5538010870bd538683d30e9a2", size = 5247695, upload_time = "2025-09-22T04:02:20.593Z" }, - { url = "https://files.pythonhosted.org/packages/4f/47/eba75dfd8183673725255247a603b4ad606f4ae657b60c6c145b381697da/lxml-6.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:358d9adae670b63e95bc59747c72f4dc97c9ec58881d4627fe0120da0f90d314", size = 5269841, upload_time = "2025-09-22T04:02:22.489Z" }, - { url = "https://files.pythonhosted.org/packages/76/04/5c5e2b8577bc936e219becb2e98cdb1aca14a4921a12995b9d0c523502ae/lxml-6.0.2-cp313-cp313-win32.whl", hash = "sha256:e8cd2415f372e7e5a789d743d133ae474290a90b9023197fd78f32e2dc6873e2", size = 3610700, upload_time = "2025-09-22T04:02:24.465Z" }, - { url = "https://files.pythonhosted.org/packages/fe/0a/4643ccc6bb8b143e9f9640aa54e38255f9d3b45feb2cbe7ae2ca47e8782e/lxml-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:b30d46379644fbfc3ab81f8f82ae4de55179414651f110a1514f0b1f8f6cb2d7", size = 4010347, upload_time = "2025-09-22T04:02:26.286Z" }, - { url = "https://files.pythonhosted.org/packages/31/ef/dcf1d29c3f530577f61e5fe2f1bd72929acf779953668a8a47a479ae6f26/lxml-6.0.2-cp313-cp313-win_arm64.whl", hash = "sha256:13dcecc9946dca97b11b7c40d29fba63b55ab4170d3c0cf8c0c164343b9bfdcf", size = 3671248, upload_time = "2025-09-22T04:02:27.918Z" }, - { url = "https://files.pythonhosted.org/packages/e7/9c/780c9a8fce3f04690b374f72f41306866b0400b9d0fdf3e17aaa37887eed/lxml-6.0.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e748d4cf8fef2526bb2a589a417eba0c8674e29ffcb570ce2ceca44f1e567bf6", size = 3939264, upload_time = "2025-09-22T04:04:32.892Z" }, - { url = "https://files.pythonhosted.org/packages/f5/5a/1ab260c00adf645d8bf7dec7f920f744b032f69130c681302821d5debea6/lxml-6.0.2-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4ddb1049fa0579d0cbd00503ad8c58b9ab34d1254c77bc6a5576d96ec7853dba", size = 4216435, upload_time = "2025-09-22T04:04:34.907Z" }, - { url = "https://files.pythonhosted.org/packages/f2/37/565f3b3d7ffede22874b6d86be1a1763d00f4ea9fc5b9b6ccb11e4ec8612/lxml-6.0.2-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cb233f9c95f83707dae461b12b720c1af9c28c2d19208e1be03387222151daf5", size = 4325913, upload_time = "2025-09-22T04:04:37.205Z" }, - { url = "https://files.pythonhosted.org/packages/22/ec/f3a1b169b2fb9d03467e2e3c0c752ea30e993be440a068b125fc7dd248b0/lxml-6.0.2-pp310-pypy310_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bc456d04db0515ce3320d714a1eac7a97774ff0849e7718b492d957da4631dd4", size = 4269357, upload_time = "2025-09-22T04:04:39.322Z" }, - { url = "https://files.pythonhosted.org/packages/77/a2/585a28fe3e67daa1cf2f06f34490d556d121c25d500b10082a7db96e3bcd/lxml-6.0.2-pp310-pypy310_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2613e67de13d619fd283d58bda40bff0ee07739f624ffee8b13b631abf33083d", size = 4412295, upload_time = "2025-09-22T04:04:41.647Z" }, - { url = "https://files.pythonhosted.org/packages/7b/d9/a57dd8bcebd7c69386c20263830d4fa72d27e6b72a229ef7a48e88952d9a/lxml-6.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:24a8e756c982c001ca8d59e87c80c4d9dcd4d9b44a4cbeb8d9be4482c514d41d", size = 3516913, upload_time = "2025-09-22T04:04:43.602Z" }, - { url = "https://files.pythonhosted.org/packages/0b/11/29d08bc103a62c0eba8016e7ed5aeebbf1e4312e83b0b1648dd203b0e87d/lxml-6.0.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1c06035eafa8404b5cf475bb37a9f6088b0aca288d4ccc9d69389750d5543700", size = 3949829, upload_time = "2025-09-22T04:04:45.608Z" }, - { url = "https://files.pythonhosted.org/packages/12/b3/52ab9a3b31e5ab8238da241baa19eec44d2ab426532441ee607165aebb52/lxml-6.0.2-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c7d13103045de1bdd6fe5d61802565f1a3537d70cd3abf596aa0af62761921ee", size = 4226277, upload_time = "2025-09-22T04:04:47.754Z" }, - { url = "https://files.pythonhosted.org/packages/a0/33/1eaf780c1baad88224611df13b1c2a9dfa460b526cacfe769103ff50d845/lxml-6.0.2-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0a3c150a95fbe5ac91de323aa756219ef9cf7fde5a3f00e2281e30f33fa5fa4f", size = 4330433, upload_time = "2025-09-22T04:04:49.907Z" }, - { url = "https://files.pythonhosted.org/packages/7a/c1/27428a2ff348e994ab4f8777d3a0ad510b6b92d37718e5887d2da99952a2/lxml-6.0.2-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:60fa43be34f78bebb27812ed90f1925ec99560b0fa1decdb7d12b84d857d31e9", size = 4272119, upload_time = "2025-09-22T04:04:51.801Z" }, - { url = "https://files.pythonhosted.org/packages/f0/d0/3020fa12bcec4ab62f97aab026d57c2f0cfd480a558758d9ca233bb6a79d/lxml-6.0.2-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:21c73b476d3cfe836be731225ec3421fa2f048d84f6df6a8e70433dff1376d5a", size = 4417314, upload_time = "2025-09-22T04:04:55.024Z" }, - { url = "https://files.pythonhosted.org/packages/6c/77/d7f491cbc05303ac6801651aabeb262d43f319288c1ea96c66b1d2692ff3/lxml-6.0.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:27220da5be049e936c3aca06f174e8827ca6445a4353a1995584311487fc4e3e", size = 3518768, upload_time = "2025-09-22T04:04:57.097Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/aa/88/262177de60548e5a2bfc46ad28232c9e9cbde697bd94132aeb80364675cb/lxml-6.0.2.tar.gz", hash = "sha256:cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62", size = 4073426, upload-time = "2025-09-22T04:04:59.287Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/8a/f8192a08237ef2fb1b19733f709db88a4c43bc8ab8357f01cb41a27e7f6a/lxml-6.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e77dd455b9a16bbd2a5036a63ddbd479c19572af81b624e79ef422f929eef388", size = 8590589, upload-time = "2025-09-22T04:00:10.51Z" }, + { url = "https://files.pythonhosted.org/packages/12/64/27bcd07ae17ff5e5536e8d88f4c7d581b48963817a13de11f3ac3329bfa2/lxml-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d444858b9f07cefff6455b983aea9a67f7462ba1f6cbe4a21e8bf6791bf2153", size = 4629671, upload-time = "2025-09-22T04:00:15.411Z" }, + { url = "https://files.pythonhosted.org/packages/02/5a/a7d53b3291c324e0b6e48f3c797be63836cc52156ddf8f33cd72aac78866/lxml-6.0.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f952dacaa552f3bb8834908dddd500ba7d508e6ea6eb8c52eb2d28f48ca06a31", size = 4999961, upload-time = "2025-09-22T04:00:17.619Z" }, + { url = "https://files.pythonhosted.org/packages/f5/55/d465e9b89df1761674d8672bb3e4ae2c47033b01ec243964b6e334c6743f/lxml-6.0.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:71695772df6acea9f3c0e59e44ba8ac50c4f125217e84aab21074a1a55e7e5c9", size = 5157087, upload-time = "2025-09-22T04:00:19.868Z" }, + { url = "https://files.pythonhosted.org/packages/62/38/3073cd7e3e8dfc3ba3c3a139e33bee3a82de2bfb0925714351ad3d255c13/lxml-6.0.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:17f68764f35fd78d7c4cc4ef209a184c38b65440378013d24b8aecd327c3e0c8", size = 5067620, upload-time = "2025-09-22T04:00:21.877Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d3/1e001588c5e2205637b08985597827d3827dbaaece16348c8822bfe61c29/lxml-6.0.2-cp310-cp310-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:058027e261afed589eddcfe530fcc6f3402d7fd7e89bfd0532df82ebc1563dba", size = 5406664, upload-time = "2025-09-22T04:00:23.714Z" }, + { url = "https://files.pythonhosted.org/packages/20/cf/cab09478699b003857ed6ebfe95e9fb9fa3d3c25f1353b905c9b73cfb624/lxml-6.0.2-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8ffaeec5dfea5881d4c9d8913a32d10cfe3923495386106e4a24d45300ef79c", size = 5289397, upload-time = "2025-09-22T04:00:25.544Z" }, + { url = "https://files.pythonhosted.org/packages/a3/84/02a2d0c38ac9a8b9f9e5e1bbd3f24b3f426044ad618b552e9549ee91bd63/lxml-6.0.2-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:f2e3b1a6bb38de0bc713edd4d612969dd250ca8b724be8d460001a387507021c", size = 4772178, upload-time = "2025-09-22T04:00:27.602Z" }, + { url = "https://files.pythonhosted.org/packages/56/87/e1ceadcc031ec4aa605fe95476892d0b0ba3b7f8c7dcdf88fdeff59a9c86/lxml-6.0.2-cp310-cp310-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d6690ec5ec1cce0385cb20896b16be35247ac8c2046e493d03232f1c2414d321", size = 5358148, upload-time = "2025-09-22T04:00:29.323Z" }, + { url = "https://files.pythonhosted.org/packages/fe/13/5bb6cf42bb228353fd4ac5f162c6a84fd68a4d6f67c1031c8cf97e131fc6/lxml-6.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f2a50c3c1d11cad0ebebbac357a97b26aa79d2bcaf46f256551152aa85d3a4d1", size = 5112035, upload-time = "2025-09-22T04:00:31.061Z" }, + { url = "https://files.pythonhosted.org/packages/e4/e2/ea0498552102e59834e297c5c6dff8d8ded3db72ed5e8aad77871476f073/lxml-6.0.2-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:3efe1b21c7801ffa29a1112fab3b0f643628c30472d507f39544fd48e9549e34", size = 4799111, upload-time = "2025-09-22T04:00:33.11Z" }, + { url = "https://files.pythonhosted.org/packages/6a/9e/8de42b52a73abb8af86c66c969b3b4c2a96567b6ac74637c037d2e3baa60/lxml-6.0.2-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:59c45e125140b2c4b33920d21d83681940ca29f0b83f8629ea1a2196dc8cfe6a", size = 5351662, upload-time = "2025-09-22T04:00:35.237Z" }, + { url = "https://files.pythonhosted.org/packages/28/a2/de776a573dfb15114509a37351937c367530865edb10a90189d0b4b9b70a/lxml-6.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:452b899faa64f1805943ec1c0c9ebeaece01a1af83e130b69cdefeda180bb42c", size = 5314973, upload-time = "2025-09-22T04:00:37.086Z" }, + { url = "https://files.pythonhosted.org/packages/50/a0/3ae1b1f8964c271b5eec91db2043cf8c6c0bce101ebb2a633b51b044db6c/lxml-6.0.2-cp310-cp310-win32.whl", hash = "sha256:1e786a464c191ca43b133906c6903a7e4d56bef376b75d97ccbb8ec5cf1f0a4b", size = 3611953, upload-time = "2025-09-22T04:00:39.224Z" }, + { url = "https://files.pythonhosted.org/packages/d1/70/bd42491f0634aad41bdfc1e46f5cff98825fb6185688dc82baa35d509f1a/lxml-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:dacf3c64ef3f7440e3167aa4b49aa9e0fb99e0aa4f9ff03795640bf94531bcb0", size = 4032695, upload-time = "2025-09-22T04:00:41.402Z" }, + { url = "https://files.pythonhosted.org/packages/d2/d0/05c6a72299f54c2c561a6c6cbb2f512e047fca20ea97a05e57931f194ac4/lxml-6.0.2-cp310-cp310-win_arm64.whl", hash = "sha256:45f93e6f75123f88d7f0cfd90f2d05f441b808562bf0bc01070a00f53f5028b5", size = 3680051, upload-time = "2025-09-22T04:00:43.525Z" }, + { url = "https://files.pythonhosted.org/packages/77/d5/becbe1e2569b474a23f0c672ead8a29ac50b2dc1d5b9de184831bda8d14c/lxml-6.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:13e35cbc684aadf05d8711a5d1b5857c92e5e580efa9a0d2be197199c8def607", size = 8634365, upload-time = "2025-09-22T04:00:45.672Z" }, + { url = "https://files.pythonhosted.org/packages/28/66/1ced58f12e804644426b85d0bb8a4478ca77bc1761455da310505f1a3526/lxml-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b1675e096e17c6fe9c0e8c81434f5736c0739ff9ac6123c87c2d452f48fc938", size = 4650793, upload-time = "2025-09-22T04:00:47.783Z" }, + { url = "https://files.pythonhosted.org/packages/11/84/549098ffea39dfd167e3f174b4ce983d0eed61f9d8d25b7bf2a57c3247fc/lxml-6.0.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8ac6e5811ae2870953390452e3476694196f98d447573234592d30488147404d", size = 4944362, upload-time = "2025-09-22T04:00:49.845Z" }, + { url = "https://files.pythonhosted.org/packages/ac/bd/f207f16abf9749d2037453d56b643a7471d8fde855a231a12d1e095c4f01/lxml-6.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5aa0fc67ae19d7a64c3fe725dc9a1bb11f80e01f78289d05c6f62545affec438", size = 5083152, upload-time = "2025-09-22T04:00:51.709Z" }, + { url = "https://files.pythonhosted.org/packages/15/ae/bd813e87d8941d52ad5b65071b1affb48da01c4ed3c9c99e40abb266fbff/lxml-6.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:de496365750cc472b4e7902a485d3f152ecf57bd3ba03ddd5578ed8ceb4c5964", size = 5023539, upload-time = "2025-09-22T04:00:53.593Z" }, + { url = "https://files.pythonhosted.org/packages/02/cd/9bfef16bd1d874fbe0cb51afb00329540f30a3283beb9f0780adbb7eec03/lxml-6.0.2-cp311-cp311-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:200069a593c5e40b8f6fc0d84d86d970ba43138c3e68619ffa234bc9bb806a4d", size = 5344853, upload-time = "2025-09-22T04:00:55.524Z" }, + { url = "https://files.pythonhosted.org/packages/b8/89/ea8f91594bc5dbb879734d35a6f2b0ad50605d7fb419de2b63d4211765cc/lxml-6.0.2-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7d2de809c2ee3b888b59f995625385f74629707c9355e0ff856445cdcae682b7", size = 5225133, upload-time = "2025-09-22T04:00:57.269Z" }, + { url = "https://files.pythonhosted.org/packages/b9/37/9c735274f5dbec726b2db99b98a43950395ba3d4a1043083dba2ad814170/lxml-6.0.2-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:b2c3da8d93cf5db60e8858c17684c47d01fee6405e554fb55018dd85fc23b178", size = 4677944, upload-time = "2025-09-22T04:00:59.052Z" }, + { url = "https://files.pythonhosted.org/packages/20/28/7dfe1ba3475d8bfca3878365075abe002e05d40dfaaeb7ec01b4c587d533/lxml-6.0.2-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:442de7530296ef5e188373a1ea5789a46ce90c4847e597856570439621d9c553", size = 5284535, upload-time = "2025-09-22T04:01:01.335Z" }, + { url = "https://files.pythonhosted.org/packages/e7/cf/5f14bc0de763498fc29510e3532bf2b4b3a1c1d5d0dff2e900c16ba021ef/lxml-6.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2593c77efde7bfea7f6389f1ab249b15ed4aa5bc5cb5131faa3b843c429fbedb", size = 5067343, upload-time = "2025-09-22T04:01:03.13Z" }, + { url = "https://files.pythonhosted.org/packages/1c/b0/bb8275ab5472f32b28cfbbcc6db7c9d092482d3439ca279d8d6fa02f7025/lxml-6.0.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:3e3cb08855967a20f553ff32d147e14329b3ae70ced6edc2f282b94afbc74b2a", size = 4725419, upload-time = "2025-09-22T04:01:05.013Z" }, + { url = "https://files.pythonhosted.org/packages/25/4c/7c222753bc72edca3b99dbadba1b064209bc8ed4ad448af990e60dcce462/lxml-6.0.2-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:2ed6c667fcbb8c19c6791bbf40b7268ef8ddf5a96940ba9404b9f9a304832f6c", size = 5275008, upload-time = "2025-09-22T04:01:07.327Z" }, + { url = "https://files.pythonhosted.org/packages/6c/8c/478a0dc6b6ed661451379447cdbec77c05741a75736d97e5b2b729687828/lxml-6.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b8f18914faec94132e5b91e69d76a5c1d7b0c73e2489ea8929c4aaa10b76bbf7", size = 5248906, upload-time = "2025-09-22T04:01:09.452Z" }, + { url = "https://files.pythonhosted.org/packages/2d/d9/5be3a6ab2784cdf9accb0703b65e1b64fcdd9311c9f007630c7db0cfcce1/lxml-6.0.2-cp311-cp311-win32.whl", hash = "sha256:6605c604e6daa9e0d7f0a2137bdc47a2e93b59c60a65466353e37f8272f47c46", size = 3610357, upload-time = "2025-09-22T04:01:11.102Z" }, + { url = "https://files.pythonhosted.org/packages/e2/7d/ca6fb13349b473d5732fb0ee3eec8f6c80fc0688e76b7d79c1008481bf1f/lxml-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e5867f2651016a3afd8dd2c8238baa66f1e2802f44bc17e236f547ace6647078", size = 4036583, upload-time = "2025-09-22T04:01:12.766Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a2/51363b5ecd3eab46563645f3a2c3836a2fc67d01a1b87c5017040f39f567/lxml-6.0.2-cp311-cp311-win_arm64.whl", hash = "sha256:4197fb2534ee05fd3e7afaab5d8bfd6c2e186f65ea7f9cd6a82809c887bd1285", size = 3680591, upload-time = "2025-09-22T04:01:14.874Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c8/8ff2bc6b920c84355146cd1ab7d181bc543b89241cfb1ebee824a7c81457/lxml-6.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a59f5448ba2ceccd06995c95ea59a7674a10de0810f2ce90c9006f3cbc044456", size = 8661887, upload-time = "2025-09-22T04:01:17.265Z" }, + { url = "https://files.pythonhosted.org/packages/37/6f/9aae1008083bb501ef63284220ce81638332f9ccbfa53765b2b7502203cf/lxml-6.0.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e8113639f3296706fbac34a30813929e29247718e88173ad849f57ca59754924", size = 4667818, upload-time = "2025-09-22T04:01:19.688Z" }, + { url = "https://files.pythonhosted.org/packages/f1/ca/31fb37f99f37f1536c133476674c10b577e409c0a624384147653e38baf2/lxml-6.0.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a8bef9b9825fa8bc816a6e641bb67219489229ebc648be422af695f6e7a4fa7f", size = 4950807, upload-time = "2025-09-22T04:01:21.487Z" }, + { url = "https://files.pythonhosted.org/packages/da/87/f6cb9442e4bada8aab5ae7e1046264f62fdbeaa6e3f6211b93f4c0dd97f1/lxml-6.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:65ea18d710fd14e0186c2f973dc60bb52039a275f82d3c44a0e42b43440ea534", size = 5109179, upload-time = "2025-09-22T04:01:23.32Z" }, + { url = "https://files.pythonhosted.org/packages/c8/20/a7760713e65888db79bbae4f6146a6ae5c04e4a204a3c48896c408cd6ed2/lxml-6.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c371aa98126a0d4c739ca93ceffa0fd7a5d732e3ac66a46e74339acd4d334564", size = 5023044, upload-time = "2025-09-22T04:01:25.118Z" }, + { url = "https://files.pythonhosted.org/packages/a2/b0/7e64e0460fcb36471899f75831509098f3fd7cd02a3833ac517433cb4f8f/lxml-6.0.2-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:700efd30c0fa1a3581d80a748157397559396090a51d306ea59a70020223d16f", size = 5359685, upload-time = "2025-09-22T04:01:27.398Z" }, + { url = "https://files.pythonhosted.org/packages/b9/e1/e5df362e9ca4e2f48ed6411bd4b3a0ae737cc842e96877f5bf9428055ab4/lxml-6.0.2-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c33e66d44fe60e72397b487ee92e01da0d09ba2d66df8eae42d77b6d06e5eba0", size = 5654127, upload-time = "2025-09-22T04:01:29.629Z" }, + { url = "https://files.pythonhosted.org/packages/c6/d1/232b3309a02d60f11e71857778bfcd4acbdb86c07db8260caf7d008b08f8/lxml-6.0.2-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90a345bbeaf9d0587a3aaffb7006aa39ccb6ff0e96a57286c0cb2fd1520ea192", size = 5253958, upload-time = "2025-09-22T04:01:31.535Z" }, + { url = "https://files.pythonhosted.org/packages/35/35/d955a070994725c4f7d80583a96cab9c107c57a125b20bb5f708fe941011/lxml-6.0.2-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:064fdadaf7a21af3ed1dcaa106b854077fbeada827c18f72aec9346847cd65d0", size = 4711541, upload-time = "2025-09-22T04:01:33.801Z" }, + { url = "https://files.pythonhosted.org/packages/1e/be/667d17363b38a78c4bd63cfd4b4632029fd68d2c2dc81f25ce9eb5224dd5/lxml-6.0.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fbc74f42c3525ac4ffa4b89cbdd00057b6196bcefe8bce794abd42d33a018092", size = 5267426, upload-time = "2025-09-22T04:01:35.639Z" }, + { url = "https://files.pythonhosted.org/packages/ea/47/62c70aa4a1c26569bc958c9ca86af2bb4e1f614e8c04fb2989833874f7ae/lxml-6.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6ddff43f702905a4e32bc24f3f2e2edfe0f8fde3277d481bffb709a4cced7a1f", size = 5064917, upload-time = "2025-09-22T04:01:37.448Z" }, + { url = "https://files.pythonhosted.org/packages/bd/55/6ceddaca353ebd0f1908ef712c597f8570cc9c58130dbb89903198e441fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:6da5185951d72e6f5352166e3da7b0dc27aa70bd1090b0eb3f7f7212b53f1bb8", size = 4788795, upload-time = "2025-09-22T04:01:39.165Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e8/fd63e15da5e3fd4c2146f8bbb3c14e94ab850589beab88e547b2dbce22e1/lxml-6.0.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:57a86e1ebb4020a38d295c04fc79603c7899e0df71588043eb218722dabc087f", size = 5676759, upload-time = "2025-09-22T04:01:41.506Z" }, + { url = "https://files.pythonhosted.org/packages/76/47/b3ec58dc5c374697f5ba37412cd2728f427d056315d124dd4b61da381877/lxml-6.0.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2047d8234fe735ab77802ce5f2297e410ff40f5238aec569ad7c8e163d7b19a6", size = 5255666, upload-time = "2025-09-22T04:01:43.363Z" }, + { url = "https://files.pythonhosted.org/packages/19/93/03ba725df4c3d72afd9596eef4a37a837ce8e4806010569bedfcd2cb68fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6f91fd2b2ea15a6800c8e24418c0775a1694eefc011392da73bc6cef2623b322", size = 5277989, upload-time = "2025-09-22T04:01:45.215Z" }, + { url = "https://files.pythonhosted.org/packages/c6/80/c06de80bfce881d0ad738576f243911fccf992687ae09fd80b734712b39c/lxml-6.0.2-cp312-cp312-win32.whl", hash = "sha256:3ae2ce7d6fedfb3414a2b6c5e20b249c4c607f72cb8d2bb7cc9c6ec7c6f4e849", size = 3611456, upload-time = "2025-09-22T04:01:48.243Z" }, + { url = "https://files.pythonhosted.org/packages/f7/d7/0cdfb6c3e30893463fb3d1e52bc5f5f99684a03c29a0b6b605cfae879cd5/lxml-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:72c87e5ee4e58a8354fb9c7c84cbf95a1c8236c127a5d1b7683f04bed8361e1f", size = 4011793, upload-time = "2025-09-22T04:01:50.042Z" }, + { url = "https://files.pythonhosted.org/packages/ea/7b/93c73c67db235931527301ed3785f849c78991e2e34f3fd9a6663ffda4c5/lxml-6.0.2-cp312-cp312-win_arm64.whl", hash = "sha256:61cb10eeb95570153e0c0e554f58df92ecf5109f75eacad4a95baa709e26c3d6", size = 3672836, upload-time = "2025-09-22T04:01:52.145Z" }, + { url = "https://files.pythonhosted.org/packages/53/fd/4e8f0540608977aea078bf6d79f128e0e2c2bba8af1acf775c30baa70460/lxml-6.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9b33d21594afab46f37ae58dfadd06636f154923c4e8a4d754b0127554eb2e77", size = 8648494, upload-time = "2025-09-22T04:01:54.242Z" }, + { url = "https://files.pythonhosted.org/packages/5d/f4/2a94a3d3dfd6c6b433501b8d470a1960a20ecce93245cf2db1706adf6c19/lxml-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c8963287d7a4c5c9a432ff487c52e9c5618667179c18a204bdedb27310f022f", size = 4661146, upload-time = "2025-09-22T04:01:56.282Z" }, + { url = "https://files.pythonhosted.org/packages/25/2e/4efa677fa6b322013035d38016f6ae859d06cac67437ca7dc708a6af7028/lxml-6.0.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1941354d92699fb5ffe6ed7b32f9649e43c2feb4b97205f75866f7d21aa91452", size = 4946932, upload-time = "2025-09-22T04:01:58.989Z" }, + { url = "https://files.pythonhosted.org/packages/ce/0f/526e78a6d38d109fdbaa5049c62e1d32fdd70c75fb61c4eadf3045d3d124/lxml-6.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bb2f6ca0ae2d983ded09357b84af659c954722bbf04dea98030064996d156048", size = 5100060, upload-time = "2025-09-22T04:02:00.812Z" }, + { url = "https://files.pythonhosted.org/packages/81/76/99de58d81fa702cc0ea7edae4f4640416c2062813a00ff24bd70ac1d9c9b/lxml-6.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb2a12d704f180a902d7fa778c6d71f36ceb7b0d317f34cdc76a5d05aa1dd1df", size = 5019000, upload-time = "2025-09-22T04:02:02.671Z" }, + { url = "https://files.pythonhosted.org/packages/b5/35/9e57d25482bc9a9882cb0037fdb9cc18f4b79d85df94fa9d2a89562f1d25/lxml-6.0.2-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:6ec0e3f745021bfed19c456647f0298d60a24c9ff86d9d051f52b509663feeb1", size = 5348496, upload-time = "2025-09-22T04:02:04.904Z" }, + { url = "https://files.pythonhosted.org/packages/a6/8e/cb99bd0b83ccc3e8f0f528e9aa1f7a9965dfec08c617070c5db8d63a87ce/lxml-6.0.2-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:846ae9a12d54e368933b9759052d6206a9e8b250291109c48e350c1f1f49d916", size = 5643779, upload-time = "2025-09-22T04:02:06.689Z" }, + { url = "https://files.pythonhosted.org/packages/d0/34/9e591954939276bb679b73773836c6684c22e56d05980e31d52a9a8deb18/lxml-6.0.2-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef9266d2aa545d7374938fb5c484531ef5a2ec7f2d573e62f8ce722c735685fd", size = 5244072, upload-time = "2025-09-22T04:02:08.587Z" }, + { url = "https://files.pythonhosted.org/packages/8d/27/b29ff065f9aaca443ee377aff699714fcbffb371b4fce5ac4ca759e436d5/lxml-6.0.2-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:4077b7c79f31755df33b795dc12119cb557a0106bfdab0d2c2d97bd3cf3dffa6", size = 4718675, upload-time = "2025-09-22T04:02:10.783Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/f756f9c2cd27caa1a6ef8c32ae47aadea697f5c2c6d07b0dae133c244fbe/lxml-6.0.2-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a7c5d5e5f1081955358533be077166ee97ed2571d6a66bdba6ec2f609a715d1a", size = 5255171, upload-time = "2025-09-22T04:02:12.631Z" }, + { url = "https://files.pythonhosted.org/packages/61/46/bb85ea42d2cb1bd8395484fd72f38e3389611aa496ac7772da9205bbda0e/lxml-6.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8f8d0cbd0674ee89863a523e6994ac25fd5be9c8486acfc3e5ccea679bad2679", size = 5057175, upload-time = "2025-09-22T04:02:14.718Z" }, + { url = "https://files.pythonhosted.org/packages/95/0c/443fc476dcc8e41577f0af70458c50fe299a97bb6b7505bb1ae09aa7f9ac/lxml-6.0.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2cbcbf6d6e924c28f04a43f3b6f6e272312a090f269eff68a2982e13e5d57659", size = 4785688, upload-time = "2025-09-22T04:02:16.957Z" }, + { url = "https://files.pythonhosted.org/packages/48/78/6ef0b359d45bb9697bc5a626e1992fa5d27aa3f8004b137b2314793b50a0/lxml-6.0.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dfb874cfa53340009af6bdd7e54ebc0d21012a60a4e65d927c2e477112e63484", size = 5660655, upload-time = "2025-09-22T04:02:18.815Z" }, + { url = "https://files.pythonhosted.org/packages/ff/ea/e1d33808f386bc1339d08c0dcada6e4712d4ed8e93fcad5f057070b7988a/lxml-6.0.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:fb8dae0b6b8b7f9e96c26fdd8121522ce5de9bb5538010870bd538683d30e9a2", size = 5247695, upload-time = "2025-09-22T04:02:20.593Z" }, + { url = "https://files.pythonhosted.org/packages/4f/47/eba75dfd8183673725255247a603b4ad606f4ae657b60c6c145b381697da/lxml-6.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:358d9adae670b63e95bc59747c72f4dc97c9ec58881d4627fe0120da0f90d314", size = 5269841, upload-time = "2025-09-22T04:02:22.489Z" }, + { url = "https://files.pythonhosted.org/packages/76/04/5c5e2b8577bc936e219becb2e98cdb1aca14a4921a12995b9d0c523502ae/lxml-6.0.2-cp313-cp313-win32.whl", hash = "sha256:e8cd2415f372e7e5a789d743d133ae474290a90b9023197fd78f32e2dc6873e2", size = 3610700, upload-time = "2025-09-22T04:02:24.465Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0a/4643ccc6bb8b143e9f9640aa54e38255f9d3b45feb2cbe7ae2ca47e8782e/lxml-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:b30d46379644fbfc3ab81f8f82ae4de55179414651f110a1514f0b1f8f6cb2d7", size = 4010347, upload-time = "2025-09-22T04:02:26.286Z" }, + { url = "https://files.pythonhosted.org/packages/31/ef/dcf1d29c3f530577f61e5fe2f1bd72929acf779953668a8a47a479ae6f26/lxml-6.0.2-cp313-cp313-win_arm64.whl", hash = "sha256:13dcecc9946dca97b11b7c40d29fba63b55ab4170d3c0cf8c0c164343b9bfdcf", size = 3671248, upload-time = "2025-09-22T04:02:27.918Z" }, + { url = "https://files.pythonhosted.org/packages/e7/9c/780c9a8fce3f04690b374f72f41306866b0400b9d0fdf3e17aaa37887eed/lxml-6.0.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e748d4cf8fef2526bb2a589a417eba0c8674e29ffcb570ce2ceca44f1e567bf6", size = 3939264, upload-time = "2025-09-22T04:04:32.892Z" }, + { url = "https://files.pythonhosted.org/packages/f5/5a/1ab260c00adf645d8bf7dec7f920f744b032f69130c681302821d5debea6/lxml-6.0.2-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4ddb1049fa0579d0cbd00503ad8c58b9ab34d1254c77bc6a5576d96ec7853dba", size = 4216435, upload-time = "2025-09-22T04:04:34.907Z" }, + { url = "https://files.pythonhosted.org/packages/f2/37/565f3b3d7ffede22874b6d86be1a1763d00f4ea9fc5b9b6ccb11e4ec8612/lxml-6.0.2-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cb233f9c95f83707dae461b12b720c1af9c28c2d19208e1be03387222151daf5", size = 4325913, upload-time = "2025-09-22T04:04:37.205Z" }, + { url = "https://files.pythonhosted.org/packages/22/ec/f3a1b169b2fb9d03467e2e3c0c752ea30e993be440a068b125fc7dd248b0/lxml-6.0.2-pp310-pypy310_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bc456d04db0515ce3320d714a1eac7a97774ff0849e7718b492d957da4631dd4", size = 4269357, upload-time = "2025-09-22T04:04:39.322Z" }, + { url = "https://files.pythonhosted.org/packages/77/a2/585a28fe3e67daa1cf2f06f34490d556d121c25d500b10082a7db96e3bcd/lxml-6.0.2-pp310-pypy310_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2613e67de13d619fd283d58bda40bff0ee07739f624ffee8b13b631abf33083d", size = 4412295, upload-time = "2025-09-22T04:04:41.647Z" }, + { url = "https://files.pythonhosted.org/packages/7b/d9/a57dd8bcebd7c69386c20263830d4fa72d27e6b72a229ef7a48e88952d9a/lxml-6.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:24a8e756c982c001ca8d59e87c80c4d9dcd4d9b44a4cbeb8d9be4482c514d41d", size = 3516913, upload-time = "2025-09-22T04:04:43.602Z" }, + { url = "https://files.pythonhosted.org/packages/0b/11/29d08bc103a62c0eba8016e7ed5aeebbf1e4312e83b0b1648dd203b0e87d/lxml-6.0.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1c06035eafa8404b5cf475bb37a9f6088b0aca288d4ccc9d69389750d5543700", size = 3949829, upload-time = "2025-09-22T04:04:45.608Z" }, + { url = "https://files.pythonhosted.org/packages/12/b3/52ab9a3b31e5ab8238da241baa19eec44d2ab426532441ee607165aebb52/lxml-6.0.2-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c7d13103045de1bdd6fe5d61802565f1a3537d70cd3abf596aa0af62761921ee", size = 4226277, upload-time = "2025-09-22T04:04:47.754Z" }, + { url = "https://files.pythonhosted.org/packages/a0/33/1eaf780c1baad88224611df13b1c2a9dfa460b526cacfe769103ff50d845/lxml-6.0.2-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0a3c150a95fbe5ac91de323aa756219ef9cf7fde5a3f00e2281e30f33fa5fa4f", size = 4330433, upload-time = "2025-09-22T04:04:49.907Z" }, + { url = "https://files.pythonhosted.org/packages/7a/c1/27428a2ff348e994ab4f8777d3a0ad510b6b92d37718e5887d2da99952a2/lxml-6.0.2-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:60fa43be34f78bebb27812ed90f1925ec99560b0fa1decdb7d12b84d857d31e9", size = 4272119, upload-time = "2025-09-22T04:04:51.801Z" }, + { url = "https://files.pythonhosted.org/packages/f0/d0/3020fa12bcec4ab62f97aab026d57c2f0cfd480a558758d9ca233bb6a79d/lxml-6.0.2-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:21c73b476d3cfe836be731225ec3421fa2f048d84f6df6a8e70433dff1376d5a", size = 4417314, upload-time = "2025-09-22T04:04:55.024Z" }, + { url = "https://files.pythonhosted.org/packages/6c/77/d7f491cbc05303ac6801651aabeb262d43f319288c1ea96c66b1d2692ff3/lxml-6.0.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:27220da5be049e936c3aca06f174e8827ca6445a4353a1995584311487fc4e3e", size = 3518768, upload-time = "2025-09-22T04:04:57.097Z" }, ] [[package]] @@ -1981,9 +2031,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9e/38/bd5b78a920a64d708fe6bc8e0a2c075e1389d53bef8413725c63ba041535/mako-1.3.10.tar.gz", hash = "sha256:99579a6f39583fa7e5630a28c3c1f440e4e97a414b80372649c0ce338da2ea28", size = 392474, upload_time = "2025-04-10T12:44:31.16Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/38/bd5b78a920a64d708fe6bc8e0a2c075e1389d53bef8413725c63ba041535/mako-1.3.10.tar.gz", hash = "sha256:99579a6f39583fa7e5630a28c3c1f440e4e97a414b80372649c0ce338da2ea28", size = 392474, upload-time = "2025-04-10T12:44:31.16Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/87/fb/99f81ac72ae23375f22b7afdb7642aba97c00a713c217124420147681a2f/mako-1.3.10-py3-none-any.whl", hash = "sha256:baef24a52fc4fc514a0887ac600f9f1cff3d82c61d4d700a1fa84d597b88db59", size = 78509, upload_time = "2025-04-10T12:50:53.297Z" }, + { url = "https://files.pythonhosted.org/packages/87/fb/99f81ac72ae23375f22b7afdb7642aba97c00a713c217124420147681a2f/mako-1.3.10-py3-none-any.whl", hash = "sha256:baef24a52fc4fc514a0887ac600f9f1cff3d82c61d4d700a1fa84d597b88db59", size = 78509, upload-time = "2025-04-10T12:50:53.297Z" }, ] [[package]] @@ -2012,18 +2062,18 @@ dependencies = [ { name = "uvicorn", marker = "sys_platform != 'emscripten'" }, { name = "websockets", marker = "sys_platform != 'emscripten'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/33/8d/5527d7ddd38a3a495f38f86a41731437301f0d08d81353fb9ceedf167b3d/marimo-0.23.13.tar.gz", hash = "sha256:12dffd800b3f6beae15e0ee3983cc3e8a3fb03c8a87cb0d58973e560008ba3aa", size = 38641267, upload_time = "2026-07-01T17:36:40.151Z" } +sdist = { url = "https://files.pythonhosted.org/packages/33/8d/5527d7ddd38a3a495f38f86a41731437301f0d08d81353fb9ceedf167b3d/marimo-0.23.13.tar.gz", hash = "sha256:12dffd800b3f6beae15e0ee3983cc3e8a3fb03c8a87cb0d58973e560008ba3aa", size = 38641267, upload-time = "2026-07-01T17:36:40.151Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a5/c0/8470e4e383b01d88fa9c80fba2b0b203d6e4a41e4fbcaedcac997b664b42/marimo-0.23.13-py3-none-any.whl", hash = "sha256:bc6e0f2c59d2086b0707fac56edeedf5f6edf8a390b4d59f4c417ce4c683adb9", size = 39091347, upload_time = "2026-07-01T17:36:36.151Z" }, + { url = "https://files.pythonhosted.org/packages/a5/c0/8470e4e383b01d88fa9c80fba2b0b203d6e4a41e4fbcaedcac997b664b42/marimo-0.23.13-py3-none-any.whl", hash = "sha256:bc6e0f2c59d2086b0707fac56edeedf5f6edf8a390b4d59f4c417ce4c683adb9", size = 39091347, upload-time = "2026-07-01T17:36:36.151Z" }, ] [[package]] name = "markdown" version = "3.10.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2b/f4/69fa6ed85ae003c2378ffa8f6d2e3234662abd02c10d216c0ba96081a238/markdown-3.10.2.tar.gz", hash = "sha256:994d51325d25ad8aa7ce4ebaec003febcce822c3f8c911e3b17c52f7f589f950", size = 368805, upload_time = "2026-02-09T14:57:26.942Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2b/f4/69fa6ed85ae003c2378ffa8f6d2e3234662abd02c10d216c0ba96081a238/markdown-3.10.2.tar.gz", hash = "sha256:994d51325d25ad8aa7ce4ebaec003febcce822c3f8c911e3b17c52f7f589f950", size = 368805, upload-time = "2026-02-09T14:57:26.942Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/de/1f/77fa3081e4f66ca3576c896ae5d31c3002ac6607f9747d2e3aa49227e464/markdown-3.10.2-py3-none-any.whl", hash = "sha256:e91464b71ae3ee7afd3017d9f358ef0baf158fd9a298db92f1d4761133824c36", size = 108180, upload_time = "2026-02-09T14:57:25.787Z" }, + { url = "https://files.pythonhosted.org/packages/de/1f/77fa3081e4f66ca3576c896ae5d31c3002ac6607f9747d2e3aa49227e464/markdown-3.10.2-py3-none-any.whl", hash = "sha256:e91464b71ae3ee7afd3017d9f358ef0baf158fd9a298db92f1d4761133824c36", size = 108180, upload-time = "2026-02-09T14:57:25.787Z" }, ] [[package]] @@ -2033,139 +2083,139 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mdurl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload_time = "2025-08-11T12:57:52.854Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload_time = "2025-08-11T12:57:51.923Z" }, + { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, ] [[package]] name = "markupsafe" version = "3.0.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload_time = "2025-09-27T18:37:40.426Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e8/4b/3541d44f3937ba468b75da9eebcae497dcf67adb65caa16760b0a6807ebb/markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559", size = 11631, upload_time = "2025-09-27T18:36:05.558Z" }, - { url = "https://files.pythonhosted.org/packages/98/1b/fbd8eed11021cabd9226c37342fa6ca4e8a98d8188a8d9b66740494960e4/markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419", size = 12057, upload_time = "2025-09-27T18:36:07.165Z" }, - { url = "https://files.pythonhosted.org/packages/40/01/e560d658dc0bb8ab762670ece35281dec7b6c1b33f5fbc09ebb57a185519/markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695", size = 22050, upload_time = "2025-09-27T18:36:08.005Z" }, - { url = "https://files.pythonhosted.org/packages/af/cd/ce6e848bbf2c32314c9b237839119c5a564a59725b53157c856e90937b7a/markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591", size = 20681, upload_time = "2025-09-27T18:36:08.881Z" }, - { url = "https://files.pythonhosted.org/packages/c9/2a/b5c12c809f1c3045c4d580b035a743d12fcde53cf685dbc44660826308da/markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c", size = 20705, upload_time = "2025-09-27T18:36:10.131Z" }, - { url = "https://files.pythonhosted.org/packages/cf/e3/9427a68c82728d0a88c50f890d0fc072a1484de2f3ac1ad0bfc1a7214fd5/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f", size = 21524, upload_time = "2025-09-27T18:36:11.324Z" }, - { url = "https://files.pythonhosted.org/packages/bc/36/23578f29e9e582a4d0278e009b38081dbe363c5e7165113fad546918a232/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6", size = 20282, upload_time = "2025-09-27T18:36:12.573Z" }, - { url = "https://files.pythonhosted.org/packages/56/21/dca11354e756ebd03e036bd8ad58d6d7168c80ce1fe5e75218e4945cbab7/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1", size = 20745, upload_time = "2025-09-27T18:36:13.504Z" }, - { url = "https://files.pythonhosted.org/packages/87/99/faba9369a7ad6e4d10b6a5fbf71fa2a188fe4a593b15f0963b73859a1bbd/markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa", size = 14571, upload_time = "2025-09-27T18:36:14.779Z" }, - { url = "https://files.pythonhosted.org/packages/d6/25/55dc3ab959917602c96985cb1253efaa4ff42f71194bddeb61eb7278b8be/markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8", size = 15056, upload_time = "2025-09-27T18:36:16.125Z" }, - { url = "https://files.pythonhosted.org/packages/d0/9e/0a02226640c255d1da0b8d12e24ac2aa6734da68bff14c05dd53b94a0fc3/markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1", size = 13932, upload_time = "2025-09-27T18:36:17.311Z" }, - { url = "https://files.pythonhosted.org/packages/08/db/fefacb2136439fc8dd20e797950e749aa1f4997ed584c62cfb8ef7c2be0e/markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", size = 11631, upload_time = "2025-09-27T18:36:18.185Z" }, - { url = "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", size = 12058, upload_time = "2025-09-27T18:36:19.444Z" }, - { url = "https://files.pythonhosted.org/packages/1d/09/adf2df3699d87d1d8184038df46a9c80d78c0148492323f4693df54e17bb/markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", size = 24287, upload_time = "2025-09-27T18:36:20.768Z" }, - { url = "https://files.pythonhosted.org/packages/30/ac/0273f6fcb5f42e314c6d8cd99effae6a5354604d461b8d392b5ec9530a54/markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf", size = 22940, upload_time = "2025-09-27T18:36:22.249Z" }, - { url = "https://files.pythonhosted.org/packages/19/ae/31c1be199ef767124c042c6c3e904da327a2f7f0cd63a0337e1eca2967a8/markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f", size = 21887, upload_time = "2025-09-27T18:36:23.535Z" }, - { url = "https://files.pythonhosted.org/packages/b2/76/7edcab99d5349a4532a459e1fe64f0b0467a3365056ae550d3bcf3f79e1e/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a", size = 23692, upload_time = "2025-09-27T18:36:24.823Z" }, - { url = "https://files.pythonhosted.org/packages/a4/28/6e74cdd26d7514849143d69f0bf2399f929c37dc2b31e6829fd2045b2765/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115", size = 21471, upload_time = "2025-09-27T18:36:25.95Z" }, - { url = "https://files.pythonhosted.org/packages/62/7e/a145f36a5c2945673e590850a6f8014318d5577ed7e5920a4b3448e0865d/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a", size = 22923, upload_time = "2025-09-27T18:36:27.109Z" }, - { url = "https://files.pythonhosted.org/packages/0f/62/d9c46a7f5c9adbeeeda52f5b8d802e1094e9717705a645efc71b0913a0a8/markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19", size = 14572, upload_time = "2025-09-27T18:36:28.045Z" }, - { url = "https://files.pythonhosted.org/packages/83/8a/4414c03d3f891739326e1783338e48fb49781cc915b2e0ee052aa490d586/markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01", size = 15077, upload_time = "2025-09-27T18:36:29.025Z" }, - { url = "https://files.pythonhosted.org/packages/35/73/893072b42e6862f319b5207adc9ae06070f095b358655f077f69a35601f0/markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c", size = 13876, upload_time = "2025-09-27T18:36:29.954Z" }, - { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload_time = "2025-09-27T18:36:30.854Z" }, - { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload_time = "2025-09-27T18:36:31.971Z" }, - { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload_time = "2025-09-27T18:36:32.813Z" }, - { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload_time = "2025-09-27T18:36:33.86Z" }, - { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload_time = "2025-09-27T18:36:35.099Z" }, - { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload_time = "2025-09-27T18:36:36.001Z" }, - { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload_time = "2025-09-27T18:36:36.906Z" }, - { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload_time = "2025-09-27T18:36:37.868Z" }, - { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload_time = "2025-09-27T18:36:38.761Z" }, - { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload_time = "2025-09-27T18:36:39.701Z" }, - { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload_time = "2025-09-27T18:36:40.689Z" }, - { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload_time = "2025-09-27T18:36:41.777Z" }, - { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload_time = "2025-09-27T18:36:43.257Z" }, - { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload_time = "2025-09-27T18:36:44.508Z" }, - { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload_time = "2025-09-27T18:36:45.385Z" }, - { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload_time = "2025-09-27T18:36:46.916Z" }, - { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload_time = "2025-09-27T18:36:47.884Z" }, - { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload_time = "2025-09-27T18:36:48.82Z" }, - { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload_time = "2025-09-27T18:36:49.797Z" }, - { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload_time = "2025-09-27T18:36:51.584Z" }, - { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload_time = "2025-09-27T18:36:52.537Z" }, - { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload_time = "2025-09-27T18:36:53.513Z" }, - { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload_time = "2025-09-27T18:36:54.819Z" }, - { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload_time = "2025-09-27T18:36:55.714Z" }, - { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload_time = "2025-09-27T18:36:56.908Z" }, - { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload_time = "2025-09-27T18:36:57.913Z" }, - { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload_time = "2025-09-27T18:36:58.833Z" }, - { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload_time = "2025-09-27T18:36:59.739Z" }, - { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload_time = "2025-09-27T18:37:00.719Z" }, - { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload_time = "2025-09-27T18:37:01.673Z" }, - { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload_time = "2025-09-27T18:37:02.639Z" }, - { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload_time = "2025-09-27T18:37:03.582Z" }, - { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload_time = "2025-09-27T18:37:04.929Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/4b/3541d44f3937ba468b75da9eebcae497dcf67adb65caa16760b0a6807ebb/markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559", size = 11631, upload-time = "2025-09-27T18:36:05.558Z" }, + { url = "https://files.pythonhosted.org/packages/98/1b/fbd8eed11021cabd9226c37342fa6ca4e8a98d8188a8d9b66740494960e4/markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419", size = 12057, upload-time = "2025-09-27T18:36:07.165Z" }, + { url = "https://files.pythonhosted.org/packages/40/01/e560d658dc0bb8ab762670ece35281dec7b6c1b33f5fbc09ebb57a185519/markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695", size = 22050, upload-time = "2025-09-27T18:36:08.005Z" }, + { url = "https://files.pythonhosted.org/packages/af/cd/ce6e848bbf2c32314c9b237839119c5a564a59725b53157c856e90937b7a/markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591", size = 20681, upload-time = "2025-09-27T18:36:08.881Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2a/b5c12c809f1c3045c4d580b035a743d12fcde53cf685dbc44660826308da/markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c", size = 20705, upload-time = "2025-09-27T18:36:10.131Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e3/9427a68c82728d0a88c50f890d0fc072a1484de2f3ac1ad0bfc1a7214fd5/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f", size = 21524, upload-time = "2025-09-27T18:36:11.324Z" }, + { url = "https://files.pythonhosted.org/packages/bc/36/23578f29e9e582a4d0278e009b38081dbe363c5e7165113fad546918a232/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6", size = 20282, upload-time = "2025-09-27T18:36:12.573Z" }, + { url = "https://files.pythonhosted.org/packages/56/21/dca11354e756ebd03e036bd8ad58d6d7168c80ce1fe5e75218e4945cbab7/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1", size = 20745, upload-time = "2025-09-27T18:36:13.504Z" }, + { url = "https://files.pythonhosted.org/packages/87/99/faba9369a7ad6e4d10b6a5fbf71fa2a188fe4a593b15f0963b73859a1bbd/markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa", size = 14571, upload-time = "2025-09-27T18:36:14.779Z" }, + { url = "https://files.pythonhosted.org/packages/d6/25/55dc3ab959917602c96985cb1253efaa4ff42f71194bddeb61eb7278b8be/markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8", size = 15056, upload-time = "2025-09-27T18:36:16.125Z" }, + { url = "https://files.pythonhosted.org/packages/d0/9e/0a02226640c255d1da0b8d12e24ac2aa6734da68bff14c05dd53b94a0fc3/markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1", size = 13932, upload-time = "2025-09-27T18:36:17.311Z" }, + { url = "https://files.pythonhosted.org/packages/08/db/fefacb2136439fc8dd20e797950e749aa1f4997ed584c62cfb8ef7c2be0e/markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", size = 11631, upload-time = "2025-09-27T18:36:18.185Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", size = 12058, upload-time = "2025-09-27T18:36:19.444Z" }, + { url = "https://files.pythonhosted.org/packages/1d/09/adf2df3699d87d1d8184038df46a9c80d78c0148492323f4693df54e17bb/markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", size = 24287, upload-time = "2025-09-27T18:36:20.768Z" }, + { url = "https://files.pythonhosted.org/packages/30/ac/0273f6fcb5f42e314c6d8cd99effae6a5354604d461b8d392b5ec9530a54/markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf", size = 22940, upload-time = "2025-09-27T18:36:22.249Z" }, + { url = "https://files.pythonhosted.org/packages/19/ae/31c1be199ef767124c042c6c3e904da327a2f7f0cd63a0337e1eca2967a8/markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f", size = 21887, upload-time = "2025-09-27T18:36:23.535Z" }, + { url = "https://files.pythonhosted.org/packages/b2/76/7edcab99d5349a4532a459e1fe64f0b0467a3365056ae550d3bcf3f79e1e/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a", size = 23692, upload-time = "2025-09-27T18:36:24.823Z" }, + { url = "https://files.pythonhosted.org/packages/a4/28/6e74cdd26d7514849143d69f0bf2399f929c37dc2b31e6829fd2045b2765/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115", size = 21471, upload-time = "2025-09-27T18:36:25.95Z" }, + { url = "https://files.pythonhosted.org/packages/62/7e/a145f36a5c2945673e590850a6f8014318d5577ed7e5920a4b3448e0865d/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a", size = 22923, upload-time = "2025-09-27T18:36:27.109Z" }, + { url = "https://files.pythonhosted.org/packages/0f/62/d9c46a7f5c9adbeeeda52f5b8d802e1094e9717705a645efc71b0913a0a8/markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19", size = 14572, upload-time = "2025-09-27T18:36:28.045Z" }, + { url = "https://files.pythonhosted.org/packages/83/8a/4414c03d3f891739326e1783338e48fb49781cc915b2e0ee052aa490d586/markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01", size = 15077, upload-time = "2025-09-27T18:36:29.025Z" }, + { url = "https://files.pythonhosted.org/packages/35/73/893072b42e6862f319b5207adc9ae06070f095b358655f077f69a35601f0/markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c", size = 13876, upload-time = "2025-09-27T18:36:29.954Z" }, + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, ] [[package]] name = "mdurl" version = "0.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload_time = "2022-08-14T12:40:10.846Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload_time = "2022-08-14T12:40:09.779Z" }, + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, ] [[package]] name = "more-itertools" version = "10.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ea/5d/38b681d3fce7a266dd9ab73c66959406d565b3e85f21d5e66e1181d93721/more_itertools-10.8.0.tar.gz", hash = "sha256:f638ddf8a1a0d134181275fb5d58b086ead7c6a72429ad725c67503f13ba30bd", size = 137431, upload_time = "2025-09-02T15:23:11.018Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ea/5d/38b681d3fce7a266dd9ab73c66959406d565b3e85f21d5e66e1181d93721/more_itertools-10.8.0.tar.gz", hash = "sha256:f638ddf8a1a0d134181275fb5d58b086ead7c6a72429ad725c67503f13ba30bd", size = 137431, upload-time = "2025-09-02T15:23:11.018Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl", hash = "sha256:52d4362373dcf7c52546bc4af9a86ee7c4579df9a8dc268be0a2f949d376cc9b", size = 69667, upload_time = "2025-09-02T15:23:09.635Z" }, + { url = "https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl", hash = "sha256:52d4362373dcf7c52546bc4af9a86ee7c4579df9a8dc268be0a2f949d376cc9b", size = 69667, upload-time = "2025-09-02T15:23:09.635Z" }, ] [[package]] name = "mpmath" version = "1.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload_time = "2023-03-07T16:47:11.061Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload_time = "2023-03-07T16:47:09.197Z" }, + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, ] [[package]] name = "msgspec" version = "0.21.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e3/60/f79b9b013a16fa3a58350c9295ddc6789f2e335f36ea61ed10a21b215364/msgspec-0.21.1.tar.gz", hash = "sha256:2313508e394b0d208f8f56892ca9b2799e2561329de9763b19619595a6c0f72c", size = 319193, upload_time = "2026-04-12T21:44:50.394Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/38/d591d9f66d43d897ecbd249f2833665823d19c8b043f16619bc8343e23df/msgspec-0.21.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72d9cd03241b8b2edb2e12dcc66c500fa480d8cbd71a8bac105809d468882064", size = 195172, upload_time = "2026-04-12T21:43:45.062Z" }, - { url = "https://files.pythonhosted.org/packages/69/1a/6899188b5982ec1324e0c629b7801eed2db987f6634fab58abd9fc82d317/msgspec-0.21.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed2ab278200e743a1d2610a4e0c8fc74f6cecb8548544cdec43f927bd9265238", size = 188316, upload_time = "2026-04-12T21:43:46.641Z" }, - { url = "https://files.pythonhosted.org/packages/9e/95/7e591b4fa11fdbbf9891164473c23420a8c781ef553295abe416bf335f42/msgspec-0.21.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dd677e3001fdfed9186de72eab434da2976303cd5eb9550921d3d0c3e3e168ce", size = 216565, upload_time = "2026-04-12T21:43:48.081Z" }, - { url = "https://files.pythonhosted.org/packages/19/86/714feeaf3b84cf2027235681725593840153dedd2868578f9f2715e296bb/msgspec-0.21.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f667b90b37fad734a91671abd68e0d7f4d066862771b87e91c53996dcb7a9027", size = 222689, upload_time = "2026-04-12T21:43:49.385Z" }, - { url = "https://files.pythonhosted.org/packages/7d/b9/4384243e814f2579e5205e17d170b9c1a30121afd1393298d904817a7fa7/msgspec-0.21.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:49880fd20fdbcfe1b793f07dd83f12572bab679c9800352c8b2240289aa46a06", size = 222343, upload_time = "2026-04-12T21:43:50.612Z" }, - { url = "https://files.pythonhosted.org/packages/04/01/4b227d9c4057346271043632bad41979cf8c3dca372e41bb1f7d546395b2/msgspec-0.21.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae0162e22849a5e91eaad907766525107523b0daea3df267a9fcb5ba4e0936ae", size = 225607, upload_time = "2026-04-12T21:43:52.129Z" }, - { url = "https://files.pythonhosted.org/packages/c1/ce/27021d1c3e5da837743092a7b7a5e8818397e1f4c05ee8b068bd7d1fd78a/msgspec-0.21.1-cp310-cp310-win_amd64.whl", hash = "sha256:f041a2279f31e3a53319005e4d60ba77c085cfcbe394cdc7ce803c2d01fe9449", size = 188392, upload_time = "2026-04-12T21:43:53.384Z" }, - { url = "https://files.pythonhosted.org/packages/80/2b/daf7a8d6d7cf00e0dcd0439178b284ade701234abdcadf3385601da04fbd/msgspec-0.21.1-cp310-cp310-win_arm64.whl", hash = "sha256:1bf17cbd7b28a5dffc7e764c654eed8ccde5e0f1de7970628608304640d4ce4e", size = 174191, upload_time = "2026-04-12T21:43:54.6Z" }, - { url = "https://files.pythonhosted.org/packages/ba/7f/bbc4e74cd33d316b75541149e4d35b163b63bce066530ae185a2ec3b5bfc/msgspec-0.21.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b504b6e7f7a22a24b27232b73034421692147865162daaec9f3bf62439007c87", size = 193131, upload_time = "2026-04-12T21:43:56.094Z" }, - { url = "https://files.pythonhosted.org/packages/c1/60/504886af1aaf854112663b842d5eea9a15d9588f9bf7d0d2df736424b84d/msgspec-0.21.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4692b7c1609155708c4418f88e92f63c13fdf08aa095c84bae82bad75b53389b", size = 186597, upload_time = "2026-04-12T21:43:57.242Z" }, - { url = "https://files.pythonhosted.org/packages/fa/54/d24ddeaa65b5278c9e67f48ce3c17a9831e8f3722f3c8322ee120aca22ef/msgspec-0.21.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d3124010b3815451494c85ff345e693cb9fe5889cfcbbef39ed8622e0e72319c", size = 215158, upload_time = "2026-04-12T21:43:58.442Z" }, - { url = "https://files.pythonhosted.org/packages/9f/75/bb79c8b89a93ae23cd33c0d802373f16feaf9633f05d8af77091350dda0a/msgspec-0.21.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6badc03b9725352219cca017bfe71c61f2fbd0fb5982b410ac17c97c213deb30", size = 219856, upload_time = "2026-04-12T21:44:00.015Z" }, - { url = "https://files.pythonhosted.org/packages/b4/9c/c5ca26b46f0ebbd3a6683695ef89396712cb9e4199fd1f0bc1dd968216b1/msgspec-0.21.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5d2d4116ebe3035a78d9ec76e99a9d64e5fa6d44fe61a9c5de7fd1acf54bcc69", size = 220314, upload_time = "2026-04-12T21:44:01.548Z" }, - { url = "https://files.pythonhosted.org/packages/c8/31/645a351c4285dce40ed6755c3dcc0aa648e26dacb20a98018fe2cce5e87b/msgspec-0.21.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0d1009f6715f5bff3b54d4ff5c7428ad96197e0534e1645b8e9b955890c84664", size = 223215, upload_time = "2026-04-12T21:44:02.884Z" }, - { url = "https://files.pythonhosted.org/packages/09/af/8bf15736a6dd3cb4f90c5467f6dc39197d2daaf10754490cdc0aa17b7312/msgspec-0.21.1-cp311-cp311-win_amd64.whl", hash = "sha256:c6faffe5bb644ec884052679af4dfd776d4b5ca90e4a7ec7e7e319e4e6b93a6e", size = 188554, upload_time = "2026-04-12T21:44:04.151Z" }, - { url = "https://files.pythonhosted.org/packages/ef/29/cc7db3a165b62d16e64a83f82eccb79655055cb5bc1f60459a6f9d7c82f2/msgspec-0.21.1-cp311-cp311-win_arm64.whl", hash = "sha256:ee9e3f11fa94603f7d673bf795cfa31b549c4a2c723bc39b45beb1e7f5a3fb99", size = 174517, upload_time = "2026-04-12T21:44:05.66Z" }, - { url = "https://files.pythonhosted.org/packages/6e/cf/317224852c00248c620a9bcf4b26e2e4ab8afd752f18d2a6ef73ebd423b6/msgspec-0.21.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d4248cf0b6129b7d230eacd493c17cc2d4f3989f3bb7f633a928a85b7dcfa251", size = 196188, upload_time = "2026-04-12T21:44:07.181Z" }, - { url = "https://files.pythonhosted.org/packages/6d/81/074612945c0666078f7366f40000013de9f6ba687491d450df699bceebc9/msgspec-0.21.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5102c7e9b3acff82178449b85006d96310e690291bb1ea0142f1b24bcb8aabcb", size = 188473, upload_time = "2026-04-12T21:44:08.736Z" }, - { url = "https://files.pythonhosted.org/packages/8a/37/655101799590bcc5fddb2bd3fe0e6194e816c2d1da7c361725f5eb89a910/msgspec-0.21.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:846758412e9518252b2ac9bffd6f0e54d9ff614f5f9488df7749f81ff5c80920", size = 218871, upload_time = "2026-04-12T21:44:09.917Z" }, - { url = "https://files.pythonhosted.org/packages/b5/d1/d4cd9fe89c7d400d7a18f86ccc94daa3f0927f53558846fcb60791dce5d6/msgspec-0.21.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:21995e74b5c598c2e004110ad66ec7f1b8c20bf2bcf3b2de8fd9a3094422d3ff", size = 225025, upload_time = "2026-04-12T21:44:11.191Z" }, - { url = "https://files.pythonhosted.org/packages/24/bf/e20549e602b9edccadeeff98760345a416f9cce846a657e8b18e3396b212/msgspec-0.21.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6129f0cca52992e898fd5344187f7c8127b63d810b2fd73e36fca73b4c6475ee", size = 222672, upload_time = "2026-04-12T21:44:12.481Z" }, - { url = "https://files.pythonhosted.org/packages/b4/68/04d7a8f0f786545cf9b8c280c57aa6befb5977af6e884b8b54191cbe44b3/msgspec-0.21.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ef3ec2296248d1f8b9231acb051b6d471dfde8f21819e86c9adaaa9f42918521", size = 227303, upload_time = "2026-04-12T21:44:13.709Z" }, - { url = "https://files.pythonhosted.org/packages/cc/4d/619866af2840875be408047bf9e70ceafbae6ab50660de7134ed1b25eb86/msgspec-0.21.1-cp312-cp312-win_amd64.whl", hash = "sha256:d4ab834a054c6f0cbeef6df9e7e1b33d5f1bc7b86dea1d2fd7cad003873e783d", size = 190017, upload_time = "2026-04-12T21:44:14.977Z" }, - { url = "https://files.pythonhosted.org/packages/5e/2e/a8f9eca8fd00e097d7a9e99ba8a4685db994494448e3d4f0b7f6e9a3c0f7/msgspec-0.21.1-cp312-cp312-win_arm64.whl", hash = "sha256:628aaa35c74950a8c59da330d7e98917e1c7188f983745782027748ee4ca573e", size = 175345, upload_time = "2026-04-12T21:44:16.431Z" }, - { url = "https://files.pythonhosted.org/packages/7e/74/f11ede02839b19ff459f88e3145df5d711626ca84da4e23520cebf819367/msgspec-0.21.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:764173717a01743f007e9f74520ed281f24672c604514f7d76c1c3a10e8edb66", size = 196176, upload_time = "2026-04-12T21:44:17.613Z" }, - { url = "https://files.pythonhosted.org/packages/bb/40/4476c1bd341418a046c4955aff632ec769315d1e3cb94e6acf86d461f9ed/msgspec-0.21.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:344c7cd0eaed1fb81d7959f99100ef71ec9b536881a376f11b9a6c4803365697", size = 188524, upload_time = "2026-04-12T21:44:18.815Z" }, - { url = "https://files.pythonhosted.org/packages/ca/d9/9e9d7d7e5061b47540d03d640fab9b3965ba7ae49c1b2154861c8f007518/msgspec-0.21.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:48943e278b3854c2f89f955ddc6f9f430d3f0784b16e47d10604ee0463cd21f5", size = 218880, upload_time = "2026-04-12T21:44:20.028Z" }, - { url = "https://files.pythonhosted.org/packages/74/66/2bb344f34abb4b57e60c7c9c761994e0417b9718ec1460bf00c296f2a7ea/msgspec-0.21.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a9aa659ebb0101b1cbc31461212b87e341d961f0ab0772aaf068a99e001ec4aa", size = 225050, upload_time = "2026-04-12T21:44:21.577Z" }, - { url = "https://files.pythonhosted.org/packages/1a/84/7c1e412f76092277bf760cef12b7979d03314d259ab5b5cafde5d0c1722d/msgspec-0.21.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7b27d1a8ead2b6f5b0c4f2d07b8be1ccfcc041c8a0e704781edebe3ae13c484", size = 222713, upload_time = "2026-04-12T21:44:22.83Z" }, - { url = "https://files.pythonhosted.org/packages/4e/27/0bba04b2b4ef05f3d068429410bc71d2cea925f1596a8f41152cccd5edb8/msgspec-0.21.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:38fe93e86b61328fe544cb7fd871fad5a27c8734bfda90f65e5dbe288ae50f61", size = 227259, upload_time = "2026-04-12T21:44:24.11Z" }, - { url = "https://files.pythonhosted.org/packages/b0/2d/09574b0eea02fed2c2c1383dbaae2c7f79dc16dcd6487a886000afb5d7c4/msgspec-0.21.1-cp313-cp313-win_amd64.whl", hash = "sha256:8bc666331c35fcce05a7cd2d6221adbe0f6058f8e750711413d22793c080ac6a", size = 189857, upload_time = "2026-04-12T21:44:25.359Z" }, - { url = "https://files.pythonhosted.org/packages/46/34/105b1576ad182879914f0c821f17ee1d13abb165cb060448f96fe2aff078/msgspec-0.21.1-cp313-cp313-win_arm64.whl", hash = "sha256:42bb1241e0750c1a4346f2aa84db26c5ffd99a4eb3a954927d9f149ff2f42898", size = 175403, upload_time = "2026-04-12T21:44:26.608Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/e3/60/f79b9b013a16fa3a58350c9295ddc6789f2e335f36ea61ed10a21b215364/msgspec-0.21.1.tar.gz", hash = "sha256:2313508e394b0d208f8f56892ca9b2799e2561329de9763b19619595a6c0f72c", size = 319193, upload-time = "2026-04-12T21:44:50.394Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/38/d591d9f66d43d897ecbd249f2833665823d19c8b043f16619bc8343e23df/msgspec-0.21.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72d9cd03241b8b2edb2e12dcc66c500fa480d8cbd71a8bac105809d468882064", size = 195172, upload-time = "2026-04-12T21:43:45.062Z" }, + { url = "https://files.pythonhosted.org/packages/69/1a/6899188b5982ec1324e0c629b7801eed2db987f6634fab58abd9fc82d317/msgspec-0.21.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed2ab278200e743a1d2610a4e0c8fc74f6cecb8548544cdec43f927bd9265238", size = 188316, upload-time = "2026-04-12T21:43:46.641Z" }, + { url = "https://files.pythonhosted.org/packages/9e/95/7e591b4fa11fdbbf9891164473c23420a8c781ef553295abe416bf335f42/msgspec-0.21.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dd677e3001fdfed9186de72eab434da2976303cd5eb9550921d3d0c3e3e168ce", size = 216565, upload-time = "2026-04-12T21:43:48.081Z" }, + { url = "https://files.pythonhosted.org/packages/19/86/714feeaf3b84cf2027235681725593840153dedd2868578f9f2715e296bb/msgspec-0.21.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f667b90b37fad734a91671abd68e0d7f4d066862771b87e91c53996dcb7a9027", size = 222689, upload-time = "2026-04-12T21:43:49.385Z" }, + { url = "https://files.pythonhosted.org/packages/7d/b9/4384243e814f2579e5205e17d170b9c1a30121afd1393298d904817a7fa7/msgspec-0.21.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:49880fd20fdbcfe1b793f07dd83f12572bab679c9800352c8b2240289aa46a06", size = 222343, upload-time = "2026-04-12T21:43:50.612Z" }, + { url = "https://files.pythonhosted.org/packages/04/01/4b227d9c4057346271043632bad41979cf8c3dca372e41bb1f7d546395b2/msgspec-0.21.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae0162e22849a5e91eaad907766525107523b0daea3df267a9fcb5ba4e0936ae", size = 225607, upload-time = "2026-04-12T21:43:52.129Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ce/27021d1c3e5da837743092a7b7a5e8818397e1f4c05ee8b068bd7d1fd78a/msgspec-0.21.1-cp310-cp310-win_amd64.whl", hash = "sha256:f041a2279f31e3a53319005e4d60ba77c085cfcbe394cdc7ce803c2d01fe9449", size = 188392, upload-time = "2026-04-12T21:43:53.384Z" }, + { url = "https://files.pythonhosted.org/packages/80/2b/daf7a8d6d7cf00e0dcd0439178b284ade701234abdcadf3385601da04fbd/msgspec-0.21.1-cp310-cp310-win_arm64.whl", hash = "sha256:1bf17cbd7b28a5dffc7e764c654eed8ccde5e0f1de7970628608304640d4ce4e", size = 174191, upload-time = "2026-04-12T21:43:54.6Z" }, + { url = "https://files.pythonhosted.org/packages/ba/7f/bbc4e74cd33d316b75541149e4d35b163b63bce066530ae185a2ec3b5bfc/msgspec-0.21.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b504b6e7f7a22a24b27232b73034421692147865162daaec9f3bf62439007c87", size = 193131, upload-time = "2026-04-12T21:43:56.094Z" }, + { url = "https://files.pythonhosted.org/packages/c1/60/504886af1aaf854112663b842d5eea9a15d9588f9bf7d0d2df736424b84d/msgspec-0.21.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4692b7c1609155708c4418f88e92f63c13fdf08aa095c84bae82bad75b53389b", size = 186597, upload-time = "2026-04-12T21:43:57.242Z" }, + { url = "https://files.pythonhosted.org/packages/fa/54/d24ddeaa65b5278c9e67f48ce3c17a9831e8f3722f3c8322ee120aca22ef/msgspec-0.21.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d3124010b3815451494c85ff345e693cb9fe5889cfcbbef39ed8622e0e72319c", size = 215158, upload-time = "2026-04-12T21:43:58.442Z" }, + { url = "https://files.pythonhosted.org/packages/9f/75/bb79c8b89a93ae23cd33c0d802373f16feaf9633f05d8af77091350dda0a/msgspec-0.21.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6badc03b9725352219cca017bfe71c61f2fbd0fb5982b410ac17c97c213deb30", size = 219856, upload-time = "2026-04-12T21:44:00.015Z" }, + { url = "https://files.pythonhosted.org/packages/b4/9c/c5ca26b46f0ebbd3a6683695ef89396712cb9e4199fd1f0bc1dd968216b1/msgspec-0.21.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5d2d4116ebe3035a78d9ec76e99a9d64e5fa6d44fe61a9c5de7fd1acf54bcc69", size = 220314, upload-time = "2026-04-12T21:44:01.548Z" }, + { url = "https://files.pythonhosted.org/packages/c8/31/645a351c4285dce40ed6755c3dcc0aa648e26dacb20a98018fe2cce5e87b/msgspec-0.21.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0d1009f6715f5bff3b54d4ff5c7428ad96197e0534e1645b8e9b955890c84664", size = 223215, upload-time = "2026-04-12T21:44:02.884Z" }, + { url = "https://files.pythonhosted.org/packages/09/af/8bf15736a6dd3cb4f90c5467f6dc39197d2daaf10754490cdc0aa17b7312/msgspec-0.21.1-cp311-cp311-win_amd64.whl", hash = "sha256:c6faffe5bb644ec884052679af4dfd776d4b5ca90e4a7ec7e7e319e4e6b93a6e", size = 188554, upload-time = "2026-04-12T21:44:04.151Z" }, + { url = "https://files.pythonhosted.org/packages/ef/29/cc7db3a165b62d16e64a83f82eccb79655055cb5bc1f60459a6f9d7c82f2/msgspec-0.21.1-cp311-cp311-win_arm64.whl", hash = "sha256:ee9e3f11fa94603f7d673bf795cfa31b549c4a2c723bc39b45beb1e7f5a3fb99", size = 174517, upload-time = "2026-04-12T21:44:05.66Z" }, + { url = "https://files.pythonhosted.org/packages/6e/cf/317224852c00248c620a9bcf4b26e2e4ab8afd752f18d2a6ef73ebd423b6/msgspec-0.21.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d4248cf0b6129b7d230eacd493c17cc2d4f3989f3bb7f633a928a85b7dcfa251", size = 196188, upload-time = "2026-04-12T21:44:07.181Z" }, + { url = "https://files.pythonhosted.org/packages/6d/81/074612945c0666078f7366f40000013de9f6ba687491d450df699bceebc9/msgspec-0.21.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5102c7e9b3acff82178449b85006d96310e690291bb1ea0142f1b24bcb8aabcb", size = 188473, upload-time = "2026-04-12T21:44:08.736Z" }, + { url = "https://files.pythonhosted.org/packages/8a/37/655101799590bcc5fddb2bd3fe0e6194e816c2d1da7c361725f5eb89a910/msgspec-0.21.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:846758412e9518252b2ac9bffd6f0e54d9ff614f5f9488df7749f81ff5c80920", size = 218871, upload-time = "2026-04-12T21:44:09.917Z" }, + { url = "https://files.pythonhosted.org/packages/b5/d1/d4cd9fe89c7d400d7a18f86ccc94daa3f0927f53558846fcb60791dce5d6/msgspec-0.21.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:21995e74b5c598c2e004110ad66ec7f1b8c20bf2bcf3b2de8fd9a3094422d3ff", size = 225025, upload-time = "2026-04-12T21:44:11.191Z" }, + { url = "https://files.pythonhosted.org/packages/24/bf/e20549e602b9edccadeeff98760345a416f9cce846a657e8b18e3396b212/msgspec-0.21.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6129f0cca52992e898fd5344187f7c8127b63d810b2fd73e36fca73b4c6475ee", size = 222672, upload-time = "2026-04-12T21:44:12.481Z" }, + { url = "https://files.pythonhosted.org/packages/b4/68/04d7a8f0f786545cf9b8c280c57aa6befb5977af6e884b8b54191cbe44b3/msgspec-0.21.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ef3ec2296248d1f8b9231acb051b6d471dfde8f21819e86c9adaaa9f42918521", size = 227303, upload-time = "2026-04-12T21:44:13.709Z" }, + { url = "https://files.pythonhosted.org/packages/cc/4d/619866af2840875be408047bf9e70ceafbae6ab50660de7134ed1b25eb86/msgspec-0.21.1-cp312-cp312-win_amd64.whl", hash = "sha256:d4ab834a054c6f0cbeef6df9e7e1b33d5f1bc7b86dea1d2fd7cad003873e783d", size = 190017, upload-time = "2026-04-12T21:44:14.977Z" }, + { url = "https://files.pythonhosted.org/packages/5e/2e/a8f9eca8fd00e097d7a9e99ba8a4685db994494448e3d4f0b7f6e9a3c0f7/msgspec-0.21.1-cp312-cp312-win_arm64.whl", hash = "sha256:628aaa35c74950a8c59da330d7e98917e1c7188f983745782027748ee4ca573e", size = 175345, upload-time = "2026-04-12T21:44:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/7e/74/f11ede02839b19ff459f88e3145df5d711626ca84da4e23520cebf819367/msgspec-0.21.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:764173717a01743f007e9f74520ed281f24672c604514f7d76c1c3a10e8edb66", size = 196176, upload-time = "2026-04-12T21:44:17.613Z" }, + { url = "https://files.pythonhosted.org/packages/bb/40/4476c1bd341418a046c4955aff632ec769315d1e3cb94e6acf86d461f9ed/msgspec-0.21.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:344c7cd0eaed1fb81d7959f99100ef71ec9b536881a376f11b9a6c4803365697", size = 188524, upload-time = "2026-04-12T21:44:18.815Z" }, + { url = "https://files.pythonhosted.org/packages/ca/d9/9e9d7d7e5061b47540d03d640fab9b3965ba7ae49c1b2154861c8f007518/msgspec-0.21.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:48943e278b3854c2f89f955ddc6f9f430d3f0784b16e47d10604ee0463cd21f5", size = 218880, upload-time = "2026-04-12T21:44:20.028Z" }, + { url = "https://files.pythonhosted.org/packages/74/66/2bb344f34abb4b57e60c7c9c761994e0417b9718ec1460bf00c296f2a7ea/msgspec-0.21.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a9aa659ebb0101b1cbc31461212b87e341d961f0ab0772aaf068a99e001ec4aa", size = 225050, upload-time = "2026-04-12T21:44:21.577Z" }, + { url = "https://files.pythonhosted.org/packages/1a/84/7c1e412f76092277bf760cef12b7979d03314d259ab5b5cafde5d0c1722d/msgspec-0.21.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7b27d1a8ead2b6f5b0c4f2d07b8be1ccfcc041c8a0e704781edebe3ae13c484", size = 222713, upload-time = "2026-04-12T21:44:22.83Z" }, + { url = "https://files.pythonhosted.org/packages/4e/27/0bba04b2b4ef05f3d068429410bc71d2cea925f1596a8f41152cccd5edb8/msgspec-0.21.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:38fe93e86b61328fe544cb7fd871fad5a27c8734bfda90f65e5dbe288ae50f61", size = 227259, upload-time = "2026-04-12T21:44:24.11Z" }, + { url = "https://files.pythonhosted.org/packages/b0/2d/09574b0eea02fed2c2c1383dbaae2c7f79dc16dcd6487a886000afb5d7c4/msgspec-0.21.1-cp313-cp313-win_amd64.whl", hash = "sha256:8bc666331c35fcce05a7cd2d6221adbe0f6058f8e750711413d22793c080ac6a", size = 189857, upload-time = "2026-04-12T21:44:25.359Z" }, + { url = "https://files.pythonhosted.org/packages/46/34/105b1576ad182879914f0c821f17ee1d13abb165cb060448f96fe2aff078/msgspec-0.21.1-cp313-cp313-win_arm64.whl", hash = "sha256:42bb1241e0750c1a4346f2aa84db26c5ffd99a4eb3a954927d9f149ff2f42898", size = 175403, upload-time = "2026-04-12T21:44:26.608Z" }, ] [[package]] @@ -2175,147 +2225,147 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1a/c2/c2d94cbe6ac1753f3fc980da97b3d930efe1da3af3c9f5125354436c073d/multidict-6.7.1.tar.gz", hash = "sha256:ec6652a1bee61c53a3e5776b6049172c53b6aaba34f18c9ad04f82712bac623d", size = 102010, upload_time = "2026-01-26T02:46:45.979Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/84/0b/19348d4c98980c4851d2f943f8ebafdece2ae7ef737adcfa5994ce8e5f10/multidict-6.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c93c3db7ea657dd4637d57e74ab73de31bccefe144d3d4ce370052035bc85fb5", size = 77176, upload_time = "2026-01-26T02:42:59.784Z" }, - { url = "https://files.pythonhosted.org/packages/ef/04/9de3f8077852e3d438215c81e9b691244532d2e05b4270e89ce67b7d103c/multidict-6.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:974e72a2474600827abaeda71af0c53d9ebbc3c2eb7da37b37d7829ae31232d8", size = 44996, upload_time = "2026-01-26T02:43:01.674Z" }, - { url = "https://files.pythonhosted.org/packages/31/5c/08c7f7fe311f32e83f7621cd3f99d805f45519cd06fafb247628b861da7d/multidict-6.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cdea2e7b2456cfb6694fb113066fd0ec7ea4d67e3a35e1f4cbeea0b448bf5872", size = 44631, upload_time = "2026-01-26T02:43:03.169Z" }, - { url = "https://files.pythonhosted.org/packages/b7/7f/0e3b1390ae772f27501199996b94b52ceeb64fe6f9120a32c6c3f6b781be/multidict-6.7.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:17207077e29342fdc2c9a82e4b306f1127bf1ea91f8b71e02d4798a70bb99991", size = 242561, upload_time = "2026-01-26T02:43:04.733Z" }, - { url = "https://files.pythonhosted.org/packages/dd/f4/8719f4f167586af317b69dd3e90f913416c91ca610cac79a45c53f590312/multidict-6.7.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4f49cb5661344764e4c7c7973e92a47a59b8fc19b6523649ec9dc4960e58a03", size = 242223, upload_time = "2026-01-26T02:43:06.695Z" }, - { url = "https://files.pythonhosted.org/packages/47/ab/7c36164cce64a6ad19c6d9a85377b7178ecf3b89f8fd589c73381a5eedfd/multidict-6.7.1-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a9fc4caa29e2e6ae408d1c450ac8bf19892c5fca83ee634ecd88a53332c59981", size = 222322, upload_time = "2026-01-26T02:43:08.472Z" }, - { url = "https://files.pythonhosted.org/packages/f5/79/a25add6fb38035b5337bc5734f296d9afc99163403bbcf56d4170f97eb62/multidict-6.7.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c5f0c21549ab432b57dcc82130f388d84ad8179824cc3f223d5e7cfbfd4143f6", size = 254005, upload_time = "2026-01-26T02:43:10.127Z" }, - { url = "https://files.pythonhosted.org/packages/4a/7b/64a87cf98e12f756fc8bd444b001232ffff2be37288f018ad0d3f0aae931/multidict-6.7.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7dfb78d966b2c906ae1d28ccf6e6712a3cd04407ee5088cd276fe8cb42186190", size = 251173, upload_time = "2026-01-26T02:43:11.731Z" }, - { url = "https://files.pythonhosted.org/packages/4b/ac/b605473de2bb404e742f2cc3583d12aedb2352a70e49ae8fce455b50c5aa/multidict-6.7.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9b0d9b91d1aa44db9c1f1ecd0d9d2ae610b2f4f856448664e01a3b35899f3f92", size = 243273, upload_time = "2026-01-26T02:43:13.063Z" }, - { url = "https://files.pythonhosted.org/packages/03/65/11492d6a0e259783720f3bc1d9ea55579a76f1407e31ed44045c99542004/multidict-6.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:dd96c01a9dcd4889dcfcf9eb5544ca0c77603f239e3ffab0524ec17aea9a93ee", size = 238956, upload_time = "2026-01-26T02:43:14.843Z" }, - { url = "https://files.pythonhosted.org/packages/5f/a7/7ee591302af64e7c196fb63fe856c788993c1372df765102bd0448e7e165/multidict-6.7.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:067343c68cd6612d375710f895337b3a98a033c94f14b9a99eff902f205424e2", size = 233477, upload_time = "2026-01-26T02:43:16.025Z" }, - { url = "https://files.pythonhosted.org/packages/9c/99/c109962d58756c35fd9992fed7f2355303846ea2ff054bb5f5e9d6b888de/multidict-6.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5884a04f4ff56c6120f6ccf703bdeb8b5079d808ba604d4d53aec0d55dc33568", size = 243615, upload_time = "2026-01-26T02:43:17.84Z" }, - { url = "https://files.pythonhosted.org/packages/d5/5f/1973e7c771c86e93dcfe1c9cc55a5481b610f6614acfc28c0d326fe6bfad/multidict-6.7.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8affcf1c98b82bc901702eb73b6947a1bfa170823c153fe8a47b5f5f02e48e40", size = 249930, upload_time = "2026-01-26T02:43:19.06Z" }, - { url = "https://files.pythonhosted.org/packages/5d/a5/f170fc2268c3243853580203378cd522446b2df632061e0a5409817854c7/multidict-6.7.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0d17522c37d03e85c8098ec8431636309b2682cf12e58f4dbc76121fb50e4962", size = 243807, upload_time = "2026-01-26T02:43:20.286Z" }, - { url = "https://files.pythonhosted.org/packages/de/01/73856fab6d125e5bc652c3986b90e8699a95e84b48d72f39ade6c0e74a8c/multidict-6.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24c0cf81544ca5e17cfcb6e482e7a82cd475925242b308b890c9452a074d4505", size = 239103, upload_time = "2026-01-26T02:43:21.508Z" }, - { url = "https://files.pythonhosted.org/packages/e7/46/f1220bd9944d8aa40d8ccff100eeeee19b505b857b6f603d6078cb5315b0/multidict-6.7.1-cp310-cp310-win32.whl", hash = "sha256:d82dd730a95e6643802f4454b8fdecdf08667881a9c5670db85bc5a56693f122", size = 41416, upload_time = "2026-01-26T02:43:22.703Z" }, - { url = "https://files.pythonhosted.org/packages/68/00/9b38e272a770303692fc406c36e1a4c740f401522d5787691eb38a8925a8/multidict-6.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:cf37cbe5ced48d417ba045aca1b21bafca67489452debcde94778a576666a1df", size = 46022, upload_time = "2026-01-26T02:43:23.77Z" }, - { url = "https://files.pythonhosted.org/packages/64/65/d8d42490c02ee07b6bbe00f7190d70bb4738b3cce7629aaf9f213ef730dd/multidict-6.7.1-cp310-cp310-win_arm64.whl", hash = "sha256:59bc83d3f66b41dac1e7460aac1d196edc70c9ba3094965c467715a70ecb46db", size = 43238, upload_time = "2026-01-26T02:43:24.882Z" }, - { url = "https://files.pythonhosted.org/packages/ce/f1/a90635c4f88fb913fbf4ce660b83b7445b7a02615bda034b2f8eb38fd597/multidict-6.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7ff981b266af91d7b4b3793ca3382e53229088d193a85dfad6f5f4c27fc73e5d", size = 76626, upload_time = "2026-01-26T02:43:26.485Z" }, - { url = "https://files.pythonhosted.org/packages/a6/9b/267e64eaf6fc637a15b35f5de31a566634a2740f97d8d094a69d34f524a4/multidict-6.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:844c5bca0b5444adb44a623fb0a1310c2f4cd41f402126bb269cd44c9b3f3e1e", size = 44706, upload_time = "2026-01-26T02:43:27.607Z" }, - { url = "https://files.pythonhosted.org/packages/dd/a4/d45caf2b97b035c57267791ecfaafbd59c68212004b3842830954bb4b02e/multidict-6.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f2a0a924d4c2e9afcd7ec64f9de35fcd96915149b2216e1cb2c10a56df483855", size = 44356, upload_time = "2026-01-26T02:43:28.661Z" }, - { url = "https://files.pythonhosted.org/packages/fd/d2/0a36c8473f0cbaeadd5db6c8b72d15bbceeec275807772bfcd059bef487d/multidict-6.7.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8be1802715a8e892c784c0197c2ace276ea52702a0ede98b6310c8f255a5afb3", size = 244355, upload_time = "2026-01-26T02:43:31.165Z" }, - { url = "https://files.pythonhosted.org/packages/5d/16/8c65be997fd7dd311b7d39c7b6e71a0cb449bad093761481eccbbe4b42a2/multidict-6.7.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2e2d2ed645ea29f31c4c7ea1552fcfd7cb7ba656e1eafd4134a6620c9f5fdd9e", size = 246433, upload_time = "2026-01-26T02:43:32.581Z" }, - { url = "https://files.pythonhosted.org/packages/01/fb/4dbd7e848d2799c6a026ec88ad39cf2b8416aa167fcc903baa55ecaa045c/multidict-6.7.1-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:95922cee9a778659e91db6497596435777bd25ed116701a4c034f8e46544955a", size = 225376, upload_time = "2026-01-26T02:43:34.417Z" }, - { url = "https://files.pythonhosted.org/packages/b6/8a/4a3a6341eac3830f6053062f8fbc9a9e54407c80755b3f05bc427295c2d0/multidict-6.7.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6b83cabdc375ffaaa15edd97eb7c0c672ad788e2687004990074d7d6c9b140c8", size = 257365, upload_time = "2026-01-26T02:43:35.741Z" }, - { url = "https://files.pythonhosted.org/packages/f7/a2/dd575a69c1aa206e12d27d0770cdf9b92434b48a9ef0cd0d1afdecaa93c4/multidict-6.7.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:38fb49540705369bab8484db0689d86c0a33a0a9f2c1b197f506b71b4b6c19b0", size = 254747, upload_time = "2026-01-26T02:43:36.976Z" }, - { url = "https://files.pythonhosted.org/packages/5a/56/21b27c560c13822ed93133f08aa6372c53a8e067f11fbed37b4adcdac922/multidict-6.7.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:439cbebd499f92e9aa6793016a8acaa161dfa749ae86d20960189f5398a19144", size = 246293, upload_time = "2026-01-26T02:43:38.258Z" }, - { url = "https://files.pythonhosted.org/packages/5a/a4/23466059dc3854763423d0ad6c0f3683a379d97673b1b89ec33826e46728/multidict-6.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6d3bc717b6fe763b8be3f2bee2701d3c8eb1b2a8ae9f60910f1b2860c82b6c49", size = 242962, upload_time = "2026-01-26T02:43:40.034Z" }, - { url = "https://files.pythonhosted.org/packages/1f/67/51dd754a3524d685958001e8fa20a0f5f90a6a856e0a9dcabff69be3dbb7/multidict-6.7.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:619e5a1ac57986dbfec9f0b301d865dddf763696435e2962f6d9cf2fdff2bb71", size = 237360, upload_time = "2026-01-26T02:43:41.752Z" }, - { url = "https://files.pythonhosted.org/packages/64/3f/036dfc8c174934d4b55d86ff4f978e558b0e585cef70cfc1ad01adc6bf18/multidict-6.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0b38ebffd9be37c1170d33bc0f36f4f262e0a09bc1aac1c34c7aa51a7293f0b3", size = 245940, upload_time = "2026-01-26T02:43:43.042Z" }, - { url = "https://files.pythonhosted.org/packages/3d/20/6214d3c105928ebc353a1c644a6ef1408bc5794fcb4f170bb524a3c16311/multidict-6.7.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:10ae39c9cfe6adedcdb764f5e8411d4a92b055e35573a2eaa88d3323289ef93c", size = 253502, upload_time = "2026-01-26T02:43:44.371Z" }, - { url = "https://files.pythonhosted.org/packages/b1/e2/c653bc4ae1be70a0f836b82172d643fcf1dade042ba2676ab08ec08bff0f/multidict-6.7.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:25167cc263257660290fba06b9318d2026e3c910be240a146e1f66dd114af2b0", size = 247065, upload_time = "2026-01-26T02:43:45.745Z" }, - { url = "https://files.pythonhosted.org/packages/c8/11/a854b4154cd3bd8b1fd375e8a8ca9d73be37610c361543d56f764109509b/multidict-6.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:128441d052254f42989ef98b7b6a6ecb1e6f708aa962c7984235316db59f50fa", size = 241870, upload_time = "2026-01-26T02:43:47.054Z" }, - { url = "https://files.pythonhosted.org/packages/13/bf/9676c0392309b5fdae322333d22a829715b570edb9baa8016a517b55b558/multidict-6.7.1-cp311-cp311-win32.whl", hash = "sha256:d62b7f64ffde3b99d06b707a280db04fb3855b55f5a06df387236051d0668f4a", size = 41302, upload_time = "2026-01-26T02:43:48.753Z" }, - { url = "https://files.pythonhosted.org/packages/c9/68/f16a3a8ba6f7b6dc92a1f19669c0810bd2c43fc5a02da13b1cbf8e253845/multidict-6.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:bdbf9f3b332abd0cdb306e7c2113818ab1e922dc84b8f8fd06ec89ed2a19ab8b", size = 45981, upload_time = "2026-01-26T02:43:49.921Z" }, - { url = "https://files.pythonhosted.org/packages/ac/ad/9dd5305253fa00cd3c7555dbef69d5bf4133debc53b87ab8d6a44d411665/multidict-6.7.1-cp311-cp311-win_arm64.whl", hash = "sha256:b8c990b037d2fff2f4e33d3f21b9b531c5745b33a49a7d6dbe7a177266af44f6", size = 43159, upload_time = "2026-01-26T02:43:51.635Z" }, - { url = "https://files.pythonhosted.org/packages/8d/9c/f20e0e2cf80e4b2e4b1c365bf5fe104ee633c751a724246262db8f1a0b13/multidict-6.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a90f75c956e32891a4eda3639ce6dd86e87105271f43d43442a3aedf3cddf172", size = 76893, upload_time = "2026-01-26T02:43:52.754Z" }, - { url = "https://files.pythonhosted.org/packages/fe/cf/18ef143a81610136d3da8193da9d80bfe1cb548a1e2d1c775f26b23d024a/multidict-6.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fccb473e87eaa1382689053e4a4618e7ba7b9b9b8d6adf2027ee474597128cd", size = 45456, upload_time = "2026-01-26T02:43:53.893Z" }, - { url = "https://files.pythonhosted.org/packages/a9/65/1caac9d4cd32e8433908683446eebc953e82d22b03d10d41a5f0fefe991b/multidict-6.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b0fa96985700739c4c7853a43c0b3e169360d6855780021bfc6d0f1ce7c123e7", size = 43872, upload_time = "2026-01-26T02:43:55.041Z" }, - { url = "https://files.pythonhosted.org/packages/cf/3b/d6bd75dc4f3ff7c73766e04e705b00ed6dbbaccf670d9e05a12b006f5a21/multidict-6.7.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cb2a55f408c3043e42b40cc8eecd575afa27b7e0b956dfb190de0f8499a57a53", size = 251018, upload_time = "2026-01-26T02:43:56.198Z" }, - { url = "https://files.pythonhosted.org/packages/fd/80/c959c5933adedb9ac15152e4067c702a808ea183a8b64cf8f31af8ad3155/multidict-6.7.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb0ce7b2a32d09892b3dd6cc44877a0d02a33241fafca5f25c8b6b62374f8b75", size = 258883, upload_time = "2026-01-26T02:43:57.499Z" }, - { url = "https://files.pythonhosted.org/packages/86/85/7ed40adafea3d4f1c8b916e3b5cc3a8e07dfcdcb9cd72800f4ed3ca1b387/multidict-6.7.1-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c3a32d23520ee37bf327d1e1a656fec76a2edd5c038bf43eddfa0572ec49c60b", size = 242413, upload_time = "2026-01-26T02:43:58.755Z" }, - { url = "https://files.pythonhosted.org/packages/d2/57/b8565ff533e48595503c785f8361ff9a4fde4d67de25c207cd0ba3befd03/multidict-6.7.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9c90fed18bffc0189ba814749fdcc102b536e83a9f738a9003e569acd540a733", size = 268404, upload_time = "2026-01-26T02:44:00.216Z" }, - { url = "https://files.pythonhosted.org/packages/e0/50/9810c5c29350f7258180dfdcb2e52783a0632862eb334c4896ac717cebcb/multidict-6.7.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:da62917e6076f512daccfbbde27f46fed1c98fee202f0559adec8ee0de67f71a", size = 269456, upload_time = "2026-01-26T02:44:02.202Z" }, - { url = "https://files.pythonhosted.org/packages/f3/8d/5e5be3ced1d12966fefb5c4ea3b2a5b480afcea36406559442c6e31d4a48/multidict-6.7.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bfde23ef6ed9db7eaee6c37dcec08524cb43903c60b285b172b6c094711b3961", size = 256322, upload_time = "2026-01-26T02:44:03.56Z" }, - { url = "https://files.pythonhosted.org/packages/31/6e/d8a26d81ac166a5592782d208dd90dfdc0a7a218adaa52b45a672b46c122/multidict-6.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3758692429e4e32f1ba0df23219cd0b4fc0a52f476726fff9337d1a57676a582", size = 253955, upload_time = "2026-01-26T02:44:04.845Z" }, - { url = "https://files.pythonhosted.org/packages/59/4c/7c672c8aad41534ba619bcd4ade7a0dc87ed6b8b5c06149b85d3dd03f0cd/multidict-6.7.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:398c1478926eca669f2fd6a5856b6de9c0acf23a2cb59a14c0ba5844fa38077e", size = 251254, upload_time = "2026-01-26T02:44:06.133Z" }, - { url = "https://files.pythonhosted.org/packages/7b/bd/84c24de512cbafbdbc39439f74e967f19570ce7924e3007174a29c348916/multidict-6.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c102791b1c4f3ab36ce4101154549105a53dc828f016356b3e3bcae2e3a039d3", size = 252059, upload_time = "2026-01-26T02:44:07.518Z" }, - { url = "https://files.pythonhosted.org/packages/fa/ba/f5449385510825b73d01c2d4087bf6d2fccc20a2d42ac34df93191d3dd03/multidict-6.7.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a088b62bd733e2ad12c50dad01b7d0166c30287c166e137433d3b410add807a6", size = 263588, upload_time = "2026-01-26T02:44:09.382Z" }, - { url = "https://files.pythonhosted.org/packages/d7/11/afc7c677f68f75c84a69fe37184f0f82fce13ce4b92f49f3db280b7e92b3/multidict-6.7.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3d51ff4785d58d3f6c91bdbffcb5e1f7ddfda557727043aa20d20ec4f65e324a", size = 259642, upload_time = "2026-01-26T02:44:10.73Z" }, - { url = "https://files.pythonhosted.org/packages/2b/17/ebb9644da78c4ab36403739e0e6e0e30ebb135b9caf3440825001a0bddcb/multidict-6.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fc5907494fccf3e7d3f94f95c91d6336b092b5fc83811720fae5e2765890dfba", size = 251377, upload_time = "2026-01-26T02:44:12.042Z" }, - { url = "https://files.pythonhosted.org/packages/ca/a4/840f5b97339e27846c46307f2530a2805d9d537d8b8bd416af031cad7fa0/multidict-6.7.1-cp312-cp312-win32.whl", hash = "sha256:28ca5ce2fd9716631133d0e9a9b9a745ad7f60bac2bccafb56aa380fc0b6c511", size = 41887, upload_time = "2026-01-26T02:44:14.245Z" }, - { url = "https://files.pythonhosted.org/packages/80/31/0b2517913687895f5904325c2069d6a3b78f66cc641a86a2baf75a05dcbb/multidict-6.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcee94dfbd638784645b066074b338bc9cc155d4b4bffa4adce1615c5a426c19", size = 46053, upload_time = "2026-01-26T02:44:15.371Z" }, - { url = "https://files.pythonhosted.org/packages/0c/5b/aba28e4ee4006ae4c7df8d327d31025d760ffa992ea23812a601d226e682/multidict-6.7.1-cp312-cp312-win_arm64.whl", hash = "sha256:ba0a9fb644d0c1a2194cf7ffb043bd852cea63a57f66fbd33959f7dae18517bf", size = 43307, upload_time = "2026-01-26T02:44:16.852Z" }, - { url = "https://files.pythonhosted.org/packages/f2/22/929c141d6c0dba87d3e1d38fbdf1ba8baba86b7776469f2bc2d3227a1e67/multidict-6.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2b41f5fed0ed563624f1c17630cb9941cf2309d4df00e494b551b5f3e3d67a23", size = 76174, upload_time = "2026-01-26T02:44:18.509Z" }, - { url = "https://files.pythonhosted.org/packages/c7/75/bc704ae15fee974f8fccd871305e254754167dce5f9e42d88a2def741a1d/multidict-6.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84e61e3af5463c19b67ced91f6c634effb89ef8bfc5ca0267f954451ed4bb6a2", size = 45116, upload_time = "2026-01-26T02:44:19.745Z" }, - { url = "https://files.pythonhosted.org/packages/79/76/55cd7186f498ed080a18440c9013011eb548f77ae1b297206d030eb1180a/multidict-6.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:935434b9853c7c112eee7ac891bc4cb86455aa631269ae35442cb316790c1445", size = 43524, upload_time = "2026-01-26T02:44:21.571Z" }, - { url = "https://files.pythonhosted.org/packages/e9/3c/414842ef8d5a1628d68edee29ba0e5bcf235dbfb3ccd3ea303a7fe8c72ff/multidict-6.7.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:432feb25a1cb67fe82a9680b4d65fb542e4635cb3166cd9c01560651ad60f177", size = 249368, upload_time = "2026-01-26T02:44:22.803Z" }, - { url = "https://files.pythonhosted.org/packages/f6/32/befed7f74c458b4a525e60519fe8d87eef72bb1e99924fa2b0f9d97a221e/multidict-6.7.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e82d14e3c948952a1a85503817e038cba5905a3352de76b9a465075d072fba23", size = 256952, upload_time = "2026-01-26T02:44:24.306Z" }, - { url = "https://files.pythonhosted.org/packages/03/d6/c878a44ba877f366630c860fdf74bfb203c33778f12b6ac274936853c451/multidict-6.7.1-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4cfb48c6ea66c83bcaaf7e4dfa7ec1b6bbcf751b7db85a328902796dfde4c060", size = 240317, upload_time = "2026-01-26T02:44:25.772Z" }, - { url = "https://files.pythonhosted.org/packages/68/49/57421b4d7ad2e9e60e25922b08ceb37e077b90444bde6ead629095327a6f/multidict-6.7.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1d540e51b7e8e170174555edecddbd5538105443754539193e3e1061864d444d", size = 267132, upload_time = "2026-01-26T02:44:27.648Z" }, - { url = "https://files.pythonhosted.org/packages/b7/fe/ec0edd52ddbcea2a2e89e174f0206444a61440b40f39704e64dc807a70bd/multidict-6.7.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:273d23f4b40f3dce4d6c8a821c741a86dec62cded82e1175ba3d99be128147ed", size = 268140, upload_time = "2026-01-26T02:44:29.588Z" }, - { url = "https://files.pythonhosted.org/packages/b0/73/6e1b01cbeb458807aa0831742232dbdd1fa92bfa33f52a3f176b4ff3dc11/multidict-6.7.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d624335fd4fa1c08a53f8b4be7676ebde19cd092b3895c421045ca87895b429", size = 254277, upload_time = "2026-01-26T02:44:30.902Z" }, - { url = "https://files.pythonhosted.org/packages/6a/b2/5fb8c124d7561a4974c342bc8c778b471ebbeb3cc17df696f034a7e9afe7/multidict-6.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:12fad252f8b267cc75b66e8fc51b3079604e8d43a75428ffe193cd9e2195dfd6", size = 252291, upload_time = "2026-01-26T02:44:32.31Z" }, - { url = "https://files.pythonhosted.org/packages/5a/96/51d4e4e06bcce92577fcd488e22600bd38e4fd59c20cb49434d054903bd2/multidict-6.7.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:03ede2a6ffbe8ef936b92cb4529f27f42be7f56afcdab5ab739cd5f27fb1cbf9", size = 250156, upload_time = "2026-01-26T02:44:33.734Z" }, - { url = "https://files.pythonhosted.org/packages/db/6b/420e173eec5fba721a50e2a9f89eda89d9c98fded1124f8d5c675f7a0c0f/multidict-6.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:90efbcf47dbe33dcf643a1e400d67d59abeac5db07dc3f27d6bdeae497a2198c", size = 249742, upload_time = "2026-01-26T02:44:35.222Z" }, - { url = "https://files.pythonhosted.org/packages/44/a3/ec5b5bd98f306bc2aa297b8c6f11a46714a56b1e6ef5ebda50a4f5d7c5fb/multidict-6.7.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:5c4b9bfc148f5a91be9244d6264c53035c8a0dcd2f51f1c3c6e30e30ebaa1c84", size = 262221, upload_time = "2026-01-26T02:44:36.604Z" }, - { url = "https://files.pythonhosted.org/packages/cd/f7/e8c0d0da0cd1e28d10e624604e1a36bcc3353aaebdfdc3a43c72bc683a12/multidict-6.7.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:401c5a650f3add2472d1d288c26deebc540f99e2fb83e9525007a74cd2116f1d", size = 258664, upload_time = "2026-01-26T02:44:38.008Z" }, - { url = "https://files.pythonhosted.org/packages/52/da/151a44e8016dd33feed44f730bd856a66257c1ee7aed4f44b649fb7edeb3/multidict-6.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:97891f3b1b3ffbded884e2916cacf3c6fc87b66bb0dde46f7357404750559f33", size = 249490, upload_time = "2026-01-26T02:44:39.386Z" }, - { url = "https://files.pythonhosted.org/packages/87/af/a3b86bf9630b732897f6fc3f4c4714b90aa4361983ccbdcd6c0339b21b0c/multidict-6.7.1-cp313-cp313-win32.whl", hash = "sha256:e1c5988359516095535c4301af38d8a8838534158f649c05dd1050222321bcb3", size = 41695, upload_time = "2026-01-26T02:44:41.318Z" }, - { url = "https://files.pythonhosted.org/packages/b2/35/e994121b0e90e46134673422dd564623f93304614f5d11886b1b3e06f503/multidict-6.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:960c83bf01a95b12b08fd54324a4eb1d5b52c88932b5cba5d6e712bb3ed12eb5", size = 45884, upload_time = "2026-01-26T02:44:42.488Z" }, - { url = "https://files.pythonhosted.org/packages/ca/61/42d3e5dbf661242a69c97ea363f2d7b46c567da8eadef8890022be6e2ab0/multidict-6.7.1-cp313-cp313-win_arm64.whl", hash = "sha256:563fe25c678aaba333d5399408f5ec3c383ca5b663e7f774dd179a520b8144df", size = 43122, upload_time = "2026-01-26T02:44:43.664Z" }, - { url = "https://files.pythonhosted.org/packages/6d/b3/e6b21c6c4f314bb956016b0b3ef2162590a529b84cb831c257519e7fde44/multidict-6.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:c76c4bec1538375dad9d452d246ca5368ad6e1c9039dadcf007ae59c70619ea1", size = 83175, upload_time = "2026-01-26T02:44:44.894Z" }, - { url = "https://files.pythonhosted.org/packages/fb/76/23ecd2abfe0957b234f6c960f4ade497f55f2c16aeb684d4ecdbf1c95791/multidict-6.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:57b46b24b5d5ebcc978da4ec23a819a9402b4228b8a90d9c656422b4bdd8a963", size = 48460, upload_time = "2026-01-26T02:44:46.106Z" }, - { url = "https://files.pythonhosted.org/packages/c4/57/a0ed92b23f3a042c36bc4227b72b97eca803f5f1801c1ab77c8a212d455e/multidict-6.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e954b24433c768ce78ab7929e84ccf3422e46deb45a4dc9f93438f8217fa2d34", size = 46930, upload_time = "2026-01-26T02:44:47.278Z" }, - { url = "https://files.pythonhosted.org/packages/b5/66/02ec7ace29162e447f6382c495dc95826bf931d3818799bbef11e8f7df1a/multidict-6.7.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3bd231490fa7217cc832528e1cd8752a96f0125ddd2b5749390f7c3ec8721b65", size = 242582, upload_time = "2026-01-26T02:44:48.604Z" }, - { url = "https://files.pythonhosted.org/packages/58/18/64f5a795e7677670e872673aca234162514696274597b3708b2c0d276cce/multidict-6.7.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:253282d70d67885a15c8a7716f3a73edf2d635793ceda8173b9ecc21f2fb8292", size = 250031, upload_time = "2026-01-26T02:44:50.544Z" }, - { url = "https://files.pythonhosted.org/packages/c8/ed/e192291dbbe51a8290c5686f482084d31bcd9d09af24f63358c3d42fd284/multidict-6.7.1-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0b4c48648d7649c9335cf1927a8b87fa692de3dcb15faa676c6a6f1f1aabda43", size = 228596, upload_time = "2026-01-26T02:44:51.951Z" }, - { url = "https://files.pythonhosted.org/packages/1e/7e/3562a15a60cf747397e7f2180b0a11dc0c38d9175a650e75fa1b4d325e15/multidict-6.7.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:98bc624954ec4d2c7cb074b8eefc2b5d0ce7d482e410df446414355d158fe4ca", size = 257492, upload_time = "2026-01-26T02:44:53.902Z" }, - { url = "https://files.pythonhosted.org/packages/24/02/7d0f9eae92b5249bb50ac1595b295f10e263dd0078ebb55115c31e0eaccd/multidict-6.7.1-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1b99af4d9eec0b49927b4402bcbb58dea89d3e0db8806a4086117019939ad3dd", size = 255899, upload_time = "2026-01-26T02:44:55.316Z" }, - { url = "https://files.pythonhosted.org/packages/00/e3/9b60ed9e23e64c73a5cde95269ef1330678e9c6e34dd4eb6b431b85b5a10/multidict-6.7.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6aac4f16b472d5b7dc6f66a0d49dd57b0e0902090be16594dc9ebfd3d17c47e7", size = 247970, upload_time = "2026-01-26T02:44:56.783Z" }, - { url = "https://files.pythonhosted.org/packages/3e/06/538e58a63ed5cfb0bd4517e346b91da32fde409d839720f664e9a4ae4f9d/multidict-6.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:21f830fe223215dffd51f538e78c172ed7c7f60c9b96a2bf05c4848ad49921c3", size = 245060, upload_time = "2026-01-26T02:44:58.195Z" }, - { url = "https://files.pythonhosted.org/packages/b2/2f/d743a3045a97c895d401e9bd29aaa09b94f5cbdf1bd561609e5a6c431c70/multidict-6.7.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:f5dd81c45b05518b9aa4da4aa74e1c93d715efa234fd3e8a179df611cc85e5f4", size = 235888, upload_time = "2026-01-26T02:44:59.57Z" }, - { url = "https://files.pythonhosted.org/packages/38/83/5a325cac191ab28b63c52f14f1131f3b0a55ba3b9aa65a6d0bf2a9b921a0/multidict-6.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:eb304767bca2bb92fb9c5bd33cedc95baee5bb5f6c88e63706533a1c06ad08c8", size = 243554, upload_time = "2026-01-26T02:45:01.054Z" }, - { url = "https://files.pythonhosted.org/packages/20/1f/9d2327086bd15da2725ef6aae624208e2ef828ed99892b17f60c344e57ed/multidict-6.7.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:c9035dde0f916702850ef66460bc4239d89d08df4d02023a5926e7446724212c", size = 252341, upload_time = "2026-01-26T02:45:02.484Z" }, - { url = "https://files.pythonhosted.org/packages/e8/2c/2a1aa0280cf579d0f6eed8ee5211c4f1730bd7e06c636ba2ee6aafda302e/multidict-6.7.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:af959b9beeb66c822380f222f0e0a1889331597e81f1ded7f374f3ecb0fd6c52", size = 246391, upload_time = "2026-01-26T02:45:03.862Z" }, - { url = "https://files.pythonhosted.org/packages/e5/03/7ca022ffc36c5a3f6e03b179a5ceb829be9da5783e6fe395f347c0794680/multidict-6.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:41f2952231456154ee479651491e94118229844dd7226541788be783be2b5108", size = 243422, upload_time = "2026-01-26T02:45:05.296Z" }, - { url = "https://files.pythonhosted.org/packages/dc/1d/b31650eab6c5778aceed46ba735bd97f7c7d2f54b319fa916c0f96e7805b/multidict-6.7.1-cp313-cp313t-win32.whl", hash = "sha256:df9f19c28adcb40b6aae30bbaa1478c389efd50c28d541d76760199fc1037c32", size = 47770, upload_time = "2026-01-26T02:45:06.754Z" }, - { url = "https://files.pythonhosted.org/packages/ac/5b/2d2d1d522e51285bd61b1e20df8f47ae1a9d80839db0b24ea783b3832832/multidict-6.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:d54ecf9f301853f2c5e802da559604b3e95bb7a3b01a9c295c6ee591b9882de8", size = 53109, upload_time = "2026-01-26T02:45:08.044Z" }, - { url = "https://files.pythonhosted.org/packages/3d/a3/cc409ba012c83ca024a308516703cf339bdc4b696195644a7215a5164a24/multidict-6.7.1-cp313-cp313t-win_arm64.whl", hash = "sha256:5a37ca18e360377cfda1d62f5f382ff41f2b8c4ccb329ed974cc2e1643440118", size = 45573, upload_time = "2026-01-26T02:45:09.349Z" }, - { url = "https://files.pythonhosted.org/packages/81/08/7036c080d7117f28a4af526d794aab6a84463126db031b007717c1a6676e/multidict-6.7.1-py3-none-any.whl", hash = "sha256:55d97cc6dae627efa6a6e548885712d4864b81110ac76fa4e534c03819fa4a56", size = 12319, upload_time = "2026-01-26T02:46:44.004Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/1a/c2/c2d94cbe6ac1753f3fc980da97b3d930efe1da3af3c9f5125354436c073d/multidict-6.7.1.tar.gz", hash = "sha256:ec6652a1bee61c53a3e5776b6049172c53b6aaba34f18c9ad04f82712bac623d", size = 102010, upload-time = "2026-01-26T02:46:45.979Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/0b/19348d4c98980c4851d2f943f8ebafdece2ae7ef737adcfa5994ce8e5f10/multidict-6.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c93c3db7ea657dd4637d57e74ab73de31bccefe144d3d4ce370052035bc85fb5", size = 77176, upload-time = "2026-01-26T02:42:59.784Z" }, + { url = "https://files.pythonhosted.org/packages/ef/04/9de3f8077852e3d438215c81e9b691244532d2e05b4270e89ce67b7d103c/multidict-6.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:974e72a2474600827abaeda71af0c53d9ebbc3c2eb7da37b37d7829ae31232d8", size = 44996, upload-time = "2026-01-26T02:43:01.674Z" }, + { url = "https://files.pythonhosted.org/packages/31/5c/08c7f7fe311f32e83f7621cd3f99d805f45519cd06fafb247628b861da7d/multidict-6.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cdea2e7b2456cfb6694fb113066fd0ec7ea4d67e3a35e1f4cbeea0b448bf5872", size = 44631, upload-time = "2026-01-26T02:43:03.169Z" }, + { url = "https://files.pythonhosted.org/packages/b7/7f/0e3b1390ae772f27501199996b94b52ceeb64fe6f9120a32c6c3f6b781be/multidict-6.7.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:17207077e29342fdc2c9a82e4b306f1127bf1ea91f8b71e02d4798a70bb99991", size = 242561, upload-time = "2026-01-26T02:43:04.733Z" }, + { url = "https://files.pythonhosted.org/packages/dd/f4/8719f4f167586af317b69dd3e90f913416c91ca610cac79a45c53f590312/multidict-6.7.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4f49cb5661344764e4c7c7973e92a47a59b8fc19b6523649ec9dc4960e58a03", size = 242223, upload-time = "2026-01-26T02:43:06.695Z" }, + { url = "https://files.pythonhosted.org/packages/47/ab/7c36164cce64a6ad19c6d9a85377b7178ecf3b89f8fd589c73381a5eedfd/multidict-6.7.1-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a9fc4caa29e2e6ae408d1c450ac8bf19892c5fca83ee634ecd88a53332c59981", size = 222322, upload-time = "2026-01-26T02:43:08.472Z" }, + { url = "https://files.pythonhosted.org/packages/f5/79/a25add6fb38035b5337bc5734f296d9afc99163403bbcf56d4170f97eb62/multidict-6.7.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c5f0c21549ab432b57dcc82130f388d84ad8179824cc3f223d5e7cfbfd4143f6", size = 254005, upload-time = "2026-01-26T02:43:10.127Z" }, + { url = "https://files.pythonhosted.org/packages/4a/7b/64a87cf98e12f756fc8bd444b001232ffff2be37288f018ad0d3f0aae931/multidict-6.7.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7dfb78d966b2c906ae1d28ccf6e6712a3cd04407ee5088cd276fe8cb42186190", size = 251173, upload-time = "2026-01-26T02:43:11.731Z" }, + { url = "https://files.pythonhosted.org/packages/4b/ac/b605473de2bb404e742f2cc3583d12aedb2352a70e49ae8fce455b50c5aa/multidict-6.7.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9b0d9b91d1aa44db9c1f1ecd0d9d2ae610b2f4f856448664e01a3b35899f3f92", size = 243273, upload-time = "2026-01-26T02:43:13.063Z" }, + { url = "https://files.pythonhosted.org/packages/03/65/11492d6a0e259783720f3bc1d9ea55579a76f1407e31ed44045c99542004/multidict-6.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:dd96c01a9dcd4889dcfcf9eb5544ca0c77603f239e3ffab0524ec17aea9a93ee", size = 238956, upload-time = "2026-01-26T02:43:14.843Z" }, + { url = "https://files.pythonhosted.org/packages/5f/a7/7ee591302af64e7c196fb63fe856c788993c1372df765102bd0448e7e165/multidict-6.7.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:067343c68cd6612d375710f895337b3a98a033c94f14b9a99eff902f205424e2", size = 233477, upload-time = "2026-01-26T02:43:16.025Z" }, + { url = "https://files.pythonhosted.org/packages/9c/99/c109962d58756c35fd9992fed7f2355303846ea2ff054bb5f5e9d6b888de/multidict-6.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5884a04f4ff56c6120f6ccf703bdeb8b5079d808ba604d4d53aec0d55dc33568", size = 243615, upload-time = "2026-01-26T02:43:17.84Z" }, + { url = "https://files.pythonhosted.org/packages/d5/5f/1973e7c771c86e93dcfe1c9cc55a5481b610f6614acfc28c0d326fe6bfad/multidict-6.7.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8affcf1c98b82bc901702eb73b6947a1bfa170823c153fe8a47b5f5f02e48e40", size = 249930, upload-time = "2026-01-26T02:43:19.06Z" }, + { url = "https://files.pythonhosted.org/packages/5d/a5/f170fc2268c3243853580203378cd522446b2df632061e0a5409817854c7/multidict-6.7.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0d17522c37d03e85c8098ec8431636309b2682cf12e58f4dbc76121fb50e4962", size = 243807, upload-time = "2026-01-26T02:43:20.286Z" }, + { url = "https://files.pythonhosted.org/packages/de/01/73856fab6d125e5bc652c3986b90e8699a95e84b48d72f39ade6c0e74a8c/multidict-6.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24c0cf81544ca5e17cfcb6e482e7a82cd475925242b308b890c9452a074d4505", size = 239103, upload-time = "2026-01-26T02:43:21.508Z" }, + { url = "https://files.pythonhosted.org/packages/e7/46/f1220bd9944d8aa40d8ccff100eeeee19b505b857b6f603d6078cb5315b0/multidict-6.7.1-cp310-cp310-win32.whl", hash = "sha256:d82dd730a95e6643802f4454b8fdecdf08667881a9c5670db85bc5a56693f122", size = 41416, upload-time = "2026-01-26T02:43:22.703Z" }, + { url = "https://files.pythonhosted.org/packages/68/00/9b38e272a770303692fc406c36e1a4c740f401522d5787691eb38a8925a8/multidict-6.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:cf37cbe5ced48d417ba045aca1b21bafca67489452debcde94778a576666a1df", size = 46022, upload-time = "2026-01-26T02:43:23.77Z" }, + { url = "https://files.pythonhosted.org/packages/64/65/d8d42490c02ee07b6bbe00f7190d70bb4738b3cce7629aaf9f213ef730dd/multidict-6.7.1-cp310-cp310-win_arm64.whl", hash = "sha256:59bc83d3f66b41dac1e7460aac1d196edc70c9ba3094965c467715a70ecb46db", size = 43238, upload-time = "2026-01-26T02:43:24.882Z" }, + { url = "https://files.pythonhosted.org/packages/ce/f1/a90635c4f88fb913fbf4ce660b83b7445b7a02615bda034b2f8eb38fd597/multidict-6.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7ff981b266af91d7b4b3793ca3382e53229088d193a85dfad6f5f4c27fc73e5d", size = 76626, upload-time = "2026-01-26T02:43:26.485Z" }, + { url = "https://files.pythonhosted.org/packages/a6/9b/267e64eaf6fc637a15b35f5de31a566634a2740f97d8d094a69d34f524a4/multidict-6.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:844c5bca0b5444adb44a623fb0a1310c2f4cd41f402126bb269cd44c9b3f3e1e", size = 44706, upload-time = "2026-01-26T02:43:27.607Z" }, + { url = "https://files.pythonhosted.org/packages/dd/a4/d45caf2b97b035c57267791ecfaafbd59c68212004b3842830954bb4b02e/multidict-6.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f2a0a924d4c2e9afcd7ec64f9de35fcd96915149b2216e1cb2c10a56df483855", size = 44356, upload-time = "2026-01-26T02:43:28.661Z" }, + { url = "https://files.pythonhosted.org/packages/fd/d2/0a36c8473f0cbaeadd5db6c8b72d15bbceeec275807772bfcd059bef487d/multidict-6.7.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8be1802715a8e892c784c0197c2ace276ea52702a0ede98b6310c8f255a5afb3", size = 244355, upload-time = "2026-01-26T02:43:31.165Z" }, + { url = "https://files.pythonhosted.org/packages/5d/16/8c65be997fd7dd311b7d39c7b6e71a0cb449bad093761481eccbbe4b42a2/multidict-6.7.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2e2d2ed645ea29f31c4c7ea1552fcfd7cb7ba656e1eafd4134a6620c9f5fdd9e", size = 246433, upload-time = "2026-01-26T02:43:32.581Z" }, + { url = "https://files.pythonhosted.org/packages/01/fb/4dbd7e848d2799c6a026ec88ad39cf2b8416aa167fcc903baa55ecaa045c/multidict-6.7.1-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:95922cee9a778659e91db6497596435777bd25ed116701a4c034f8e46544955a", size = 225376, upload-time = "2026-01-26T02:43:34.417Z" }, + { url = "https://files.pythonhosted.org/packages/b6/8a/4a3a6341eac3830f6053062f8fbc9a9e54407c80755b3f05bc427295c2d0/multidict-6.7.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6b83cabdc375ffaaa15edd97eb7c0c672ad788e2687004990074d7d6c9b140c8", size = 257365, upload-time = "2026-01-26T02:43:35.741Z" }, + { url = "https://files.pythonhosted.org/packages/f7/a2/dd575a69c1aa206e12d27d0770cdf9b92434b48a9ef0cd0d1afdecaa93c4/multidict-6.7.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:38fb49540705369bab8484db0689d86c0a33a0a9f2c1b197f506b71b4b6c19b0", size = 254747, upload-time = "2026-01-26T02:43:36.976Z" }, + { url = "https://files.pythonhosted.org/packages/5a/56/21b27c560c13822ed93133f08aa6372c53a8e067f11fbed37b4adcdac922/multidict-6.7.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:439cbebd499f92e9aa6793016a8acaa161dfa749ae86d20960189f5398a19144", size = 246293, upload-time = "2026-01-26T02:43:38.258Z" }, + { url = "https://files.pythonhosted.org/packages/5a/a4/23466059dc3854763423d0ad6c0f3683a379d97673b1b89ec33826e46728/multidict-6.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6d3bc717b6fe763b8be3f2bee2701d3c8eb1b2a8ae9f60910f1b2860c82b6c49", size = 242962, upload-time = "2026-01-26T02:43:40.034Z" }, + { url = "https://files.pythonhosted.org/packages/1f/67/51dd754a3524d685958001e8fa20a0f5f90a6a856e0a9dcabff69be3dbb7/multidict-6.7.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:619e5a1ac57986dbfec9f0b301d865dddf763696435e2962f6d9cf2fdff2bb71", size = 237360, upload-time = "2026-01-26T02:43:41.752Z" }, + { url = "https://files.pythonhosted.org/packages/64/3f/036dfc8c174934d4b55d86ff4f978e558b0e585cef70cfc1ad01adc6bf18/multidict-6.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0b38ebffd9be37c1170d33bc0f36f4f262e0a09bc1aac1c34c7aa51a7293f0b3", size = 245940, upload-time = "2026-01-26T02:43:43.042Z" }, + { url = "https://files.pythonhosted.org/packages/3d/20/6214d3c105928ebc353a1c644a6ef1408bc5794fcb4f170bb524a3c16311/multidict-6.7.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:10ae39c9cfe6adedcdb764f5e8411d4a92b055e35573a2eaa88d3323289ef93c", size = 253502, upload-time = "2026-01-26T02:43:44.371Z" }, + { url = "https://files.pythonhosted.org/packages/b1/e2/c653bc4ae1be70a0f836b82172d643fcf1dade042ba2676ab08ec08bff0f/multidict-6.7.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:25167cc263257660290fba06b9318d2026e3c910be240a146e1f66dd114af2b0", size = 247065, upload-time = "2026-01-26T02:43:45.745Z" }, + { url = "https://files.pythonhosted.org/packages/c8/11/a854b4154cd3bd8b1fd375e8a8ca9d73be37610c361543d56f764109509b/multidict-6.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:128441d052254f42989ef98b7b6a6ecb1e6f708aa962c7984235316db59f50fa", size = 241870, upload-time = "2026-01-26T02:43:47.054Z" }, + { url = "https://files.pythonhosted.org/packages/13/bf/9676c0392309b5fdae322333d22a829715b570edb9baa8016a517b55b558/multidict-6.7.1-cp311-cp311-win32.whl", hash = "sha256:d62b7f64ffde3b99d06b707a280db04fb3855b55f5a06df387236051d0668f4a", size = 41302, upload-time = "2026-01-26T02:43:48.753Z" }, + { url = "https://files.pythonhosted.org/packages/c9/68/f16a3a8ba6f7b6dc92a1f19669c0810bd2c43fc5a02da13b1cbf8e253845/multidict-6.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:bdbf9f3b332abd0cdb306e7c2113818ab1e922dc84b8f8fd06ec89ed2a19ab8b", size = 45981, upload-time = "2026-01-26T02:43:49.921Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ad/9dd5305253fa00cd3c7555dbef69d5bf4133debc53b87ab8d6a44d411665/multidict-6.7.1-cp311-cp311-win_arm64.whl", hash = "sha256:b8c990b037d2fff2f4e33d3f21b9b531c5745b33a49a7d6dbe7a177266af44f6", size = 43159, upload-time = "2026-01-26T02:43:51.635Z" }, + { url = "https://files.pythonhosted.org/packages/8d/9c/f20e0e2cf80e4b2e4b1c365bf5fe104ee633c751a724246262db8f1a0b13/multidict-6.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a90f75c956e32891a4eda3639ce6dd86e87105271f43d43442a3aedf3cddf172", size = 76893, upload-time = "2026-01-26T02:43:52.754Z" }, + { url = "https://files.pythonhosted.org/packages/fe/cf/18ef143a81610136d3da8193da9d80bfe1cb548a1e2d1c775f26b23d024a/multidict-6.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fccb473e87eaa1382689053e4a4618e7ba7b9b9b8d6adf2027ee474597128cd", size = 45456, upload-time = "2026-01-26T02:43:53.893Z" }, + { url = "https://files.pythonhosted.org/packages/a9/65/1caac9d4cd32e8433908683446eebc953e82d22b03d10d41a5f0fefe991b/multidict-6.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b0fa96985700739c4c7853a43c0b3e169360d6855780021bfc6d0f1ce7c123e7", size = 43872, upload-time = "2026-01-26T02:43:55.041Z" }, + { url = "https://files.pythonhosted.org/packages/cf/3b/d6bd75dc4f3ff7c73766e04e705b00ed6dbbaccf670d9e05a12b006f5a21/multidict-6.7.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cb2a55f408c3043e42b40cc8eecd575afa27b7e0b956dfb190de0f8499a57a53", size = 251018, upload-time = "2026-01-26T02:43:56.198Z" }, + { url = "https://files.pythonhosted.org/packages/fd/80/c959c5933adedb9ac15152e4067c702a808ea183a8b64cf8f31af8ad3155/multidict-6.7.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb0ce7b2a32d09892b3dd6cc44877a0d02a33241fafca5f25c8b6b62374f8b75", size = 258883, upload-time = "2026-01-26T02:43:57.499Z" }, + { url = "https://files.pythonhosted.org/packages/86/85/7ed40adafea3d4f1c8b916e3b5cc3a8e07dfcdcb9cd72800f4ed3ca1b387/multidict-6.7.1-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c3a32d23520ee37bf327d1e1a656fec76a2edd5c038bf43eddfa0572ec49c60b", size = 242413, upload-time = "2026-01-26T02:43:58.755Z" }, + { url = "https://files.pythonhosted.org/packages/d2/57/b8565ff533e48595503c785f8361ff9a4fde4d67de25c207cd0ba3befd03/multidict-6.7.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9c90fed18bffc0189ba814749fdcc102b536e83a9f738a9003e569acd540a733", size = 268404, upload-time = "2026-01-26T02:44:00.216Z" }, + { url = "https://files.pythonhosted.org/packages/e0/50/9810c5c29350f7258180dfdcb2e52783a0632862eb334c4896ac717cebcb/multidict-6.7.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:da62917e6076f512daccfbbde27f46fed1c98fee202f0559adec8ee0de67f71a", size = 269456, upload-time = "2026-01-26T02:44:02.202Z" }, + { url = "https://files.pythonhosted.org/packages/f3/8d/5e5be3ced1d12966fefb5c4ea3b2a5b480afcea36406559442c6e31d4a48/multidict-6.7.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bfde23ef6ed9db7eaee6c37dcec08524cb43903c60b285b172b6c094711b3961", size = 256322, upload-time = "2026-01-26T02:44:03.56Z" }, + { url = "https://files.pythonhosted.org/packages/31/6e/d8a26d81ac166a5592782d208dd90dfdc0a7a218adaa52b45a672b46c122/multidict-6.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3758692429e4e32f1ba0df23219cd0b4fc0a52f476726fff9337d1a57676a582", size = 253955, upload-time = "2026-01-26T02:44:04.845Z" }, + { url = "https://files.pythonhosted.org/packages/59/4c/7c672c8aad41534ba619bcd4ade7a0dc87ed6b8b5c06149b85d3dd03f0cd/multidict-6.7.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:398c1478926eca669f2fd6a5856b6de9c0acf23a2cb59a14c0ba5844fa38077e", size = 251254, upload-time = "2026-01-26T02:44:06.133Z" }, + { url = "https://files.pythonhosted.org/packages/7b/bd/84c24de512cbafbdbc39439f74e967f19570ce7924e3007174a29c348916/multidict-6.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c102791b1c4f3ab36ce4101154549105a53dc828f016356b3e3bcae2e3a039d3", size = 252059, upload-time = "2026-01-26T02:44:07.518Z" }, + { url = "https://files.pythonhosted.org/packages/fa/ba/f5449385510825b73d01c2d4087bf6d2fccc20a2d42ac34df93191d3dd03/multidict-6.7.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a088b62bd733e2ad12c50dad01b7d0166c30287c166e137433d3b410add807a6", size = 263588, upload-time = "2026-01-26T02:44:09.382Z" }, + { url = "https://files.pythonhosted.org/packages/d7/11/afc7c677f68f75c84a69fe37184f0f82fce13ce4b92f49f3db280b7e92b3/multidict-6.7.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3d51ff4785d58d3f6c91bdbffcb5e1f7ddfda557727043aa20d20ec4f65e324a", size = 259642, upload-time = "2026-01-26T02:44:10.73Z" }, + { url = "https://files.pythonhosted.org/packages/2b/17/ebb9644da78c4ab36403739e0e6e0e30ebb135b9caf3440825001a0bddcb/multidict-6.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fc5907494fccf3e7d3f94f95c91d6336b092b5fc83811720fae5e2765890dfba", size = 251377, upload-time = "2026-01-26T02:44:12.042Z" }, + { url = "https://files.pythonhosted.org/packages/ca/a4/840f5b97339e27846c46307f2530a2805d9d537d8b8bd416af031cad7fa0/multidict-6.7.1-cp312-cp312-win32.whl", hash = "sha256:28ca5ce2fd9716631133d0e9a9b9a745ad7f60bac2bccafb56aa380fc0b6c511", size = 41887, upload-time = "2026-01-26T02:44:14.245Z" }, + { url = "https://files.pythonhosted.org/packages/80/31/0b2517913687895f5904325c2069d6a3b78f66cc641a86a2baf75a05dcbb/multidict-6.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcee94dfbd638784645b066074b338bc9cc155d4b4bffa4adce1615c5a426c19", size = 46053, upload-time = "2026-01-26T02:44:15.371Z" }, + { url = "https://files.pythonhosted.org/packages/0c/5b/aba28e4ee4006ae4c7df8d327d31025d760ffa992ea23812a601d226e682/multidict-6.7.1-cp312-cp312-win_arm64.whl", hash = "sha256:ba0a9fb644d0c1a2194cf7ffb043bd852cea63a57f66fbd33959f7dae18517bf", size = 43307, upload-time = "2026-01-26T02:44:16.852Z" }, + { url = "https://files.pythonhosted.org/packages/f2/22/929c141d6c0dba87d3e1d38fbdf1ba8baba86b7776469f2bc2d3227a1e67/multidict-6.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2b41f5fed0ed563624f1c17630cb9941cf2309d4df00e494b551b5f3e3d67a23", size = 76174, upload-time = "2026-01-26T02:44:18.509Z" }, + { url = "https://files.pythonhosted.org/packages/c7/75/bc704ae15fee974f8fccd871305e254754167dce5f9e42d88a2def741a1d/multidict-6.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84e61e3af5463c19b67ced91f6c634effb89ef8bfc5ca0267f954451ed4bb6a2", size = 45116, upload-time = "2026-01-26T02:44:19.745Z" }, + { url = "https://files.pythonhosted.org/packages/79/76/55cd7186f498ed080a18440c9013011eb548f77ae1b297206d030eb1180a/multidict-6.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:935434b9853c7c112eee7ac891bc4cb86455aa631269ae35442cb316790c1445", size = 43524, upload-time = "2026-01-26T02:44:21.571Z" }, + { url = "https://files.pythonhosted.org/packages/e9/3c/414842ef8d5a1628d68edee29ba0e5bcf235dbfb3ccd3ea303a7fe8c72ff/multidict-6.7.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:432feb25a1cb67fe82a9680b4d65fb542e4635cb3166cd9c01560651ad60f177", size = 249368, upload-time = "2026-01-26T02:44:22.803Z" }, + { url = "https://files.pythonhosted.org/packages/f6/32/befed7f74c458b4a525e60519fe8d87eef72bb1e99924fa2b0f9d97a221e/multidict-6.7.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e82d14e3c948952a1a85503817e038cba5905a3352de76b9a465075d072fba23", size = 256952, upload-time = "2026-01-26T02:44:24.306Z" }, + { url = "https://files.pythonhosted.org/packages/03/d6/c878a44ba877f366630c860fdf74bfb203c33778f12b6ac274936853c451/multidict-6.7.1-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4cfb48c6ea66c83bcaaf7e4dfa7ec1b6bbcf751b7db85a328902796dfde4c060", size = 240317, upload-time = "2026-01-26T02:44:25.772Z" }, + { url = "https://files.pythonhosted.org/packages/68/49/57421b4d7ad2e9e60e25922b08ceb37e077b90444bde6ead629095327a6f/multidict-6.7.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1d540e51b7e8e170174555edecddbd5538105443754539193e3e1061864d444d", size = 267132, upload-time = "2026-01-26T02:44:27.648Z" }, + { url = "https://files.pythonhosted.org/packages/b7/fe/ec0edd52ddbcea2a2e89e174f0206444a61440b40f39704e64dc807a70bd/multidict-6.7.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:273d23f4b40f3dce4d6c8a821c741a86dec62cded82e1175ba3d99be128147ed", size = 268140, upload-time = "2026-01-26T02:44:29.588Z" }, + { url = "https://files.pythonhosted.org/packages/b0/73/6e1b01cbeb458807aa0831742232dbdd1fa92bfa33f52a3f176b4ff3dc11/multidict-6.7.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d624335fd4fa1c08a53f8b4be7676ebde19cd092b3895c421045ca87895b429", size = 254277, upload-time = "2026-01-26T02:44:30.902Z" }, + { url = "https://files.pythonhosted.org/packages/6a/b2/5fb8c124d7561a4974c342bc8c778b471ebbeb3cc17df696f034a7e9afe7/multidict-6.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:12fad252f8b267cc75b66e8fc51b3079604e8d43a75428ffe193cd9e2195dfd6", size = 252291, upload-time = "2026-01-26T02:44:32.31Z" }, + { url = "https://files.pythonhosted.org/packages/5a/96/51d4e4e06bcce92577fcd488e22600bd38e4fd59c20cb49434d054903bd2/multidict-6.7.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:03ede2a6ffbe8ef936b92cb4529f27f42be7f56afcdab5ab739cd5f27fb1cbf9", size = 250156, upload-time = "2026-01-26T02:44:33.734Z" }, + { url = "https://files.pythonhosted.org/packages/db/6b/420e173eec5fba721a50e2a9f89eda89d9c98fded1124f8d5c675f7a0c0f/multidict-6.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:90efbcf47dbe33dcf643a1e400d67d59abeac5db07dc3f27d6bdeae497a2198c", size = 249742, upload-time = "2026-01-26T02:44:35.222Z" }, + { url = "https://files.pythonhosted.org/packages/44/a3/ec5b5bd98f306bc2aa297b8c6f11a46714a56b1e6ef5ebda50a4f5d7c5fb/multidict-6.7.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:5c4b9bfc148f5a91be9244d6264c53035c8a0dcd2f51f1c3c6e30e30ebaa1c84", size = 262221, upload-time = "2026-01-26T02:44:36.604Z" }, + { url = "https://files.pythonhosted.org/packages/cd/f7/e8c0d0da0cd1e28d10e624604e1a36bcc3353aaebdfdc3a43c72bc683a12/multidict-6.7.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:401c5a650f3add2472d1d288c26deebc540f99e2fb83e9525007a74cd2116f1d", size = 258664, upload-time = "2026-01-26T02:44:38.008Z" }, + { url = "https://files.pythonhosted.org/packages/52/da/151a44e8016dd33feed44f730bd856a66257c1ee7aed4f44b649fb7edeb3/multidict-6.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:97891f3b1b3ffbded884e2916cacf3c6fc87b66bb0dde46f7357404750559f33", size = 249490, upload-time = "2026-01-26T02:44:39.386Z" }, + { url = "https://files.pythonhosted.org/packages/87/af/a3b86bf9630b732897f6fc3f4c4714b90aa4361983ccbdcd6c0339b21b0c/multidict-6.7.1-cp313-cp313-win32.whl", hash = "sha256:e1c5988359516095535c4301af38d8a8838534158f649c05dd1050222321bcb3", size = 41695, upload-time = "2026-01-26T02:44:41.318Z" }, + { url = "https://files.pythonhosted.org/packages/b2/35/e994121b0e90e46134673422dd564623f93304614f5d11886b1b3e06f503/multidict-6.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:960c83bf01a95b12b08fd54324a4eb1d5b52c88932b5cba5d6e712bb3ed12eb5", size = 45884, upload-time = "2026-01-26T02:44:42.488Z" }, + { url = "https://files.pythonhosted.org/packages/ca/61/42d3e5dbf661242a69c97ea363f2d7b46c567da8eadef8890022be6e2ab0/multidict-6.7.1-cp313-cp313-win_arm64.whl", hash = "sha256:563fe25c678aaba333d5399408f5ec3c383ca5b663e7f774dd179a520b8144df", size = 43122, upload-time = "2026-01-26T02:44:43.664Z" }, + { url = "https://files.pythonhosted.org/packages/6d/b3/e6b21c6c4f314bb956016b0b3ef2162590a529b84cb831c257519e7fde44/multidict-6.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:c76c4bec1538375dad9d452d246ca5368ad6e1c9039dadcf007ae59c70619ea1", size = 83175, upload-time = "2026-01-26T02:44:44.894Z" }, + { url = "https://files.pythonhosted.org/packages/fb/76/23ecd2abfe0957b234f6c960f4ade497f55f2c16aeb684d4ecdbf1c95791/multidict-6.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:57b46b24b5d5ebcc978da4ec23a819a9402b4228b8a90d9c656422b4bdd8a963", size = 48460, upload-time = "2026-01-26T02:44:46.106Z" }, + { url = "https://files.pythonhosted.org/packages/c4/57/a0ed92b23f3a042c36bc4227b72b97eca803f5f1801c1ab77c8a212d455e/multidict-6.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e954b24433c768ce78ab7929e84ccf3422e46deb45a4dc9f93438f8217fa2d34", size = 46930, upload-time = "2026-01-26T02:44:47.278Z" }, + { url = "https://files.pythonhosted.org/packages/b5/66/02ec7ace29162e447f6382c495dc95826bf931d3818799bbef11e8f7df1a/multidict-6.7.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3bd231490fa7217cc832528e1cd8752a96f0125ddd2b5749390f7c3ec8721b65", size = 242582, upload-time = "2026-01-26T02:44:48.604Z" }, + { url = "https://files.pythonhosted.org/packages/58/18/64f5a795e7677670e872673aca234162514696274597b3708b2c0d276cce/multidict-6.7.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:253282d70d67885a15c8a7716f3a73edf2d635793ceda8173b9ecc21f2fb8292", size = 250031, upload-time = "2026-01-26T02:44:50.544Z" }, + { url = "https://files.pythonhosted.org/packages/c8/ed/e192291dbbe51a8290c5686f482084d31bcd9d09af24f63358c3d42fd284/multidict-6.7.1-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0b4c48648d7649c9335cf1927a8b87fa692de3dcb15faa676c6a6f1f1aabda43", size = 228596, upload-time = "2026-01-26T02:44:51.951Z" }, + { url = "https://files.pythonhosted.org/packages/1e/7e/3562a15a60cf747397e7f2180b0a11dc0c38d9175a650e75fa1b4d325e15/multidict-6.7.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:98bc624954ec4d2c7cb074b8eefc2b5d0ce7d482e410df446414355d158fe4ca", size = 257492, upload-time = "2026-01-26T02:44:53.902Z" }, + { url = "https://files.pythonhosted.org/packages/24/02/7d0f9eae92b5249bb50ac1595b295f10e263dd0078ebb55115c31e0eaccd/multidict-6.7.1-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1b99af4d9eec0b49927b4402bcbb58dea89d3e0db8806a4086117019939ad3dd", size = 255899, upload-time = "2026-01-26T02:44:55.316Z" }, + { url = "https://files.pythonhosted.org/packages/00/e3/9b60ed9e23e64c73a5cde95269ef1330678e9c6e34dd4eb6b431b85b5a10/multidict-6.7.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6aac4f16b472d5b7dc6f66a0d49dd57b0e0902090be16594dc9ebfd3d17c47e7", size = 247970, upload-time = "2026-01-26T02:44:56.783Z" }, + { url = "https://files.pythonhosted.org/packages/3e/06/538e58a63ed5cfb0bd4517e346b91da32fde409d839720f664e9a4ae4f9d/multidict-6.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:21f830fe223215dffd51f538e78c172ed7c7f60c9b96a2bf05c4848ad49921c3", size = 245060, upload-time = "2026-01-26T02:44:58.195Z" }, + { url = "https://files.pythonhosted.org/packages/b2/2f/d743a3045a97c895d401e9bd29aaa09b94f5cbdf1bd561609e5a6c431c70/multidict-6.7.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:f5dd81c45b05518b9aa4da4aa74e1c93d715efa234fd3e8a179df611cc85e5f4", size = 235888, upload-time = "2026-01-26T02:44:59.57Z" }, + { url = "https://files.pythonhosted.org/packages/38/83/5a325cac191ab28b63c52f14f1131f3b0a55ba3b9aa65a6d0bf2a9b921a0/multidict-6.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:eb304767bca2bb92fb9c5bd33cedc95baee5bb5f6c88e63706533a1c06ad08c8", size = 243554, upload-time = "2026-01-26T02:45:01.054Z" }, + { url = "https://files.pythonhosted.org/packages/20/1f/9d2327086bd15da2725ef6aae624208e2ef828ed99892b17f60c344e57ed/multidict-6.7.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:c9035dde0f916702850ef66460bc4239d89d08df4d02023a5926e7446724212c", size = 252341, upload-time = "2026-01-26T02:45:02.484Z" }, + { url = "https://files.pythonhosted.org/packages/e8/2c/2a1aa0280cf579d0f6eed8ee5211c4f1730bd7e06c636ba2ee6aafda302e/multidict-6.7.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:af959b9beeb66c822380f222f0e0a1889331597e81f1ded7f374f3ecb0fd6c52", size = 246391, upload-time = "2026-01-26T02:45:03.862Z" }, + { url = "https://files.pythonhosted.org/packages/e5/03/7ca022ffc36c5a3f6e03b179a5ceb829be9da5783e6fe395f347c0794680/multidict-6.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:41f2952231456154ee479651491e94118229844dd7226541788be783be2b5108", size = 243422, upload-time = "2026-01-26T02:45:05.296Z" }, + { url = "https://files.pythonhosted.org/packages/dc/1d/b31650eab6c5778aceed46ba735bd97f7c7d2f54b319fa916c0f96e7805b/multidict-6.7.1-cp313-cp313t-win32.whl", hash = "sha256:df9f19c28adcb40b6aae30bbaa1478c389efd50c28d541d76760199fc1037c32", size = 47770, upload-time = "2026-01-26T02:45:06.754Z" }, + { url = "https://files.pythonhosted.org/packages/ac/5b/2d2d1d522e51285bd61b1e20df8f47ae1a9d80839db0b24ea783b3832832/multidict-6.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:d54ecf9f301853f2c5e802da559604b3e95bb7a3b01a9c295c6ee591b9882de8", size = 53109, upload-time = "2026-01-26T02:45:08.044Z" }, + { url = "https://files.pythonhosted.org/packages/3d/a3/cc409ba012c83ca024a308516703cf339bdc4b696195644a7215a5164a24/multidict-6.7.1-cp313-cp313t-win_arm64.whl", hash = "sha256:5a37ca18e360377cfda1d62f5f382ff41f2b8c4ccb329ed974cc2e1643440118", size = 45573, upload-time = "2026-01-26T02:45:09.349Z" }, + { url = "https://files.pythonhosted.org/packages/81/08/7036c080d7117f28a4af526d794aab6a84463126db031b007717c1a6676e/multidict-6.7.1-py3-none-any.whl", hash = "sha256:55d97cc6dae627efa6a6e548885712d4864b81110ac76fa4e534c03819fa4a56", size = 12319, upload-time = "2026-01-26T02:46:44.004Z" }, ] [[package]] name = "murmurhash" version = "1.0.15" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/23/2e/88c147931ea9725d634840d538622e94122bceaf346233349b7b5c62964b/murmurhash-1.0.15.tar.gz", hash = "sha256:58e2b27b7847f9e2a6edf10b47a8c8dd70a4705f45dccb7bf76aeadacf56ba01", size = 13291, upload_time = "2025-11-14T09:51:15.272Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/09/3c/5e59e29fe971365d27f191a5cbf8a5fb492746e458604fe5d39810da4668/murmurhash-1.0.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f4989c16053a9a83b02c520dd00a31f0877d5fd2ab8a9b6b75ed9eba0e25c489", size = 27463, upload_time = "2025-11-14T09:49:53.158Z" }, - { url = "https://files.pythonhosted.org/packages/38/3d/ace00a9b82beaa99a8a7a52e98171cfbf13c0066d2f820e84a5d572e3bd0/murmurhash-1.0.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:899068ba3d7c371e7edd093852c634cce802fefd9aaddfcc0d2fda1d7433c7f9", size = 27714, upload_time = "2025-11-14T09:49:54.855Z" }, - { url = "https://files.pythonhosted.org/packages/10/0f/34f1c4f97424ea1bc72b1e3bdf61ac34f4c5555ec9163721f1e4cafe5b1d/murmurhash-1.0.15-cp310-cp310-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fe883982114de576c793fd1cf55945c8ee6453ad4c4785ac1a48f84e74fdc650", size = 122570, upload_time = "2025-11-14T09:49:55.977Z" }, - { url = "https://files.pythonhosted.org/packages/b9/75/0019717a16ce5a7b088fc50a3ecb513035e4196c5e569bf4a2e16bcc0414/murmurhash-1.0.15-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:342277d8d7f712d136507fb3ccdba26c076a34ca0f8d1b96f65f0daa556da2e9", size = 123194, upload_time = "2025-11-14T09:49:57.462Z" }, - { url = "https://files.pythonhosted.org/packages/7b/a4/c1c95ce60b816c2255098164e424752779269c93f5d6dceaa213346789a2/murmurhash-1.0.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bc54facccb32fe1e97d6231edd4f3e2937467c35658b26aa35bbd6a87ebb7cb0", size = 122461, upload_time = "2025-11-14T09:49:58.686Z" }, - { url = "https://files.pythonhosted.org/packages/63/28/e1f79369a6e8d1a5901346ed2fd3a5c56e647d0b849044870c071cb64e1c/murmurhash-1.0.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e525bbd8e26e6b9ab1b56758a59b16c2fffd73bad2f7b8bf361c16f70ff1d980", size = 121676, upload_time = "2025-11-14T09:49:59.888Z" }, - { url = "https://files.pythonhosted.org/packages/1d/7c/e2be1f5387e5898f6551cf81c4220975858b9dbda4d471b133750945599a/murmurhash-1.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:2224f30f7729717644745a6f513ea7662517dfe7b1867cf1588177f64c61df3c", size = 25156, upload_time = "2025-11-14T09:50:01.016Z" }, - { url = "https://files.pythonhosted.org/packages/74/07/0df6e1a753de68368662cbbb8f88558e2c877d3886ac12b30953fb8ed335/murmurhash-1.0.15-cp310-cp310-win_arm64.whl", hash = "sha256:8a181494b5f03ba831f9a13f2de3aab9ef591e508e57239043d65c5c592f5837", size = 23270, upload_time = "2025-11-14T09:50:01.99Z" }, - { url = "https://files.pythonhosted.org/packages/6b/ca/77d3e69924a8eb4508bb4f0ad34e46adbeedeb93616a71080e61e53dad71/murmurhash-1.0.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f32307fb9347680bb4fe1cbef6362fb39bd994f1b59abd8c09ca174e44199081", size = 27397, upload_time = "2025-11-14T09:50:03.077Z" }, - { url = "https://files.pythonhosted.org/packages/e6/53/a936f577d35b245d47b310f29e5e9f09fcac776c8c992f1ab51a9fb0cee2/murmurhash-1.0.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:539d8405885d1d19c005f3a2313b47e8e54b0ee89915eb8dfbb430b194328e6c", size = 27692, upload_time = "2025-11-14T09:50:04.144Z" }, - { url = "https://files.pythonhosted.org/packages/4d/64/5f8cfd1fd9cbeb43fcff96672f5bd9e7e1598d1c970f808ecd915490dc20/murmurhash-1.0.15-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c4cd739a00f5a4602201b74568ddabae46ec304719d9be752fd8f534a9464b5e", size = 128396, upload_time = "2025-11-14T09:50:05.268Z" }, - { url = "https://files.pythonhosted.org/packages/ac/10/d9ce29d559a75db0d8a3f13ea12c7f541ec9de2afca38dc70418b890eedb/murmurhash-1.0.15-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:44d211bcc3ec203c47dac06f48ee871093fcbdffa6652a6cc5ea7180306680a8", size = 128687, upload_time = "2025-11-14T09:50:06.527Z" }, - { url = "https://files.pythonhosted.org/packages/48/cd/dc97ab7e68cdfa1537a56e36dbc846c5a66701cc39ecee2d4399fe61996c/murmurhash-1.0.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f9bf47101354fb1dc4b2e313192566f04ba295c28a37e2f71c692759acc1ba3c", size = 128198, upload_time = "2025-11-14T09:50:08.062Z" }, - { url = "https://files.pythonhosted.org/packages/53/73/32f2aaa22c1e4afae337106baf0c938abf36a6cc879cfee83a00461bbbf7/murmurhash-1.0.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c69b4d3bcd6233782a78907fe10b9b7a796bdc5d28060cf097d067bec280a5d", size = 127214, upload_time = "2025-11-14T09:50:09.265Z" }, - { url = "https://files.pythonhosted.org/packages/82/ed/812103a7f353eba2d83655b08205e13a38c93b4db0692f94756e1eb44516/murmurhash-1.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:e43a69496342ce530bdd670264cb7c8f45490b296e4764c837ce577e3c7ebd53", size = 25241, upload_time = "2025-11-14T09:50:10.373Z" }, - { url = "https://files.pythonhosted.org/packages/eb/5f/2c511bdd28f7c24da37a00116ffd0432b65669d098f0d0260c66ac0ffdc2/murmurhash-1.0.15-cp311-cp311-win_arm64.whl", hash = "sha256:f3e99a6ee36ef5372df5f138e3d9c801420776d3641a34a49e5c2555f44edba7", size = 23216, upload_time = "2025-11-14T09:50:11.651Z" }, - { url = "https://files.pythonhosted.org/packages/b6/46/be8522d3456fdccf1b8b049c6d82e7a3c1114c4fc2cfe14b04cba4b3e701/murmurhash-1.0.15-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d37e3ae44746bca80b1a917c2ea625cf216913564ed43f69d2888e5df97db0cb", size = 27884, upload_time = "2025-11-14T09:50:13.133Z" }, - { url = "https://files.pythonhosted.org/packages/ed/cc/630449bf4f6178d7daf948ce46ad00b25d279065fc30abd8d706be3d87e0/murmurhash-1.0.15-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0861cb11039409eaf46878456b7d985ef17b6b484103a6fc367b2ecec846891d", size = 27855, upload_time = "2025-11-14T09:50:14.859Z" }, - { url = "https://files.pythonhosted.org/packages/ff/30/ea8f601a9bf44db99468696efd59eb9cff1157cd55cb586d67116697583f/murmurhash-1.0.15-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5a301decfaccfec70fe55cb01dde2a012c3014a874542eaa7cc73477bb749616", size = 134088, upload_time = "2025-11-14T09:50:15.958Z" }, - { url = "https://files.pythonhosted.org/packages/c9/de/c40ce8c0877d406691e735b8d6e9c815f36a82b499d358313db5dbe219d7/murmurhash-1.0.15-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:32c6fde7bd7e9407003370a07b5f4addacabe1556ad3dc2cac246b7a2bba3400", size = 133978, upload_time = "2025-11-14T09:50:17.572Z" }, - { url = "https://files.pythonhosted.org/packages/47/84/bd49963ecd84ebab2fe66595e2d1ed41d5e8b5153af5dc930f0bd827007c/murmurhash-1.0.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d8b43a7011540dc3c7ce66f2134df9732e2bc3bbb4a35f6458bc755e48bde26", size = 132956, upload_time = "2025-11-14T09:50:18.742Z" }, - { url = "https://files.pythonhosted.org/packages/4f/7c/2530769c545074417c862583f05f4245644599f1e9ff619b3dfe2969aafc/murmurhash-1.0.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:43bf4541892ecd95963fcd307bf1c575fc0fee1682f41c93007adee71ca2bb40", size = 134184, upload_time = "2025-11-14T09:50:19.941Z" }, - { url = "https://files.pythonhosted.org/packages/84/a4/b249b042f5afe34d14ada2dc4afc777e883c15863296756179652e081c44/murmurhash-1.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:f4ac15a2089dc42e6eb0966622d42d2521590a12c92480aafecf34c085302cca", size = 25647, upload_time = "2025-11-14T09:50:21.049Z" }, - { url = "https://files.pythonhosted.org/packages/13/bf/028179259aebc18fd4ba5cae2601d1d47517427a537ab44336446431a215/murmurhash-1.0.15-cp312-cp312-win_arm64.whl", hash = "sha256:4a70ca4ae19e600d9be3da64d00710e79dde388a4d162f22078d64844d0ebdda", size = 23338, upload_time = "2025-11-14T09:50:22.359Z" }, - { url = "https://files.pythonhosted.org/packages/29/2f/ba300b5f04dae0409202d6285668b8a9d3ade43a846abee3ef611cb388d5/murmurhash-1.0.15-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fe50dc70e52786759358fd1471e309b94dddfffb9320d9dfea233c7684c894ba", size = 27861, upload_time = "2025-11-14T09:50:23.804Z" }, - { url = "https://files.pythonhosted.org/packages/34/02/29c19d268e6f4ea1ed2a462c901eed1ed35b454e2cbc57da592fad663ac6/murmurhash-1.0.15-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1349a7c23f6092e7998ddc5bd28546cc31a595afc61e9fdb3afc423feec3d7ad", size = 27840, upload_time = "2025-11-14T09:50:25.146Z" }, - { url = "https://files.pythonhosted.org/packages/e2/63/58e2de2b5232cd294c64092688c422196e74f9fa8b3958bdf02d33df24b9/murmurhash-1.0.15-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b3ba6d05de2613535b5a9227d4ad8ef40a540465f64660d4a8800634ae10e04f", size = 133080, upload_time = "2025-11-14T09:50:26.566Z" }, - { url = "https://files.pythonhosted.org/packages/aa/9a/d13e2e9f8ba1ced06840921a50f7cece0a475453284158a3018b72679761/murmurhash-1.0.15-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fa1b70b3cc2801ab44179c65827bbd12009c68b34e9d9ce7125b6a0bd35af63c", size = 132648, upload_time = "2025-11-14T09:50:27.788Z" }, - { url = "https://files.pythonhosted.org/packages/b2/e1/47994f1813fa205c84977b0ff51ae6709f8539af052c7491a5f863d82bdc/murmurhash-1.0.15-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:213d710fb6f4ef3bc11abbfad0fa94a75ffb675b7dc158c123471e5de869f9af", size = 131502, upload_time = "2025-11-14T09:50:29.339Z" }, - { url = "https://files.pythonhosted.org/packages/b9/ea/90c1fd00b4aeb704fb5e84cd666b33ffd7f245155048071ffbb51d2bb57d/murmurhash-1.0.15-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b65a5c4e7f5d71f7ccac2d2b60bdf7092d7976270878cfec59d5a66a533db823", size = 132736, upload_time = "2025-11-14T09:50:30.545Z" }, - { url = "https://files.pythonhosted.org/packages/00/db/da73462dbfa77f6433b128d2120ba7ba300f8c06dc4f4e022c38d240a5f5/murmurhash-1.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:9aba94c5d841e1904cd110e94ceb7f49cfb60a874bbfb27e0373622998fb7c7c", size = 25682, upload_time = "2025-11-14T09:50:31.624Z" }, - { url = "https://files.pythonhosted.org/packages/bb/83/032729ef14971b938fbef41ee125fc8800020ee229bd35178b6ede8ee934/murmurhash-1.0.15-cp313-cp313-win_arm64.whl", hash = "sha256:263807eca40d08c7b702413e45cca75ecb5883aa337237dc5addb660f1483378", size = 23370, upload_time = "2025-11-14T09:50:33.264Z" }, - { url = "https://files.pythonhosted.org/packages/10/83/7547d9205e9bd2f8e5dfd0b682cc9277594f98909f228eb359489baec1df/murmurhash-1.0.15-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:694fd42a74b7ce257169d14c24aa616aa6cd4ccf8abe50eca0557e08da99d055", size = 29955, upload_time = "2025-11-14T09:50:34.488Z" }, - { url = "https://files.pythonhosted.org/packages/b7/c7/3afd5de7a5b3ae07fe2d3a3271b327ee1489c58ba2b2f2159bd31a25edb9/murmurhash-1.0.15-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a2ea4546ba426390beff3cd10db8f0152fdc9072c4f2583ec7d8aa9f3e4ac070", size = 30108, upload_time = "2025-11-14T09:50:35.53Z" }, - { url = "https://files.pythonhosted.org/packages/02/69/d6637ee67d78ebb2538c00411f28ea5c154886bbe1db16c49435a8a4ab16/murmurhash-1.0.15-cp313-cp313t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:34e5a91139c40b10f98d0b297907f5d5267b4b1b2e5dd2eb74a021824f751b98", size = 164054, upload_time = "2025-11-14T09:50:36.591Z" }, - { url = "https://files.pythonhosted.org/packages/ab/4c/89e590165b4c7da6bf941441212a721a270195332d3aacfdfdf527d466ca/murmurhash-1.0.15-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:dc35606868a5961cf42e79314ca0bddf5a400ce377b14d83192057928d6252ec", size = 168153, upload_time = "2025-11-14T09:50:37.856Z" }, - { url = "https://files.pythonhosted.org/packages/07/7a/95c42df0c21d2e413b9fcd17317a7587351daeb264dc29c6aec1fdbd26f8/murmurhash-1.0.15-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:43cc6ac3b91ca0f7a5ae9c063ba4d6c26972c97fd7c25280ecc666413e4c5535", size = 164345, upload_time = "2025-11-14T09:50:39.346Z" }, - { url = "https://files.pythonhosted.org/packages/d0/22/9d02c880a88b83bb3ce7d6a38fb727373ab78d82e5f3d8d9fc5612219f90/murmurhash-1.0.15-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:847d712136cb462f0e4bd6229ee2d9eb996d8854eb8312dff3d20c8f5181fda5", size = 161990, upload_time = "2025-11-14T09:50:40.689Z" }, - { url = "https://files.pythonhosted.org/packages/9a/e3/750232524e0dc262e8dcede6536dafc766faadd9a52f1d23746b02948ad8/murmurhash-1.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:2680851af6901dbe66cc4aa7ef8e263de47e6e1b425ae324caa571bdf18f8d58", size = 28812, upload_time = "2025-11-14T09:50:41.971Z" }, - { url = "https://files.pythonhosted.org/packages/ff/89/4ad9d215ef6ade89f27a72dc4e86b98ef1a43534cc3e6a6900a362a0bf0a/murmurhash-1.0.15-cp313-cp313t-win_arm64.whl", hash = "sha256:189a8de4d657b5da9efd66601b0636330b08262b3a55431f2379097c986995d0", size = 25398, upload_time = "2025-11-14T09:50:43.023Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/23/2e/88c147931ea9725d634840d538622e94122bceaf346233349b7b5c62964b/murmurhash-1.0.15.tar.gz", hash = "sha256:58e2b27b7847f9e2a6edf10b47a8c8dd70a4705f45dccb7bf76aeadacf56ba01", size = 13291, upload-time = "2025-11-14T09:51:15.272Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/09/3c/5e59e29fe971365d27f191a5cbf8a5fb492746e458604fe5d39810da4668/murmurhash-1.0.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f4989c16053a9a83b02c520dd00a31f0877d5fd2ab8a9b6b75ed9eba0e25c489", size = 27463, upload-time = "2025-11-14T09:49:53.158Z" }, + { url = "https://files.pythonhosted.org/packages/38/3d/ace00a9b82beaa99a8a7a52e98171cfbf13c0066d2f820e84a5d572e3bd0/murmurhash-1.0.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:899068ba3d7c371e7edd093852c634cce802fefd9aaddfcc0d2fda1d7433c7f9", size = 27714, upload-time = "2025-11-14T09:49:54.855Z" }, + { url = "https://files.pythonhosted.org/packages/10/0f/34f1c4f97424ea1bc72b1e3bdf61ac34f4c5555ec9163721f1e4cafe5b1d/murmurhash-1.0.15-cp310-cp310-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fe883982114de576c793fd1cf55945c8ee6453ad4c4785ac1a48f84e74fdc650", size = 122570, upload-time = "2025-11-14T09:49:55.977Z" }, + { url = "https://files.pythonhosted.org/packages/b9/75/0019717a16ce5a7b088fc50a3ecb513035e4196c5e569bf4a2e16bcc0414/murmurhash-1.0.15-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:342277d8d7f712d136507fb3ccdba26c076a34ca0f8d1b96f65f0daa556da2e9", size = 123194, upload-time = "2025-11-14T09:49:57.462Z" }, + { url = "https://files.pythonhosted.org/packages/7b/a4/c1c95ce60b816c2255098164e424752779269c93f5d6dceaa213346789a2/murmurhash-1.0.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bc54facccb32fe1e97d6231edd4f3e2937467c35658b26aa35bbd6a87ebb7cb0", size = 122461, upload-time = "2025-11-14T09:49:58.686Z" }, + { url = "https://files.pythonhosted.org/packages/63/28/e1f79369a6e8d1a5901346ed2fd3a5c56e647d0b849044870c071cb64e1c/murmurhash-1.0.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e525bbd8e26e6b9ab1b56758a59b16c2fffd73bad2f7b8bf361c16f70ff1d980", size = 121676, upload-time = "2025-11-14T09:49:59.888Z" }, + { url = "https://files.pythonhosted.org/packages/1d/7c/e2be1f5387e5898f6551cf81c4220975858b9dbda4d471b133750945599a/murmurhash-1.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:2224f30f7729717644745a6f513ea7662517dfe7b1867cf1588177f64c61df3c", size = 25156, upload-time = "2025-11-14T09:50:01.016Z" }, + { url = "https://files.pythonhosted.org/packages/74/07/0df6e1a753de68368662cbbb8f88558e2c877d3886ac12b30953fb8ed335/murmurhash-1.0.15-cp310-cp310-win_arm64.whl", hash = "sha256:8a181494b5f03ba831f9a13f2de3aab9ef591e508e57239043d65c5c592f5837", size = 23270, upload-time = "2025-11-14T09:50:01.99Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ca/77d3e69924a8eb4508bb4f0ad34e46adbeedeb93616a71080e61e53dad71/murmurhash-1.0.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f32307fb9347680bb4fe1cbef6362fb39bd994f1b59abd8c09ca174e44199081", size = 27397, upload-time = "2025-11-14T09:50:03.077Z" }, + { url = "https://files.pythonhosted.org/packages/e6/53/a936f577d35b245d47b310f29e5e9f09fcac776c8c992f1ab51a9fb0cee2/murmurhash-1.0.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:539d8405885d1d19c005f3a2313b47e8e54b0ee89915eb8dfbb430b194328e6c", size = 27692, upload-time = "2025-11-14T09:50:04.144Z" }, + { url = "https://files.pythonhosted.org/packages/4d/64/5f8cfd1fd9cbeb43fcff96672f5bd9e7e1598d1c970f808ecd915490dc20/murmurhash-1.0.15-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c4cd739a00f5a4602201b74568ddabae46ec304719d9be752fd8f534a9464b5e", size = 128396, upload-time = "2025-11-14T09:50:05.268Z" }, + { url = "https://files.pythonhosted.org/packages/ac/10/d9ce29d559a75db0d8a3f13ea12c7f541ec9de2afca38dc70418b890eedb/murmurhash-1.0.15-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:44d211bcc3ec203c47dac06f48ee871093fcbdffa6652a6cc5ea7180306680a8", size = 128687, upload-time = "2025-11-14T09:50:06.527Z" }, + { url = "https://files.pythonhosted.org/packages/48/cd/dc97ab7e68cdfa1537a56e36dbc846c5a66701cc39ecee2d4399fe61996c/murmurhash-1.0.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f9bf47101354fb1dc4b2e313192566f04ba295c28a37e2f71c692759acc1ba3c", size = 128198, upload-time = "2025-11-14T09:50:08.062Z" }, + { url = "https://files.pythonhosted.org/packages/53/73/32f2aaa22c1e4afae337106baf0c938abf36a6cc879cfee83a00461bbbf7/murmurhash-1.0.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c69b4d3bcd6233782a78907fe10b9b7a796bdc5d28060cf097d067bec280a5d", size = 127214, upload-time = "2025-11-14T09:50:09.265Z" }, + { url = "https://files.pythonhosted.org/packages/82/ed/812103a7f353eba2d83655b08205e13a38c93b4db0692f94756e1eb44516/murmurhash-1.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:e43a69496342ce530bdd670264cb7c8f45490b296e4764c837ce577e3c7ebd53", size = 25241, upload-time = "2025-11-14T09:50:10.373Z" }, + { url = "https://files.pythonhosted.org/packages/eb/5f/2c511bdd28f7c24da37a00116ffd0432b65669d098f0d0260c66ac0ffdc2/murmurhash-1.0.15-cp311-cp311-win_arm64.whl", hash = "sha256:f3e99a6ee36ef5372df5f138e3d9c801420776d3641a34a49e5c2555f44edba7", size = 23216, upload-time = "2025-11-14T09:50:11.651Z" }, + { url = "https://files.pythonhosted.org/packages/b6/46/be8522d3456fdccf1b8b049c6d82e7a3c1114c4fc2cfe14b04cba4b3e701/murmurhash-1.0.15-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d37e3ae44746bca80b1a917c2ea625cf216913564ed43f69d2888e5df97db0cb", size = 27884, upload-time = "2025-11-14T09:50:13.133Z" }, + { url = "https://files.pythonhosted.org/packages/ed/cc/630449bf4f6178d7daf948ce46ad00b25d279065fc30abd8d706be3d87e0/murmurhash-1.0.15-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0861cb11039409eaf46878456b7d985ef17b6b484103a6fc367b2ecec846891d", size = 27855, upload-time = "2025-11-14T09:50:14.859Z" }, + { url = "https://files.pythonhosted.org/packages/ff/30/ea8f601a9bf44db99468696efd59eb9cff1157cd55cb586d67116697583f/murmurhash-1.0.15-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5a301decfaccfec70fe55cb01dde2a012c3014a874542eaa7cc73477bb749616", size = 134088, upload-time = "2025-11-14T09:50:15.958Z" }, + { url = "https://files.pythonhosted.org/packages/c9/de/c40ce8c0877d406691e735b8d6e9c815f36a82b499d358313db5dbe219d7/murmurhash-1.0.15-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:32c6fde7bd7e9407003370a07b5f4addacabe1556ad3dc2cac246b7a2bba3400", size = 133978, upload-time = "2025-11-14T09:50:17.572Z" }, + { url = "https://files.pythonhosted.org/packages/47/84/bd49963ecd84ebab2fe66595e2d1ed41d5e8b5153af5dc930f0bd827007c/murmurhash-1.0.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d8b43a7011540dc3c7ce66f2134df9732e2bc3bbb4a35f6458bc755e48bde26", size = 132956, upload-time = "2025-11-14T09:50:18.742Z" }, + { url = "https://files.pythonhosted.org/packages/4f/7c/2530769c545074417c862583f05f4245644599f1e9ff619b3dfe2969aafc/murmurhash-1.0.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:43bf4541892ecd95963fcd307bf1c575fc0fee1682f41c93007adee71ca2bb40", size = 134184, upload-time = "2025-11-14T09:50:19.941Z" }, + { url = "https://files.pythonhosted.org/packages/84/a4/b249b042f5afe34d14ada2dc4afc777e883c15863296756179652e081c44/murmurhash-1.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:f4ac15a2089dc42e6eb0966622d42d2521590a12c92480aafecf34c085302cca", size = 25647, upload-time = "2025-11-14T09:50:21.049Z" }, + { url = "https://files.pythonhosted.org/packages/13/bf/028179259aebc18fd4ba5cae2601d1d47517427a537ab44336446431a215/murmurhash-1.0.15-cp312-cp312-win_arm64.whl", hash = "sha256:4a70ca4ae19e600d9be3da64d00710e79dde388a4d162f22078d64844d0ebdda", size = 23338, upload-time = "2025-11-14T09:50:22.359Z" }, + { url = "https://files.pythonhosted.org/packages/29/2f/ba300b5f04dae0409202d6285668b8a9d3ade43a846abee3ef611cb388d5/murmurhash-1.0.15-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fe50dc70e52786759358fd1471e309b94dddfffb9320d9dfea233c7684c894ba", size = 27861, upload-time = "2025-11-14T09:50:23.804Z" }, + { url = "https://files.pythonhosted.org/packages/34/02/29c19d268e6f4ea1ed2a462c901eed1ed35b454e2cbc57da592fad663ac6/murmurhash-1.0.15-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1349a7c23f6092e7998ddc5bd28546cc31a595afc61e9fdb3afc423feec3d7ad", size = 27840, upload-time = "2025-11-14T09:50:25.146Z" }, + { url = "https://files.pythonhosted.org/packages/e2/63/58e2de2b5232cd294c64092688c422196e74f9fa8b3958bdf02d33df24b9/murmurhash-1.0.15-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b3ba6d05de2613535b5a9227d4ad8ef40a540465f64660d4a8800634ae10e04f", size = 133080, upload-time = "2025-11-14T09:50:26.566Z" }, + { url = "https://files.pythonhosted.org/packages/aa/9a/d13e2e9f8ba1ced06840921a50f7cece0a475453284158a3018b72679761/murmurhash-1.0.15-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fa1b70b3cc2801ab44179c65827bbd12009c68b34e9d9ce7125b6a0bd35af63c", size = 132648, upload-time = "2025-11-14T09:50:27.788Z" }, + { url = "https://files.pythonhosted.org/packages/b2/e1/47994f1813fa205c84977b0ff51ae6709f8539af052c7491a5f863d82bdc/murmurhash-1.0.15-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:213d710fb6f4ef3bc11abbfad0fa94a75ffb675b7dc158c123471e5de869f9af", size = 131502, upload-time = "2025-11-14T09:50:29.339Z" }, + { url = "https://files.pythonhosted.org/packages/b9/ea/90c1fd00b4aeb704fb5e84cd666b33ffd7f245155048071ffbb51d2bb57d/murmurhash-1.0.15-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b65a5c4e7f5d71f7ccac2d2b60bdf7092d7976270878cfec59d5a66a533db823", size = 132736, upload-time = "2025-11-14T09:50:30.545Z" }, + { url = "https://files.pythonhosted.org/packages/00/db/da73462dbfa77f6433b128d2120ba7ba300f8c06dc4f4e022c38d240a5f5/murmurhash-1.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:9aba94c5d841e1904cd110e94ceb7f49cfb60a874bbfb27e0373622998fb7c7c", size = 25682, upload-time = "2025-11-14T09:50:31.624Z" }, + { url = "https://files.pythonhosted.org/packages/bb/83/032729ef14971b938fbef41ee125fc8800020ee229bd35178b6ede8ee934/murmurhash-1.0.15-cp313-cp313-win_arm64.whl", hash = "sha256:263807eca40d08c7b702413e45cca75ecb5883aa337237dc5addb660f1483378", size = 23370, upload-time = "2025-11-14T09:50:33.264Z" }, + { url = "https://files.pythonhosted.org/packages/10/83/7547d9205e9bd2f8e5dfd0b682cc9277594f98909f228eb359489baec1df/murmurhash-1.0.15-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:694fd42a74b7ce257169d14c24aa616aa6cd4ccf8abe50eca0557e08da99d055", size = 29955, upload-time = "2025-11-14T09:50:34.488Z" }, + { url = "https://files.pythonhosted.org/packages/b7/c7/3afd5de7a5b3ae07fe2d3a3271b327ee1489c58ba2b2f2159bd31a25edb9/murmurhash-1.0.15-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a2ea4546ba426390beff3cd10db8f0152fdc9072c4f2583ec7d8aa9f3e4ac070", size = 30108, upload-time = "2025-11-14T09:50:35.53Z" }, + { url = "https://files.pythonhosted.org/packages/02/69/d6637ee67d78ebb2538c00411f28ea5c154886bbe1db16c49435a8a4ab16/murmurhash-1.0.15-cp313-cp313t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:34e5a91139c40b10f98d0b297907f5d5267b4b1b2e5dd2eb74a021824f751b98", size = 164054, upload-time = "2025-11-14T09:50:36.591Z" }, + { url = "https://files.pythonhosted.org/packages/ab/4c/89e590165b4c7da6bf941441212a721a270195332d3aacfdfdf527d466ca/murmurhash-1.0.15-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:dc35606868a5961cf42e79314ca0bddf5a400ce377b14d83192057928d6252ec", size = 168153, upload-time = "2025-11-14T09:50:37.856Z" }, + { url = "https://files.pythonhosted.org/packages/07/7a/95c42df0c21d2e413b9fcd17317a7587351daeb264dc29c6aec1fdbd26f8/murmurhash-1.0.15-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:43cc6ac3b91ca0f7a5ae9c063ba4d6c26972c97fd7c25280ecc666413e4c5535", size = 164345, upload-time = "2025-11-14T09:50:39.346Z" }, + { url = "https://files.pythonhosted.org/packages/d0/22/9d02c880a88b83bb3ce7d6a38fb727373ab78d82e5f3d8d9fc5612219f90/murmurhash-1.0.15-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:847d712136cb462f0e4bd6229ee2d9eb996d8854eb8312dff3d20c8f5181fda5", size = 161990, upload-time = "2025-11-14T09:50:40.689Z" }, + { url = "https://files.pythonhosted.org/packages/9a/e3/750232524e0dc262e8dcede6536dafc766faadd9a52f1d23746b02948ad8/murmurhash-1.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:2680851af6901dbe66cc4aa7ef8e263de47e6e1b425ae324caa571bdf18f8d58", size = 28812, upload-time = "2025-11-14T09:50:41.971Z" }, + { url = "https://files.pythonhosted.org/packages/ff/89/4ad9d215ef6ade89f27a72dc4e86b98ef1a43534cc3e6a6900a362a0bf0a/murmurhash-1.0.15-cp313-cp313t-win_arm64.whl", hash = "sha256:189a8de4d657b5da9efd66601b0636330b08262b3a55431f2379097c986995d0", size = 25398, upload-time = "2025-11-14T09:50:43.023Z" }, ] [[package]] @@ -2329,51 +2379,51 @@ dependencies = [ { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f5/db/4efed9504bc01309ab9c2da7e352cc223569f05478012b5d9ece38fd44d2/mypy-1.19.1.tar.gz", hash = "sha256:19d88bb05303fe63f71dd2c6270daca27cb9401c4ca8255fe50d1d920e0eb9ba", size = 3582404, upload_time = "2025-12-15T05:03:48.42Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/63/e499890d8e39b1ff2df4c0c6ce5d371b6844ee22b8250687a99fd2f657a8/mypy-1.19.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f05aa3d375b385734388e844bc01733bd33c644ab48e9684faa54e5389775ec", size = 13101333, upload_time = "2025-12-15T05:03:03.28Z" }, - { url = "https://files.pythonhosted.org/packages/72/4b/095626fc136fba96effc4fd4a82b41d688ab92124f8c4f7564bffe5cf1b0/mypy-1.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:022ea7279374af1a5d78dfcab853fe6a536eebfda4b59deab53cd21f6cd9f00b", size = 12164102, upload_time = "2025-12-15T05:02:33.611Z" }, - { url = "https://files.pythonhosted.org/packages/0c/5b/952928dd081bf88a83a5ccd49aaecfcd18fd0d2710c7ff07b8fb6f7032b9/mypy-1.19.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee4c11e460685c3e0c64a4c5de82ae143622410950d6be863303a1c4ba0e36d6", size = 12765799, upload_time = "2025-12-15T05:03:28.44Z" }, - { url = "https://files.pythonhosted.org/packages/2a/0d/93c2e4a287f74ef11a66fb6d49c7a9f05e47b0a4399040e6719b57f500d2/mypy-1.19.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de759aafbae8763283b2ee5869c7255391fbc4de3ff171f8f030b5ec48381b74", size = 13522149, upload_time = "2025-12-15T05:02:36.011Z" }, - { url = "https://files.pythonhosted.org/packages/7b/0e/33a294b56aaad2b338d203e3a1d8b453637ac36cb278b45005e0901cf148/mypy-1.19.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ab43590f9cd5108f41aacf9fca31841142c786827a74ab7cc8a2eacb634e09a1", size = 13810105, upload_time = "2025-12-15T05:02:40.327Z" }, - { url = "https://files.pythonhosted.org/packages/0e/fd/3e82603a0cb66b67c5e7abababce6bf1a929ddf67bf445e652684af5c5a0/mypy-1.19.1-cp310-cp310-win_amd64.whl", hash = "sha256:2899753e2f61e571b3971747e302d5f420c3fd09650e1951e99f823bc3089dac", size = 10057200, upload_time = "2025-12-15T05:02:51.012Z" }, - { url = "https://files.pythonhosted.org/packages/ef/47/6b3ebabd5474d9cdc170d1342fbf9dddc1b0ec13ec90bf9004ee6f391c31/mypy-1.19.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d8dfc6ab58ca7dda47d9237349157500468e404b17213d44fc1cb77bce532288", size = 13028539, upload_time = "2025-12-15T05:03:44.129Z" }, - { url = "https://files.pythonhosted.org/packages/5c/a6/ac7c7a88a3c9c54334f53a941b765e6ec6c4ebd65d3fe8cdcfbe0d0fd7db/mypy-1.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e3f276d8493c3c97930e354b2595a44a21348b320d859fb4a2b9f66da9ed27ab", size = 12083163, upload_time = "2025-12-15T05:03:37.679Z" }, - { url = "https://files.pythonhosted.org/packages/67/af/3afa9cf880aa4a2c803798ac24f1d11ef72a0c8079689fac5cfd815e2830/mypy-1.19.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2abb24cf3f17864770d18d673c85235ba52456b36a06b6afc1e07c1fdcd3d0e6", size = 12687629, upload_time = "2025-12-15T05:02:31.526Z" }, - { url = "https://files.pythonhosted.org/packages/2d/46/20f8a7114a56484ab268b0ab372461cb3a8f7deed31ea96b83a4e4cfcfca/mypy-1.19.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a009ffa5a621762d0c926a078c2d639104becab69e79538a494bcccb62cc0331", size = 13436933, upload_time = "2025-12-15T05:03:15.606Z" }, - { url = "https://files.pythonhosted.org/packages/5b/f8/33b291ea85050a21f15da910002460f1f445f8007adb29230f0adea279cb/mypy-1.19.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f7cee03c9a2e2ee26ec07479f38ea9c884e301d42c6d43a19d20fb014e3ba925", size = 13661754, upload_time = "2025-12-15T05:02:26.731Z" }, - { url = "https://files.pythonhosted.org/packages/fd/a3/47cbd4e85bec4335a9cd80cf67dbc02be21b5d4c9c23ad6b95d6c5196bac/mypy-1.19.1-cp311-cp311-win_amd64.whl", hash = "sha256:4b84a7a18f41e167f7995200a1d07a4a6810e89d29859df936f1c3923d263042", size = 10055772, upload_time = "2025-12-15T05:03:26.179Z" }, - { url = "https://files.pythonhosted.org/packages/06/8a/19bfae96f6615aa8a0604915512e0289b1fad33d5909bf7244f02935d33a/mypy-1.19.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a8174a03289288c1f6c46d55cef02379b478bfbc8e358e02047487cad44c6ca1", size = 13206053, upload_time = "2025-12-15T05:03:46.622Z" }, - { url = "https://files.pythonhosted.org/packages/a5/34/3e63879ab041602154ba2a9f99817bb0c85c4df19a23a1443c8986e4d565/mypy-1.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffcebe56eb09ff0c0885e750036a095e23793ba6c2e894e7e63f6d89ad51f22e", size = 12219134, upload_time = "2025-12-15T05:03:24.367Z" }, - { url = "https://files.pythonhosted.org/packages/89/cc/2db6f0e95366b630364e09845672dbee0cbf0bbe753a204b29a944967cd9/mypy-1.19.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b64d987153888790bcdb03a6473d321820597ab8dd9243b27a92153c4fa50fd2", size = 12731616, upload_time = "2025-12-15T05:02:44.725Z" }, - { url = "https://files.pythonhosted.org/packages/00/be/dd56c1fd4807bc1eba1cf18b2a850d0de7bacb55e158755eb79f77c41f8e/mypy-1.19.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c35d298c2c4bba75feb2195655dfea8124d855dfd7343bf8b8c055421eaf0cf8", size = 13620847, upload_time = "2025-12-15T05:03:39.633Z" }, - { url = "https://files.pythonhosted.org/packages/6d/42/332951aae42b79329f743bf1da088cd75d8d4d9acc18fbcbd84f26c1af4e/mypy-1.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:34c81968774648ab5ac09c29a375fdede03ba253f8f8287847bd480782f73a6a", size = 13834976, upload_time = "2025-12-15T05:03:08.786Z" }, - { url = "https://files.pythonhosted.org/packages/6f/63/e7493e5f90e1e085c562bb06e2eb32cae27c5057b9653348d38b47daaecc/mypy-1.19.1-cp312-cp312-win_amd64.whl", hash = "sha256:b10e7c2cd7870ba4ad9b2d8a6102eb5ffc1f16ca35e3de6bfa390c1113029d13", size = 10118104, upload_time = "2025-12-15T05:03:10.834Z" }, - { url = "https://files.pythonhosted.org/packages/de/9f/a6abae693f7a0c697dbb435aac52e958dc8da44e92e08ba88d2e42326176/mypy-1.19.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e3157c7594ff2ef1634ee058aafc56a82db665c9438fd41b390f3bde1ab12250", size = 13201927, upload_time = "2025-12-15T05:02:29.138Z" }, - { url = "https://files.pythonhosted.org/packages/9a/a4/45c35ccf6e1c65afc23a069f50e2c66f46bd3798cbe0d680c12d12935caa/mypy-1.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdb12f69bcc02700c2b47e070238f42cb87f18c0bc1fc4cdb4fb2bc5fd7a3b8b", size = 12206730, upload_time = "2025-12-15T05:03:01.325Z" }, - { url = "https://files.pythonhosted.org/packages/05/bb/cdcf89678e26b187650512620eec8368fded4cfd99cfcb431e4cdfd19dec/mypy-1.19.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f859fb09d9583a985be9a493d5cfc5515b56b08f7447759a0c5deaf68d80506e", size = 12724581, upload_time = "2025-12-15T05:03:20.087Z" }, - { url = "https://files.pythonhosted.org/packages/d1/32/dd260d52babf67bad8e6770f8e1102021877ce0edea106e72df5626bb0ec/mypy-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9a6538e0415310aad77cb94004ca6482330fece18036b5f360b62c45814c4ef", size = 13616252, upload_time = "2025-12-15T05:02:49.036Z" }, - { url = "https://files.pythonhosted.org/packages/71/d0/5e60a9d2e3bd48432ae2b454b7ef2b62a960ab51292b1eda2a95edd78198/mypy-1.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:da4869fc5e7f62a88f3fe0b5c919d1d9f7ea3cef92d3689de2823fd27e40aa75", size = 13840848, upload_time = "2025-12-15T05:02:55.95Z" }, - { url = "https://files.pythonhosted.org/packages/98/76/d32051fa65ecf6cc8c6610956473abdc9b4c43301107476ac03559507843/mypy-1.19.1-cp313-cp313-win_amd64.whl", hash = "sha256:016f2246209095e8eda7538944daa1d60e1e8134d98983b9fc1e92c1fc0cb8dd", size = 10135510, upload_time = "2025-12-15T05:02:58.438Z" }, - { url = "https://files.pythonhosted.org/packages/8d/f4/4ce9a05ce5ded1de3ec1c1d96cf9f9504a04e54ce0ed55cfa38619a32b8d/mypy-1.19.1-py3-none-any.whl", hash = "sha256:f1235f5ea01b7db5468d53ece6aaddf1ad0b88d9e7462b86ef96fe04995d7247", size = 2471239, upload_time = "2025-12-15T05:03:07.248Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/f5/db/4efed9504bc01309ab9c2da7e352cc223569f05478012b5d9ece38fd44d2/mypy-1.19.1.tar.gz", hash = "sha256:19d88bb05303fe63f71dd2c6270daca27cb9401c4ca8255fe50d1d920e0eb9ba", size = 3582404, upload-time = "2025-12-15T05:03:48.42Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/63/e499890d8e39b1ff2df4c0c6ce5d371b6844ee22b8250687a99fd2f657a8/mypy-1.19.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f05aa3d375b385734388e844bc01733bd33c644ab48e9684faa54e5389775ec", size = 13101333, upload-time = "2025-12-15T05:03:03.28Z" }, + { url = "https://files.pythonhosted.org/packages/72/4b/095626fc136fba96effc4fd4a82b41d688ab92124f8c4f7564bffe5cf1b0/mypy-1.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:022ea7279374af1a5d78dfcab853fe6a536eebfda4b59deab53cd21f6cd9f00b", size = 12164102, upload-time = "2025-12-15T05:02:33.611Z" }, + { url = "https://files.pythonhosted.org/packages/0c/5b/952928dd081bf88a83a5ccd49aaecfcd18fd0d2710c7ff07b8fb6f7032b9/mypy-1.19.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee4c11e460685c3e0c64a4c5de82ae143622410950d6be863303a1c4ba0e36d6", size = 12765799, upload-time = "2025-12-15T05:03:28.44Z" }, + { url = "https://files.pythonhosted.org/packages/2a/0d/93c2e4a287f74ef11a66fb6d49c7a9f05e47b0a4399040e6719b57f500d2/mypy-1.19.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de759aafbae8763283b2ee5869c7255391fbc4de3ff171f8f030b5ec48381b74", size = 13522149, upload-time = "2025-12-15T05:02:36.011Z" }, + { url = "https://files.pythonhosted.org/packages/7b/0e/33a294b56aaad2b338d203e3a1d8b453637ac36cb278b45005e0901cf148/mypy-1.19.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ab43590f9cd5108f41aacf9fca31841142c786827a74ab7cc8a2eacb634e09a1", size = 13810105, upload-time = "2025-12-15T05:02:40.327Z" }, + { url = "https://files.pythonhosted.org/packages/0e/fd/3e82603a0cb66b67c5e7abababce6bf1a929ddf67bf445e652684af5c5a0/mypy-1.19.1-cp310-cp310-win_amd64.whl", hash = "sha256:2899753e2f61e571b3971747e302d5f420c3fd09650e1951e99f823bc3089dac", size = 10057200, upload-time = "2025-12-15T05:02:51.012Z" }, + { url = "https://files.pythonhosted.org/packages/ef/47/6b3ebabd5474d9cdc170d1342fbf9dddc1b0ec13ec90bf9004ee6f391c31/mypy-1.19.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d8dfc6ab58ca7dda47d9237349157500468e404b17213d44fc1cb77bce532288", size = 13028539, upload-time = "2025-12-15T05:03:44.129Z" }, + { url = "https://files.pythonhosted.org/packages/5c/a6/ac7c7a88a3c9c54334f53a941b765e6ec6c4ebd65d3fe8cdcfbe0d0fd7db/mypy-1.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e3f276d8493c3c97930e354b2595a44a21348b320d859fb4a2b9f66da9ed27ab", size = 12083163, upload-time = "2025-12-15T05:03:37.679Z" }, + { url = "https://files.pythonhosted.org/packages/67/af/3afa9cf880aa4a2c803798ac24f1d11ef72a0c8079689fac5cfd815e2830/mypy-1.19.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2abb24cf3f17864770d18d673c85235ba52456b36a06b6afc1e07c1fdcd3d0e6", size = 12687629, upload-time = "2025-12-15T05:02:31.526Z" }, + { url = "https://files.pythonhosted.org/packages/2d/46/20f8a7114a56484ab268b0ab372461cb3a8f7deed31ea96b83a4e4cfcfca/mypy-1.19.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a009ffa5a621762d0c926a078c2d639104becab69e79538a494bcccb62cc0331", size = 13436933, upload-time = "2025-12-15T05:03:15.606Z" }, + { url = "https://files.pythonhosted.org/packages/5b/f8/33b291ea85050a21f15da910002460f1f445f8007adb29230f0adea279cb/mypy-1.19.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f7cee03c9a2e2ee26ec07479f38ea9c884e301d42c6d43a19d20fb014e3ba925", size = 13661754, upload-time = "2025-12-15T05:02:26.731Z" }, + { url = "https://files.pythonhosted.org/packages/fd/a3/47cbd4e85bec4335a9cd80cf67dbc02be21b5d4c9c23ad6b95d6c5196bac/mypy-1.19.1-cp311-cp311-win_amd64.whl", hash = "sha256:4b84a7a18f41e167f7995200a1d07a4a6810e89d29859df936f1c3923d263042", size = 10055772, upload-time = "2025-12-15T05:03:26.179Z" }, + { url = "https://files.pythonhosted.org/packages/06/8a/19bfae96f6615aa8a0604915512e0289b1fad33d5909bf7244f02935d33a/mypy-1.19.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a8174a03289288c1f6c46d55cef02379b478bfbc8e358e02047487cad44c6ca1", size = 13206053, upload-time = "2025-12-15T05:03:46.622Z" }, + { url = "https://files.pythonhosted.org/packages/a5/34/3e63879ab041602154ba2a9f99817bb0c85c4df19a23a1443c8986e4d565/mypy-1.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffcebe56eb09ff0c0885e750036a095e23793ba6c2e894e7e63f6d89ad51f22e", size = 12219134, upload-time = "2025-12-15T05:03:24.367Z" }, + { url = "https://files.pythonhosted.org/packages/89/cc/2db6f0e95366b630364e09845672dbee0cbf0bbe753a204b29a944967cd9/mypy-1.19.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b64d987153888790bcdb03a6473d321820597ab8dd9243b27a92153c4fa50fd2", size = 12731616, upload-time = "2025-12-15T05:02:44.725Z" }, + { url = "https://files.pythonhosted.org/packages/00/be/dd56c1fd4807bc1eba1cf18b2a850d0de7bacb55e158755eb79f77c41f8e/mypy-1.19.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c35d298c2c4bba75feb2195655dfea8124d855dfd7343bf8b8c055421eaf0cf8", size = 13620847, upload-time = "2025-12-15T05:03:39.633Z" }, + { url = "https://files.pythonhosted.org/packages/6d/42/332951aae42b79329f743bf1da088cd75d8d4d9acc18fbcbd84f26c1af4e/mypy-1.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:34c81968774648ab5ac09c29a375fdede03ba253f8f8287847bd480782f73a6a", size = 13834976, upload-time = "2025-12-15T05:03:08.786Z" }, + { url = "https://files.pythonhosted.org/packages/6f/63/e7493e5f90e1e085c562bb06e2eb32cae27c5057b9653348d38b47daaecc/mypy-1.19.1-cp312-cp312-win_amd64.whl", hash = "sha256:b10e7c2cd7870ba4ad9b2d8a6102eb5ffc1f16ca35e3de6bfa390c1113029d13", size = 10118104, upload-time = "2025-12-15T05:03:10.834Z" }, + { url = "https://files.pythonhosted.org/packages/de/9f/a6abae693f7a0c697dbb435aac52e958dc8da44e92e08ba88d2e42326176/mypy-1.19.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e3157c7594ff2ef1634ee058aafc56a82db665c9438fd41b390f3bde1ab12250", size = 13201927, upload-time = "2025-12-15T05:02:29.138Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a4/45c35ccf6e1c65afc23a069f50e2c66f46bd3798cbe0d680c12d12935caa/mypy-1.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdb12f69bcc02700c2b47e070238f42cb87f18c0bc1fc4cdb4fb2bc5fd7a3b8b", size = 12206730, upload-time = "2025-12-15T05:03:01.325Z" }, + { url = "https://files.pythonhosted.org/packages/05/bb/cdcf89678e26b187650512620eec8368fded4cfd99cfcb431e4cdfd19dec/mypy-1.19.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f859fb09d9583a985be9a493d5cfc5515b56b08f7447759a0c5deaf68d80506e", size = 12724581, upload-time = "2025-12-15T05:03:20.087Z" }, + { url = "https://files.pythonhosted.org/packages/d1/32/dd260d52babf67bad8e6770f8e1102021877ce0edea106e72df5626bb0ec/mypy-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9a6538e0415310aad77cb94004ca6482330fece18036b5f360b62c45814c4ef", size = 13616252, upload-time = "2025-12-15T05:02:49.036Z" }, + { url = "https://files.pythonhosted.org/packages/71/d0/5e60a9d2e3bd48432ae2b454b7ef2b62a960ab51292b1eda2a95edd78198/mypy-1.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:da4869fc5e7f62a88f3fe0b5c919d1d9f7ea3cef92d3689de2823fd27e40aa75", size = 13840848, upload-time = "2025-12-15T05:02:55.95Z" }, + { url = "https://files.pythonhosted.org/packages/98/76/d32051fa65ecf6cc8c6610956473abdc9b4c43301107476ac03559507843/mypy-1.19.1-cp313-cp313-win_amd64.whl", hash = "sha256:016f2246209095e8eda7538944daa1d60e1e8134d98983b9fc1e92c1fc0cb8dd", size = 10135510, upload-time = "2025-12-15T05:02:58.438Z" }, + { url = "https://files.pythonhosted.org/packages/8d/f4/4ce9a05ce5ded1de3ec1c1d96cf9f9504a04e54ce0ed55cfa38619a32b8d/mypy-1.19.1-py3-none-any.whl", hash = "sha256:f1235f5ea01b7db5468d53ece6aaddf1ad0b88d9e7462b86ef96fe04995d7247", size = 2471239, upload-time = "2025-12-15T05:03:07.248Z" }, ] [[package]] name = "mypy-extensions" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload_time = "2025-04-22T14:54:24.164Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload_time = "2025-04-22T14:54:22.983Z" }, + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, ] [[package]] name = "narwhals" version = "2.23.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/ac/66ed1fc6e38a0c0f330627ec5c5d597990d6159b6712b82af0ad2c65f06c/narwhals-2.23.0.tar.gz", hash = "sha256:13e7ff5b4bb4a2f77b907c2e4d8a76e273dfc1323a3c997440a2f9fd26aed408", size = 656209, upload_time = "2026-07-01T11:21:53.278Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/ac/66ed1fc6e38a0c0f330627ec5c5d597990d6159b6712b82af0ad2c65f06c/narwhals-2.23.0.tar.gz", hash = "sha256:13e7ff5b4bb4a2f77b907c2e4d8a76e273dfc1323a3c997440a2f9fd26aed408", size = 656209, upload-time = "2026-07-01T11:21:53.278Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/4e/afc8c31605cb8be1d3bb4438c4d979daa104dab6306cd2b87abe9c3a7299/narwhals-2.23.0-py3-none-any.whl", hash = "sha256:769e7b9ab102c93d8fa019f6b4cd1a657909b04a20bf6210e5a35aae06814ae9", size = 458938, upload_time = "2026-07-01T11:21:51.677Z" }, + { url = "https://files.pythonhosted.org/packages/f4/4e/afc8c31605cb8be1d3bb4438c4d979daa104dab6306cd2b87abe9c3a7299/narwhals-2.23.0-py3-none-any.whl", hash = "sha256:769e7b9ab102c93d8fa019f6b4cd1a657909b04a20bf6210e5a35aae06814ae9", size = 458938, upload-time = "2026-07-01T11:21:51.677Z" }, ] [[package]] @@ -2384,9 +2434,9 @@ resolution-markers = [ "python_full_version < '3.11' and sys_platform != 'darwin'", "python_full_version < '3.11' and sys_platform == 'darwin'", ] -sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload_time = "2024-10-21T12:39:38.695Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263, upload_time = "2024-10-21T12:39:36.247Z" }, + { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263, upload-time = "2024-10-21T12:39:36.247Z" }, ] [[package]] @@ -2403,18 +2453,18 @@ resolution-markers = [ "python_full_version >= '3.13' and sys_platform == 'darwin'", "python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'darwin'", ] -sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025, upload_time = "2025-12-08T17:02:39.908Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025, upload-time = "2025-12-08T17:02:39.908Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload_time = "2025-12-08T17:02:38.159Z" }, + { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" }, ] [[package]] name = "nodeenv" version = "1.10.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/24/bf/d1bda4f6168e0b2e9e5958945e01910052158313224ada5ce1fb2e1113b8/nodeenv-1.10.0.tar.gz", hash = "sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb", size = 55611, upload_time = "2025-12-20T14:08:54.006Z" } +sdist = { url = "https://files.pythonhosted.org/packages/24/bf/d1bda4f6168e0b2e9e5958945e01910052158313224ada5ce1fb2e1113b8/nodeenv-1.10.0.tar.gz", hash = "sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb", size = 55611, upload-time = "2025-12-20T14:08:54.006Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl", hash = "sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827", size = 23438, upload_time = "2025-12-20T14:08:52.782Z" }, + { url = "https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl", hash = "sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827", size = 23438, upload-time = "2025-12-20T14:08:52.782Z" }, ] [[package]] @@ -2425,62 +2475,62 @@ resolution-markers = [ "python_full_version < '3.11' and sys_platform != 'darwin'", "python_full_version < '3.11' and sys_platform == 'darwin'", ] -sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload_time = "2025-05-17T22:38:04.611Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload_time = "2025-05-17T21:27:58.555Z" }, - { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload_time = "2025-05-17T21:28:21.406Z" }, - { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload_time = "2025-05-17T21:28:30.931Z" }, - { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload_time = "2025-05-17T21:28:41.613Z" }, - { url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320, upload_time = "2025-05-17T21:29:02.78Z" }, - { url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050, upload_time = "2025-05-17T21:29:27.675Z" }, - { url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034, upload_time = "2025-05-17T21:29:51.102Z" }, - { url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185, upload_time = "2025-05-17T21:30:18.703Z" }, - { url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149, upload_time = "2025-05-17T21:30:29.788Z" }, - { url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620, upload_time = "2025-05-17T21:30:48.994Z" }, - { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload_time = "2025-05-17T21:31:19.36Z" }, - { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload_time = "2025-05-17T21:31:41.087Z" }, - { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload_time = "2025-05-17T21:31:50.072Z" }, - { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload_time = "2025-05-17T21:32:01.712Z" }, - { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload_time = "2025-05-17T21:32:23.332Z" }, - { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload_time = "2025-05-17T21:32:47.991Z" }, - { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload_time = "2025-05-17T21:33:11.728Z" }, - { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload_time = "2025-05-17T21:33:39.139Z" }, - { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload_time = "2025-05-17T21:33:50.273Z" }, - { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload_time = "2025-05-17T21:34:09.135Z" }, - { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload_time = "2025-05-17T21:34:39.648Z" }, - { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload_time = "2025-05-17T21:35:01.241Z" }, - { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload_time = "2025-05-17T21:35:10.622Z" }, - { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload_time = "2025-05-17T21:35:21.414Z" }, - { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload_time = "2025-05-17T21:35:42.174Z" }, - { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload_time = "2025-05-17T21:36:06.711Z" }, - { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload_time = "2025-05-17T21:36:29.965Z" }, - { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload_time = "2025-05-17T21:36:56.883Z" }, - { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload_time = "2025-05-17T21:37:07.368Z" }, - { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload_time = "2025-05-17T21:37:26.213Z" }, - { url = "https://files.pythonhosted.org/packages/f9/5c/6657823f4f594f72b5471f1db1ab12e26e890bb2e41897522d134d2a3e81/numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84", size = 20867828, upload_time = "2025-05-17T21:37:56.699Z" }, - { url = "https://files.pythonhosted.org/packages/dc/9e/14520dc3dadf3c803473bd07e9b2bd1b69bc583cb2497b47000fed2fa92f/numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b", size = 14143006, upload_time = "2025-05-17T21:38:18.291Z" }, - { url = "https://files.pythonhosted.org/packages/4f/06/7e96c57d90bebdce9918412087fc22ca9851cceaf5567a45c1f404480e9e/numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d", size = 5076765, upload_time = "2025-05-17T21:38:27.319Z" }, - { url = "https://files.pythonhosted.org/packages/73/ed/63d920c23b4289fdac96ddbdd6132e9427790977d5457cd132f18e76eae0/numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566", size = 6617736, upload_time = "2025-05-17T21:38:38.141Z" }, - { url = "https://files.pythonhosted.org/packages/85/c5/e19c8f99d83fd377ec8c7e0cf627a8049746da54afc24ef0a0cb73d5dfb5/numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f", size = 14010719, upload_time = "2025-05-17T21:38:58.433Z" }, - { url = "https://files.pythonhosted.org/packages/19/49/4df9123aafa7b539317bf6d342cb6d227e49f7a35b99c287a6109b13dd93/numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f", size = 16526072, upload_time = "2025-05-17T21:39:22.638Z" }, - { url = "https://files.pythonhosted.org/packages/b2/6c/04b5f47f4f32f7c2b0e7260442a8cbcf8168b0e1a41ff1495da42f42a14f/numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868", size = 15503213, upload_time = "2025-05-17T21:39:45.865Z" }, - { url = "https://files.pythonhosted.org/packages/17/0a/5cd92e352c1307640d5b6fec1b2ffb06cd0dabe7d7b8227f97933d378422/numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d", size = 18316632, upload_time = "2025-05-17T21:40:13.331Z" }, - { url = "https://files.pythonhosted.org/packages/f0/3b/5cba2b1d88760ef86596ad0f3d484b1cbff7c115ae2429678465057c5155/numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd", size = 6244532, upload_time = "2025-05-17T21:43:46.099Z" }, - { url = "https://files.pythonhosted.org/packages/cb/3b/d58c12eafcb298d4e6d0d40216866ab15f59e55d148a5658bb3132311fcf/numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c", size = 12610885, upload_time = "2025-05-17T21:44:05.145Z" }, - { url = "https://files.pythonhosted.org/packages/6b/9e/4bf918b818e516322db999ac25d00c75788ddfd2d2ade4fa66f1f38097e1/numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6", size = 20963467, upload_time = "2025-05-17T21:40:44Z" }, - { url = "https://files.pythonhosted.org/packages/61/66/d2de6b291507517ff2e438e13ff7b1e2cdbdb7cb40b3ed475377aece69f9/numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda", size = 14225144, upload_time = "2025-05-17T21:41:05.695Z" }, - { url = "https://files.pythonhosted.org/packages/e4/25/480387655407ead912e28ba3a820bc69af9adf13bcbe40b299d454ec011f/numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40", size = 5200217, upload_time = "2025-05-17T21:41:15.903Z" }, - { url = "https://files.pythonhosted.org/packages/aa/4a/6e313b5108f53dcbf3aca0c0f3e9c92f4c10ce57a0a721851f9785872895/numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8", size = 6712014, upload_time = "2025-05-17T21:41:27.321Z" }, - { url = "https://files.pythonhosted.org/packages/b7/30/172c2d5c4be71fdf476e9de553443cf8e25feddbe185e0bd88b096915bcc/numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f", size = 14077935, upload_time = "2025-05-17T21:41:49.738Z" }, - { url = "https://files.pythonhosted.org/packages/12/fb/9e743f8d4e4d3c710902cf87af3512082ae3d43b945d5d16563f26ec251d/numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa", size = 16600122, upload_time = "2025-05-17T21:42:14.046Z" }, - { url = "https://files.pythonhosted.org/packages/12/75/ee20da0e58d3a66f204f38916757e01e33a9737d0b22373b3eb5a27358f9/numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571", size = 15586143, upload_time = "2025-05-17T21:42:37.464Z" }, - { url = "https://files.pythonhosted.org/packages/76/95/bef5b37f29fc5e739947e9ce5179ad402875633308504a52d188302319c8/numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1", size = 18385260, upload_time = "2025-05-17T21:43:05.189Z" }, - { url = "https://files.pythonhosted.org/packages/09/04/f2f83279d287407cf36a7a8053a5abe7be3622a4363337338f2585e4afda/numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff", size = 6377225, upload_time = "2025-05-17T21:43:16.254Z" }, - { url = "https://files.pythonhosted.org/packages/67/0e/35082d13c09c02c011cf21570543d202ad929d961c02a147493cb0c2bdf5/numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06", size = 12771374, upload_time = "2025-05-17T21:43:35.479Z" }, - { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload_time = "2025-05-17T21:44:35.948Z" }, - { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload_time = "2025-05-17T21:44:47.446Z" }, - { url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476, upload_time = "2025-05-17T21:45:11.871Z" }, - { url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666, upload_time = "2025-05-17T21:45:31.426Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload-time = "2025-05-17T21:27:58.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload-time = "2025-05-17T21:28:21.406Z" }, + { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload-time = "2025-05-17T21:28:30.931Z" }, + { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload-time = "2025-05-17T21:28:41.613Z" }, + { url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320, upload-time = "2025-05-17T21:29:02.78Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050, upload-time = "2025-05-17T21:29:27.675Z" }, + { url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034, upload-time = "2025-05-17T21:29:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185, upload-time = "2025-05-17T21:30:18.703Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149, upload-time = "2025-05-17T21:30:29.788Z" }, + { url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620, upload-time = "2025-05-17T21:30:48.994Z" }, + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, + { url = "https://files.pythonhosted.org/packages/f9/5c/6657823f4f594f72b5471f1db1ab12e26e890bb2e41897522d134d2a3e81/numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84", size = 20867828, upload-time = "2025-05-17T21:37:56.699Z" }, + { url = "https://files.pythonhosted.org/packages/dc/9e/14520dc3dadf3c803473bd07e9b2bd1b69bc583cb2497b47000fed2fa92f/numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b", size = 14143006, upload-time = "2025-05-17T21:38:18.291Z" }, + { url = "https://files.pythonhosted.org/packages/4f/06/7e96c57d90bebdce9918412087fc22ca9851cceaf5567a45c1f404480e9e/numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d", size = 5076765, upload-time = "2025-05-17T21:38:27.319Z" }, + { url = "https://files.pythonhosted.org/packages/73/ed/63d920c23b4289fdac96ddbdd6132e9427790977d5457cd132f18e76eae0/numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566", size = 6617736, upload-time = "2025-05-17T21:38:38.141Z" }, + { url = "https://files.pythonhosted.org/packages/85/c5/e19c8f99d83fd377ec8c7e0cf627a8049746da54afc24ef0a0cb73d5dfb5/numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f", size = 14010719, upload-time = "2025-05-17T21:38:58.433Z" }, + { url = "https://files.pythonhosted.org/packages/19/49/4df9123aafa7b539317bf6d342cb6d227e49f7a35b99c287a6109b13dd93/numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f", size = 16526072, upload-time = "2025-05-17T21:39:22.638Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6c/04b5f47f4f32f7c2b0e7260442a8cbcf8168b0e1a41ff1495da42f42a14f/numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868", size = 15503213, upload-time = "2025-05-17T21:39:45.865Z" }, + { url = "https://files.pythonhosted.org/packages/17/0a/5cd92e352c1307640d5b6fec1b2ffb06cd0dabe7d7b8227f97933d378422/numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d", size = 18316632, upload-time = "2025-05-17T21:40:13.331Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3b/5cba2b1d88760ef86596ad0f3d484b1cbff7c115ae2429678465057c5155/numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd", size = 6244532, upload-time = "2025-05-17T21:43:46.099Z" }, + { url = "https://files.pythonhosted.org/packages/cb/3b/d58c12eafcb298d4e6d0d40216866ab15f59e55d148a5658bb3132311fcf/numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c", size = 12610885, upload-time = "2025-05-17T21:44:05.145Z" }, + { url = "https://files.pythonhosted.org/packages/6b/9e/4bf918b818e516322db999ac25d00c75788ddfd2d2ade4fa66f1f38097e1/numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6", size = 20963467, upload-time = "2025-05-17T21:40:44Z" }, + { url = "https://files.pythonhosted.org/packages/61/66/d2de6b291507517ff2e438e13ff7b1e2cdbdb7cb40b3ed475377aece69f9/numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda", size = 14225144, upload-time = "2025-05-17T21:41:05.695Z" }, + { url = "https://files.pythonhosted.org/packages/e4/25/480387655407ead912e28ba3a820bc69af9adf13bcbe40b299d454ec011f/numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40", size = 5200217, upload-time = "2025-05-17T21:41:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4a/6e313b5108f53dcbf3aca0c0f3e9c92f4c10ce57a0a721851f9785872895/numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8", size = 6712014, upload-time = "2025-05-17T21:41:27.321Z" }, + { url = "https://files.pythonhosted.org/packages/b7/30/172c2d5c4be71fdf476e9de553443cf8e25feddbe185e0bd88b096915bcc/numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f", size = 14077935, upload-time = "2025-05-17T21:41:49.738Z" }, + { url = "https://files.pythonhosted.org/packages/12/fb/9e743f8d4e4d3c710902cf87af3512082ae3d43b945d5d16563f26ec251d/numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa", size = 16600122, upload-time = "2025-05-17T21:42:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/12/75/ee20da0e58d3a66f204f38916757e01e33a9737d0b22373b3eb5a27358f9/numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571", size = 15586143, upload-time = "2025-05-17T21:42:37.464Z" }, + { url = "https://files.pythonhosted.org/packages/76/95/bef5b37f29fc5e739947e9ce5179ad402875633308504a52d188302319c8/numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1", size = 18385260, upload-time = "2025-05-17T21:43:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/09/04/f2f83279d287407cf36a7a8053a5abe7be3622a4363337338f2585e4afda/numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff", size = 6377225, upload-time = "2025-05-17T21:43:16.254Z" }, + { url = "https://files.pythonhosted.org/packages/67/0e/35082d13c09c02c011cf21570543d202ad929d961c02a147493cb0c2bdf5/numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06", size = 12771374, upload-time = "2025-05-17T21:43:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload-time = "2025-05-17T21:44:35.948Z" }, + { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload-time = "2025-05-17T21:44:47.446Z" }, + { url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476, upload-time = "2025-05-17T21:45:11.871Z" }, + { url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666, upload-time = "2025-05-17T21:45:31.426Z" }, ] [[package]] @@ -2497,58 +2547,58 @@ resolution-markers = [ "python_full_version >= '3.13' and sys_platform == 'darwin'", "python_full_version >= '3.11' and python_full_version < '3.13' and sys_platform == 'darwin'", ] -sdist = { url = "https://files.pythonhosted.org/packages/57/fd/0005efbd0af48e55eb3c7208af93f2862d4b1a56cd78e84309a2d959208d/numpy-2.4.2.tar.gz", hash = "sha256:659a6107e31a83c4e33f763942275fd278b21d095094044eb35569e86a21ddae", size = 20723651, upload_time = "2026-01-31T23:13:10.135Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d3/44/71852273146957899753e69986246d6a176061ea183407e95418c2aa4d9a/numpy-2.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e7e88598032542bd49af7c4747541422884219056c268823ef6e5e89851c8825", size = 16955478, upload_time = "2026-01-31T23:10:25.623Z" }, - { url = "https://files.pythonhosted.org/packages/74/41/5d17d4058bd0cd96bcbd4d9ff0fb2e21f52702aab9a72e4a594efa18692f/numpy-2.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7edc794af8b36ca37ef5fcb5e0d128c7e0595c7b96a2318d1badb6fcd8ee86b1", size = 14965467, upload_time = "2026-01-31T23:10:28.186Z" }, - { url = "https://files.pythonhosted.org/packages/49/48/fb1ce8136c19452ed15f033f8aee91d5defe515094e330ce368a0647846f/numpy-2.4.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:6e9f61981ace1360e42737e2bae58b27bf28a1b27e781721047d84bd754d32e7", size = 5475172, upload_time = "2026-01-31T23:10:30.848Z" }, - { url = "https://files.pythonhosted.org/packages/40/a9/3feb49f17bbd1300dd2570432961f5c8a4ffeff1db6f02c7273bd020a4c9/numpy-2.4.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:cb7bbb88aa74908950d979eeaa24dbdf1a865e3c7e45ff0121d8f70387b55f73", size = 6805145, upload_time = "2026-01-31T23:10:32.352Z" }, - { url = "https://files.pythonhosted.org/packages/3f/39/fdf35cbd6d6e2fcad42fcf85ac04a85a0d0fbfbf34b30721c98d602fd70a/numpy-2.4.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4f069069931240b3fc703f1e23df63443dbd6390614c8c44a87d96cd0ec81eb1", size = 15966084, upload_time = "2026-01-31T23:10:34.502Z" }, - { url = "https://files.pythonhosted.org/packages/1b/46/6fa4ea94f1ddf969b2ee941290cca6f1bfac92b53c76ae5f44afe17ceb69/numpy-2.4.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c02ef4401a506fb60b411467ad501e1429a3487abca4664871d9ae0b46c8ba32", size = 16899477, upload_time = "2026-01-31T23:10:37.075Z" }, - { url = "https://files.pythonhosted.org/packages/09/a1/2a424e162b1a14a5bd860a464ab4e07513916a64ab1683fae262f735ccd2/numpy-2.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2653de5c24910e49c2b106499803124dde62a5a1fe0eedeaecf4309a5f639390", size = 17323429, upload_time = "2026-01-31T23:10:39.704Z" }, - { url = "https://files.pythonhosted.org/packages/ce/a2/73014149ff250628df72c58204822ac01d768697913881aacf839ff78680/numpy-2.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1ae241bbfc6ae276f94a170b14785e561cb5e7f626b6688cf076af4110887413", size = 18635109, upload_time = "2026-01-31T23:10:41.924Z" }, - { url = "https://files.pythonhosted.org/packages/6c/0c/73e8be2f1accd56df74abc1c5e18527822067dced5ec0861b5bb882c2ce0/numpy-2.4.2-cp311-cp311-win32.whl", hash = "sha256:df1b10187212b198dd45fa943d8985a3c8cf854aed4923796e0e019e113a1bda", size = 6237915, upload_time = "2026-01-31T23:10:45.26Z" }, - { url = "https://files.pythonhosted.org/packages/76/ae/e0265e0163cf127c24c3969d29f1c4c64551a1e375d95a13d32eab25d364/numpy-2.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:b9c618d56a29c9cb1c4da979e9899be7578d2e0b3c24d52079c166324c9e8695", size = 12607972, upload_time = "2026-01-31T23:10:47.021Z" }, - { url = "https://files.pythonhosted.org/packages/29/a5/c43029af9b8014d6ea157f192652c50042e8911f4300f8f6ed3336bf437f/numpy-2.4.2-cp311-cp311-win_arm64.whl", hash = "sha256:47c5a6ed21d9452b10227e5e8a0e1c22979811cad7dcc19d8e3e2fb8fa03f1a3", size = 10485763, upload_time = "2026-01-31T23:10:50.087Z" }, - { url = "https://files.pythonhosted.org/packages/51/6e/6f394c9c77668153e14d4da83bcc247beb5952f6ead7699a1a2992613bea/numpy-2.4.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:21982668592194c609de53ba4933a7471880ccbaadcc52352694a59ecc860b3a", size = 16667963, upload_time = "2026-01-31T23:10:52.147Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f8/55483431f2b2fd015ae6ed4fe62288823ce908437ed49db5a03d15151678/numpy-2.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40397bda92382fcec844066efb11f13e1c9a3e2a8e8f318fb72ed8b6db9f60f1", size = 14693571, upload_time = "2026-01-31T23:10:54.789Z" }, - { url = "https://files.pythonhosted.org/packages/2f/20/18026832b1845cdc82248208dd929ca14c9d8f2bac391f67440707fff27c/numpy-2.4.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:b3a24467af63c67829bfaa61eecf18d5432d4f11992688537be59ecd6ad32f5e", size = 5203469, upload_time = "2026-01-31T23:10:57.343Z" }, - { url = "https://files.pythonhosted.org/packages/7d/33/2eb97c8a77daaba34eaa3fa7241a14ac5f51c46a6bd5911361b644c4a1e2/numpy-2.4.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:805cc8de9fd6e7a22da5aed858e0ab16be5a4db6c873dde1d7451c541553aa27", size = 6550820, upload_time = "2026-01-31T23:10:59.429Z" }, - { url = "https://files.pythonhosted.org/packages/b1/91/b97fdfd12dc75b02c44e26c6638241cc004d4079a0321a69c62f51470c4c/numpy-2.4.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d82351358ffbcdcd7b686b90742a9b86632d6c1c051016484fa0b326a0a1548", size = 15663067, upload_time = "2026-01-31T23:11:01.291Z" }, - { url = "https://files.pythonhosted.org/packages/f5/c6/a18e59f3f0b8071cc85cbc8d80cd02d68aa9710170b2553a117203d46936/numpy-2.4.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e35d3e0144137d9fdae62912e869136164534d64a169f86438bc9561b6ad49f", size = 16619782, upload_time = "2026-01-31T23:11:03.669Z" }, - { url = "https://files.pythonhosted.org/packages/b7/83/9751502164601a79e18847309f5ceec0b1446d7b6aa12305759b72cf98b2/numpy-2.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adb6ed2ad29b9e15321d167d152ee909ec73395901b70936f029c3bc6d7f4460", size = 17013128, upload_time = "2026-01-31T23:11:05.913Z" }, - { url = "https://files.pythonhosted.org/packages/61/c4/c4066322256ec740acc1c8923a10047818691d2f8aec254798f3dd90f5f2/numpy-2.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8906e71fd8afcb76580404e2a950caef2685df3d2a57fe82a86ac8d33cc007ba", size = 18345324, upload_time = "2026-01-31T23:11:08.248Z" }, - { url = "https://files.pythonhosted.org/packages/ab/af/6157aa6da728fa4525a755bfad486ae7e3f76d4c1864138003eb84328497/numpy-2.4.2-cp312-cp312-win32.whl", hash = "sha256:ec055f6dae239a6299cace477b479cca2fc125c5675482daf1dd886933a1076f", size = 5960282, upload_time = "2026-01-31T23:11:10.497Z" }, - { url = "https://files.pythonhosted.org/packages/92/0f/7ceaaeaacb40567071e94dbf2c9480c0ae453d5bb4f52bea3892c39dc83c/numpy-2.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:209fae046e62d0ce6435fcfe3b1a10537e858249b3d9b05829e2a05218296a85", size = 12314210, upload_time = "2026-01-31T23:11:12.176Z" }, - { url = "https://files.pythonhosted.org/packages/2f/a3/56c5c604fae6dd40fa2ed3040d005fca97e91bd320d232ac9931d77ba13c/numpy-2.4.2-cp312-cp312-win_arm64.whl", hash = "sha256:fbde1b0c6e81d56f5dccd95dd4a711d9b95df1ae4009a60887e56b27e8d903fa", size = 10220171, upload_time = "2026-01-31T23:11:14.684Z" }, - { url = "https://files.pythonhosted.org/packages/a1/22/815b9fe25d1d7ae7d492152adbc7226d3eff731dffc38fe970589fcaaa38/numpy-2.4.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25f2059807faea4b077a2b6837391b5d830864b3543627f381821c646f31a63c", size = 16663696, upload_time = "2026-01-31T23:11:17.516Z" }, - { url = "https://files.pythonhosted.org/packages/09/f0/817d03a03f93ba9c6c8993de509277d84e69f9453601915e4a69554102a1/numpy-2.4.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bd3a7a9f5847d2fb8c2c6d1c862fa109c31a9abeca1a3c2bd5a64572955b2979", size = 14688322, upload_time = "2026-01-31T23:11:19.883Z" }, - { url = "https://files.pythonhosted.org/packages/da/b4/f805ab79293c728b9a99438775ce51885fd4f31b76178767cfc718701a39/numpy-2.4.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8e4549f8a3c6d13d55041925e912bfd834285ef1dd64d6bc7d542583355e2e98", size = 5198157, upload_time = "2026-01-31T23:11:22.375Z" }, - { url = "https://files.pythonhosted.org/packages/74/09/826e4289844eccdcd64aac27d13b0fd3f32039915dd5b9ba01baae1f436c/numpy-2.4.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:aea4f66ff44dfddf8c2cffd66ba6538c5ec67d389285292fe428cb2c738c8aef", size = 6546330, upload_time = "2026-01-31T23:11:23.958Z" }, - { url = "https://files.pythonhosted.org/packages/19/fb/cbfdbfa3057a10aea5422c558ac57538e6acc87ec1669e666d32ac198da7/numpy-2.4.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3cd545784805de05aafe1dde61752ea49a359ccba9760c1e5d1c88a93bbf2b7", size = 15660968, upload_time = "2026-01-31T23:11:25.713Z" }, - { url = "https://files.pythonhosted.org/packages/04/dc/46066ce18d01645541f0186877377b9371b8fa8017fa8262002b4ef22612/numpy-2.4.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0d9b7c93578baafcbc5f0b83eaf17b79d345c6f36917ba0c67f45226911d499", size = 16607311, upload_time = "2026-01-31T23:11:28.117Z" }, - { url = "https://files.pythonhosted.org/packages/14/d9/4b5adfc39a43fa6bf918c6d544bc60c05236cc2f6339847fc5b35e6cb5b0/numpy-2.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f74f0f7779cc7ae07d1810aab8ac6b1464c3eafb9e283a40da7309d5e6e48fbb", size = 17012850, upload_time = "2026-01-31T23:11:30.888Z" }, - { url = "https://files.pythonhosted.org/packages/b7/20/adb6e6adde6d0130046e6fdfb7675cc62bc2f6b7b02239a09eb58435753d/numpy-2.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c7ac672d699bf36275c035e16b65539931347d68b70667d28984c9fb34e07fa7", size = 18334210, upload_time = "2026-01-31T23:11:33.214Z" }, - { url = "https://files.pythonhosted.org/packages/78/0e/0a73b3dff26803a8c02baa76398015ea2a5434d9b8265a7898a6028c1591/numpy-2.4.2-cp313-cp313-win32.whl", hash = "sha256:8e9afaeb0beff068b4d9cd20d322ba0ee1cecfb0b08db145e4ab4dd44a6b5110", size = 5958199, upload_time = "2026-01-31T23:11:35.385Z" }, - { url = "https://files.pythonhosted.org/packages/43/bc/6352f343522fcb2c04dbaf94cb30cca6fd32c1a750c06ad6231b4293708c/numpy-2.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:7df2de1e4fba69a51c06c28f5a3de36731eb9639feb8e1cf7e4a7b0daf4cf622", size = 12310848, upload_time = "2026-01-31T23:11:38.001Z" }, - { url = "https://files.pythonhosted.org/packages/6e/8d/6da186483e308da5da1cc6918ce913dcfe14ffde98e710bfeff2a6158d4e/numpy-2.4.2-cp313-cp313-win_arm64.whl", hash = "sha256:0fece1d1f0a89c16b03442eae5c56dc0be0c7883b5d388e0c03f53019a4bfd71", size = 10221082, upload_time = "2026-01-31T23:11:40.392Z" }, - { url = "https://files.pythonhosted.org/packages/25/a1/9510aa43555b44781968935c7548a8926274f815de42ad3997e9e83680dd/numpy-2.4.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5633c0da313330fd20c484c78cdd3f9b175b55e1a766c4a174230c6b70ad8262", size = 14815866, upload_time = "2026-01-31T23:11:42.495Z" }, - { url = "https://files.pythonhosted.org/packages/36/30/6bbb5e76631a5ae46e7923dd16ca9d3f1c93cfa8d4ed79a129814a9d8db3/numpy-2.4.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d9f64d786b3b1dd742c946c42d15b07497ed14af1a1f3ce840cce27daa0ce913", size = 5325631, upload_time = "2026-01-31T23:11:44.7Z" }, - { url = "https://files.pythonhosted.org/packages/46/00/3a490938800c1923b567b3a15cd17896e68052e2145d8662aaf3e1ffc58f/numpy-2.4.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:b21041e8cb6a1eb5312dd1d2f80a94d91efffb7a06b70597d44f1bd2dfc315ab", size = 6646254, upload_time = "2026-01-31T23:11:46.341Z" }, - { url = "https://files.pythonhosted.org/packages/d3/e9/fac0890149898a9b609caa5af7455a948b544746e4b8fe7c212c8edd71f8/numpy-2.4.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:00ab83c56211a1d7c07c25e3217ea6695e50a3e2f255053686b081dc0b091a82", size = 15720138, upload_time = "2026-01-31T23:11:48.082Z" }, - { url = "https://files.pythonhosted.org/packages/ea/5c/08887c54e68e1e28df53709f1893ce92932cc6f01f7c3d4dc952f61ffd4e/numpy-2.4.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fb882da679409066b4603579619341c6d6898fc83a8995199d5249f986e8e8f", size = 16655398, upload_time = "2026-01-31T23:11:50.293Z" }, - { url = "https://files.pythonhosted.org/packages/4d/89/253db0fa0e66e9129c745e4ef25631dc37d5f1314dad2b53e907b8538e6d/numpy-2.4.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:66cb9422236317f9d44b67b4d18f44efe6e9c7f8794ac0462978513359461554", size = 17079064, upload_time = "2026-01-31T23:11:52.927Z" }, - { url = "https://files.pythonhosted.org/packages/2a/d5/cbade46ce97c59c6c3da525e8d95b7abe8a42974a1dc5c1d489c10433e88/numpy-2.4.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0f01dcf33e73d80bd8dc0f20a71303abbafa26a19e23f6b68d1aa9990af90257", size = 18379680, upload_time = "2026-01-31T23:11:55.22Z" }, - { url = "https://files.pythonhosted.org/packages/40/62/48f99ae172a4b63d981babe683685030e8a3df4f246c893ea5c6ef99f018/numpy-2.4.2-cp313-cp313t-win32.whl", hash = "sha256:52b913ec40ff7ae845687b0b34d8d93b60cb66dcee06996dd5c99f2fc9328657", size = 6082433, upload_time = "2026-01-31T23:11:58.096Z" }, - { url = "https://files.pythonhosted.org/packages/07/38/e054a61cfe48ad9f1ed0d188e78b7e26859d0b60ef21cd9de4897cdb5326/numpy-2.4.2-cp313-cp313t-win_amd64.whl", hash = "sha256:5eea80d908b2c1f91486eb95b3fb6fab187e569ec9752ab7d9333d2e66bf2d6b", size = 12451181, upload_time = "2026-01-31T23:11:59.782Z" }, - { url = "https://files.pythonhosted.org/packages/6e/a4/a05c3a6418575e185dd84d0b9680b6bb2e2dc3e4202f036b7b4e22d6e9dc/numpy-2.4.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fd49860271d52127d61197bb50b64f58454e9f578cb4b2c001a6de8b1f50b0b1", size = 10290756, upload_time = "2026-01-31T23:12:02.438Z" }, - { url = "https://files.pythonhosted.org/packages/f4/f8/50e14d36d915ef64d8f8bc4a087fc8264d82c785eda6711f80ab7e620335/numpy-2.4.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:89f7268c009bc492f506abd6f5265defa7cb3f7487dc21d357c3d290add45082", size = 16833179, upload_time = "2026-01-31T23:12:53.5Z" }, - { url = "https://files.pythonhosted.org/packages/17/17/809b5cad63812058a8189e91a1e2d55a5a18fd04611dbad244e8aeae465c/numpy-2.4.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6dee3bb76aa4009d5a912180bf5b2de012532998d094acee25d9cb8dee3e44a", size = 14889755, upload_time = "2026-01-31T23:12:55.933Z" }, - { url = "https://files.pythonhosted.org/packages/3e/ea/181b9bcf7627fc8371720316c24db888dcb9829b1c0270abf3d288b2e29b/numpy-2.4.2-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:cd2bd2bbed13e213d6b55dc1d035a4f91748a7d3edc9480c13898b0353708920", size = 5399500, upload_time = "2026-01-31T23:12:58.671Z" }, - { url = "https://files.pythonhosted.org/packages/33/9f/413adf3fc955541ff5536b78fcf0754680b3c6d95103230252a2c9408d23/numpy-2.4.2-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:cf28c0c1d4c4bf00f509fa7eb02c58d7caf221b50b467bcb0d9bbf1584d5c821", size = 6714252, upload_time = "2026-01-31T23:13:00.518Z" }, - { url = "https://files.pythonhosted.org/packages/91/da/643aad274e29ccbdf42ecd94dafe524b81c87bcb56b83872d54827f10543/numpy-2.4.2-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e04ae107ac591763a47398bb45b568fc38f02dbc4aa44c063f67a131f99346cb", size = 15797142, upload_time = "2026-01-31T23:13:02.219Z" }, - { url = "https://files.pythonhosted.org/packages/66/27/965b8525e9cb5dc16481b30a1b3c21e50c7ebf6e9dbd48d0c4d0d5089c7e/numpy-2.4.2-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:602f65afdef699cda27ec0b9224ae5dc43e328f4c24c689deaf77133dbee74d0", size = 16727979, upload_time = "2026-01-31T23:13:04.62Z" }, - { url = "https://files.pythonhosted.org/packages/de/e5/b7d20451657664b07986c2f6e3be564433f5dcaf3482d68eaecd79afaf03/numpy-2.4.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be71bf1edb48ebbbf7f6337b5bfd2f895d1902f6335a5830b20141fc126ffba0", size = 12502577, upload_time = "2026-01-31T23:13:07.08Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/57/fd/0005efbd0af48e55eb3c7208af93f2862d4b1a56cd78e84309a2d959208d/numpy-2.4.2.tar.gz", hash = "sha256:659a6107e31a83c4e33f763942275fd278b21d095094044eb35569e86a21ddae", size = 20723651, upload-time = "2026-01-31T23:13:10.135Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d3/44/71852273146957899753e69986246d6a176061ea183407e95418c2aa4d9a/numpy-2.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e7e88598032542bd49af7c4747541422884219056c268823ef6e5e89851c8825", size = 16955478, upload-time = "2026-01-31T23:10:25.623Z" }, + { url = "https://files.pythonhosted.org/packages/74/41/5d17d4058bd0cd96bcbd4d9ff0fb2e21f52702aab9a72e4a594efa18692f/numpy-2.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7edc794af8b36ca37ef5fcb5e0d128c7e0595c7b96a2318d1badb6fcd8ee86b1", size = 14965467, upload-time = "2026-01-31T23:10:28.186Z" }, + { url = "https://files.pythonhosted.org/packages/49/48/fb1ce8136c19452ed15f033f8aee91d5defe515094e330ce368a0647846f/numpy-2.4.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:6e9f61981ace1360e42737e2bae58b27bf28a1b27e781721047d84bd754d32e7", size = 5475172, upload-time = "2026-01-31T23:10:30.848Z" }, + { url = "https://files.pythonhosted.org/packages/40/a9/3feb49f17bbd1300dd2570432961f5c8a4ffeff1db6f02c7273bd020a4c9/numpy-2.4.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:cb7bbb88aa74908950d979eeaa24dbdf1a865e3c7e45ff0121d8f70387b55f73", size = 6805145, upload-time = "2026-01-31T23:10:32.352Z" }, + { url = "https://files.pythonhosted.org/packages/3f/39/fdf35cbd6d6e2fcad42fcf85ac04a85a0d0fbfbf34b30721c98d602fd70a/numpy-2.4.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4f069069931240b3fc703f1e23df63443dbd6390614c8c44a87d96cd0ec81eb1", size = 15966084, upload-time = "2026-01-31T23:10:34.502Z" }, + { url = "https://files.pythonhosted.org/packages/1b/46/6fa4ea94f1ddf969b2ee941290cca6f1bfac92b53c76ae5f44afe17ceb69/numpy-2.4.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c02ef4401a506fb60b411467ad501e1429a3487abca4664871d9ae0b46c8ba32", size = 16899477, upload-time = "2026-01-31T23:10:37.075Z" }, + { url = "https://files.pythonhosted.org/packages/09/a1/2a424e162b1a14a5bd860a464ab4e07513916a64ab1683fae262f735ccd2/numpy-2.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2653de5c24910e49c2b106499803124dde62a5a1fe0eedeaecf4309a5f639390", size = 17323429, upload-time = "2026-01-31T23:10:39.704Z" }, + { url = "https://files.pythonhosted.org/packages/ce/a2/73014149ff250628df72c58204822ac01d768697913881aacf839ff78680/numpy-2.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1ae241bbfc6ae276f94a170b14785e561cb5e7f626b6688cf076af4110887413", size = 18635109, upload-time = "2026-01-31T23:10:41.924Z" }, + { url = "https://files.pythonhosted.org/packages/6c/0c/73e8be2f1accd56df74abc1c5e18527822067dced5ec0861b5bb882c2ce0/numpy-2.4.2-cp311-cp311-win32.whl", hash = "sha256:df1b10187212b198dd45fa943d8985a3c8cf854aed4923796e0e019e113a1bda", size = 6237915, upload-time = "2026-01-31T23:10:45.26Z" }, + { url = "https://files.pythonhosted.org/packages/76/ae/e0265e0163cf127c24c3969d29f1c4c64551a1e375d95a13d32eab25d364/numpy-2.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:b9c618d56a29c9cb1c4da979e9899be7578d2e0b3c24d52079c166324c9e8695", size = 12607972, upload-time = "2026-01-31T23:10:47.021Z" }, + { url = "https://files.pythonhosted.org/packages/29/a5/c43029af9b8014d6ea157f192652c50042e8911f4300f8f6ed3336bf437f/numpy-2.4.2-cp311-cp311-win_arm64.whl", hash = "sha256:47c5a6ed21d9452b10227e5e8a0e1c22979811cad7dcc19d8e3e2fb8fa03f1a3", size = 10485763, upload-time = "2026-01-31T23:10:50.087Z" }, + { url = "https://files.pythonhosted.org/packages/51/6e/6f394c9c77668153e14d4da83bcc247beb5952f6ead7699a1a2992613bea/numpy-2.4.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:21982668592194c609de53ba4933a7471880ccbaadcc52352694a59ecc860b3a", size = 16667963, upload-time = "2026-01-31T23:10:52.147Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f8/55483431f2b2fd015ae6ed4fe62288823ce908437ed49db5a03d15151678/numpy-2.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40397bda92382fcec844066efb11f13e1c9a3e2a8e8f318fb72ed8b6db9f60f1", size = 14693571, upload-time = "2026-01-31T23:10:54.789Z" }, + { url = "https://files.pythonhosted.org/packages/2f/20/18026832b1845cdc82248208dd929ca14c9d8f2bac391f67440707fff27c/numpy-2.4.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:b3a24467af63c67829bfaa61eecf18d5432d4f11992688537be59ecd6ad32f5e", size = 5203469, upload-time = "2026-01-31T23:10:57.343Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/2eb97c8a77daaba34eaa3fa7241a14ac5f51c46a6bd5911361b644c4a1e2/numpy-2.4.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:805cc8de9fd6e7a22da5aed858e0ab16be5a4db6c873dde1d7451c541553aa27", size = 6550820, upload-time = "2026-01-31T23:10:59.429Z" }, + { url = "https://files.pythonhosted.org/packages/b1/91/b97fdfd12dc75b02c44e26c6638241cc004d4079a0321a69c62f51470c4c/numpy-2.4.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d82351358ffbcdcd7b686b90742a9b86632d6c1c051016484fa0b326a0a1548", size = 15663067, upload-time = "2026-01-31T23:11:01.291Z" }, + { url = "https://files.pythonhosted.org/packages/f5/c6/a18e59f3f0b8071cc85cbc8d80cd02d68aa9710170b2553a117203d46936/numpy-2.4.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e35d3e0144137d9fdae62912e869136164534d64a169f86438bc9561b6ad49f", size = 16619782, upload-time = "2026-01-31T23:11:03.669Z" }, + { url = "https://files.pythonhosted.org/packages/b7/83/9751502164601a79e18847309f5ceec0b1446d7b6aa12305759b72cf98b2/numpy-2.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adb6ed2ad29b9e15321d167d152ee909ec73395901b70936f029c3bc6d7f4460", size = 17013128, upload-time = "2026-01-31T23:11:05.913Z" }, + { url = "https://files.pythonhosted.org/packages/61/c4/c4066322256ec740acc1c8923a10047818691d2f8aec254798f3dd90f5f2/numpy-2.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8906e71fd8afcb76580404e2a950caef2685df3d2a57fe82a86ac8d33cc007ba", size = 18345324, upload-time = "2026-01-31T23:11:08.248Z" }, + { url = "https://files.pythonhosted.org/packages/ab/af/6157aa6da728fa4525a755bfad486ae7e3f76d4c1864138003eb84328497/numpy-2.4.2-cp312-cp312-win32.whl", hash = "sha256:ec055f6dae239a6299cace477b479cca2fc125c5675482daf1dd886933a1076f", size = 5960282, upload-time = "2026-01-31T23:11:10.497Z" }, + { url = "https://files.pythonhosted.org/packages/92/0f/7ceaaeaacb40567071e94dbf2c9480c0ae453d5bb4f52bea3892c39dc83c/numpy-2.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:209fae046e62d0ce6435fcfe3b1a10537e858249b3d9b05829e2a05218296a85", size = 12314210, upload-time = "2026-01-31T23:11:12.176Z" }, + { url = "https://files.pythonhosted.org/packages/2f/a3/56c5c604fae6dd40fa2ed3040d005fca97e91bd320d232ac9931d77ba13c/numpy-2.4.2-cp312-cp312-win_arm64.whl", hash = "sha256:fbde1b0c6e81d56f5dccd95dd4a711d9b95df1ae4009a60887e56b27e8d903fa", size = 10220171, upload-time = "2026-01-31T23:11:14.684Z" }, + { url = "https://files.pythonhosted.org/packages/a1/22/815b9fe25d1d7ae7d492152adbc7226d3eff731dffc38fe970589fcaaa38/numpy-2.4.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25f2059807faea4b077a2b6837391b5d830864b3543627f381821c646f31a63c", size = 16663696, upload-time = "2026-01-31T23:11:17.516Z" }, + { url = "https://files.pythonhosted.org/packages/09/f0/817d03a03f93ba9c6c8993de509277d84e69f9453601915e4a69554102a1/numpy-2.4.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bd3a7a9f5847d2fb8c2c6d1c862fa109c31a9abeca1a3c2bd5a64572955b2979", size = 14688322, upload-time = "2026-01-31T23:11:19.883Z" }, + { url = "https://files.pythonhosted.org/packages/da/b4/f805ab79293c728b9a99438775ce51885fd4f31b76178767cfc718701a39/numpy-2.4.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8e4549f8a3c6d13d55041925e912bfd834285ef1dd64d6bc7d542583355e2e98", size = 5198157, upload-time = "2026-01-31T23:11:22.375Z" }, + { url = "https://files.pythonhosted.org/packages/74/09/826e4289844eccdcd64aac27d13b0fd3f32039915dd5b9ba01baae1f436c/numpy-2.4.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:aea4f66ff44dfddf8c2cffd66ba6538c5ec67d389285292fe428cb2c738c8aef", size = 6546330, upload-time = "2026-01-31T23:11:23.958Z" }, + { url = "https://files.pythonhosted.org/packages/19/fb/cbfdbfa3057a10aea5422c558ac57538e6acc87ec1669e666d32ac198da7/numpy-2.4.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3cd545784805de05aafe1dde61752ea49a359ccba9760c1e5d1c88a93bbf2b7", size = 15660968, upload-time = "2026-01-31T23:11:25.713Z" }, + { url = "https://files.pythonhosted.org/packages/04/dc/46066ce18d01645541f0186877377b9371b8fa8017fa8262002b4ef22612/numpy-2.4.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0d9b7c93578baafcbc5f0b83eaf17b79d345c6f36917ba0c67f45226911d499", size = 16607311, upload-time = "2026-01-31T23:11:28.117Z" }, + { url = "https://files.pythonhosted.org/packages/14/d9/4b5adfc39a43fa6bf918c6d544bc60c05236cc2f6339847fc5b35e6cb5b0/numpy-2.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f74f0f7779cc7ae07d1810aab8ac6b1464c3eafb9e283a40da7309d5e6e48fbb", size = 17012850, upload-time = "2026-01-31T23:11:30.888Z" }, + { url = "https://files.pythonhosted.org/packages/b7/20/adb6e6adde6d0130046e6fdfb7675cc62bc2f6b7b02239a09eb58435753d/numpy-2.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c7ac672d699bf36275c035e16b65539931347d68b70667d28984c9fb34e07fa7", size = 18334210, upload-time = "2026-01-31T23:11:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/78/0e/0a73b3dff26803a8c02baa76398015ea2a5434d9b8265a7898a6028c1591/numpy-2.4.2-cp313-cp313-win32.whl", hash = "sha256:8e9afaeb0beff068b4d9cd20d322ba0ee1cecfb0b08db145e4ab4dd44a6b5110", size = 5958199, upload-time = "2026-01-31T23:11:35.385Z" }, + { url = "https://files.pythonhosted.org/packages/43/bc/6352f343522fcb2c04dbaf94cb30cca6fd32c1a750c06ad6231b4293708c/numpy-2.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:7df2de1e4fba69a51c06c28f5a3de36731eb9639feb8e1cf7e4a7b0daf4cf622", size = 12310848, upload-time = "2026-01-31T23:11:38.001Z" }, + { url = "https://files.pythonhosted.org/packages/6e/8d/6da186483e308da5da1cc6918ce913dcfe14ffde98e710bfeff2a6158d4e/numpy-2.4.2-cp313-cp313-win_arm64.whl", hash = "sha256:0fece1d1f0a89c16b03442eae5c56dc0be0c7883b5d388e0c03f53019a4bfd71", size = 10221082, upload-time = "2026-01-31T23:11:40.392Z" }, + { url = "https://files.pythonhosted.org/packages/25/a1/9510aa43555b44781968935c7548a8926274f815de42ad3997e9e83680dd/numpy-2.4.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5633c0da313330fd20c484c78cdd3f9b175b55e1a766c4a174230c6b70ad8262", size = 14815866, upload-time = "2026-01-31T23:11:42.495Z" }, + { url = "https://files.pythonhosted.org/packages/36/30/6bbb5e76631a5ae46e7923dd16ca9d3f1c93cfa8d4ed79a129814a9d8db3/numpy-2.4.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d9f64d786b3b1dd742c946c42d15b07497ed14af1a1f3ce840cce27daa0ce913", size = 5325631, upload-time = "2026-01-31T23:11:44.7Z" }, + { url = "https://files.pythonhosted.org/packages/46/00/3a490938800c1923b567b3a15cd17896e68052e2145d8662aaf3e1ffc58f/numpy-2.4.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:b21041e8cb6a1eb5312dd1d2f80a94d91efffb7a06b70597d44f1bd2dfc315ab", size = 6646254, upload-time = "2026-01-31T23:11:46.341Z" }, + { url = "https://files.pythonhosted.org/packages/d3/e9/fac0890149898a9b609caa5af7455a948b544746e4b8fe7c212c8edd71f8/numpy-2.4.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:00ab83c56211a1d7c07c25e3217ea6695e50a3e2f255053686b081dc0b091a82", size = 15720138, upload-time = "2026-01-31T23:11:48.082Z" }, + { url = "https://files.pythonhosted.org/packages/ea/5c/08887c54e68e1e28df53709f1893ce92932cc6f01f7c3d4dc952f61ffd4e/numpy-2.4.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fb882da679409066b4603579619341c6d6898fc83a8995199d5249f986e8e8f", size = 16655398, upload-time = "2026-01-31T23:11:50.293Z" }, + { url = "https://files.pythonhosted.org/packages/4d/89/253db0fa0e66e9129c745e4ef25631dc37d5f1314dad2b53e907b8538e6d/numpy-2.4.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:66cb9422236317f9d44b67b4d18f44efe6e9c7f8794ac0462978513359461554", size = 17079064, upload-time = "2026-01-31T23:11:52.927Z" }, + { url = "https://files.pythonhosted.org/packages/2a/d5/cbade46ce97c59c6c3da525e8d95b7abe8a42974a1dc5c1d489c10433e88/numpy-2.4.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0f01dcf33e73d80bd8dc0f20a71303abbafa26a19e23f6b68d1aa9990af90257", size = 18379680, upload-time = "2026-01-31T23:11:55.22Z" }, + { url = "https://files.pythonhosted.org/packages/40/62/48f99ae172a4b63d981babe683685030e8a3df4f246c893ea5c6ef99f018/numpy-2.4.2-cp313-cp313t-win32.whl", hash = "sha256:52b913ec40ff7ae845687b0b34d8d93b60cb66dcee06996dd5c99f2fc9328657", size = 6082433, upload-time = "2026-01-31T23:11:58.096Z" }, + { url = "https://files.pythonhosted.org/packages/07/38/e054a61cfe48ad9f1ed0d188e78b7e26859d0b60ef21cd9de4897cdb5326/numpy-2.4.2-cp313-cp313t-win_amd64.whl", hash = "sha256:5eea80d908b2c1f91486eb95b3fb6fab187e569ec9752ab7d9333d2e66bf2d6b", size = 12451181, upload-time = "2026-01-31T23:11:59.782Z" }, + { url = "https://files.pythonhosted.org/packages/6e/a4/a05c3a6418575e185dd84d0b9680b6bb2e2dc3e4202f036b7b4e22d6e9dc/numpy-2.4.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fd49860271d52127d61197bb50b64f58454e9f578cb4b2c001a6de8b1f50b0b1", size = 10290756, upload-time = "2026-01-31T23:12:02.438Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f8/50e14d36d915ef64d8f8bc4a087fc8264d82c785eda6711f80ab7e620335/numpy-2.4.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:89f7268c009bc492f506abd6f5265defa7cb3f7487dc21d357c3d290add45082", size = 16833179, upload-time = "2026-01-31T23:12:53.5Z" }, + { url = "https://files.pythonhosted.org/packages/17/17/809b5cad63812058a8189e91a1e2d55a5a18fd04611dbad244e8aeae465c/numpy-2.4.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6dee3bb76aa4009d5a912180bf5b2de012532998d094acee25d9cb8dee3e44a", size = 14889755, upload-time = "2026-01-31T23:12:55.933Z" }, + { url = "https://files.pythonhosted.org/packages/3e/ea/181b9bcf7627fc8371720316c24db888dcb9829b1c0270abf3d288b2e29b/numpy-2.4.2-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:cd2bd2bbed13e213d6b55dc1d035a4f91748a7d3edc9480c13898b0353708920", size = 5399500, upload-time = "2026-01-31T23:12:58.671Z" }, + { url = "https://files.pythonhosted.org/packages/33/9f/413adf3fc955541ff5536b78fcf0754680b3c6d95103230252a2c9408d23/numpy-2.4.2-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:cf28c0c1d4c4bf00f509fa7eb02c58d7caf221b50b467bcb0d9bbf1584d5c821", size = 6714252, upload-time = "2026-01-31T23:13:00.518Z" }, + { url = "https://files.pythonhosted.org/packages/91/da/643aad274e29ccbdf42ecd94dafe524b81c87bcb56b83872d54827f10543/numpy-2.4.2-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e04ae107ac591763a47398bb45b568fc38f02dbc4aa44c063f67a131f99346cb", size = 15797142, upload-time = "2026-01-31T23:13:02.219Z" }, + { url = "https://files.pythonhosted.org/packages/66/27/965b8525e9cb5dc16481b30a1b3c21e50c7ebf6e9dbd48d0c4d0d5089c7e/numpy-2.4.2-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:602f65afdef699cda27ec0b9224ae5dc43e328f4c24c689deaf77133dbee74d0", size = 16727979, upload-time = "2026-01-31T23:13:04.62Z" }, + { url = "https://files.pythonhosted.org/packages/de/e5/b7d20451657664b07986c2f6e3be564433f5dcaf3482d68eaecd79afaf03/numpy-2.4.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be71bf1edb48ebbbf7f6337b5bfd2f895d1902f6335a5830b20141fc126ffba0", size = 12502577, upload-time = "2026-01-31T23:13:07.08Z" }, ] [[package]] @@ -2565,9 +2615,9 @@ dependencies = [ { name = "tqdm" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/92/e5/3d197a0947a166649f566706d7a4c8f7fe38f1fa7b24c9bcffe4c7591d44/openai-2.21.0.tar.gz", hash = "sha256:81b48ce4b8bbb2cc3af02047ceb19561f7b1dc0d4e52d1de7f02abfd15aa59b7", size = 644374, upload_time = "2026-02-14T00:12:01.577Z" } +sdist = { url = "https://files.pythonhosted.org/packages/92/e5/3d197a0947a166649f566706d7a4c8f7fe38f1fa7b24c9bcffe4c7591d44/openai-2.21.0.tar.gz", hash = "sha256:81b48ce4b8bbb2cc3af02047ceb19561f7b1dc0d4e52d1de7f02abfd15aa59b7", size = 644374, upload-time = "2026-02-14T00:12:01.577Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/56/0a89092a453bb2c676d66abee44f863e742b2110d4dbb1dbcca3f7e5fc33/openai-2.21.0-py3-none-any.whl", hash = "sha256:0bc1c775e5b1536c294eded39ee08f8407656537ccc71b1004104fe1602e267c", size = 1103065, upload_time = "2026-02-14T00:11:59.603Z" }, + { url = "https://files.pythonhosted.org/packages/cc/56/0a89092a453bb2c676d66abee44f863e742b2110d4dbb1dbcca3f7e5fc33/openai-2.21.0-py3-none-any.whl", hash = "sha256:0bc1c775e5b1536c294eded39ee08f8407656537ccc71b1004104fe1602e267c", size = 1103065, upload-time = "2026-02-14T00:11:59.603Z" }, ] [[package]] @@ -2578,9 +2628,9 @@ dependencies = [ { name = "importlib-metadata" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/97/b9/3161be15bb8e3ad01be8be5a968a9237c3027c5be504362ff800fca3e442/opentelemetry_api-1.39.1.tar.gz", hash = "sha256:fbde8c80e1b937a2c61f20347e91c0c18a1940cecf012d62e65a7caf08967c9c", size = 65767, upload_time = "2025-12-11T13:32:39.182Z" } +sdist = { url = "https://files.pythonhosted.org/packages/97/b9/3161be15bb8e3ad01be8be5a968a9237c3027c5be504362ff800fca3e442/opentelemetry_api-1.39.1.tar.gz", hash = "sha256:fbde8c80e1b937a2c61f20347e91c0c18a1940cecf012d62e65a7caf08967c9c", size = 65767, upload-time = "2025-12-11T13:32:39.182Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/df/d3f1ddf4bb4cb50ed9b1139cc7b1c54c34a1e7ce8fd1b9a37c0d1551a6bd/opentelemetry_api-1.39.1-py3-none-any.whl", hash = "sha256:2edd8463432a7f8443edce90972169b195e7d6a05500cd29e6d13898187c9950", size = 66356, upload_time = "2025-12-11T13:32:17.304Z" }, + { url = "https://files.pythonhosted.org/packages/cf/df/d3f1ddf4bb4cb50ed9b1139cc7b1c54c34a1e7ce8fd1b9a37c0d1551a6bd/opentelemetry_api-1.39.1-py3-none-any.whl", hash = "sha256:2edd8463432a7f8443edce90972169b195e7d6a05500cd29e6d13898187c9950", size = 66356, upload-time = "2025-12-11T13:32:17.304Z" }, ] [[package]] @@ -2590,9 +2640,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "opentelemetry-proto" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e9/9d/22d241b66f7bbde88a3bfa6847a351d2c46b84de23e71222c6aae25c7050/opentelemetry_exporter_otlp_proto_common-1.39.1.tar.gz", hash = "sha256:763370d4737a59741c89a67b50f9e39271639ee4afc999dadfe768541c027464", size = 20409, upload_time = "2025-12-11T13:32:40.885Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e9/9d/22d241b66f7bbde88a3bfa6847a351d2c46b84de23e71222c6aae25c7050/opentelemetry_exporter_otlp_proto_common-1.39.1.tar.gz", hash = "sha256:763370d4737a59741c89a67b50f9e39271639ee4afc999dadfe768541c027464", size = 20409, upload-time = "2025-12-11T13:32:40.885Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8c/02/ffc3e143d89a27ac21fd557365b98bd0653b98de8a101151d5805b5d4c33/opentelemetry_exporter_otlp_proto_common-1.39.1-py3-none-any.whl", hash = "sha256:08f8a5862d64cc3435105686d0216c1365dc5701f86844a8cd56597d0c764fde", size = 18366, upload_time = "2025-12-11T13:32:20.2Z" }, + { url = "https://files.pythonhosted.org/packages/8c/02/ffc3e143d89a27ac21fd557365b98bd0653b98de8a101151d5805b5d4c33/opentelemetry_exporter_otlp_proto_common-1.39.1-py3-none-any.whl", hash = "sha256:08f8a5862d64cc3435105686d0216c1365dc5701f86844a8cd56597d0c764fde", size = 18366, upload-time = "2025-12-11T13:32:20.2Z" }, ] [[package]] @@ -2608,9 +2658,9 @@ dependencies = [ { name = "opentelemetry-sdk" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/53/48/b329fed2c610c2c32c9366d9dc597202c9d1e58e631c137ba15248d8850f/opentelemetry_exporter_otlp_proto_grpc-1.39.1.tar.gz", hash = "sha256:772eb1c9287485d625e4dbe9c879898e5253fea111d9181140f51291b5fec3ad", size = 24650, upload_time = "2025-12-11T13:32:41.429Z" } +sdist = { url = "https://files.pythonhosted.org/packages/53/48/b329fed2c610c2c32c9366d9dc597202c9d1e58e631c137ba15248d8850f/opentelemetry_exporter_otlp_proto_grpc-1.39.1.tar.gz", hash = "sha256:772eb1c9287485d625e4dbe9c879898e5253fea111d9181140f51291b5fec3ad", size = 24650, upload-time = "2025-12-11T13:32:41.429Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/a3/cc9b66575bd6597b98b886a2067eea2693408d2d5f39dad9ab7fc264f5f3/opentelemetry_exporter_otlp_proto_grpc-1.39.1-py3-none-any.whl", hash = "sha256:fa1c136a05c7e9b4c09f739469cbdb927ea20b34088ab1d959a849b5cc589c18", size = 19766, upload_time = "2025-12-11T13:32:21.027Z" }, + { url = "https://files.pythonhosted.org/packages/81/a3/cc9b66575bd6597b98b886a2067eea2693408d2d5f39dad9ab7fc264f5f3/opentelemetry_exporter_otlp_proto_grpc-1.39.1-py3-none-any.whl", hash = "sha256:fa1c136a05c7e9b4c09f739469cbdb927ea20b34088ab1d959a849b5cc589c18", size = 19766, upload-time = "2025-12-11T13:32:21.027Z" }, ] [[package]] @@ -2626,9 +2676,9 @@ dependencies = [ { name = "requests" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/80/04/2a08fa9c0214ae38880df01e8bfae12b067ec0793446578575e5080d6545/opentelemetry_exporter_otlp_proto_http-1.39.1.tar.gz", hash = "sha256:31bdab9745c709ce90a49a0624c2bd445d31a28ba34275951a6a362d16a0b9cb", size = 17288, upload_time = "2025-12-11T13:32:42.029Z" } +sdist = { url = "https://files.pythonhosted.org/packages/80/04/2a08fa9c0214ae38880df01e8bfae12b067ec0793446578575e5080d6545/opentelemetry_exporter_otlp_proto_http-1.39.1.tar.gz", hash = "sha256:31bdab9745c709ce90a49a0624c2bd445d31a28ba34275951a6a362d16a0b9cb", size = 17288, upload-time = "2025-12-11T13:32:42.029Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/95/f1/b27d3e2e003cd9a3592c43d099d2ed8d0a947c15281bf8463a256db0b46c/opentelemetry_exporter_otlp_proto_http-1.39.1-py3-none-any.whl", hash = "sha256:d9f5207183dd752a412c4cd564ca8875ececba13be6e9c6c370ffb752fd59985", size = 19641, upload_time = "2025-12-11T13:32:22.248Z" }, + { url = "https://files.pythonhosted.org/packages/95/f1/b27d3e2e003cd9a3592c43d099d2ed8d0a947c15281bf8463a256db0b46c/opentelemetry_exporter_otlp_proto_http-1.39.1-py3-none-any.whl", hash = "sha256:d9f5207183dd752a412c4cd564ca8875ececba13be6e9c6c370ffb752fd59985", size = 19641, upload-time = "2025-12-11T13:32:22.248Z" }, ] [[package]] @@ -2638,9 +2688,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "protobuf" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/49/1d/f25d76d8260c156c40c97c9ed4511ec0f9ce353f8108ca6e7561f82a06b2/opentelemetry_proto-1.39.1.tar.gz", hash = "sha256:6c8e05144fc0d3ed4d22c2289c6b126e03bcd0e6a7da0f16cedd2e1c2772e2c8", size = 46152, upload_time = "2025-12-11T13:32:48.681Z" } +sdist = { url = "https://files.pythonhosted.org/packages/49/1d/f25d76d8260c156c40c97c9ed4511ec0f9ce353f8108ca6e7561f82a06b2/opentelemetry_proto-1.39.1.tar.gz", hash = "sha256:6c8e05144fc0d3ed4d22c2289c6b126e03bcd0e6a7da0f16cedd2e1c2772e2c8", size = 46152, upload-time = "2025-12-11T13:32:48.681Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/51/95/b40c96a7b5203005a0b03d8ce8cd212ff23f1793d5ba289c87a097571b18/opentelemetry_proto-1.39.1-py3-none-any.whl", hash = "sha256:22cdc78efd3b3765d09e68bfbd010d4fc254c9818afd0b6b423387d9dee46007", size = 72535, upload_time = "2025-12-11T13:32:33.866Z" }, + { url = "https://files.pythonhosted.org/packages/51/95/b40c96a7b5203005a0b03d8ce8cd212ff23f1793d5ba289c87a097571b18/opentelemetry_proto-1.39.1-py3-none-any.whl", hash = "sha256:22cdc78efd3b3765d09e68bfbd010d4fc254c9818afd0b6b423387d9dee46007", size = 72535, upload-time = "2025-12-11T13:32:33.866Z" }, ] [[package]] @@ -2652,9 +2702,9 @@ dependencies = [ { name = "opentelemetry-semantic-conventions" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/eb/fb/c76080c9ba07e1e8235d24cdcc4d125ef7aa3edf23eb4e497c2e50889adc/opentelemetry_sdk-1.39.1.tar.gz", hash = "sha256:cf4d4563caf7bff906c9f7967e2be22d0d6b349b908be0d90fb21c8e9c995cc6", size = 171460, upload_time = "2025-12-11T13:32:49.369Z" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/fb/c76080c9ba07e1e8235d24cdcc4d125ef7aa3edf23eb4e497c2e50889adc/opentelemetry_sdk-1.39.1.tar.gz", hash = "sha256:cf4d4563caf7bff906c9f7967e2be22d0d6b349b908be0d90fb21c8e9c995cc6", size = 171460, upload-time = "2025-12-11T13:32:49.369Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/98/e91cf858f203d86f4eccdf763dcf01cf03f1dae80c3750f7e635bfa206b6/opentelemetry_sdk-1.39.1-py3-none-any.whl", hash = "sha256:4d5482c478513ecb0a5d938dcc61394e647066e0cc2676bee9f3af3f3f45f01c", size = 132565, upload_time = "2025-12-11T13:32:35.069Z" }, + { url = "https://files.pythonhosted.org/packages/7c/98/e91cf858f203d86f4eccdf763dcf01cf03f1dae80c3750f7e635bfa206b6/opentelemetry_sdk-1.39.1-py3-none-any.whl", hash = "sha256:4d5482c478513ecb0a5d938dcc61394e647066e0cc2676bee9f3af3f3f45f01c", size = 132565, upload-time = "2025-12-11T13:32:35.069Z" }, ] [[package]] @@ -2665,84 +2715,84 @@ dependencies = [ { name = "opentelemetry-api" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/91/df/553f93ed38bf22f4b999d9be9c185adb558982214f33eae539d3b5cd0858/opentelemetry_semantic_conventions-0.60b1.tar.gz", hash = "sha256:87c228b5a0669b748c76d76df6c364c369c28f1c465e50f661e39737e84bc953", size = 137935, upload_time = "2025-12-11T13:32:50.487Z" } +sdist = { url = "https://files.pythonhosted.org/packages/91/df/553f93ed38bf22f4b999d9be9c185adb558982214f33eae539d3b5cd0858/opentelemetry_semantic_conventions-0.60b1.tar.gz", hash = "sha256:87c228b5a0669b748c76d76df6c364c369c28f1c465e50f661e39737e84bc953", size = 137935, upload-time = "2025-12-11T13:32:50.487Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7a/5e/5958555e09635d09b75de3c4f8b9cae7335ca545d77392ffe7331534c402/opentelemetry_semantic_conventions-0.60b1-py3-none-any.whl", hash = "sha256:9fa8c8b0c110da289809292b0591220d3a7b53c1526a23021e977d68597893fb", size = 219982, upload_time = "2025-12-11T13:32:36.955Z" }, + { url = "https://files.pythonhosted.org/packages/7a/5e/5958555e09635d09b75de3c4f8b9cae7335ca545d77392ffe7331534c402/opentelemetry_semantic_conventions-0.60b1-py3-none-any.whl", hash = "sha256:9fa8c8b0c110da289809292b0591220d3a7b53c1526a23021e977d68597893fb", size = 219982, upload-time = "2025-12-11T13:32:36.955Z" }, ] [[package]] name = "orjson" version = "3.11.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/53/45/b268004f745ede84e5798b48ee12b05129d19235d0e15267aa57dcdb400b/orjson-3.11.7.tar.gz", hash = "sha256:9b1a67243945819ce55d24a30b59d6a168e86220452d2c96f4d1f093e71c0c49", size = 6144992, upload_time = "2026-02-02T15:38:49.29Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/de/1a/a373746fa6d0e116dd9e54371a7b54622c44d12296d5d0f3ad5e3ff33490/orjson-3.11.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a02c833f38f36546ba65a452127633afce4cf0dd7296b753d3bb54e55e5c0174", size = 229140, upload_time = "2026-02-02T15:37:06.082Z" }, - { url = "https://files.pythonhosted.org/packages/52/a2/fa129e749d500f9b183e8a3446a193818a25f60261e9ce143ad61e975208/orjson-3.11.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b63c6e6738d7c3470ad01601e23376aa511e50e1f3931395b9f9c722406d1a67", size = 128670, upload_time = "2026-02-02T15:37:08.002Z" }, - { url = "https://files.pythonhosted.org/packages/08/93/1e82011cd1e0bd051ef9d35bed1aa7fb4ea1f0a055dc2c841b46b43a9ebd/orjson-3.11.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:043d3006b7d32c7e233b8cfb1f01c651013ea079e08dcef7189a29abd8befe11", size = 123832, upload_time = "2026-02-02T15:37:09.191Z" }, - { url = "https://files.pythonhosted.org/packages/fe/d8/a26b431ef962c7d55736674dddade876822f3e33223c1f47a36879350d04/orjson-3.11.7-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57036b27ac8a25d81112eb0cc9835cd4833c5b16e1467816adc0015f59e870dc", size = 129171, upload_time = "2026-02-02T15:37:11.112Z" }, - { url = "https://files.pythonhosted.org/packages/a7/19/f47819b84a580f490da260c3ee9ade214cf4cf78ac9ce8c1c758f80fdfc9/orjson-3.11.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:733ae23ada68b804b222c44affed76b39e30806d38660bf1eb200520d259cc16", size = 141967, upload_time = "2026-02-02T15:37:12.282Z" }, - { url = "https://files.pythonhosted.org/packages/5b/cd/37ece39a0777ba077fdcdbe4cccae3be8ed00290c14bf8afdc548befc260/orjson-3.11.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5fdfad2093bdd08245f2e204d977facd5f871c88c4a71230d5bcbd0e43bf6222", size = 130991, upload_time = "2026-02-02T15:37:13.465Z" }, - { url = "https://files.pythonhosted.org/packages/8f/ed/f2b5d66aa9b6b5c02ff5f120efc7b38c7c4962b21e6be0f00fd99a5c348e/orjson-3.11.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cededd6738e1c153530793998e31c05086582b08315db48ab66649768f326baa", size = 133674, upload_time = "2026-02-02T15:37:14.694Z" }, - { url = "https://files.pythonhosted.org/packages/c4/6e/baa83e68d1aa09fa8c3e5b2c087d01d0a0bd45256de719ed7bc22c07052d/orjson-3.11.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:14f440c7268c8f8633d1b3d443a434bd70cb15686117ea6beff8fdc8f5917a1e", size = 138722, upload_time = "2026-02-02T15:37:16.501Z" }, - { url = "https://files.pythonhosted.org/packages/0c/47/7f8ef4963b772cd56999b535e553f7eb5cd27e9dd6c049baee6f18bfa05d/orjson-3.11.7-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:3a2479753bbb95b0ebcf7969f562cdb9668e6d12416a35b0dda79febf89cdea2", size = 409056, upload_time = "2026-02-02T15:37:17.895Z" }, - { url = "https://files.pythonhosted.org/packages/38/eb/2df104dd2244b3618f25325a656f85cc3277f74bbd91224752410a78f3c7/orjson-3.11.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:71924496986275a737f38e3f22b4e0878882b3f7a310d2ff4dc96e812789120c", size = 144196, upload_time = "2026-02-02T15:37:19.349Z" }, - { url = "https://files.pythonhosted.org/packages/b6/2a/ee41de0aa3a6686598661eae2b4ebdff1340c65bfb17fcff8b87138aab21/orjson-3.11.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b4a9eefdc70bf8bf9857f0290f973dec534ac84c35cd6a7f4083be43e7170a8f", size = 134979, upload_time = "2026-02-02T15:37:20.906Z" }, - { url = "https://files.pythonhosted.org/packages/4c/fa/92fc5d3d402b87a8b28277a9ed35386218a6a5287c7fe5ee9b9f02c53fb2/orjson-3.11.7-cp310-cp310-win32.whl", hash = "sha256:ae9e0b37a834cef7ce8f99de6498f8fad4a2c0bf6bfc3d02abd8ed56aa15b2de", size = 127968, upload_time = "2026-02-02T15:37:23.178Z" }, - { url = "https://files.pythonhosted.org/packages/07/29/a576bf36d73d60df06904d3844a9df08e25d59eba64363aaf8ec2f9bff41/orjson-3.11.7-cp310-cp310-win_amd64.whl", hash = "sha256:d772afdb22555f0c58cfc741bdae44180122b3616faa1ecadb595cd526e4c993", size = 125128, upload_time = "2026-02-02T15:37:24.329Z" }, - { url = "https://files.pythonhosted.org/packages/37/02/da6cb01fc6087048d7f61522c327edf4250f1683a58a839fdcc435746dd5/orjson-3.11.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9487abc2c2086e7c8eb9a211d2ce8855bae0e92586279d0d27b341d5ad76c85c", size = 228664, upload_time = "2026-02-02T15:37:25.542Z" }, - { url = "https://files.pythonhosted.org/packages/c1/c2/5885e7a5881dba9a9af51bc564e8967225a642b3e03d089289a35054e749/orjson-3.11.7-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:79cacb0b52f6004caf92405a7e1f11e6e2de8bdf9019e4f76b44ba045125cd6b", size = 125344, upload_time = "2026-02-02T15:37:26.92Z" }, - { url = "https://files.pythonhosted.org/packages/a4/1d/4e7688de0a92d1caf600dfd5fb70b4c5bfff51dfa61ac555072ef2d0d32a/orjson-3.11.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c2e85fe4698b6a56d5e2ebf7ae87544d668eb6bde1ad1226c13f44663f20ec9e", size = 128404, upload_time = "2026-02-02T15:37:28.108Z" }, - { url = "https://files.pythonhosted.org/packages/2f/b2/ec04b74ae03a125db7bd69cffd014b227b7f341e3261bf75b5eb88a1aa92/orjson-3.11.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b8d14b71c0b12963fe8a62aac87119f1afdf4cb88a400f61ca5ae581449efcb5", size = 123677, upload_time = "2026-02-02T15:37:30.287Z" }, - { url = "https://files.pythonhosted.org/packages/4c/69/f95bdf960605f08f827f6e3291fe243d8aa9c5c9ff017a8d7232209184c3/orjson-3.11.7-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91c81ef070c8f3220054115e1ef468b1c9ce8497b4e526cb9f68ab4dc0a7ac62", size = 128950, upload_time = "2026-02-02T15:37:31.595Z" }, - { url = "https://files.pythonhosted.org/packages/a4/1b/de59c57bae1d148ef298852abd31909ac3089cff370dfd4cd84cc99cbc42/orjson-3.11.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:411ebaf34d735e25e358a6d9e7978954a9c9d58cfb47bc6683cdc3964cd2f910", size = 141756, upload_time = "2026-02-02T15:37:32.985Z" }, - { url = "https://files.pythonhosted.org/packages/ee/9e/9decc59f4499f695f65c650f6cfa6cd4c37a3fbe8fa235a0a3614cb54386/orjson-3.11.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a16bcd08ab0bcdfc7e8801d9c4a9cc17e58418e4d48ddc6ded4e9e4b1a94062b", size = 130812, upload_time = "2026-02-02T15:37:34.204Z" }, - { url = "https://files.pythonhosted.org/packages/28/e6/59f932bcabd1eac44e334fe8e3281a92eacfcb450586e1f4bde0423728d8/orjson-3.11.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c0b51672e466fd7e56230ffbae7f1639e18d0ce023351fb75da21b71bc2c960", size = 133444, upload_time = "2026-02-02T15:37:35.446Z" }, - { url = "https://files.pythonhosted.org/packages/f1/36/b0f05c0eaa7ca30bc965e37e6a2956b0d67adb87a9872942d3568da846ae/orjson-3.11.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:136dcd6a2e796dfd9ffca9fc027d778567b0b7c9968d092842d3c323cef88aa8", size = 138609, upload_time = "2026-02-02T15:37:36.657Z" }, - { url = "https://files.pythonhosted.org/packages/b8/03/58ec7d302b8d86944c60c7b4b82975d5161fcce4c9bc8c6cb1d6741b6115/orjson-3.11.7-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:7ba61079379b0ae29e117db13bda5f28d939766e410d321ec1624afc6a0b0504", size = 408918, upload_time = "2026-02-02T15:37:38.076Z" }, - { url = "https://files.pythonhosted.org/packages/06/3a/868d65ef9a8b99be723bd510de491349618abd9f62c826cf206d962db295/orjson-3.11.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0527a4510c300e3b406591b0ba69b5dc50031895b0a93743526a3fc45f59d26e", size = 143998, upload_time = "2026-02-02T15:37:39.706Z" }, - { url = "https://files.pythonhosted.org/packages/5b/c7/1e18e1c83afe3349f4f6dc9e14910f0ae5f82eac756d1412ea4018938535/orjson-3.11.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a709e881723c9b18acddcfb8ba357322491ad553e277cf467e1e7e20e2d90561", size = 134802, upload_time = "2026-02-02T15:37:41.002Z" }, - { url = "https://files.pythonhosted.org/packages/d4/0b/ccb7ee1a65b37e8eeb8b267dc953561d72370e85185e459616d4345bab34/orjson-3.11.7-cp311-cp311-win32.whl", hash = "sha256:c43b8b5bab288b6b90dac410cca7e986a4fa747a2e8f94615aea407da706980d", size = 127828, upload_time = "2026-02-02T15:37:42.241Z" }, - { url = "https://files.pythonhosted.org/packages/af/9e/55c776dffda3f381e0f07d010a4f5f3902bf48eaba1bb7684d301acd4924/orjson-3.11.7-cp311-cp311-win_amd64.whl", hash = "sha256:6543001328aa857187f905308a028935864aefe9968af3848401b6fe80dbb471", size = 124941, upload_time = "2026-02-02T15:37:43.444Z" }, - { url = "https://files.pythonhosted.org/packages/aa/8e/424a620fa7d263b880162505fb107ef5e0afaa765b5b06a88312ac291560/orjson-3.11.7-cp311-cp311-win_arm64.whl", hash = "sha256:1ee5cc7160a821dfe14f130bc8e63e7611051f964b463d9e2a3a573204446a4d", size = 126245, upload_time = "2026-02-02T15:37:45.18Z" }, - { url = "https://files.pythonhosted.org/packages/80/bf/76f4f1665f6983385938f0e2a5d7efa12a58171b8456c252f3bae8a4cf75/orjson-3.11.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:bd03ea7606833655048dab1a00734a2875e3e86c276e1d772b2a02556f0d895f", size = 228545, upload_time = "2026-02-02T15:37:46.376Z" }, - { url = "https://files.pythonhosted.org/packages/79/53/6c72c002cb13b5a978a068add59b25a8bdf2800ac1c9c8ecdb26d6d97064/orjson-3.11.7-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:89e440ebc74ce8ab5c7bc4ce6757b4a6b1041becb127df818f6997b5c71aa60b", size = 125224, upload_time = "2026-02-02T15:37:47.697Z" }, - { url = "https://files.pythonhosted.org/packages/2c/83/10e48852865e5dd151bdfe652c06f7da484578ed02c5fca938e3632cb0b8/orjson-3.11.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ede977b5fe5ac91b1dffc0a517ca4542d2ec8a6a4ff7b2652d94f640796342a", size = 128154, upload_time = "2026-02-02T15:37:48.954Z" }, - { url = "https://files.pythonhosted.org/packages/6e/52/a66e22a2b9abaa374b4a081d410edab6d1e30024707b87eab7c734afe28d/orjson-3.11.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b7b1dae39230a393df353827c855a5f176271c23434cfd2db74e0e424e693e10", size = 123548, upload_time = "2026-02-02T15:37:50.187Z" }, - { url = "https://files.pythonhosted.org/packages/de/38/605d371417021359f4910c496f764c48ceb8997605f8c25bf1dfe58c0ebe/orjson-3.11.7-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed46f17096e28fb28d2975834836a639af7278aa87c84f68ab08fbe5b8bd75fa", size = 129000, upload_time = "2026-02-02T15:37:51.426Z" }, - { url = "https://files.pythonhosted.org/packages/44/98/af32e842b0ffd2335c89714d48ca4e3917b42f5d6ee5537832e069a4b3ac/orjson-3.11.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3726be79e36e526e3d9c1aceaadbfb4a04ee80a72ab47b3f3c17fefb9812e7b8", size = 141686, upload_time = "2026-02-02T15:37:52.607Z" }, - { url = "https://files.pythonhosted.org/packages/96/0b/fc793858dfa54be6feee940c1463370ece34b3c39c1ca0aa3845f5ba9892/orjson-3.11.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0724e265bc548af1dedebd9cb3d24b4e1c1e685a343be43e87ba922a5c5fff2f", size = 130812, upload_time = "2026-02-02T15:37:53.944Z" }, - { url = "https://files.pythonhosted.org/packages/dc/91/98a52415059db3f374757d0b7f0f16e3b5cd5976c90d1c2b56acaea039e6/orjson-3.11.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7745312efa9e11c17fbd3cb3097262d079da26930ae9ae7ba28fb738367cbad", size = 133440, upload_time = "2026-02-02T15:37:55.615Z" }, - { url = "https://files.pythonhosted.org/packages/dc/b6/cb540117bda61791f46381f8c26c8f93e802892830a6055748d3bb1925ab/orjson-3.11.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f904c24bdeabd4298f7a977ef14ca2a022ca921ed670b92ecd16ab6f3d01f867", size = 138386, upload_time = "2026-02-02T15:37:56.814Z" }, - { url = "https://files.pythonhosted.org/packages/63/1a/50a3201c334a7f17c231eee5f841342190723794e3b06293f26e7cf87d31/orjson-3.11.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b9fc4d0f81f394689e0814617aadc4f2ea0e8025f38c226cbf22d3b5ddbf025d", size = 408853, upload_time = "2026-02-02T15:37:58.291Z" }, - { url = "https://files.pythonhosted.org/packages/87/cd/8de1c67d0be44fdc22701e5989c0d015a2adf391498ad42c4dc589cd3013/orjson-3.11.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:849e38203e5be40b776ed2718e587faf204d184fc9a008ae441f9442320c0cab", size = 144130, upload_time = "2026-02-02T15:38:00.163Z" }, - { url = "https://files.pythonhosted.org/packages/0f/fe/d605d700c35dd55f51710d159fc54516a280923cd1b7e47508982fbb387d/orjson-3.11.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4682d1db3bcebd2b64757e0ddf9e87ae5f00d29d16c5cdf3a62f561d08cc3dd2", size = 134818, upload_time = "2026-02-02T15:38:01.507Z" }, - { url = "https://files.pythonhosted.org/packages/e4/e4/15ecc67edb3ddb3e2f46ae04475f2d294e8b60c1825fbe28a428b93b3fbd/orjson-3.11.7-cp312-cp312-win32.whl", hash = "sha256:f4f7c956b5215d949a1f65334cf9d7612dde38f20a95f2315deef167def91a6f", size = 127923, upload_time = "2026-02-02T15:38:02.75Z" }, - { url = "https://files.pythonhosted.org/packages/34/70/2e0855361f76198a3965273048c8e50a9695d88cd75811a5b46444895845/orjson-3.11.7-cp312-cp312-win_amd64.whl", hash = "sha256:bf742e149121dc5648ba0a08ea0871e87b660467ef168a3a5e53bc1fbd64bb74", size = 125007, upload_time = "2026-02-02T15:38:04.032Z" }, - { url = "https://files.pythonhosted.org/packages/68/40/c2051bd19fc467610fed469dc29e43ac65891571138f476834ca192bc290/orjson-3.11.7-cp312-cp312-win_arm64.whl", hash = "sha256:26c3b9132f783b7d7903bf1efb095fed8d4a3a85ec0d334ee8beff3d7a4749d5", size = 126089, upload_time = "2026-02-02T15:38:05.297Z" }, - { url = "https://files.pythonhosted.org/packages/89/25/6e0e52cac5aab51d7b6dcd257e855e1dec1c2060f6b28566c509b4665f62/orjson-3.11.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:1d98b30cc1313d52d4af17d9c3d307b08389752ec5f2e5febdfada70b0f8c733", size = 228390, upload_time = "2026-02-02T15:38:06.8Z" }, - { url = "https://files.pythonhosted.org/packages/a5/29/a77f48d2fc8a05bbc529e5ff481fb43d914f9e383ea2469d4f3d51df3d00/orjson-3.11.7-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:d897e81f8d0cbd2abb82226d1860ad2e1ab3ff16d7b08c96ca00df9d45409ef4", size = 125189, upload_time = "2026-02-02T15:38:08.181Z" }, - { url = "https://files.pythonhosted.org/packages/89/25/0a16e0729a0e6a1504f9d1a13cdd365f030068aab64cec6958396b9969d7/orjson-3.11.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:814be4b49b228cfc0b3c565acf642dd7d13538f966e3ccde61f4f55be3e20785", size = 128106, upload_time = "2026-02-02T15:38:09.41Z" }, - { url = "https://files.pythonhosted.org/packages/66/da/a2e505469d60666a05ab373f1a6322eb671cb2ba3a0ccfc7d4bc97196787/orjson-3.11.7-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d06e5c5fed5caedd2e540d62e5b1c25e8c82431b9e577c33537e5fa4aa909539", size = 123363, upload_time = "2026-02-02T15:38:10.73Z" }, - { url = "https://files.pythonhosted.org/packages/23/bf/ed73f88396ea35c71b38961734ea4a4746f7ca0768bf28fd551d37e48dd0/orjson-3.11.7-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:31c80ce534ac4ea3739c5ee751270646cbc46e45aea7576a38ffec040b4029a1", size = 129007, upload_time = "2026-02-02T15:38:12.138Z" }, - { url = "https://files.pythonhosted.org/packages/73/3c/b05d80716f0225fc9008fbf8ab22841dcc268a626aa550561743714ce3bf/orjson-3.11.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f50979824bde13d32b4320eedd513431c921102796d86be3eee0b58e58a3ecd1", size = 141667, upload_time = "2026-02-02T15:38:13.398Z" }, - { url = "https://files.pythonhosted.org/packages/61/e8/0be9b0addd9bf86abfc938e97441dcd0375d494594b1c8ad10fe57479617/orjson-3.11.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9e54f3808e2b6b945078c41aa8d9b5834b28c50843846e97807e5adb75fa9705", size = 130832, upload_time = "2026-02-02T15:38:14.698Z" }, - { url = "https://files.pythonhosted.org/packages/c9/ec/c68e3b9021a31d9ec15a94931db1410136af862955854ed5dd7e7e4f5bff/orjson-3.11.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12b80df61aab7b98b490fe9e4879925ba666fccdfcd175252ce4d9035865ace", size = 133373, upload_time = "2026-02-02T15:38:16.109Z" }, - { url = "https://files.pythonhosted.org/packages/d2/45/f3466739aaafa570cc8e77c6dbb853c48bf56e3b43738020e2661e08b0ac/orjson-3.11.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:996b65230271f1a97026fd0e6a753f51fbc0c335d2ad0c6201f711b0da32693b", size = 138307, upload_time = "2026-02-02T15:38:17.453Z" }, - { url = "https://files.pythonhosted.org/packages/e1/84/9f7f02288da1ffb31405c1be07657afd1eecbcb4b64ee2817b6fe0f785fa/orjson-3.11.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:ab49d4b2a6a1d415ddb9f37a21e02e0d5dbfe10b7870b21bf779fc21e9156157", size = 408695, upload_time = "2026-02-02T15:38:18.831Z" }, - { url = "https://files.pythonhosted.org/packages/18/07/9dd2f0c0104f1a0295ffbe912bc8d63307a539b900dd9e2c48ef7810d971/orjson-3.11.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:390a1dce0c055ddf8adb6aa94a73b45a4a7d7177b5c584b8d1c1947f2ba60fb3", size = 144099, upload_time = "2026-02-02T15:38:20.28Z" }, - { url = "https://files.pythonhosted.org/packages/a5/66/857a8e4a3292e1f7b1b202883bcdeb43a91566cf59a93f97c53b44bd6801/orjson-3.11.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1eb80451a9c351a71dfaf5b7ccc13ad065405217726b59fdbeadbcc544f9d223", size = 134806, upload_time = "2026-02-02T15:38:22.186Z" }, - { url = "https://files.pythonhosted.org/packages/0a/5b/6ebcf3defc1aab3a338ca777214966851e92efb1f30dc7fc8285216e6d1b/orjson-3.11.7-cp313-cp313-win32.whl", hash = "sha256:7477aa6a6ec6139c5cb1cc7b214643592169a5494d200397c7fc95d740d5fcf3", size = 127914, upload_time = "2026-02-02T15:38:23.511Z" }, - { url = "https://files.pythonhosted.org/packages/00/04/c6f72daca5092e3117840a1b1e88dfc809cc1470cf0734890d0366b684a1/orjson-3.11.7-cp313-cp313-win_amd64.whl", hash = "sha256:b9f95dcdea9d4f805daa9ddf02617a89e484c6985fa03055459f90e87d7a0757", size = 124986, upload_time = "2026-02-02T15:38:24.836Z" }, - { url = "https://files.pythonhosted.org/packages/03/ba/077a0f6f1085d6b806937246860fafbd5b17f3919c70ee3f3d8d9c713f38/orjson-3.11.7-cp313-cp313-win_arm64.whl", hash = "sha256:800988273a014a0541483dc81021247d7eacb0c845a9d1a34a422bc718f41539", size = 126045, upload_time = "2026-02-02T15:38:26.216Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/53/45/b268004f745ede84e5798b48ee12b05129d19235d0e15267aa57dcdb400b/orjson-3.11.7.tar.gz", hash = "sha256:9b1a67243945819ce55d24a30b59d6a168e86220452d2c96f4d1f093e71c0c49", size = 6144992, upload-time = "2026-02-02T15:38:49.29Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/1a/a373746fa6d0e116dd9e54371a7b54622c44d12296d5d0f3ad5e3ff33490/orjson-3.11.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a02c833f38f36546ba65a452127633afce4cf0dd7296b753d3bb54e55e5c0174", size = 229140, upload-time = "2026-02-02T15:37:06.082Z" }, + { url = "https://files.pythonhosted.org/packages/52/a2/fa129e749d500f9b183e8a3446a193818a25f60261e9ce143ad61e975208/orjson-3.11.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b63c6e6738d7c3470ad01601e23376aa511e50e1f3931395b9f9c722406d1a67", size = 128670, upload-time = "2026-02-02T15:37:08.002Z" }, + { url = "https://files.pythonhosted.org/packages/08/93/1e82011cd1e0bd051ef9d35bed1aa7fb4ea1f0a055dc2c841b46b43a9ebd/orjson-3.11.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:043d3006b7d32c7e233b8cfb1f01c651013ea079e08dcef7189a29abd8befe11", size = 123832, upload-time = "2026-02-02T15:37:09.191Z" }, + { url = "https://files.pythonhosted.org/packages/fe/d8/a26b431ef962c7d55736674dddade876822f3e33223c1f47a36879350d04/orjson-3.11.7-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57036b27ac8a25d81112eb0cc9835cd4833c5b16e1467816adc0015f59e870dc", size = 129171, upload-time = "2026-02-02T15:37:11.112Z" }, + { url = "https://files.pythonhosted.org/packages/a7/19/f47819b84a580f490da260c3ee9ade214cf4cf78ac9ce8c1c758f80fdfc9/orjson-3.11.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:733ae23ada68b804b222c44affed76b39e30806d38660bf1eb200520d259cc16", size = 141967, upload-time = "2026-02-02T15:37:12.282Z" }, + { url = "https://files.pythonhosted.org/packages/5b/cd/37ece39a0777ba077fdcdbe4cccae3be8ed00290c14bf8afdc548befc260/orjson-3.11.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5fdfad2093bdd08245f2e204d977facd5f871c88c4a71230d5bcbd0e43bf6222", size = 130991, upload-time = "2026-02-02T15:37:13.465Z" }, + { url = "https://files.pythonhosted.org/packages/8f/ed/f2b5d66aa9b6b5c02ff5f120efc7b38c7c4962b21e6be0f00fd99a5c348e/orjson-3.11.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cededd6738e1c153530793998e31c05086582b08315db48ab66649768f326baa", size = 133674, upload-time = "2026-02-02T15:37:14.694Z" }, + { url = "https://files.pythonhosted.org/packages/c4/6e/baa83e68d1aa09fa8c3e5b2c087d01d0a0bd45256de719ed7bc22c07052d/orjson-3.11.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:14f440c7268c8f8633d1b3d443a434bd70cb15686117ea6beff8fdc8f5917a1e", size = 138722, upload-time = "2026-02-02T15:37:16.501Z" }, + { url = "https://files.pythonhosted.org/packages/0c/47/7f8ef4963b772cd56999b535e553f7eb5cd27e9dd6c049baee6f18bfa05d/orjson-3.11.7-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:3a2479753bbb95b0ebcf7969f562cdb9668e6d12416a35b0dda79febf89cdea2", size = 409056, upload-time = "2026-02-02T15:37:17.895Z" }, + { url = "https://files.pythonhosted.org/packages/38/eb/2df104dd2244b3618f25325a656f85cc3277f74bbd91224752410a78f3c7/orjson-3.11.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:71924496986275a737f38e3f22b4e0878882b3f7a310d2ff4dc96e812789120c", size = 144196, upload-time = "2026-02-02T15:37:19.349Z" }, + { url = "https://files.pythonhosted.org/packages/b6/2a/ee41de0aa3a6686598661eae2b4ebdff1340c65bfb17fcff8b87138aab21/orjson-3.11.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b4a9eefdc70bf8bf9857f0290f973dec534ac84c35cd6a7f4083be43e7170a8f", size = 134979, upload-time = "2026-02-02T15:37:20.906Z" }, + { url = "https://files.pythonhosted.org/packages/4c/fa/92fc5d3d402b87a8b28277a9ed35386218a6a5287c7fe5ee9b9f02c53fb2/orjson-3.11.7-cp310-cp310-win32.whl", hash = "sha256:ae9e0b37a834cef7ce8f99de6498f8fad4a2c0bf6bfc3d02abd8ed56aa15b2de", size = 127968, upload-time = "2026-02-02T15:37:23.178Z" }, + { url = "https://files.pythonhosted.org/packages/07/29/a576bf36d73d60df06904d3844a9df08e25d59eba64363aaf8ec2f9bff41/orjson-3.11.7-cp310-cp310-win_amd64.whl", hash = "sha256:d772afdb22555f0c58cfc741bdae44180122b3616faa1ecadb595cd526e4c993", size = 125128, upload-time = "2026-02-02T15:37:24.329Z" }, + { url = "https://files.pythonhosted.org/packages/37/02/da6cb01fc6087048d7f61522c327edf4250f1683a58a839fdcc435746dd5/orjson-3.11.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9487abc2c2086e7c8eb9a211d2ce8855bae0e92586279d0d27b341d5ad76c85c", size = 228664, upload-time = "2026-02-02T15:37:25.542Z" }, + { url = "https://files.pythonhosted.org/packages/c1/c2/5885e7a5881dba9a9af51bc564e8967225a642b3e03d089289a35054e749/orjson-3.11.7-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:79cacb0b52f6004caf92405a7e1f11e6e2de8bdf9019e4f76b44ba045125cd6b", size = 125344, upload-time = "2026-02-02T15:37:26.92Z" }, + { url = "https://files.pythonhosted.org/packages/a4/1d/4e7688de0a92d1caf600dfd5fb70b4c5bfff51dfa61ac555072ef2d0d32a/orjson-3.11.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c2e85fe4698b6a56d5e2ebf7ae87544d668eb6bde1ad1226c13f44663f20ec9e", size = 128404, upload-time = "2026-02-02T15:37:28.108Z" }, + { url = "https://files.pythonhosted.org/packages/2f/b2/ec04b74ae03a125db7bd69cffd014b227b7f341e3261bf75b5eb88a1aa92/orjson-3.11.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b8d14b71c0b12963fe8a62aac87119f1afdf4cb88a400f61ca5ae581449efcb5", size = 123677, upload-time = "2026-02-02T15:37:30.287Z" }, + { url = "https://files.pythonhosted.org/packages/4c/69/f95bdf960605f08f827f6e3291fe243d8aa9c5c9ff017a8d7232209184c3/orjson-3.11.7-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91c81ef070c8f3220054115e1ef468b1c9ce8497b4e526cb9f68ab4dc0a7ac62", size = 128950, upload-time = "2026-02-02T15:37:31.595Z" }, + { url = "https://files.pythonhosted.org/packages/a4/1b/de59c57bae1d148ef298852abd31909ac3089cff370dfd4cd84cc99cbc42/orjson-3.11.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:411ebaf34d735e25e358a6d9e7978954a9c9d58cfb47bc6683cdc3964cd2f910", size = 141756, upload-time = "2026-02-02T15:37:32.985Z" }, + { url = "https://files.pythonhosted.org/packages/ee/9e/9decc59f4499f695f65c650f6cfa6cd4c37a3fbe8fa235a0a3614cb54386/orjson-3.11.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a16bcd08ab0bcdfc7e8801d9c4a9cc17e58418e4d48ddc6ded4e9e4b1a94062b", size = 130812, upload-time = "2026-02-02T15:37:34.204Z" }, + { url = "https://files.pythonhosted.org/packages/28/e6/59f932bcabd1eac44e334fe8e3281a92eacfcb450586e1f4bde0423728d8/orjson-3.11.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c0b51672e466fd7e56230ffbae7f1639e18d0ce023351fb75da21b71bc2c960", size = 133444, upload-time = "2026-02-02T15:37:35.446Z" }, + { url = "https://files.pythonhosted.org/packages/f1/36/b0f05c0eaa7ca30bc965e37e6a2956b0d67adb87a9872942d3568da846ae/orjson-3.11.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:136dcd6a2e796dfd9ffca9fc027d778567b0b7c9968d092842d3c323cef88aa8", size = 138609, upload-time = "2026-02-02T15:37:36.657Z" }, + { url = "https://files.pythonhosted.org/packages/b8/03/58ec7d302b8d86944c60c7b4b82975d5161fcce4c9bc8c6cb1d6741b6115/orjson-3.11.7-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:7ba61079379b0ae29e117db13bda5f28d939766e410d321ec1624afc6a0b0504", size = 408918, upload-time = "2026-02-02T15:37:38.076Z" }, + { url = "https://files.pythonhosted.org/packages/06/3a/868d65ef9a8b99be723bd510de491349618abd9f62c826cf206d962db295/orjson-3.11.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0527a4510c300e3b406591b0ba69b5dc50031895b0a93743526a3fc45f59d26e", size = 143998, upload-time = "2026-02-02T15:37:39.706Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c7/1e18e1c83afe3349f4f6dc9e14910f0ae5f82eac756d1412ea4018938535/orjson-3.11.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a709e881723c9b18acddcfb8ba357322491ad553e277cf467e1e7e20e2d90561", size = 134802, upload-time = "2026-02-02T15:37:41.002Z" }, + { url = "https://files.pythonhosted.org/packages/d4/0b/ccb7ee1a65b37e8eeb8b267dc953561d72370e85185e459616d4345bab34/orjson-3.11.7-cp311-cp311-win32.whl", hash = "sha256:c43b8b5bab288b6b90dac410cca7e986a4fa747a2e8f94615aea407da706980d", size = 127828, upload-time = "2026-02-02T15:37:42.241Z" }, + { url = "https://files.pythonhosted.org/packages/af/9e/55c776dffda3f381e0f07d010a4f5f3902bf48eaba1bb7684d301acd4924/orjson-3.11.7-cp311-cp311-win_amd64.whl", hash = "sha256:6543001328aa857187f905308a028935864aefe9968af3848401b6fe80dbb471", size = 124941, upload-time = "2026-02-02T15:37:43.444Z" }, + { url = "https://files.pythonhosted.org/packages/aa/8e/424a620fa7d263b880162505fb107ef5e0afaa765b5b06a88312ac291560/orjson-3.11.7-cp311-cp311-win_arm64.whl", hash = "sha256:1ee5cc7160a821dfe14f130bc8e63e7611051f964b463d9e2a3a573204446a4d", size = 126245, upload-time = "2026-02-02T15:37:45.18Z" }, + { url = "https://files.pythonhosted.org/packages/80/bf/76f4f1665f6983385938f0e2a5d7efa12a58171b8456c252f3bae8a4cf75/orjson-3.11.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:bd03ea7606833655048dab1a00734a2875e3e86c276e1d772b2a02556f0d895f", size = 228545, upload-time = "2026-02-02T15:37:46.376Z" }, + { url = "https://files.pythonhosted.org/packages/79/53/6c72c002cb13b5a978a068add59b25a8bdf2800ac1c9c8ecdb26d6d97064/orjson-3.11.7-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:89e440ebc74ce8ab5c7bc4ce6757b4a6b1041becb127df818f6997b5c71aa60b", size = 125224, upload-time = "2026-02-02T15:37:47.697Z" }, + { url = "https://files.pythonhosted.org/packages/2c/83/10e48852865e5dd151bdfe652c06f7da484578ed02c5fca938e3632cb0b8/orjson-3.11.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ede977b5fe5ac91b1dffc0a517ca4542d2ec8a6a4ff7b2652d94f640796342a", size = 128154, upload-time = "2026-02-02T15:37:48.954Z" }, + { url = "https://files.pythonhosted.org/packages/6e/52/a66e22a2b9abaa374b4a081d410edab6d1e30024707b87eab7c734afe28d/orjson-3.11.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b7b1dae39230a393df353827c855a5f176271c23434cfd2db74e0e424e693e10", size = 123548, upload-time = "2026-02-02T15:37:50.187Z" }, + { url = "https://files.pythonhosted.org/packages/de/38/605d371417021359f4910c496f764c48ceb8997605f8c25bf1dfe58c0ebe/orjson-3.11.7-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed46f17096e28fb28d2975834836a639af7278aa87c84f68ab08fbe5b8bd75fa", size = 129000, upload-time = "2026-02-02T15:37:51.426Z" }, + { url = "https://files.pythonhosted.org/packages/44/98/af32e842b0ffd2335c89714d48ca4e3917b42f5d6ee5537832e069a4b3ac/orjson-3.11.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3726be79e36e526e3d9c1aceaadbfb4a04ee80a72ab47b3f3c17fefb9812e7b8", size = 141686, upload-time = "2026-02-02T15:37:52.607Z" }, + { url = "https://files.pythonhosted.org/packages/96/0b/fc793858dfa54be6feee940c1463370ece34b3c39c1ca0aa3845f5ba9892/orjson-3.11.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0724e265bc548af1dedebd9cb3d24b4e1c1e685a343be43e87ba922a5c5fff2f", size = 130812, upload-time = "2026-02-02T15:37:53.944Z" }, + { url = "https://files.pythonhosted.org/packages/dc/91/98a52415059db3f374757d0b7f0f16e3b5cd5976c90d1c2b56acaea039e6/orjson-3.11.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7745312efa9e11c17fbd3cb3097262d079da26930ae9ae7ba28fb738367cbad", size = 133440, upload-time = "2026-02-02T15:37:55.615Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b6/cb540117bda61791f46381f8c26c8f93e802892830a6055748d3bb1925ab/orjson-3.11.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f904c24bdeabd4298f7a977ef14ca2a022ca921ed670b92ecd16ab6f3d01f867", size = 138386, upload-time = "2026-02-02T15:37:56.814Z" }, + { url = "https://files.pythonhosted.org/packages/63/1a/50a3201c334a7f17c231eee5f841342190723794e3b06293f26e7cf87d31/orjson-3.11.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b9fc4d0f81f394689e0814617aadc4f2ea0e8025f38c226cbf22d3b5ddbf025d", size = 408853, upload-time = "2026-02-02T15:37:58.291Z" }, + { url = "https://files.pythonhosted.org/packages/87/cd/8de1c67d0be44fdc22701e5989c0d015a2adf391498ad42c4dc589cd3013/orjson-3.11.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:849e38203e5be40b776ed2718e587faf204d184fc9a008ae441f9442320c0cab", size = 144130, upload-time = "2026-02-02T15:38:00.163Z" }, + { url = "https://files.pythonhosted.org/packages/0f/fe/d605d700c35dd55f51710d159fc54516a280923cd1b7e47508982fbb387d/orjson-3.11.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4682d1db3bcebd2b64757e0ddf9e87ae5f00d29d16c5cdf3a62f561d08cc3dd2", size = 134818, upload-time = "2026-02-02T15:38:01.507Z" }, + { url = "https://files.pythonhosted.org/packages/e4/e4/15ecc67edb3ddb3e2f46ae04475f2d294e8b60c1825fbe28a428b93b3fbd/orjson-3.11.7-cp312-cp312-win32.whl", hash = "sha256:f4f7c956b5215d949a1f65334cf9d7612dde38f20a95f2315deef167def91a6f", size = 127923, upload-time = "2026-02-02T15:38:02.75Z" }, + { url = "https://files.pythonhosted.org/packages/34/70/2e0855361f76198a3965273048c8e50a9695d88cd75811a5b46444895845/orjson-3.11.7-cp312-cp312-win_amd64.whl", hash = "sha256:bf742e149121dc5648ba0a08ea0871e87b660467ef168a3a5e53bc1fbd64bb74", size = 125007, upload-time = "2026-02-02T15:38:04.032Z" }, + { url = "https://files.pythonhosted.org/packages/68/40/c2051bd19fc467610fed469dc29e43ac65891571138f476834ca192bc290/orjson-3.11.7-cp312-cp312-win_arm64.whl", hash = "sha256:26c3b9132f783b7d7903bf1efb095fed8d4a3a85ec0d334ee8beff3d7a4749d5", size = 126089, upload-time = "2026-02-02T15:38:05.297Z" }, + { url = "https://files.pythonhosted.org/packages/89/25/6e0e52cac5aab51d7b6dcd257e855e1dec1c2060f6b28566c509b4665f62/orjson-3.11.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:1d98b30cc1313d52d4af17d9c3d307b08389752ec5f2e5febdfada70b0f8c733", size = 228390, upload-time = "2026-02-02T15:38:06.8Z" }, + { url = "https://files.pythonhosted.org/packages/a5/29/a77f48d2fc8a05bbc529e5ff481fb43d914f9e383ea2469d4f3d51df3d00/orjson-3.11.7-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:d897e81f8d0cbd2abb82226d1860ad2e1ab3ff16d7b08c96ca00df9d45409ef4", size = 125189, upload-time = "2026-02-02T15:38:08.181Z" }, + { url = "https://files.pythonhosted.org/packages/89/25/0a16e0729a0e6a1504f9d1a13cdd365f030068aab64cec6958396b9969d7/orjson-3.11.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:814be4b49b228cfc0b3c565acf642dd7d13538f966e3ccde61f4f55be3e20785", size = 128106, upload-time = "2026-02-02T15:38:09.41Z" }, + { url = "https://files.pythonhosted.org/packages/66/da/a2e505469d60666a05ab373f1a6322eb671cb2ba3a0ccfc7d4bc97196787/orjson-3.11.7-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d06e5c5fed5caedd2e540d62e5b1c25e8c82431b9e577c33537e5fa4aa909539", size = 123363, upload-time = "2026-02-02T15:38:10.73Z" }, + { url = "https://files.pythonhosted.org/packages/23/bf/ed73f88396ea35c71b38961734ea4a4746f7ca0768bf28fd551d37e48dd0/orjson-3.11.7-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:31c80ce534ac4ea3739c5ee751270646cbc46e45aea7576a38ffec040b4029a1", size = 129007, upload-time = "2026-02-02T15:38:12.138Z" }, + { url = "https://files.pythonhosted.org/packages/73/3c/b05d80716f0225fc9008fbf8ab22841dcc268a626aa550561743714ce3bf/orjson-3.11.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f50979824bde13d32b4320eedd513431c921102796d86be3eee0b58e58a3ecd1", size = 141667, upload-time = "2026-02-02T15:38:13.398Z" }, + { url = "https://files.pythonhosted.org/packages/61/e8/0be9b0addd9bf86abfc938e97441dcd0375d494594b1c8ad10fe57479617/orjson-3.11.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9e54f3808e2b6b945078c41aa8d9b5834b28c50843846e97807e5adb75fa9705", size = 130832, upload-time = "2026-02-02T15:38:14.698Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ec/c68e3b9021a31d9ec15a94931db1410136af862955854ed5dd7e7e4f5bff/orjson-3.11.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12b80df61aab7b98b490fe9e4879925ba666fccdfcd175252ce4d9035865ace", size = 133373, upload-time = "2026-02-02T15:38:16.109Z" }, + { url = "https://files.pythonhosted.org/packages/d2/45/f3466739aaafa570cc8e77c6dbb853c48bf56e3b43738020e2661e08b0ac/orjson-3.11.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:996b65230271f1a97026fd0e6a753f51fbc0c335d2ad0c6201f711b0da32693b", size = 138307, upload-time = "2026-02-02T15:38:17.453Z" }, + { url = "https://files.pythonhosted.org/packages/e1/84/9f7f02288da1ffb31405c1be07657afd1eecbcb4b64ee2817b6fe0f785fa/orjson-3.11.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:ab49d4b2a6a1d415ddb9f37a21e02e0d5dbfe10b7870b21bf779fc21e9156157", size = 408695, upload-time = "2026-02-02T15:38:18.831Z" }, + { url = "https://files.pythonhosted.org/packages/18/07/9dd2f0c0104f1a0295ffbe912bc8d63307a539b900dd9e2c48ef7810d971/orjson-3.11.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:390a1dce0c055ddf8adb6aa94a73b45a4a7d7177b5c584b8d1c1947f2ba60fb3", size = 144099, upload-time = "2026-02-02T15:38:20.28Z" }, + { url = "https://files.pythonhosted.org/packages/a5/66/857a8e4a3292e1f7b1b202883bcdeb43a91566cf59a93f97c53b44bd6801/orjson-3.11.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1eb80451a9c351a71dfaf5b7ccc13ad065405217726b59fdbeadbcc544f9d223", size = 134806, upload-time = "2026-02-02T15:38:22.186Z" }, + { url = "https://files.pythonhosted.org/packages/0a/5b/6ebcf3defc1aab3a338ca777214966851e92efb1f30dc7fc8285216e6d1b/orjson-3.11.7-cp313-cp313-win32.whl", hash = "sha256:7477aa6a6ec6139c5cb1cc7b214643592169a5494d200397c7fc95d740d5fcf3", size = 127914, upload-time = "2026-02-02T15:38:23.511Z" }, + { url = "https://files.pythonhosted.org/packages/00/04/c6f72daca5092e3117840a1b1e88dfc809cc1470cf0734890d0366b684a1/orjson-3.11.7-cp313-cp313-win_amd64.whl", hash = "sha256:b9f95dcdea9d4f805daa9ddf02617a89e484c6985fa03055459f90e87d7a0757", size = 124986, upload-time = "2026-02-02T15:38:24.836Z" }, + { url = "https://files.pythonhosted.org/packages/03/ba/077a0f6f1085d6b806937246860fafbd5b17f3919c70ee3f3d8d9c713f38/orjson-3.11.7-cp313-cp313-win_arm64.whl", hash = "sha256:800988273a014a0541483dc81021247d7eacb0c845a9d1a34a422bc718f41539", size = 126045, upload-time = "2026-02-02T15:38:26.216Z" }, ] [[package]] name = "packaging" version = "26.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload_time = "2026-01-21T20:50:39.064Z" } +sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload_time = "2026-01-21T20:50:37.788Z" }, + { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" }, ] [[package]] @@ -2759,42 +2809,42 @@ dependencies = [ { name = "pytz", marker = "python_full_version < '3.11'" }, { name = "tzdata", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload_time = "2025-09-29T23:34:51.853Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/f7/f425a00df4fcc22b292c6895c6831c0c8ae1d9fac1e024d16f98a9ce8749/pandas-2.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:376c6446ae31770764215a6c937f72d917f214b43560603cd60da6408f183b6c", size = 11555763, upload_time = "2025-09-29T23:16:53.287Z" }, - { url = "https://files.pythonhosted.org/packages/13/4f/66d99628ff8ce7857aca52fed8f0066ce209f96be2fede6cef9f84e8d04f/pandas-2.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e19d192383eab2f4ceb30b412b22ea30690c9e618f78870357ae1d682912015a", size = 10801217, upload_time = "2025-09-29T23:17:04.522Z" }, - { url = "https://files.pythonhosted.org/packages/1d/03/3fc4a529a7710f890a239cc496fc6d50ad4a0995657dccc1d64695adb9f4/pandas-2.3.3-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5caf26f64126b6c7aec964f74266f435afef1c1b13da3b0636c7518a1fa3e2b1", size = 12148791, upload_time = "2025-09-29T23:17:18.444Z" }, - { url = "https://files.pythonhosted.org/packages/40/a8/4dac1f8f8235e5d25b9955d02ff6f29396191d4e665d71122c3722ca83c5/pandas-2.3.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd7478f1463441ae4ca7308a70e90b33470fa593429f9d4c578dd00d1fa78838", size = 12769373, upload_time = "2025-09-29T23:17:35.846Z" }, - { url = "https://files.pythonhosted.org/packages/df/91/82cc5169b6b25440a7fc0ef3a694582418d875c8e3ebf796a6d6470aa578/pandas-2.3.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4793891684806ae50d1288c9bae9330293ab4e083ccd1c5e383c34549c6e4250", size = 13200444, upload_time = "2025-09-29T23:17:49.341Z" }, - { url = "https://files.pythonhosted.org/packages/10/ae/89b3283800ab58f7af2952704078555fa60c807fff764395bb57ea0b0dbd/pandas-2.3.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28083c648d9a99a5dd035ec125d42439c6c1c525098c58af0fc38dd1a7a1b3d4", size = 13858459, upload_time = "2025-09-29T23:18:03.722Z" }, - { url = "https://files.pythonhosted.org/packages/85/72/530900610650f54a35a19476eca5104f38555afccda1aa11a92ee14cb21d/pandas-2.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:503cf027cf9940d2ceaa1a93cfb5f8c8c7e6e90720a2850378f0b3f3b1e06826", size = 11346086, upload_time = "2025-09-29T23:18:18.505Z" }, - { url = "https://files.pythonhosted.org/packages/c1/fa/7ac648108144a095b4fb6aa3de1954689f7af60a14cf25583f4960ecb878/pandas-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:602b8615ebcc4a0c1751e71840428ddebeb142ec02c786e8ad6b1ce3c8dec523", size = 11578790, upload_time = "2025-09-29T23:18:30.065Z" }, - { url = "https://files.pythonhosted.org/packages/9b/35/74442388c6cf008882d4d4bdfc4109be87e9b8b7ccd097ad1e7f006e2e95/pandas-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8fe25fc7b623b0ef6b5009149627e34d2a4657e880948ec3c840e9402e5c1b45", size = 10833831, upload_time = "2025-09-29T23:38:56.071Z" }, - { url = "https://files.pythonhosted.org/packages/fe/e4/de154cbfeee13383ad58d23017da99390b91d73f8c11856f2095e813201b/pandas-2.3.3-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b468d3dad6ff947df92dcb32ede5b7bd41a9b3cceef0a30ed925f6d01fb8fa66", size = 12199267, upload_time = "2025-09-29T23:18:41.627Z" }, - { url = "https://files.pythonhosted.org/packages/bf/c9/63f8d545568d9ab91476b1818b4741f521646cbdd151c6efebf40d6de6f7/pandas-2.3.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b98560e98cb334799c0b07ca7967ac361a47326e9b4e5a7dfb5ab2b1c9d35a1b", size = 12789281, upload_time = "2025-09-29T23:18:56.834Z" }, - { url = "https://files.pythonhosted.org/packages/f2/00/a5ac8c7a0e67fd1a6059e40aa08fa1c52cc00709077d2300e210c3ce0322/pandas-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37b5848ba49824e5c30bedb9c830ab9b7751fd049bc7914533e01c65f79791", size = 13240453, upload_time = "2025-09-29T23:19:09.247Z" }, - { url = "https://files.pythonhosted.org/packages/27/4d/5c23a5bc7bd209231618dd9e606ce076272c9bc4f12023a70e03a86b4067/pandas-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:db4301b2d1f926ae677a751eb2bd0e8c5f5319c9cb3f88b0becbbb0b07b34151", size = 13890361, upload_time = "2025-09-29T23:19:25.342Z" }, - { url = "https://files.pythonhosted.org/packages/8e/59/712db1d7040520de7a4965df15b774348980e6df45c129b8c64d0dbe74ef/pandas-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:f086f6fe114e19d92014a1966f43a3e62285109afe874f067f5abbdcbb10e59c", size = 11348702, upload_time = "2025-09-29T23:19:38.296Z" }, - { url = "https://files.pythonhosted.org/packages/9c/fb/231d89e8637c808b997d172b18e9d4a4bc7bf31296196c260526055d1ea0/pandas-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53", size = 11597846, upload_time = "2025-09-29T23:19:48.856Z" }, - { url = "https://files.pythonhosted.org/packages/5c/bd/bf8064d9cfa214294356c2d6702b716d3cf3bb24be59287a6a21e24cae6b/pandas-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35", size = 10729618, upload_time = "2025-09-29T23:39:08.659Z" }, - { url = "https://files.pythonhosted.org/packages/57/56/cf2dbe1a3f5271370669475ead12ce77c61726ffd19a35546e31aa8edf4e/pandas-2.3.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908", size = 11737212, upload_time = "2025-09-29T23:19:59.765Z" }, - { url = "https://files.pythonhosted.org/packages/e5/63/cd7d615331b328e287d8233ba9fdf191a9c2d11b6af0c7a59cfcec23de68/pandas-2.3.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89", size = 12362693, upload_time = "2025-09-29T23:20:14.098Z" }, - { url = "https://files.pythonhosted.org/packages/a6/de/8b1895b107277d52f2b42d3a6806e69cfef0d5cf1d0ba343470b9d8e0a04/pandas-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98", size = 12771002, upload_time = "2025-09-29T23:20:26.76Z" }, - { url = "https://files.pythonhosted.org/packages/87/21/84072af3187a677c5893b170ba2c8fbe450a6ff911234916da889b698220/pandas-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084", size = 13450971, upload_time = "2025-09-29T23:20:41.344Z" }, - { url = "https://files.pythonhosted.org/packages/86/41/585a168330ff063014880a80d744219dbf1dd7a1c706e75ab3425a987384/pandas-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b", size = 10992722, upload_time = "2025-09-29T23:20:54.139Z" }, - { url = "https://files.pythonhosted.org/packages/cd/4b/18b035ee18f97c1040d94debd8f2e737000ad70ccc8f5513f4eefad75f4b/pandas-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713", size = 11544671, upload_time = "2025-09-29T23:21:05.024Z" }, - { url = "https://files.pythonhosted.org/packages/31/94/72fac03573102779920099bcac1c3b05975c2cb5f01eac609faf34bed1ca/pandas-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8", size = 10680807, upload_time = "2025-09-29T23:21:15.979Z" }, - { url = "https://files.pythonhosted.org/packages/16/87/9472cf4a487d848476865321de18cc8c920b8cab98453ab79dbbc98db63a/pandas-2.3.3-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d", size = 11709872, upload_time = "2025-09-29T23:21:27.165Z" }, - { url = "https://files.pythonhosted.org/packages/15/07/284f757f63f8a8d69ed4472bfd85122bd086e637bf4ed09de572d575a693/pandas-2.3.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac", size = 12306371, upload_time = "2025-09-29T23:21:40.532Z" }, - { url = "https://files.pythonhosted.org/packages/33/81/a3afc88fca4aa925804a27d2676d22dcd2031c2ebe08aabd0ae55b9ff282/pandas-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c", size = 12765333, upload_time = "2025-09-29T23:21:55.77Z" }, - { url = "https://files.pythonhosted.org/packages/8d/0f/b4d4ae743a83742f1153464cf1a8ecfafc3ac59722a0b5c8602310cb7158/pandas-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493", size = 13418120, upload_time = "2025-09-29T23:22:10.109Z" }, - { url = "https://files.pythonhosted.org/packages/4f/c7/e54682c96a895d0c808453269e0b5928a07a127a15704fedb643e9b0a4c8/pandas-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee", size = 10993991, upload_time = "2025-09-29T23:25:04.889Z" }, - { url = "https://files.pythonhosted.org/packages/f9/ca/3f8d4f49740799189e1395812f3bf23b5e8fc7c190827d55a610da72ce55/pandas-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5", size = 12048227, upload_time = "2025-09-29T23:22:24.343Z" }, - { url = "https://files.pythonhosted.org/packages/0e/5a/f43efec3e8c0cc92c4663ccad372dbdff72b60bdb56b2749f04aa1d07d7e/pandas-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21", size = 11411056, upload_time = "2025-09-29T23:22:37.762Z" }, - { url = "https://files.pythonhosted.org/packages/46/b1/85331edfc591208c9d1a63a06baa67b21d332e63b7a591a5ba42a10bb507/pandas-2.3.3-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78", size = 11645189, upload_time = "2025-09-29T23:22:51.688Z" }, - { url = "https://files.pythonhosted.org/packages/44/23/78d645adc35d94d1ac4f2a3c4112ab6f5b8999f4898b8cdf01252f8df4a9/pandas-2.3.3-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110", size = 12121912, upload_time = "2025-09-29T23:23:05.042Z" }, - { url = "https://files.pythonhosted.org/packages/53/da/d10013df5e6aaef6b425aa0c32e1fc1f3e431e4bcabd420517dceadce354/pandas-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86", size = 12712160, upload_time = "2025-09-29T23:23:28.57Z" }, - { url = "https://files.pythonhosted.org/packages/bd/17/e756653095a083d8a37cbd816cb87148debcfcd920129b25f99dd8d04271/pandas-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc", size = 13199233, upload_time = "2025-09-29T23:24:24.876Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload-time = "2025-09-29T23:34:51.853Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/f7/f425a00df4fcc22b292c6895c6831c0c8ae1d9fac1e024d16f98a9ce8749/pandas-2.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:376c6446ae31770764215a6c937f72d917f214b43560603cd60da6408f183b6c", size = 11555763, upload-time = "2025-09-29T23:16:53.287Z" }, + { url = "https://files.pythonhosted.org/packages/13/4f/66d99628ff8ce7857aca52fed8f0066ce209f96be2fede6cef9f84e8d04f/pandas-2.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e19d192383eab2f4ceb30b412b22ea30690c9e618f78870357ae1d682912015a", size = 10801217, upload-time = "2025-09-29T23:17:04.522Z" }, + { url = "https://files.pythonhosted.org/packages/1d/03/3fc4a529a7710f890a239cc496fc6d50ad4a0995657dccc1d64695adb9f4/pandas-2.3.3-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5caf26f64126b6c7aec964f74266f435afef1c1b13da3b0636c7518a1fa3e2b1", size = 12148791, upload-time = "2025-09-29T23:17:18.444Z" }, + { url = "https://files.pythonhosted.org/packages/40/a8/4dac1f8f8235e5d25b9955d02ff6f29396191d4e665d71122c3722ca83c5/pandas-2.3.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd7478f1463441ae4ca7308a70e90b33470fa593429f9d4c578dd00d1fa78838", size = 12769373, upload-time = "2025-09-29T23:17:35.846Z" }, + { url = "https://files.pythonhosted.org/packages/df/91/82cc5169b6b25440a7fc0ef3a694582418d875c8e3ebf796a6d6470aa578/pandas-2.3.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4793891684806ae50d1288c9bae9330293ab4e083ccd1c5e383c34549c6e4250", size = 13200444, upload-time = "2025-09-29T23:17:49.341Z" }, + { url = "https://files.pythonhosted.org/packages/10/ae/89b3283800ab58f7af2952704078555fa60c807fff764395bb57ea0b0dbd/pandas-2.3.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28083c648d9a99a5dd035ec125d42439c6c1c525098c58af0fc38dd1a7a1b3d4", size = 13858459, upload-time = "2025-09-29T23:18:03.722Z" }, + { url = "https://files.pythonhosted.org/packages/85/72/530900610650f54a35a19476eca5104f38555afccda1aa11a92ee14cb21d/pandas-2.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:503cf027cf9940d2ceaa1a93cfb5f8c8c7e6e90720a2850378f0b3f3b1e06826", size = 11346086, upload-time = "2025-09-29T23:18:18.505Z" }, + { url = "https://files.pythonhosted.org/packages/c1/fa/7ac648108144a095b4fb6aa3de1954689f7af60a14cf25583f4960ecb878/pandas-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:602b8615ebcc4a0c1751e71840428ddebeb142ec02c786e8ad6b1ce3c8dec523", size = 11578790, upload-time = "2025-09-29T23:18:30.065Z" }, + { url = "https://files.pythonhosted.org/packages/9b/35/74442388c6cf008882d4d4bdfc4109be87e9b8b7ccd097ad1e7f006e2e95/pandas-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8fe25fc7b623b0ef6b5009149627e34d2a4657e880948ec3c840e9402e5c1b45", size = 10833831, upload-time = "2025-09-29T23:38:56.071Z" }, + { url = "https://files.pythonhosted.org/packages/fe/e4/de154cbfeee13383ad58d23017da99390b91d73f8c11856f2095e813201b/pandas-2.3.3-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b468d3dad6ff947df92dcb32ede5b7bd41a9b3cceef0a30ed925f6d01fb8fa66", size = 12199267, upload-time = "2025-09-29T23:18:41.627Z" }, + { url = "https://files.pythonhosted.org/packages/bf/c9/63f8d545568d9ab91476b1818b4741f521646cbdd151c6efebf40d6de6f7/pandas-2.3.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b98560e98cb334799c0b07ca7967ac361a47326e9b4e5a7dfb5ab2b1c9d35a1b", size = 12789281, upload-time = "2025-09-29T23:18:56.834Z" }, + { url = "https://files.pythonhosted.org/packages/f2/00/a5ac8c7a0e67fd1a6059e40aa08fa1c52cc00709077d2300e210c3ce0322/pandas-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37b5848ba49824e5c30bedb9c830ab9b7751fd049bc7914533e01c65f79791", size = 13240453, upload-time = "2025-09-29T23:19:09.247Z" }, + { url = "https://files.pythonhosted.org/packages/27/4d/5c23a5bc7bd209231618dd9e606ce076272c9bc4f12023a70e03a86b4067/pandas-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:db4301b2d1f926ae677a751eb2bd0e8c5f5319c9cb3f88b0becbbb0b07b34151", size = 13890361, upload-time = "2025-09-29T23:19:25.342Z" }, + { url = "https://files.pythonhosted.org/packages/8e/59/712db1d7040520de7a4965df15b774348980e6df45c129b8c64d0dbe74ef/pandas-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:f086f6fe114e19d92014a1966f43a3e62285109afe874f067f5abbdcbb10e59c", size = 11348702, upload-time = "2025-09-29T23:19:38.296Z" }, + { url = "https://files.pythonhosted.org/packages/9c/fb/231d89e8637c808b997d172b18e9d4a4bc7bf31296196c260526055d1ea0/pandas-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53", size = 11597846, upload-time = "2025-09-29T23:19:48.856Z" }, + { url = "https://files.pythonhosted.org/packages/5c/bd/bf8064d9cfa214294356c2d6702b716d3cf3bb24be59287a6a21e24cae6b/pandas-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35", size = 10729618, upload-time = "2025-09-29T23:39:08.659Z" }, + { url = "https://files.pythonhosted.org/packages/57/56/cf2dbe1a3f5271370669475ead12ce77c61726ffd19a35546e31aa8edf4e/pandas-2.3.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908", size = 11737212, upload-time = "2025-09-29T23:19:59.765Z" }, + { url = "https://files.pythonhosted.org/packages/e5/63/cd7d615331b328e287d8233ba9fdf191a9c2d11b6af0c7a59cfcec23de68/pandas-2.3.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89", size = 12362693, upload-time = "2025-09-29T23:20:14.098Z" }, + { url = "https://files.pythonhosted.org/packages/a6/de/8b1895b107277d52f2b42d3a6806e69cfef0d5cf1d0ba343470b9d8e0a04/pandas-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98", size = 12771002, upload-time = "2025-09-29T23:20:26.76Z" }, + { url = "https://files.pythonhosted.org/packages/87/21/84072af3187a677c5893b170ba2c8fbe450a6ff911234916da889b698220/pandas-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084", size = 13450971, upload-time = "2025-09-29T23:20:41.344Z" }, + { url = "https://files.pythonhosted.org/packages/86/41/585a168330ff063014880a80d744219dbf1dd7a1c706e75ab3425a987384/pandas-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b", size = 10992722, upload-time = "2025-09-29T23:20:54.139Z" }, + { url = "https://files.pythonhosted.org/packages/cd/4b/18b035ee18f97c1040d94debd8f2e737000ad70ccc8f5513f4eefad75f4b/pandas-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713", size = 11544671, upload-time = "2025-09-29T23:21:05.024Z" }, + { url = "https://files.pythonhosted.org/packages/31/94/72fac03573102779920099bcac1c3b05975c2cb5f01eac609faf34bed1ca/pandas-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8", size = 10680807, upload-time = "2025-09-29T23:21:15.979Z" }, + { url = "https://files.pythonhosted.org/packages/16/87/9472cf4a487d848476865321de18cc8c920b8cab98453ab79dbbc98db63a/pandas-2.3.3-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d", size = 11709872, upload-time = "2025-09-29T23:21:27.165Z" }, + { url = "https://files.pythonhosted.org/packages/15/07/284f757f63f8a8d69ed4472bfd85122bd086e637bf4ed09de572d575a693/pandas-2.3.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac", size = 12306371, upload-time = "2025-09-29T23:21:40.532Z" }, + { url = "https://files.pythonhosted.org/packages/33/81/a3afc88fca4aa925804a27d2676d22dcd2031c2ebe08aabd0ae55b9ff282/pandas-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c", size = 12765333, upload-time = "2025-09-29T23:21:55.77Z" }, + { url = "https://files.pythonhosted.org/packages/8d/0f/b4d4ae743a83742f1153464cf1a8ecfafc3ac59722a0b5c8602310cb7158/pandas-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493", size = 13418120, upload-time = "2025-09-29T23:22:10.109Z" }, + { url = "https://files.pythonhosted.org/packages/4f/c7/e54682c96a895d0c808453269e0b5928a07a127a15704fedb643e9b0a4c8/pandas-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee", size = 10993991, upload-time = "2025-09-29T23:25:04.889Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ca/3f8d4f49740799189e1395812f3bf23b5e8fc7c190827d55a610da72ce55/pandas-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5", size = 12048227, upload-time = "2025-09-29T23:22:24.343Z" }, + { url = "https://files.pythonhosted.org/packages/0e/5a/f43efec3e8c0cc92c4663ccad372dbdff72b60bdb56b2749f04aa1d07d7e/pandas-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21", size = 11411056, upload-time = "2025-09-29T23:22:37.762Z" }, + { url = "https://files.pythonhosted.org/packages/46/b1/85331edfc591208c9d1a63a06baa67b21d332e63b7a591a5ba42a10bb507/pandas-2.3.3-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78", size = 11645189, upload-time = "2025-09-29T23:22:51.688Z" }, + { url = "https://files.pythonhosted.org/packages/44/23/78d645adc35d94d1ac4f2a3c4112ab6f5b8999f4898b8cdf01252f8df4a9/pandas-2.3.3-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110", size = 12121912, upload-time = "2025-09-29T23:23:05.042Z" }, + { url = "https://files.pythonhosted.org/packages/53/da/d10013df5e6aaef6b425aa0c32e1fc1f3e431e4bcabd420517dceadce354/pandas-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86", size = 12712160, upload-time = "2025-09-29T23:23:28.57Z" }, + { url = "https://files.pythonhosted.org/packages/bd/17/e756653095a083d8a37cbd816cb87148debcfcd920129b25f99dd8d04271/pandas-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc", size = 13199233, upload-time = "2025-09-29T23:24:24.876Z" }, ] [[package]] @@ -2816,57 +2866,57 @@ dependencies = [ { name = "python-dateutil", marker = "python_full_version >= '3.11'" }, { name = "tzdata", marker = "(python_full_version >= '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.11' and sys_platform == 'win32')" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/de/da/b1dc0481ab8d55d0f46e343cfe67d4551a0e14fcee52bd38ca1bd73258d8/pandas-3.0.0.tar.gz", hash = "sha256:0facf7e87d38f721f0af46fe70d97373a37701b1c09f7ed7aeeb292ade5c050f", size = 4633005, upload_time = "2026-01-21T15:52:04.726Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/46/1e/b184654a856e75e975a6ee95d6577b51c271cd92cb2b020c9378f53e0032/pandas-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d64ce01eb9cdca96a15266aa679ae50212ec52757c79204dbc7701a222401850", size = 10313247, upload_time = "2026-01-21T15:50:15.775Z" }, - { url = "https://files.pythonhosted.org/packages/dd/5e/e04a547ad0f0183bf151fd7c7a477468e3b85ff2ad231c566389e6cc9587/pandas-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:613e13426069793aa1ec53bdcc3b86e8d32071daea138bbcf4fa959c9cdaa2e2", size = 9913131, upload_time = "2026-01-21T15:50:18.611Z" }, - { url = "https://files.pythonhosted.org/packages/a2/93/bb77bfa9fc2aba9f7204db807d5d3fb69832ed2854c60ba91b4c65ba9219/pandas-3.0.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0192fee1f1a8e743b464a6607858ee4b071deb0b118eb143d71c2a1d170996d5", size = 10741925, upload_time = "2026-01-21T15:50:21.058Z" }, - { url = "https://files.pythonhosted.org/packages/62/fb/89319812eb1d714bfc04b7f177895caeba8ab4a37ef6712db75ed786e2e0/pandas-3.0.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0b853319dec8d5e0c8b875374c078ef17f2269986a78168d9bd57e49bf650ae", size = 11245979, upload_time = "2026-01-21T15:50:23.413Z" }, - { url = "https://files.pythonhosted.org/packages/a9/63/684120486f541fc88da3862ed31165b3b3e12b6a1c7b93be4597bc84e26c/pandas-3.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:707a9a877a876c326ae2cb640fbdc4ef63b0a7b9e2ef55c6df9942dcee8e2af9", size = 11756337, upload_time = "2026-01-21T15:50:25.932Z" }, - { url = "https://files.pythonhosted.org/packages/39/92/7eb0ad232312b59aec61550c3c81ad0743898d10af5df7f80bc5e5065416/pandas-3.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:afd0aa3d0b5cda6e0b8ffc10dbcca3b09ef3cbcd3fe2b27364f85fdc04e1989d", size = 12325517, upload_time = "2026-01-21T15:50:27.952Z" }, - { url = "https://files.pythonhosted.org/packages/51/27/bf9436dd0a4fc3130acec0828951c7ef96a0631969613a9a35744baf27f6/pandas-3.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:113b4cca2614ff7e5b9fee9b6f066618fe73c5a83e99d721ffc41217b2bf57dd", size = 9881576, upload_time = "2026-01-21T15:50:30.149Z" }, - { url = "https://files.pythonhosted.org/packages/e7/2b/c618b871fce0159fd107516336e82891b404e3f340821853c2fc28c7830f/pandas-3.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c14837eba8e99a8da1527c0280bba29b0eb842f64aa94982c5e21227966e164b", size = 9140807, upload_time = "2026-01-21T15:50:32.308Z" }, - { url = "https://files.pythonhosted.org/packages/0b/38/db33686f4b5fa64d7af40d96361f6a4615b8c6c8f1b3d334eee46ae6160e/pandas-3.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9803b31f5039b3c3b10cc858c5e40054adb4b29b4d81cb2fd789f4121c8efbcd", size = 10334013, upload_time = "2026-01-21T15:50:34.771Z" }, - { url = "https://files.pythonhosted.org/packages/a5/7b/9254310594e9774906bacdd4e732415e1f86ab7dbb4b377ef9ede58cd8ec/pandas-3.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:14c2a4099cd38a1d18ff108168ea417909b2dea3bd1ebff2ccf28ddb6a74d740", size = 9874154, upload_time = "2026-01-21T15:50:36.67Z" }, - { url = "https://files.pythonhosted.org/packages/63/d4/726c5a67a13bc66643e66d2e9ff115cead482a44fc56991d0c4014f15aaf/pandas-3.0.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d257699b9a9960e6125686098d5714ac59d05222bef7a5e6af7a7fd87c650801", size = 10384433, upload_time = "2026-01-21T15:50:39.132Z" }, - { url = "https://files.pythonhosted.org/packages/bf/2e/9211f09bedb04f9832122942de8b051804b31a39cfbad199a819bb88d9f3/pandas-3.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:69780c98f286076dcafca38d8b8eee1676adf220199c0a39f0ecbf976b68151a", size = 10864519, upload_time = "2026-01-21T15:50:41.043Z" }, - { url = "https://files.pythonhosted.org/packages/00/8d/50858522cdc46ac88b9afdc3015e298959a70a08cd21e008a44e9520180c/pandas-3.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4a66384f017240f3858a4c8a7cf21b0591c3ac885cddb7758a589f0f71e87ebb", size = 11394124, upload_time = "2026-01-21T15:50:43.377Z" }, - { url = "https://files.pythonhosted.org/packages/86/3f/83b2577db02503cd93d8e95b0f794ad9d4be0ba7cb6c8bcdcac964a34a42/pandas-3.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be8c515c9bc33989d97b89db66ea0cececb0f6e3c2a87fcc8b69443a6923e95f", size = 11920444, upload_time = "2026-01-21T15:50:45.932Z" }, - { url = "https://files.pythonhosted.org/packages/64/2d/4f8a2f192ed12c90a0aab47f5557ece0e56b0370c49de9454a09de7381b2/pandas-3.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:a453aad8c4f4e9f166436994a33884442ea62aa8b27d007311e87521b97246e1", size = 9730970, upload_time = "2026-01-21T15:50:47.962Z" }, - { url = "https://files.pythonhosted.org/packages/d4/64/ff571be435cf1e643ca98d0945d76732c0b4e9c37191a89c8550b105eed1/pandas-3.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:da768007b5a33057f6d9053563d6b74dd6d029c337d93c6d0d22a763a5c2ecc0", size = 9041950, upload_time = "2026-01-21T15:50:50.422Z" }, - { url = "https://files.pythonhosted.org/packages/6f/fa/7f0ac4ca8877c57537aaff2a842f8760e630d8e824b730eb2e859ffe96ca/pandas-3.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b78d646249b9a2bc191040988c7bb524c92fa8534fb0898a0741d7e6f2ffafa6", size = 10307129, upload_time = "2026-01-21T15:50:52.877Z" }, - { url = "https://files.pythonhosted.org/packages/6f/11/28a221815dcea4c0c9414dfc845e34a84a6a7dabc6da3194498ed5ba4361/pandas-3.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bc9cba7b355cb4162442a88ce495e01cb605f17ac1e27d6596ac963504e0305f", size = 9850201, upload_time = "2026-01-21T15:50:54.807Z" }, - { url = "https://files.pythonhosted.org/packages/ba/da/53bbc8c5363b7e5bd10f9ae59ab250fc7a382ea6ba08e4d06d8694370354/pandas-3.0.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c9a1a149aed3b6c9bf246033ff91e1b02d529546c5d6fb6b74a28fea0cf4c70", size = 10354031, upload_time = "2026-01-21T15:50:57.463Z" }, - { url = "https://files.pythonhosted.org/packages/f7/a3/51e02ebc2a14974170d51e2410dfdab58870ea9bcd37cda15bd553d24dc4/pandas-3.0.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95683af6175d884ee89471842acfca29172a85031fccdabc35e50c0984470a0e", size = 10861165, upload_time = "2026-01-21T15:50:59.32Z" }, - { url = "https://files.pythonhosted.org/packages/a5/fe/05a51e3cac11d161472b8297bd41723ea98013384dd6d76d115ce3482f9b/pandas-3.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1fbbb5a7288719e36b76b4f18d46ede46e7f916b6c8d9915b756b0a6c3f792b3", size = 11359359, upload_time = "2026-01-21T15:51:02.014Z" }, - { url = "https://files.pythonhosted.org/packages/ee/56/ba620583225f9b85a4d3e69c01df3e3870659cc525f67929b60e9f21dcd1/pandas-3.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8e8b9808590fa364416b49b2a35c1f4cf2785a6c156935879e57f826df22038e", size = 11912907, upload_time = "2026-01-21T15:51:05.175Z" }, - { url = "https://files.pythonhosted.org/packages/c9/8c/c6638d9f67e45e07656b3826405c5cc5f57f6fd07c8b2572ade328c86e22/pandas-3.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:98212a38a709feb90ae658cb6227ea3657c22ba8157d4b8f913cd4c950de5e7e", size = 9732138, upload_time = "2026-01-21T15:51:07.569Z" }, - { url = "https://files.pythonhosted.org/packages/7b/bf/bd1335c3bf1770b6d8fed2799993b11c4971af93bb1b729b9ebbc02ca2ec/pandas-3.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:177d9df10b3f43b70307a149d7ec49a1229a653f907aa60a48f1877d0e6be3be", size = 9033568, upload_time = "2026-01-21T15:51:09.484Z" }, - { url = "https://files.pythonhosted.org/packages/8e/c6/f5e2171914d5e29b9171d495344097d54e3ffe41d2d85d8115baba4dc483/pandas-3.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2713810ad3806767b89ad3b7b69ba153e1c6ff6d9c20f9c2140379b2a98b6c98", size = 10741936, upload_time = "2026-01-21T15:51:11.693Z" }, - { url = "https://files.pythonhosted.org/packages/51/88/9a0164f99510a1acb9f548691f022c756c2314aad0d8330a24616c14c462/pandas-3.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:15d59f885ee5011daf8335dff47dcb8a912a27b4ad7826dc6cbe809fd145d327", size = 10393884, upload_time = "2026-01-21T15:51:14.197Z" }, - { url = "https://files.pythonhosted.org/packages/e0/53/b34d78084d88d8ae2b848591229da8826d1e65aacf00b3abe34023467648/pandas-3.0.0-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:24e6547fb64d2c92665dd2adbfa4e85fa4fd70a9c070e7cfb03b629a0bbab5eb", size = 10310740, upload_time = "2026-01-21T15:51:16.093Z" }, - { url = "https://files.pythonhosted.org/packages/5b/d3/bee792e7c3d6930b74468d990604325701412e55d7aaf47460a22311d1a5/pandas-3.0.0-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:48ee04b90e2505c693d3f8e8f524dab8cb8aaf7ddcab52c92afa535e717c4812", size = 10700014, upload_time = "2026-01-21T15:51:18.818Z" }, - { url = "https://files.pythonhosted.org/packages/55/db/2570bc40fb13aaed1cbc3fbd725c3a60ee162477982123c3adc8971e7ac1/pandas-3.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:66f72fb172959af42a459e27a8d8d2c7e311ff4c1f7db6deb3b643dbc382ae08", size = 11323737, upload_time = "2026-01-21T15:51:20.784Z" }, - { url = "https://files.pythonhosted.org/packages/bc/2e/297ac7f21c8181b62a4cccebad0a70caf679adf3ae5e83cb676194c8acc3/pandas-3.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4a4a400ca18230976724a5066f20878af785f36c6756e498e94c2a5e5d57779c", size = 11771558, upload_time = "2026-01-21T15:51:22.977Z" }, - { url = "https://files.pythonhosted.org/packages/0a/46/e1c6876d71c14332be70239acce9ad435975a80541086e5ffba2f249bcf6/pandas-3.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:940eebffe55528074341a5a36515f3e4c5e25e958ebbc764c9502cfc35ba3faa", size = 10473771, upload_time = "2026-01-21T15:51:25.285Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/de/da/b1dc0481ab8d55d0f46e343cfe67d4551a0e14fcee52bd38ca1bd73258d8/pandas-3.0.0.tar.gz", hash = "sha256:0facf7e87d38f721f0af46fe70d97373a37701b1c09f7ed7aeeb292ade5c050f", size = 4633005, upload-time = "2026-01-21T15:52:04.726Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/1e/b184654a856e75e975a6ee95d6577b51c271cd92cb2b020c9378f53e0032/pandas-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d64ce01eb9cdca96a15266aa679ae50212ec52757c79204dbc7701a222401850", size = 10313247, upload-time = "2026-01-21T15:50:15.775Z" }, + { url = "https://files.pythonhosted.org/packages/dd/5e/e04a547ad0f0183bf151fd7c7a477468e3b85ff2ad231c566389e6cc9587/pandas-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:613e13426069793aa1ec53bdcc3b86e8d32071daea138bbcf4fa959c9cdaa2e2", size = 9913131, upload-time = "2026-01-21T15:50:18.611Z" }, + { url = "https://files.pythonhosted.org/packages/a2/93/bb77bfa9fc2aba9f7204db807d5d3fb69832ed2854c60ba91b4c65ba9219/pandas-3.0.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0192fee1f1a8e743b464a6607858ee4b071deb0b118eb143d71c2a1d170996d5", size = 10741925, upload-time = "2026-01-21T15:50:21.058Z" }, + { url = "https://files.pythonhosted.org/packages/62/fb/89319812eb1d714bfc04b7f177895caeba8ab4a37ef6712db75ed786e2e0/pandas-3.0.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0b853319dec8d5e0c8b875374c078ef17f2269986a78168d9bd57e49bf650ae", size = 11245979, upload-time = "2026-01-21T15:50:23.413Z" }, + { url = "https://files.pythonhosted.org/packages/a9/63/684120486f541fc88da3862ed31165b3b3e12b6a1c7b93be4597bc84e26c/pandas-3.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:707a9a877a876c326ae2cb640fbdc4ef63b0a7b9e2ef55c6df9942dcee8e2af9", size = 11756337, upload-time = "2026-01-21T15:50:25.932Z" }, + { url = "https://files.pythonhosted.org/packages/39/92/7eb0ad232312b59aec61550c3c81ad0743898d10af5df7f80bc5e5065416/pandas-3.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:afd0aa3d0b5cda6e0b8ffc10dbcca3b09ef3cbcd3fe2b27364f85fdc04e1989d", size = 12325517, upload-time = "2026-01-21T15:50:27.952Z" }, + { url = "https://files.pythonhosted.org/packages/51/27/bf9436dd0a4fc3130acec0828951c7ef96a0631969613a9a35744baf27f6/pandas-3.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:113b4cca2614ff7e5b9fee9b6f066618fe73c5a83e99d721ffc41217b2bf57dd", size = 9881576, upload-time = "2026-01-21T15:50:30.149Z" }, + { url = "https://files.pythonhosted.org/packages/e7/2b/c618b871fce0159fd107516336e82891b404e3f340821853c2fc28c7830f/pandas-3.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c14837eba8e99a8da1527c0280bba29b0eb842f64aa94982c5e21227966e164b", size = 9140807, upload-time = "2026-01-21T15:50:32.308Z" }, + { url = "https://files.pythonhosted.org/packages/0b/38/db33686f4b5fa64d7af40d96361f6a4615b8c6c8f1b3d334eee46ae6160e/pandas-3.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9803b31f5039b3c3b10cc858c5e40054adb4b29b4d81cb2fd789f4121c8efbcd", size = 10334013, upload-time = "2026-01-21T15:50:34.771Z" }, + { url = "https://files.pythonhosted.org/packages/a5/7b/9254310594e9774906bacdd4e732415e1f86ab7dbb4b377ef9ede58cd8ec/pandas-3.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:14c2a4099cd38a1d18ff108168ea417909b2dea3bd1ebff2ccf28ddb6a74d740", size = 9874154, upload-time = "2026-01-21T15:50:36.67Z" }, + { url = "https://files.pythonhosted.org/packages/63/d4/726c5a67a13bc66643e66d2e9ff115cead482a44fc56991d0c4014f15aaf/pandas-3.0.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d257699b9a9960e6125686098d5714ac59d05222bef7a5e6af7a7fd87c650801", size = 10384433, upload-time = "2026-01-21T15:50:39.132Z" }, + { url = "https://files.pythonhosted.org/packages/bf/2e/9211f09bedb04f9832122942de8b051804b31a39cfbad199a819bb88d9f3/pandas-3.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:69780c98f286076dcafca38d8b8eee1676adf220199c0a39f0ecbf976b68151a", size = 10864519, upload-time = "2026-01-21T15:50:41.043Z" }, + { url = "https://files.pythonhosted.org/packages/00/8d/50858522cdc46ac88b9afdc3015e298959a70a08cd21e008a44e9520180c/pandas-3.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4a66384f017240f3858a4c8a7cf21b0591c3ac885cddb7758a589f0f71e87ebb", size = 11394124, upload-time = "2026-01-21T15:50:43.377Z" }, + { url = "https://files.pythonhosted.org/packages/86/3f/83b2577db02503cd93d8e95b0f794ad9d4be0ba7cb6c8bcdcac964a34a42/pandas-3.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be8c515c9bc33989d97b89db66ea0cececb0f6e3c2a87fcc8b69443a6923e95f", size = 11920444, upload-time = "2026-01-21T15:50:45.932Z" }, + { url = "https://files.pythonhosted.org/packages/64/2d/4f8a2f192ed12c90a0aab47f5557ece0e56b0370c49de9454a09de7381b2/pandas-3.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:a453aad8c4f4e9f166436994a33884442ea62aa8b27d007311e87521b97246e1", size = 9730970, upload-time = "2026-01-21T15:50:47.962Z" }, + { url = "https://files.pythonhosted.org/packages/d4/64/ff571be435cf1e643ca98d0945d76732c0b4e9c37191a89c8550b105eed1/pandas-3.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:da768007b5a33057f6d9053563d6b74dd6d029c337d93c6d0d22a763a5c2ecc0", size = 9041950, upload-time = "2026-01-21T15:50:50.422Z" }, + { url = "https://files.pythonhosted.org/packages/6f/fa/7f0ac4ca8877c57537aaff2a842f8760e630d8e824b730eb2e859ffe96ca/pandas-3.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b78d646249b9a2bc191040988c7bb524c92fa8534fb0898a0741d7e6f2ffafa6", size = 10307129, upload-time = "2026-01-21T15:50:52.877Z" }, + { url = "https://files.pythonhosted.org/packages/6f/11/28a221815dcea4c0c9414dfc845e34a84a6a7dabc6da3194498ed5ba4361/pandas-3.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bc9cba7b355cb4162442a88ce495e01cb605f17ac1e27d6596ac963504e0305f", size = 9850201, upload-time = "2026-01-21T15:50:54.807Z" }, + { url = "https://files.pythonhosted.org/packages/ba/da/53bbc8c5363b7e5bd10f9ae59ab250fc7a382ea6ba08e4d06d8694370354/pandas-3.0.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c9a1a149aed3b6c9bf246033ff91e1b02d529546c5d6fb6b74a28fea0cf4c70", size = 10354031, upload-time = "2026-01-21T15:50:57.463Z" }, + { url = "https://files.pythonhosted.org/packages/f7/a3/51e02ebc2a14974170d51e2410dfdab58870ea9bcd37cda15bd553d24dc4/pandas-3.0.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95683af6175d884ee89471842acfca29172a85031fccdabc35e50c0984470a0e", size = 10861165, upload-time = "2026-01-21T15:50:59.32Z" }, + { url = "https://files.pythonhosted.org/packages/a5/fe/05a51e3cac11d161472b8297bd41723ea98013384dd6d76d115ce3482f9b/pandas-3.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1fbbb5a7288719e36b76b4f18d46ede46e7f916b6c8d9915b756b0a6c3f792b3", size = 11359359, upload-time = "2026-01-21T15:51:02.014Z" }, + { url = "https://files.pythonhosted.org/packages/ee/56/ba620583225f9b85a4d3e69c01df3e3870659cc525f67929b60e9f21dcd1/pandas-3.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8e8b9808590fa364416b49b2a35c1f4cf2785a6c156935879e57f826df22038e", size = 11912907, upload-time = "2026-01-21T15:51:05.175Z" }, + { url = "https://files.pythonhosted.org/packages/c9/8c/c6638d9f67e45e07656b3826405c5cc5f57f6fd07c8b2572ade328c86e22/pandas-3.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:98212a38a709feb90ae658cb6227ea3657c22ba8157d4b8f913cd4c950de5e7e", size = 9732138, upload-time = "2026-01-21T15:51:07.569Z" }, + { url = "https://files.pythonhosted.org/packages/7b/bf/bd1335c3bf1770b6d8fed2799993b11c4971af93bb1b729b9ebbc02ca2ec/pandas-3.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:177d9df10b3f43b70307a149d7ec49a1229a653f907aa60a48f1877d0e6be3be", size = 9033568, upload-time = "2026-01-21T15:51:09.484Z" }, + { url = "https://files.pythonhosted.org/packages/8e/c6/f5e2171914d5e29b9171d495344097d54e3ffe41d2d85d8115baba4dc483/pandas-3.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2713810ad3806767b89ad3b7b69ba153e1c6ff6d9c20f9c2140379b2a98b6c98", size = 10741936, upload-time = "2026-01-21T15:51:11.693Z" }, + { url = "https://files.pythonhosted.org/packages/51/88/9a0164f99510a1acb9f548691f022c756c2314aad0d8330a24616c14c462/pandas-3.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:15d59f885ee5011daf8335dff47dcb8a912a27b4ad7826dc6cbe809fd145d327", size = 10393884, upload-time = "2026-01-21T15:51:14.197Z" }, + { url = "https://files.pythonhosted.org/packages/e0/53/b34d78084d88d8ae2b848591229da8826d1e65aacf00b3abe34023467648/pandas-3.0.0-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:24e6547fb64d2c92665dd2adbfa4e85fa4fd70a9c070e7cfb03b629a0bbab5eb", size = 10310740, upload-time = "2026-01-21T15:51:16.093Z" }, + { url = "https://files.pythonhosted.org/packages/5b/d3/bee792e7c3d6930b74468d990604325701412e55d7aaf47460a22311d1a5/pandas-3.0.0-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:48ee04b90e2505c693d3f8e8f524dab8cb8aaf7ddcab52c92afa535e717c4812", size = 10700014, upload-time = "2026-01-21T15:51:18.818Z" }, + { url = "https://files.pythonhosted.org/packages/55/db/2570bc40fb13aaed1cbc3fbd725c3a60ee162477982123c3adc8971e7ac1/pandas-3.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:66f72fb172959af42a459e27a8d8d2c7e311ff4c1f7db6deb3b643dbc382ae08", size = 11323737, upload-time = "2026-01-21T15:51:20.784Z" }, + { url = "https://files.pythonhosted.org/packages/bc/2e/297ac7f21c8181b62a4cccebad0a70caf679adf3ae5e83cb676194c8acc3/pandas-3.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4a4a400ca18230976724a5066f20878af785f36c6756e498e94c2a5e5d57779c", size = 11771558, upload-time = "2026-01-21T15:51:22.977Z" }, + { url = "https://files.pythonhosted.org/packages/0a/46/e1c6876d71c14332be70239acce9ad435975a80541086e5ffba2f249bcf6/pandas-3.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:940eebffe55528074341a5a36515f3e4c5e25e958ebbc764c9502cfc35ba3faa", size = 10473771, upload-time = "2026-01-21T15:51:25.285Z" }, ] [[package]] name = "parso" version = "0.8.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/30/4b/90c937815137d43ce71ba043cd3566221e9df6b9c805f24b5d138c9d40a7/parso-0.8.7.tar.gz", hash = "sha256:eaaac4c9fdd5e9e8852dc778d2d7405897ec510f2a298071453e5e3a07914bb1", size = 401824, upload_time = "2026-05-01T23:13:02.138Z" } +sdist = { url = "https://files.pythonhosted.org/packages/30/4b/90c937815137d43ce71ba043cd3566221e9df6b9c805f24b5d138c9d40a7/parso-0.8.7.tar.gz", hash = "sha256:eaaac4c9fdd5e9e8852dc778d2d7405897ec510f2a298071453e5e3a07914bb1", size = 401824, upload-time = "2026-05-01T23:13:02.138Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl", hash = "sha256:a8926eb2a1b915486941fdbd31e86a4baf88fe8c210f25f2f35ecec5b574ca1c", size = 107025, upload_time = "2026-05-01T23:12:58.867Z" }, + { url = "https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl", hash = "sha256:a8926eb2a1b915486941fdbd31e86a4baf88fe8c210f25f2f35ecec5b574ca1c", size = 107025, upload-time = "2026-05-01T23:12:58.867Z" }, ] [[package]] name = "passlib" version = "1.7.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b6/06/9da9ee59a67fae7761aab3ccc84fa4f3f33f125b370f1ccdb915bf967c11/passlib-1.7.4.tar.gz", hash = "sha256:defd50f72b65c5402ab2c573830a6978e5f202ad0d984793c8dde2c4152ebe04", size = 689844, upload_time = "2020-10-08T19:00:52.121Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/06/9da9ee59a67fae7761aab3ccc84fa4f3f33f125b370f1ccdb915bf967c11/passlib-1.7.4.tar.gz", hash = "sha256:defd50f72b65c5402ab2c573830a6978e5f202ad0d984793c8dde2c4152ebe04", size = 689844, upload-time = "2020-10-08T19:00:52.121Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/a4/ab6b7589382ca3df236e03faa71deac88cae040af60c071a78d254a62172/passlib-1.7.4-py2.py3-none-any.whl", hash = "sha256:aa6bca462b8d8bda89c70b382f0c298a20b5560af6cbfa2dce410c0a2fb669f1", size = 525554, upload_time = "2020-10-08T19:00:49.856Z" }, + { url = "https://files.pythonhosted.org/packages/3b/a4/ab6b7589382ca3df236e03faa71deac88cae040af60c071a78d254a62172/passlib-1.7.4-py2.py3-none-any.whl", hash = "sha256:aa6bca462b8d8bda89c70b382f0c298a20b5560af6cbfa2dce410c0a2fb669f1", size = 525554, upload-time = "2020-10-08T19:00:49.856Z" }, ] [package.optional-dependencies] @@ -2878,45 +2928,45 @@ bcrypt = [ name = "pathspec" version = "1.0.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fa/36/e27608899f9b8d4dff0617b2d9ab17ca5608956ca44461ac14ac48b44015/pathspec-1.0.4.tar.gz", hash = "sha256:0210e2ae8a21a9137c0d470578cb0e595af87edaa6ebf12ff176f14a02e0e645", size = 131200, upload_time = "2026-01-27T03:59:46.938Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fa/36/e27608899f9b8d4dff0617b2d9ab17ca5608956ca44461ac14ac48b44015/pathspec-1.0.4.tar.gz", hash = "sha256:0210e2ae8a21a9137c0d470578cb0e595af87edaa6ebf12ff176f14a02e0e645", size = 131200, upload-time = "2026-01-27T03:59:46.938Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl", hash = "sha256:fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723", size = 55206, upload_time = "2026-01-27T03:59:45.137Z" }, + { url = "https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl", hash = "sha256:fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723", size = 55206, upload-time = "2026-01-27T03:59:45.137Z" }, ] [[package]] name = "phonenumbers" version = "9.0.24" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5e/bf/277ae37edb6f5189937223cc3b2a21b8de9d70ac2d0eb684cf33ba055fdd/phonenumbers-9.0.24.tar.gz", hash = "sha256:97c38e4b5b8af992c75de01bd9c0f84e61701a9c900fd84f49744714910a4dc3", size = 2298138, upload_time = "2026-02-13T11:28:57.724Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/bf/277ae37edb6f5189937223cc3b2a21b8de9d70ac2d0eb684cf33ba055fdd/phonenumbers-9.0.24.tar.gz", hash = "sha256:97c38e4b5b8af992c75de01bd9c0f84e61701a9c900fd84f49744714910a4dc3", size = 2298138, upload-time = "2026-02-13T11:28:57.724Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/c7/b01beac6077df7261d92c6b52408617690147144d8946f6f6ecb7d9766ab/phonenumbers-9.0.24-py2.py3-none-any.whl", hash = "sha256:fa86ab7112ef8b286a811392311bd76bbbae7d1d271c2ed26cf73f2e9fa4d3c6", size = 2584198, upload_time = "2026-02-13T11:28:55.334Z" }, + { url = "https://files.pythonhosted.org/packages/2a/c7/b01beac6077df7261d92c6b52408617690147144d8946f6f6ecb7d9766ab/phonenumbers-9.0.24-py2.py3-none-any.whl", hash = "sha256:fa86ab7112ef8b286a811392311bd76bbbae7d1d271c2ed26cf73f2e9fa4d3c6", size = 2584198, upload-time = "2026-02-13T11:28:55.334Z" }, ] [[package]] name = "pip" version = "26.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/48/83/0d7d4e9efe3344b8e2fe25d93be44f64b65364d3c8d7bc6dc90198d5422e/pip-26.0.1.tar.gz", hash = "sha256:c4037d8a277c89b320abe636d59f91e6d0922d08a05b60e85e53b296613346d8", size = 1812747, upload_time = "2026-02-05T02:20:18.702Z" } +sdist = { url = "https://files.pythonhosted.org/packages/48/83/0d7d4e9efe3344b8e2fe25d93be44f64b65364d3c8d7bc6dc90198d5422e/pip-26.0.1.tar.gz", hash = "sha256:c4037d8a277c89b320abe636d59f91e6d0922d08a05b60e85e53b296613346d8", size = 1812747, upload-time = "2026-02-05T02:20:18.702Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/de/f0/c81e05b613866b76d2d1066490adf1a3dbc4ee9d9c839961c3fc8a6997af/pip-26.0.1-py3-none-any.whl", hash = "sha256:bdb1b08f4274833d62c1aa29e20907365a2ceb950410df15fc9521bad440122b", size = 1787723, upload_time = "2026-02-05T02:20:16.416Z" }, + { url = "https://files.pythonhosted.org/packages/de/f0/c81e05b613866b76d2d1066490adf1a3dbc4ee9d9c839961c3fc8a6997af/pip-26.0.1-py3-none-any.whl", hash = "sha256:bdb1b08f4274833d62c1aa29e20907365a2ceb950410df15fc9521bad440122b", size = 1787723, upload-time = "2026-02-05T02:20:16.416Z" }, ] [[package]] name = "platformdirs" version = "4.9.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1b/04/fea538adf7dbbd6d186f551d595961e564a3b6715bdf276b477460858672/platformdirs-4.9.2.tar.gz", hash = "sha256:9a33809944b9db043ad67ca0db94b14bf452cc6aeaac46a88ea55b26e2e9d291", size = 28394, upload_time = "2026-02-16T03:56:10.574Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/04/fea538adf7dbbd6d186f551d595961e564a3b6715bdf276b477460858672/platformdirs-4.9.2.tar.gz", hash = "sha256:9a33809944b9db043ad67ca0db94b14bf452cc6aeaac46a88ea55b26e2e9d291", size = 28394, upload-time = "2026-02-16T03:56:10.574Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/48/31/05e764397056194206169869b50cf2fee4dbbbc71b344705b9c0d878d4d8/platformdirs-4.9.2-py3-none-any.whl", hash = "sha256:9170634f126f8efdae22fb58ae8a0eaa86f38365bc57897a6c4f781d1f5875bd", size = 21168, upload_time = "2026-02-16T03:56:08.891Z" }, + { url = "https://files.pythonhosted.org/packages/48/31/05e764397056194206169869b50cf2fee4dbbbc71b344705b9c0d878d4d8/platformdirs-4.9.2-py3-none-any.whl", hash = "sha256:9170634f126f8efdae22fb58ae8a0eaa86f38365bc57897a6c4f781d1f5875bd", size = 21168, upload-time = "2026-02-16T03:56:08.891Z" }, ] [[package]] name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload_time = "2025-05-15T12:30:07.975Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload_time = "2025-05-15T12:30:06.134Z" }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] [[package]] @@ -2930,9 +2980,9 @@ dependencies = [ { name = "pyyaml" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/64/10/97ee2fa54dff1e9da9badbc5e35d0bbaef0776271ea5907eccf64140f72f/pre_commit-3.8.0.tar.gz", hash = "sha256:8bb6494d4a20423842e198980c9ecf9f96607a07ea29549e180eef9ae80fe7af", size = 177815, upload_time = "2024-07-28T19:59:01.538Z" } +sdist = { url = "https://files.pythonhosted.org/packages/64/10/97ee2fa54dff1e9da9badbc5e35d0bbaef0776271ea5907eccf64140f72f/pre_commit-3.8.0.tar.gz", hash = "sha256:8bb6494d4a20423842e198980c9ecf9f96607a07ea29549e180eef9ae80fe7af", size = 177815, upload-time = "2024-07-28T19:59:01.538Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/92/caae8c86e94681b42c246f0bca35c059a2f0529e5b92619f6aba4cf7e7b6/pre_commit-3.8.0-py2.py3-none-any.whl", hash = "sha256:9a90a53bf82fdd8778d58085faf8d83df56e40dfe18f45b19446e26bf1b3a63f", size = 204643, upload_time = "2024-07-28T19:58:59.335Z" }, + { url = "https://files.pythonhosted.org/packages/07/92/caae8c86e94681b42c246f0bca35c059a2f0529e5b92619f6aba4cf7e7b6/pre_commit-3.8.0-py2.py3-none-any.whl", hash = "sha256:9a90a53bf82fdd8778d58085faf8d83df56e40dfe18f45b19446e26bf1b3a63f", size = 204643, upload-time = "2024-07-28T19:58:59.335Z" }, ] [[package]] @@ -2946,9 +2996,9 @@ dependencies = [ { name = "lxml" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/6f/e49bd31941eff2987076383fa6d811eb785a28f498f5bb131e981bd71e13/premailer-3.10.0.tar.gz", hash = "sha256:d1875a8411f5dc92b53ef9f193db6c0f879dc378d618e0ad292723e388bfe4c2", size = 24342, upload_time = "2021-08-02T20:32:54.328Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/6f/e49bd31941eff2987076383fa6d811eb785a28f498f5bb131e981bd71e13/premailer-3.10.0.tar.gz", hash = "sha256:d1875a8411f5dc92b53ef9f193db6c0f879dc378d618e0ad292723e388bfe4c2", size = 24342, upload-time = "2021-08-02T20:32:54.328Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/07/4e8d94f94c7d41ca5ddf8a9695ad87b888104e2fd41a35546c1dc9ca74ac/premailer-3.10.0-py2.py3-none-any.whl", hash = "sha256:021b8196364d7df96d04f9ade51b794d0b77bcc19e998321c515633a2273be1a", size = 19544, upload_time = "2021-08-02T20:32:52.771Z" }, + { url = "https://files.pythonhosted.org/packages/b1/07/4e8d94f94c7d41ca5ddf8a9695ad87b888104e2fd41a35546c1dc9ca74ac/premailer-3.10.0-py2.py3-none-any.whl", hash = "sha256:021b8196364d7df96d04f9ade51b794d0b77bcc19e998321c515633a2273be1a", size = 19544, upload-time = "2021-08-02T20:32:52.771Z" }, ] [[package]] @@ -2959,40 +3009,40 @@ dependencies = [ { name = "cymem" }, { name = "murmurhash" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/34/eb4f5f0f678e152a96e826da867d2f41c4b18a2d589e40e1dd3347219e91/preshed-3.0.12.tar.gz", hash = "sha256:b73f9a8b54ee1d44529cc6018356896cff93d48f755f29c134734d9371c0d685", size = 15027, upload_time = "2025-11-17T13:00:33.621Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/d0/1245d6d89b051dd5356ffaaa43da05408f37d2da4cfadcf77356ba46da4f/preshed-3.0.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d8f0bc207bb5bfe69e3a232367c264cac900dc14e9219cd061b98eaca9e7da61", size = 128866, upload_time = "2025-11-17T12:59:06.633Z" }, - { url = "https://files.pythonhosted.org/packages/24/24/f06650f22450888434a51b17971b650186d2e68f5eaf292e6e8e4be7974c/preshed-3.0.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8a8d571c044ddab5369d30d172c87545f44daa1510bde92b7e0144a8f4f92b", size = 124848, upload_time = "2025-11-17T12:59:08.641Z" }, - { url = "https://files.pythonhosted.org/packages/88/a1/78bdd4938c3286998c0609491c4a0a8aee2f4de4003364112c295a2f32b8/preshed-3.0.12-cp310-cp310-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6cca080ac9bbc978625c8f0c56ef17471162193c7c1a4622fbde7721da1bdd40", size = 780279, upload_time = "2025-11-17T12:59:10.009Z" }, - { url = "https://files.pythonhosted.org/packages/8f/f8/6fbf083346a007927a9e4ce3686ae54ba74191e74fc3af34863ea7be9dea/preshed-3.0.12-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cfd3672007c7b7cac554a0e5f263d7bc94109dc508ee1ef43b2f6ec8c2e2e9e8", size = 781954, upload_time = "2025-11-17T12:59:11.574Z" }, - { url = "https://files.pythonhosted.org/packages/91/c3/f28c7a6cc03e85002780b75249c3557c0fe503792ac66a7b9c5379569999/preshed-3.0.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e01609074713aba93a8143480e67942fbe6898fe134b98d813819bec42a8cae7", size = 799772, upload_time = "2025-11-17T12:59:14.371Z" }, - { url = "https://files.pythonhosted.org/packages/46/25/ca22fa0db162e286db7a94a4f08c1ceb4872d3d64610b807148935ae084c/preshed-3.0.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:30d8a53015663b0d666012bc10d22e8bdd7359191d84a8980ae902e0b87caf24", size = 820532, upload_time = "2025-11-17T12:59:16.281Z" }, - { url = "https://files.pythonhosted.org/packages/0f/57/459a6eea7e15034756f4c2650a9aba6d023aa7976748b18476bd4c0b6fef/preshed-3.0.12-cp310-cp310-win_amd64.whl", hash = "sha256:bf2235bbe09b4862b914086f37a065cc84259e1b53c8ed996cbbd6519ea36b62", size = 117482, upload_time = "2025-11-17T12:59:18.36Z" }, - { url = "https://files.pythonhosted.org/packages/80/1f/a7b648a57d259891bd9b2c8ef1978622fa37b46a9368f054881488b9b4fe/preshed-3.0.12-cp310-cp310-win_arm64.whl", hash = "sha256:139d08b10693bfccb0ea000f47dcca5fc4a78fc1b96c1832c920be9b0a4c8f04", size = 105504, upload_time = "2025-11-17T12:59:19.562Z" }, - { url = "https://files.pythonhosted.org/packages/1e/54/d1e02d0a0ea348fb6a769506166e366abfe87ee917c2f11f7139c7acbf10/preshed-3.0.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bc45fda3fd4ae1ae15c37f18f0777cf389ce9184ef8884b39b18894416fd1341", size = 128439, upload_time = "2025-11-17T12:59:21.317Z" }, - { url = "https://files.pythonhosted.org/packages/8c/cb/685ca57ca6e438345b3f6c20226705a0e056a3de399a5bf8a9ee89b3dd2b/preshed-3.0.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75d6e628bc78c022dbb9267242715718f862c3105927732d166076ff009d65de", size = 124544, upload_time = "2025-11-17T12:59:22.944Z" }, - { url = "https://files.pythonhosted.org/packages/f8/07/018fcd3bf298304e1570065cf80601ac16acd29f799578fd47b715dd3ca2/preshed-3.0.12-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b901cff5c814facf7a864b0a4c14a16d45fa1379899a585b3fb48ee36a2dccdb", size = 824728, upload_time = "2025-11-17T12:59:24.614Z" }, - { url = "https://files.pythonhosted.org/packages/79/dc/d888b328fcedae530df53396d9fc0006026aa8793fec54d7d34f57f31ff5/preshed-3.0.12-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d1099253bf73dd3c39313280bd5331841f769637b27ddb576ff362c4e7bad298", size = 825969, upload_time = "2025-11-17T12:59:26.493Z" }, - { url = "https://files.pythonhosted.org/packages/21/51/f19933301f42ece1ffef1f7f4c370d09f0351c43c528e66fac24560e44d2/preshed-3.0.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1af4a049ffe9d0246e5dc10d6f54820ed064c40e5c3f7b6526127c664008297c", size = 842346, upload_time = "2025-11-17T12:59:28.092Z" }, - { url = "https://files.pythonhosted.org/packages/51/46/025f60fd3d51bf60606a0f8f0cd39c40068b9b5e4d249bca1682e4ff09c3/preshed-3.0.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57159bcedca0cb4c99390f8a6e730f8659fdb663a5a3efcd9c4531e0f54b150e", size = 865504, upload_time = "2025-11-17T12:59:29.648Z" }, - { url = "https://files.pythonhosted.org/packages/88/b5/2e6ee5ab19b03e7983fc5e1850c812fb71dc178dd140d6aca3b45306bdf7/preshed-3.0.12-cp311-cp311-win_amd64.whl", hash = "sha256:8fe9cf1745e203e5aa58b8700436f78da1dcf0f0e2efb0054b467effd9d7d19d", size = 117736, upload_time = "2025-11-17T12:59:30.974Z" }, - { url = "https://files.pythonhosted.org/packages/1e/17/8a0a8f4b01e71b5fb7c5cd4c9fec04d7b852d42f1f9e096b01e7d2b16b17/preshed-3.0.12-cp311-cp311-win_arm64.whl", hash = "sha256:12d880f8786cb6deac34e99b8b07146fb92d22fbca0023208e03325f5944606b", size = 105127, upload_time = "2025-11-17T12:59:32.171Z" }, - { url = "https://files.pythonhosted.org/packages/4b/f7/ff3aca937eeaee19c52c45ddf92979546e52ed0686e58be4bc09c47e7d88/preshed-3.0.12-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2779861f5d69480493519ed123a622a13012d1182126779036b99d9d989bf7e9", size = 129958, upload_time = "2025-11-17T12:59:33.391Z" }, - { url = "https://files.pythonhosted.org/packages/80/24/fd654a9c0f5f3ed1a9b1d8a392f063ae9ca29ad0b462f0732ae0147f7cee/preshed-3.0.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffe1fd7d92f51ed34383e20d8b734780c814ca869cfdb7e07f2d31651f90cdf4", size = 124550, upload_time = "2025-11-17T12:59:34.688Z" }, - { url = "https://files.pythonhosted.org/packages/71/49/8271c7f680696f4b0880f44357d2a903d649cb9f6e60a1efc97a203104df/preshed-3.0.12-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:91893404858502cc4e856d338fef3d2a4a552135f79a1041c24eb919817c19db", size = 874987, upload_time = "2025-11-17T12:59:36.062Z" }, - { url = "https://files.pythonhosted.org/packages/a3/a5/ca200187ca1632f1e2c458b72f1bd100fa8b55deecd5d72e1e4ebf09e98c/preshed-3.0.12-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9e06e8f2ba52f183eb9817a616cdebe84a211bb859a2ffbc23f3295d0b189638", size = 866499, upload_time = "2025-11-17T12:59:37.586Z" }, - { url = "https://files.pythonhosted.org/packages/87/a1/943b61f850c44899910c21996cb542d0ef5931744c6d492fdfdd8457e693/preshed-3.0.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bbe8b8a2d4f9af14e8a39ecca524b9de6defc91d8abcc95eb28f42da1c23272c", size = 878064, upload_time = "2025-11-17T12:59:39.651Z" }, - { url = "https://files.pythonhosted.org/packages/3e/75/d7fff7f1fa3763619aa85d6ba70493a5d9c6e6ea7958a6e8c9d3e6e88bbe/preshed-3.0.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5d0aaac9c5862f5471fddd0c931dc64d3af2efc5fe3eb48b50765adb571243b9", size = 900540, upload_time = "2025-11-17T12:59:41.384Z" }, - { url = "https://files.pythonhosted.org/packages/e4/12/a2285b78bd097a1e53fb90a1743bc8ce0d35e5b65b6853f3b3c47da398ca/preshed-3.0.12-cp312-cp312-win_amd64.whl", hash = "sha256:0eb8d411afcb1e3b12a0602fb6a0e33140342a732a795251a0ce452aba401dc0", size = 118298, upload_time = "2025-11-17T12:59:42.65Z" }, - { url = "https://files.pythonhosted.org/packages/0b/34/4e8443fe99206a2fcfc63659969a8f8c8ab184836533594a519f3899b1ad/preshed-3.0.12-cp312-cp312-win_arm64.whl", hash = "sha256:dcd3d12903c9f720a39a5c5f1339f7f46e3ab71279fb7a39776768fb840b6077", size = 104746, upload_time = "2025-11-17T12:59:43.934Z" }, - { url = "https://files.pythonhosted.org/packages/1e/36/1d3df6f9f37efc34be4ee3013b3bb698b06f1e372f80959851b54d8efdb2/preshed-3.0.12-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3deb3ab93d50c785eaa7694a8e169eb12d00263a99c91d56511fe943bcbacfb6", size = 128023, upload_time = "2025-11-17T12:59:45.157Z" }, - { url = "https://files.pythonhosted.org/packages/fb/d4/3ca81f42978da1b81aa57b3e9b5193d8093e187787a3b2511d16b30b7c62/preshed-3.0.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604350001238dab63dc14774ee30c257b5d71c7be976dbecd1f1ed37529f60f", size = 122851, upload_time = "2025-11-17T12:59:46.439Z" }, - { url = "https://files.pythonhosted.org/packages/17/73/f388398f8d789f69b510272d144a9186d658423f6d3ecc484c0fe392acec/preshed-3.0.12-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:04fb860a8aab18d2201f06159337eda5568dc5eed218570d960fad79e783c7d0", size = 835926, upload_time = "2025-11-17T12:59:47.882Z" }, - { url = "https://files.pythonhosted.org/packages/35/c6/b7170933451cbc27eaefd57b36f61a5e7e7c8da50ae24f819172e0ca8a4d/preshed-3.0.12-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d0c8fcd44996031c46a0aa6773c7b7aa5ee58c3ee87bc05236dacd5599d35063", size = 827294, upload_time = "2025-11-17T12:59:49.365Z" }, - { url = "https://files.pythonhosted.org/packages/7d/ec/6504730d811c0a375721db2107d31684ec17ee5b7bb3796ecfa41e704d41/preshed-3.0.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b07efc3abd3714ce01cf67db0a2dada6e829ab7def74039d446e49ddb32538c5", size = 838809, upload_time = "2025-11-17T12:59:51.234Z" }, - { url = "https://files.pythonhosted.org/packages/7e/1a/09d13240c1fbadcc0603e2fe029623045a36c88b4b50b02e7fdc89e3b88e/preshed-3.0.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f184ef184b76e0e4707bce2395008779e4dfa638456b13b18469c2c1a42903a6", size = 861448, upload_time = "2025-11-17T12:59:52.702Z" }, - { url = "https://files.pythonhosted.org/packages/0d/35/9523160153037ee8337672249449be416ee92236f32602e7dd643767814f/preshed-3.0.12-cp313-cp313-win_amd64.whl", hash = "sha256:ebb3da2dc62ab09e5dc5a00ec38e7f5cdf8741c175714ab4a80773d8ee31b495", size = 117413, upload_time = "2025-11-17T12:59:54.4Z" }, - { url = "https://files.pythonhosted.org/packages/79/eb/4263e6e896753b8e2ffa93035458165850a5ea81d27e8888afdbfd8fa9c4/preshed-3.0.12-cp313-cp313-win_arm64.whl", hash = "sha256:b36a2cf57a5ca6e78e69b569c92ef3bdbfb00e3a14859e201eec6ab3bdc27085", size = 104041, upload_time = "2025-11-17T12:59:55.596Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/bf/34/eb4f5f0f678e152a96e826da867d2f41c4b18a2d589e40e1dd3347219e91/preshed-3.0.12.tar.gz", hash = "sha256:b73f9a8b54ee1d44529cc6018356896cff93d48f755f29c134734d9371c0d685", size = 15027, upload-time = "2025-11-17T13:00:33.621Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/d0/1245d6d89b051dd5356ffaaa43da05408f37d2da4cfadcf77356ba46da4f/preshed-3.0.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d8f0bc207bb5bfe69e3a232367c264cac900dc14e9219cd061b98eaca9e7da61", size = 128866, upload-time = "2025-11-17T12:59:06.633Z" }, + { url = "https://files.pythonhosted.org/packages/24/24/f06650f22450888434a51b17971b650186d2e68f5eaf292e6e8e4be7974c/preshed-3.0.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8a8d571c044ddab5369d30d172c87545f44daa1510bde92b7e0144a8f4f92b", size = 124848, upload-time = "2025-11-17T12:59:08.641Z" }, + { url = "https://files.pythonhosted.org/packages/88/a1/78bdd4938c3286998c0609491c4a0a8aee2f4de4003364112c295a2f32b8/preshed-3.0.12-cp310-cp310-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6cca080ac9bbc978625c8f0c56ef17471162193c7c1a4622fbde7721da1bdd40", size = 780279, upload-time = "2025-11-17T12:59:10.009Z" }, + { url = "https://files.pythonhosted.org/packages/8f/f8/6fbf083346a007927a9e4ce3686ae54ba74191e74fc3af34863ea7be9dea/preshed-3.0.12-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cfd3672007c7b7cac554a0e5f263d7bc94109dc508ee1ef43b2f6ec8c2e2e9e8", size = 781954, upload-time = "2025-11-17T12:59:11.574Z" }, + { url = "https://files.pythonhosted.org/packages/91/c3/f28c7a6cc03e85002780b75249c3557c0fe503792ac66a7b9c5379569999/preshed-3.0.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e01609074713aba93a8143480e67942fbe6898fe134b98d813819bec42a8cae7", size = 799772, upload-time = "2025-11-17T12:59:14.371Z" }, + { url = "https://files.pythonhosted.org/packages/46/25/ca22fa0db162e286db7a94a4f08c1ceb4872d3d64610b807148935ae084c/preshed-3.0.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:30d8a53015663b0d666012bc10d22e8bdd7359191d84a8980ae902e0b87caf24", size = 820532, upload-time = "2025-11-17T12:59:16.281Z" }, + { url = "https://files.pythonhosted.org/packages/0f/57/459a6eea7e15034756f4c2650a9aba6d023aa7976748b18476bd4c0b6fef/preshed-3.0.12-cp310-cp310-win_amd64.whl", hash = "sha256:bf2235bbe09b4862b914086f37a065cc84259e1b53c8ed996cbbd6519ea36b62", size = 117482, upload-time = "2025-11-17T12:59:18.36Z" }, + { url = "https://files.pythonhosted.org/packages/80/1f/a7b648a57d259891bd9b2c8ef1978622fa37b46a9368f054881488b9b4fe/preshed-3.0.12-cp310-cp310-win_arm64.whl", hash = "sha256:139d08b10693bfccb0ea000f47dcca5fc4a78fc1b96c1832c920be9b0a4c8f04", size = 105504, upload-time = "2025-11-17T12:59:19.562Z" }, + { url = "https://files.pythonhosted.org/packages/1e/54/d1e02d0a0ea348fb6a769506166e366abfe87ee917c2f11f7139c7acbf10/preshed-3.0.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bc45fda3fd4ae1ae15c37f18f0777cf389ce9184ef8884b39b18894416fd1341", size = 128439, upload-time = "2025-11-17T12:59:21.317Z" }, + { url = "https://files.pythonhosted.org/packages/8c/cb/685ca57ca6e438345b3f6c20226705a0e056a3de399a5bf8a9ee89b3dd2b/preshed-3.0.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75d6e628bc78c022dbb9267242715718f862c3105927732d166076ff009d65de", size = 124544, upload-time = "2025-11-17T12:59:22.944Z" }, + { url = "https://files.pythonhosted.org/packages/f8/07/018fcd3bf298304e1570065cf80601ac16acd29f799578fd47b715dd3ca2/preshed-3.0.12-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b901cff5c814facf7a864b0a4c14a16d45fa1379899a585b3fb48ee36a2dccdb", size = 824728, upload-time = "2025-11-17T12:59:24.614Z" }, + { url = "https://files.pythonhosted.org/packages/79/dc/d888b328fcedae530df53396d9fc0006026aa8793fec54d7d34f57f31ff5/preshed-3.0.12-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d1099253bf73dd3c39313280bd5331841f769637b27ddb576ff362c4e7bad298", size = 825969, upload-time = "2025-11-17T12:59:26.493Z" }, + { url = "https://files.pythonhosted.org/packages/21/51/f19933301f42ece1ffef1f7f4c370d09f0351c43c528e66fac24560e44d2/preshed-3.0.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1af4a049ffe9d0246e5dc10d6f54820ed064c40e5c3f7b6526127c664008297c", size = 842346, upload-time = "2025-11-17T12:59:28.092Z" }, + { url = "https://files.pythonhosted.org/packages/51/46/025f60fd3d51bf60606a0f8f0cd39c40068b9b5e4d249bca1682e4ff09c3/preshed-3.0.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57159bcedca0cb4c99390f8a6e730f8659fdb663a5a3efcd9c4531e0f54b150e", size = 865504, upload-time = "2025-11-17T12:59:29.648Z" }, + { url = "https://files.pythonhosted.org/packages/88/b5/2e6ee5ab19b03e7983fc5e1850c812fb71dc178dd140d6aca3b45306bdf7/preshed-3.0.12-cp311-cp311-win_amd64.whl", hash = "sha256:8fe9cf1745e203e5aa58b8700436f78da1dcf0f0e2efb0054b467effd9d7d19d", size = 117736, upload-time = "2025-11-17T12:59:30.974Z" }, + { url = "https://files.pythonhosted.org/packages/1e/17/8a0a8f4b01e71b5fb7c5cd4c9fec04d7b852d42f1f9e096b01e7d2b16b17/preshed-3.0.12-cp311-cp311-win_arm64.whl", hash = "sha256:12d880f8786cb6deac34e99b8b07146fb92d22fbca0023208e03325f5944606b", size = 105127, upload-time = "2025-11-17T12:59:32.171Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f7/ff3aca937eeaee19c52c45ddf92979546e52ed0686e58be4bc09c47e7d88/preshed-3.0.12-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2779861f5d69480493519ed123a622a13012d1182126779036b99d9d989bf7e9", size = 129958, upload-time = "2025-11-17T12:59:33.391Z" }, + { url = "https://files.pythonhosted.org/packages/80/24/fd654a9c0f5f3ed1a9b1d8a392f063ae9ca29ad0b462f0732ae0147f7cee/preshed-3.0.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffe1fd7d92f51ed34383e20d8b734780c814ca869cfdb7e07f2d31651f90cdf4", size = 124550, upload-time = "2025-11-17T12:59:34.688Z" }, + { url = "https://files.pythonhosted.org/packages/71/49/8271c7f680696f4b0880f44357d2a903d649cb9f6e60a1efc97a203104df/preshed-3.0.12-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:91893404858502cc4e856d338fef3d2a4a552135f79a1041c24eb919817c19db", size = 874987, upload-time = "2025-11-17T12:59:36.062Z" }, + { url = "https://files.pythonhosted.org/packages/a3/a5/ca200187ca1632f1e2c458b72f1bd100fa8b55deecd5d72e1e4ebf09e98c/preshed-3.0.12-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9e06e8f2ba52f183eb9817a616cdebe84a211bb859a2ffbc23f3295d0b189638", size = 866499, upload-time = "2025-11-17T12:59:37.586Z" }, + { url = "https://files.pythonhosted.org/packages/87/a1/943b61f850c44899910c21996cb542d0ef5931744c6d492fdfdd8457e693/preshed-3.0.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bbe8b8a2d4f9af14e8a39ecca524b9de6defc91d8abcc95eb28f42da1c23272c", size = 878064, upload-time = "2025-11-17T12:59:39.651Z" }, + { url = "https://files.pythonhosted.org/packages/3e/75/d7fff7f1fa3763619aa85d6ba70493a5d9c6e6ea7958a6e8c9d3e6e88bbe/preshed-3.0.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5d0aaac9c5862f5471fddd0c931dc64d3af2efc5fe3eb48b50765adb571243b9", size = 900540, upload-time = "2025-11-17T12:59:41.384Z" }, + { url = "https://files.pythonhosted.org/packages/e4/12/a2285b78bd097a1e53fb90a1743bc8ce0d35e5b65b6853f3b3c47da398ca/preshed-3.0.12-cp312-cp312-win_amd64.whl", hash = "sha256:0eb8d411afcb1e3b12a0602fb6a0e33140342a732a795251a0ce452aba401dc0", size = 118298, upload-time = "2025-11-17T12:59:42.65Z" }, + { url = "https://files.pythonhosted.org/packages/0b/34/4e8443fe99206a2fcfc63659969a8f8c8ab184836533594a519f3899b1ad/preshed-3.0.12-cp312-cp312-win_arm64.whl", hash = "sha256:dcd3d12903c9f720a39a5c5f1339f7f46e3ab71279fb7a39776768fb840b6077", size = 104746, upload-time = "2025-11-17T12:59:43.934Z" }, + { url = "https://files.pythonhosted.org/packages/1e/36/1d3df6f9f37efc34be4ee3013b3bb698b06f1e372f80959851b54d8efdb2/preshed-3.0.12-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3deb3ab93d50c785eaa7694a8e169eb12d00263a99c91d56511fe943bcbacfb6", size = 128023, upload-time = "2025-11-17T12:59:45.157Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d4/3ca81f42978da1b81aa57b3e9b5193d8093e187787a3b2511d16b30b7c62/preshed-3.0.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604350001238dab63dc14774ee30c257b5d71c7be976dbecd1f1ed37529f60f", size = 122851, upload-time = "2025-11-17T12:59:46.439Z" }, + { url = "https://files.pythonhosted.org/packages/17/73/f388398f8d789f69b510272d144a9186d658423f6d3ecc484c0fe392acec/preshed-3.0.12-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:04fb860a8aab18d2201f06159337eda5568dc5eed218570d960fad79e783c7d0", size = 835926, upload-time = "2025-11-17T12:59:47.882Z" }, + { url = "https://files.pythonhosted.org/packages/35/c6/b7170933451cbc27eaefd57b36f61a5e7e7c8da50ae24f819172e0ca8a4d/preshed-3.0.12-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d0c8fcd44996031c46a0aa6773c7b7aa5ee58c3ee87bc05236dacd5599d35063", size = 827294, upload-time = "2025-11-17T12:59:49.365Z" }, + { url = "https://files.pythonhosted.org/packages/7d/ec/6504730d811c0a375721db2107d31684ec17ee5b7bb3796ecfa41e704d41/preshed-3.0.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b07efc3abd3714ce01cf67db0a2dada6e829ab7def74039d446e49ddb32538c5", size = 838809, upload-time = "2025-11-17T12:59:51.234Z" }, + { url = "https://files.pythonhosted.org/packages/7e/1a/09d13240c1fbadcc0603e2fe029623045a36c88b4b50b02e7fdc89e3b88e/preshed-3.0.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f184ef184b76e0e4707bce2395008779e4dfa638456b13b18469c2c1a42903a6", size = 861448, upload-time = "2025-11-17T12:59:52.702Z" }, + { url = "https://files.pythonhosted.org/packages/0d/35/9523160153037ee8337672249449be416ee92236f32602e7dd643767814f/preshed-3.0.12-cp313-cp313-win_amd64.whl", hash = "sha256:ebb3da2dc62ab09e5dc5a00ec38e7f5cdf8741c175714ab4a80773d8ee31b495", size = 117413, upload-time = "2025-11-17T12:59:54.4Z" }, + { url = "https://files.pythonhosted.org/packages/79/eb/4263e6e896753b8e2ffa93035458165850a5ea81d27e8888afdbfd8fa9c4/preshed-3.0.12-cp313-cp313-win_arm64.whl", hash = "sha256:b36a2cf57a5ca6e78e69b569c92ef3bdbfb00e3a14859e201eec6ab3bdc27085", size = 104041, upload-time = "2025-11-17T12:59:55.596Z" }, ] [[package]] @@ -3008,7 +3058,7 @@ dependencies = [ { name = "tldextract" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/47/5f07857a3ae4bea36cb631adc6899ef58081cb37ad1901aab01b6a8b2849/presidio_analyzer-2.2.361-py3-none-any.whl", hash = "sha256:7054b36303f5f47dd4bb3b00600bc936fb46aa3cc5e6befde3de839f0205f7f2", size = 183910, upload_time = "2026-02-12T08:11:38.181Z" }, + { url = "https://files.pythonhosted.org/packages/f7/47/5f07857a3ae4bea36cb631adc6899ef58081cb37ad1901aab01b6a8b2849/presidio_analyzer-2.2.361-py3-none-any.whl", hash = "sha256:7054b36303f5f47dd4bb3b00600bc936fb46aa3cc5e6befde3de839f0205f7f2", size = 183910, upload-time = "2026-02-12T08:11:38.181Z" }, ] [[package]] @@ -3019,128 +3069,128 @@ dependencies = [ { name = "cryptography" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/21/2f90005c3242b783a376848040f4e96991b3c5b4d95080a74befce5066c7/presidio_anonymizer-2.2.361-py3-none-any.whl", hash = "sha256:ff0f64c234aa7ac37042cf7f187ed4a47587cff65418304d716af7d194c96ed3", size = 36603, upload_time = "2026-02-12T08:11:38.904Z" }, + { url = "https://files.pythonhosted.org/packages/5c/21/2f90005c3242b783a376848040f4e96991b3c5b4d95080a74befce5066c7/presidio_anonymizer-2.2.361-py3-none-any.whl", hash = "sha256:ff0f64c234aa7ac37042cf7f187ed4a47587cff65418304d716af7d194c96ed3", size = 36603, upload-time = "2026-02-12T08:11:38.904Z" }, ] [[package]] name = "propcache" version = "0.4.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9e/da/e9fc233cf63743258bff22b3dfa7ea5baef7b5bc324af47a0ad89b8ffc6f/propcache-0.4.1.tar.gz", hash = "sha256:f48107a8c637e80362555f37ecf49abe20370e557cc4ab374f04ec4423c97c3d", size = 46442, upload_time = "2025-10-08T19:49:02.291Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/0e/934b541323035566a9af292dba85a195f7b78179114f2c6ebb24551118a9/propcache-0.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c2d1fa3201efaf55d730400d945b5b3ab6e672e100ba0f9a409d950ab25d7db", size = 79534, upload_time = "2025-10-08T19:46:02.083Z" }, - { url = "https://files.pythonhosted.org/packages/a1/6b/db0d03d96726d995dc7171286c6ba9d8d14251f37433890f88368951a44e/propcache-0.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1eb2994229cc8ce7fe9b3db88f5465f5fd8651672840b2e426b88cdb1a30aac8", size = 45526, upload_time = "2025-10-08T19:46:03.884Z" }, - { url = "https://files.pythonhosted.org/packages/e4/c3/82728404aea669e1600f304f2609cde9e665c18df5a11cdd57ed73c1dceb/propcache-0.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:66c1f011f45a3b33d7bcb22daed4b29c0c9e2224758b6be00686731e1b46f925", size = 47263, upload_time = "2025-10-08T19:46:05.405Z" }, - { url = "https://files.pythonhosted.org/packages/df/1b/39313ddad2bf9187a1432654c38249bab4562ef535ef07f5eb6eb04d0b1b/propcache-0.4.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9a52009f2adffe195d0b605c25ec929d26b36ef986ba85244891dee3b294df21", size = 201012, upload_time = "2025-10-08T19:46:07.165Z" }, - { url = "https://files.pythonhosted.org/packages/5b/01/f1d0b57d136f294a142acf97f4ed58c8e5b974c21e543000968357115011/propcache-0.4.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5d4e2366a9c7b837555cf02fb9be2e3167d333aff716332ef1b7c3a142ec40c5", size = 209491, upload_time = "2025-10-08T19:46:08.909Z" }, - { url = "https://files.pythonhosted.org/packages/a1/c8/038d909c61c5bb039070b3fb02ad5cccdb1dde0d714792e251cdb17c9c05/propcache-0.4.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:9d2b6caef873b4f09e26ea7e33d65f42b944837563a47a94719cc3544319a0db", size = 215319, upload_time = "2025-10-08T19:46:10.7Z" }, - { url = "https://files.pythonhosted.org/packages/08/57/8c87e93142b2c1fa2408e45695205a7ba05fb5db458c0bf5c06ba0e09ea6/propcache-0.4.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b16ec437a8c8a965ecf95739448dd938b5c7f56e67ea009f4300d8df05f32b7", size = 196856, upload_time = "2025-10-08T19:46:12.003Z" }, - { url = "https://files.pythonhosted.org/packages/42/df/5615fec76aa561987a534759b3686008a288e73107faa49a8ae5795a9f7a/propcache-0.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:296f4c8ed03ca7476813fe666c9ea97869a8d7aec972618671b33a38a5182ef4", size = 193241, upload_time = "2025-10-08T19:46:13.495Z" }, - { url = "https://files.pythonhosted.org/packages/d5/21/62949eb3a7a54afe8327011c90aca7e03547787a88fb8bd9726806482fea/propcache-0.4.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:1f0978529a418ebd1f49dad413a2b68af33f85d5c5ca5c6ca2a3bed375a7ac60", size = 190552, upload_time = "2025-10-08T19:46:14.938Z" }, - { url = "https://files.pythonhosted.org/packages/30/ee/ab4d727dd70806e5b4de96a798ae7ac6e4d42516f030ee60522474b6b332/propcache-0.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fd138803047fb4c062b1c1dd95462f5209456bfab55c734458f15d11da288f8f", size = 200113, upload_time = "2025-10-08T19:46:16.695Z" }, - { url = "https://files.pythonhosted.org/packages/8a/0b/38b46208e6711b016aa8966a3ac793eee0d05c7159d8342aa27fc0bc365e/propcache-0.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8c9b3cbe4584636d72ff556d9036e0c9317fa27b3ac1f0f558e7e84d1c9c5900", size = 200778, upload_time = "2025-10-08T19:46:18.023Z" }, - { url = "https://files.pythonhosted.org/packages/cf/81/5abec54355ed344476bee711e9f04815d4b00a311ab0535599204eecc257/propcache-0.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f93243fdc5657247533273ac4f86ae106cc6445a0efacb9a1bfe982fcfefd90c", size = 193047, upload_time = "2025-10-08T19:46:19.449Z" }, - { url = "https://files.pythonhosted.org/packages/ec/b6/1f237c04e32063cb034acd5f6ef34ef3a394f75502e72703545631ab1ef6/propcache-0.4.1-cp310-cp310-win32.whl", hash = "sha256:a0ee98db9c5f80785b266eb805016e36058ac72c51a064040f2bc43b61101cdb", size = 38093, upload_time = "2025-10-08T19:46:20.643Z" }, - { url = "https://files.pythonhosted.org/packages/a6/67/354aac4e0603a15f76439caf0427781bcd6797f370377f75a642133bc954/propcache-0.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:1cdb7988c4e5ac7f6d175a28a9aa0c94cb6f2ebe52756a3c0cda98d2809a9e37", size = 41638, upload_time = "2025-10-08T19:46:21.935Z" }, - { url = "https://files.pythonhosted.org/packages/e0/e1/74e55b9fd1a4c209ff1a9a824bf6c8b3d1fc5a1ac3eabe23462637466785/propcache-0.4.1-cp310-cp310-win_arm64.whl", hash = "sha256:d82ad62b19645419fe79dd63b3f9253e15b30e955c0170e5cebc350c1844e581", size = 38229, upload_time = "2025-10-08T19:46:23.368Z" }, - { url = "https://files.pythonhosted.org/packages/8c/d4/4e2c9aaf7ac2242b9358f98dccd8f90f2605402f5afeff6c578682c2c491/propcache-0.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:60a8fda9644b7dfd5dece8c61d8a85e271cb958075bfc4e01083c148b61a7caf", size = 80208, upload_time = "2025-10-08T19:46:24.597Z" }, - { url = "https://files.pythonhosted.org/packages/c2/21/d7b68e911f9c8e18e4ae43bdbc1e1e9bbd971f8866eb81608947b6f585ff/propcache-0.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c30b53e7e6bda1d547cabb47c825f3843a0a1a42b0496087bb58d8fedf9f41b5", size = 45777, upload_time = "2025-10-08T19:46:25.733Z" }, - { url = "https://files.pythonhosted.org/packages/d3/1d/11605e99ac8ea9435651ee71ab4cb4bf03f0949586246476a25aadfec54a/propcache-0.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6918ecbd897443087a3b7cd978d56546a812517dcaaca51b49526720571fa93e", size = 47647, upload_time = "2025-10-08T19:46:27.304Z" }, - { url = "https://files.pythonhosted.org/packages/58/1a/3c62c127a8466c9c843bccb503d40a273e5cc69838805f322e2826509e0d/propcache-0.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3d902a36df4e5989763425a8ab9e98cd8ad5c52c823b34ee7ef307fd50582566", size = 214929, upload_time = "2025-10-08T19:46:28.62Z" }, - { url = "https://files.pythonhosted.org/packages/56/b9/8fa98f850960b367c4b8fe0592e7fc341daa7a9462e925228f10a60cf74f/propcache-0.4.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a9695397f85973bb40427dedddf70d8dc4a44b22f1650dd4af9eedf443d45165", size = 221778, upload_time = "2025-10-08T19:46:30.358Z" }, - { url = "https://files.pythonhosted.org/packages/46/a6/0ab4f660eb59649d14b3d3d65c439421cf2f87fe5dd68591cbe3c1e78a89/propcache-0.4.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2bb07ffd7eaad486576430c89f9b215f9e4be68c4866a96e97db9e97fead85dc", size = 228144, upload_time = "2025-10-08T19:46:32.607Z" }, - { url = "https://files.pythonhosted.org/packages/52/6a/57f43e054fb3d3a56ac9fc532bc684fc6169a26c75c353e65425b3e56eef/propcache-0.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fd6f30fdcf9ae2a70abd34da54f18da086160e4d7d9251f81f3da0ff84fc5a48", size = 210030, upload_time = "2025-10-08T19:46:33.969Z" }, - { url = "https://files.pythonhosted.org/packages/40/e2/27e6feebb5f6b8408fa29f5efbb765cd54c153ac77314d27e457a3e993b7/propcache-0.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fc38cba02d1acba4e2869eef1a57a43dfbd3d49a59bf90dda7444ec2be6a5570", size = 208252, upload_time = "2025-10-08T19:46:35.309Z" }, - { url = "https://files.pythonhosted.org/packages/9e/f8/91c27b22ccda1dbc7967f921c42825564fa5336a01ecd72eb78a9f4f53c2/propcache-0.4.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:67fad6162281e80e882fb3ec355398cf72864a54069d060321f6cd0ade95fe85", size = 202064, upload_time = "2025-10-08T19:46:36.993Z" }, - { url = "https://files.pythonhosted.org/packages/f2/26/7f00bd6bd1adba5aafe5f4a66390f243acab58eab24ff1a08bebb2ef9d40/propcache-0.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f10207adf04d08bec185bae14d9606a1444715bc99180f9331c9c02093e1959e", size = 212429, upload_time = "2025-10-08T19:46:38.398Z" }, - { url = "https://files.pythonhosted.org/packages/84/89/fd108ba7815c1117ddca79c228f3f8a15fc82a73bca8b142eb5de13b2785/propcache-0.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e9b0d8d0845bbc4cfcdcbcdbf5086886bc8157aa963c31c777ceff7846c77757", size = 216727, upload_time = "2025-10-08T19:46:39.732Z" }, - { url = "https://files.pythonhosted.org/packages/79/37/3ec3f7e3173e73f1d600495d8b545b53802cbf35506e5732dd8578db3724/propcache-0.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:981333cb2f4c1896a12f4ab92a9cc8f09ea664e9b7dbdc4eff74627af3a11c0f", size = 205097, upload_time = "2025-10-08T19:46:41.025Z" }, - { url = "https://files.pythonhosted.org/packages/61/b0/b2631c19793f869d35f47d5a3a56fb19e9160d3c119f15ac7344fc3ccae7/propcache-0.4.1-cp311-cp311-win32.whl", hash = "sha256:f1d2f90aeec838a52f1c1a32fe9a619fefd5e411721a9117fbf82aea638fe8a1", size = 38084, upload_time = "2025-10-08T19:46:42.693Z" }, - { url = "https://files.pythonhosted.org/packages/f4/78/6cce448e2098e9f3bfc91bb877f06aa24b6ccace872e39c53b2f707c4648/propcache-0.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:364426a62660f3f699949ac8c621aad6977be7126c5807ce48c0aeb8e7333ea6", size = 41637, upload_time = "2025-10-08T19:46:43.778Z" }, - { url = "https://files.pythonhosted.org/packages/9c/e9/754f180cccd7f51a39913782c74717c581b9cc8177ad0e949f4d51812383/propcache-0.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:e53f3a38d3510c11953f3e6a33f205c6d1b001129f972805ca9b42fc308bc239", size = 38064, upload_time = "2025-10-08T19:46:44.872Z" }, - { url = "https://files.pythonhosted.org/packages/a2/0f/f17b1b2b221d5ca28b4b876e8bb046ac40466513960646bda8e1853cdfa2/propcache-0.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e153e9cd40cc8945138822807139367f256f89c6810c2634a4f6902b52d3b4e2", size = 80061, upload_time = "2025-10-08T19:46:46.075Z" }, - { url = "https://files.pythonhosted.org/packages/76/47/8ccf75935f51448ba9a16a71b783eb7ef6b9ee60f5d14c7f8a8a79fbeed7/propcache-0.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cd547953428f7abb73c5ad82cbb32109566204260d98e41e5dfdc682eb7f8403", size = 46037, upload_time = "2025-10-08T19:46:47.23Z" }, - { url = "https://files.pythonhosted.org/packages/0a/b6/5c9a0e42df4d00bfb4a3cbbe5cf9f54260300c88a0e9af1f47ca5ce17ac0/propcache-0.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f048da1b4f243fc44f205dfd320933a951b8d89e0afd4c7cacc762a8b9165207", size = 47324, upload_time = "2025-10-08T19:46:48.384Z" }, - { url = "https://files.pythonhosted.org/packages/9e/d3/6c7ee328b39a81ee877c962469f1e795f9db87f925251efeb0545e0020d0/propcache-0.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ec17c65562a827bba85e3872ead335f95405ea1674860d96483a02f5c698fa72", size = 225505, upload_time = "2025-10-08T19:46:50.055Z" }, - { url = "https://files.pythonhosted.org/packages/01/5d/1c53f4563490b1d06a684742cc6076ef944bc6457df6051b7d1a877c057b/propcache-0.4.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:405aac25c6394ef275dee4c709be43745d36674b223ba4eb7144bf4d691b7367", size = 230242, upload_time = "2025-10-08T19:46:51.815Z" }, - { url = "https://files.pythonhosted.org/packages/20/e1/ce4620633b0e2422207c3cb774a0ee61cac13abc6217763a7b9e2e3f4a12/propcache-0.4.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0013cb6f8dde4b2a2f66903b8ba740bdfe378c943c4377a200551ceb27f379e4", size = 238474, upload_time = "2025-10-08T19:46:53.208Z" }, - { url = "https://files.pythonhosted.org/packages/46/4b/3aae6835b8e5f44ea6a68348ad90f78134047b503765087be2f9912140ea/propcache-0.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15932ab57837c3368b024473a525e25d316d8353016e7cc0e5ba9eb343fbb1cf", size = 221575, upload_time = "2025-10-08T19:46:54.511Z" }, - { url = "https://files.pythonhosted.org/packages/6e/a5/8a5e8678bcc9d3a1a15b9a29165640d64762d424a16af543f00629c87338/propcache-0.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:031dce78b9dc099f4c29785d9cf5577a3faf9ebf74ecbd3c856a7b92768c3df3", size = 216736, upload_time = "2025-10-08T19:46:56.212Z" }, - { url = "https://files.pythonhosted.org/packages/f1/63/b7b215eddeac83ca1c6b934f89d09a625aa9ee4ba158338854c87210cc36/propcache-0.4.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ab08df6c9a035bee56e31af99be621526bd237bea9f32def431c656b29e41778", size = 213019, upload_time = "2025-10-08T19:46:57.595Z" }, - { url = "https://files.pythonhosted.org/packages/57/74/f580099a58c8af587cac7ba19ee7cb418506342fbbe2d4a4401661cca886/propcache-0.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4d7af63f9f93fe593afbf104c21b3b15868efb2c21d07d8732c0c4287e66b6a6", size = 220376, upload_time = "2025-10-08T19:46:59.067Z" }, - { url = "https://files.pythonhosted.org/packages/c4/ee/542f1313aff7eaf19c2bb758c5d0560d2683dac001a1c96d0774af799843/propcache-0.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cfc27c945f422e8b5071b6e93169679e4eb5bf73bbcbf1ba3ae3a83d2f78ebd9", size = 226988, upload_time = "2025-10-08T19:47:00.544Z" }, - { url = "https://files.pythonhosted.org/packages/8f/18/9c6b015dd9c6930f6ce2229e1f02fb35298b847f2087ea2b436a5bfa7287/propcache-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:35c3277624a080cc6ec6f847cbbbb5b49affa3598c4535a0a4682a697aaa5c75", size = 215615, upload_time = "2025-10-08T19:47:01.968Z" }, - { url = "https://files.pythonhosted.org/packages/80/9e/e7b85720b98c45a45e1fca6a177024934dc9bc5f4d5dd04207f216fc33ed/propcache-0.4.1-cp312-cp312-win32.whl", hash = "sha256:671538c2262dadb5ba6395e26c1731e1d52534bfe9ae56d0b5573ce539266aa8", size = 38066, upload_time = "2025-10-08T19:47:03.503Z" }, - { url = "https://files.pythonhosted.org/packages/54/09/d19cff2a5aaac632ec8fc03737b223597b1e347416934c1b3a7df079784c/propcache-0.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:cb2d222e72399fcf5890d1d5cc1060857b9b236adff2792ff48ca2dfd46c81db", size = 41655, upload_time = "2025-10-08T19:47:04.973Z" }, - { url = "https://files.pythonhosted.org/packages/68/ab/6b5c191bb5de08036a8c697b265d4ca76148efb10fa162f14af14fb5f076/propcache-0.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:204483131fb222bdaaeeea9f9e6c6ed0cac32731f75dfc1d4a567fc1926477c1", size = 37789, upload_time = "2025-10-08T19:47:06.077Z" }, - { url = "https://files.pythonhosted.org/packages/bf/df/6d9c1b6ac12b003837dde8a10231a7344512186e87b36e855bef32241942/propcache-0.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:43eedf29202c08550aac1d14e0ee619b0430aaef78f85864c1a892294fbc28cf", size = 77750, upload_time = "2025-10-08T19:47:07.648Z" }, - { url = "https://files.pythonhosted.org/packages/8b/e8/677a0025e8a2acf07d3418a2e7ba529c9c33caf09d3c1f25513023c1db56/propcache-0.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d62cdfcfd89ccb8de04e0eda998535c406bf5e060ffd56be6c586cbcc05b3311", size = 44780, upload_time = "2025-10-08T19:47:08.851Z" }, - { url = "https://files.pythonhosted.org/packages/89/a4/92380f7ca60f99ebae761936bc48a72a639e8a47b29050615eef757cb2a7/propcache-0.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cae65ad55793da34db5f54e4029b89d3b9b9490d8abe1b4c7ab5d4b8ec7ebf74", size = 46308, upload_time = "2025-10-08T19:47:09.982Z" }, - { url = "https://files.pythonhosted.org/packages/2d/48/c5ac64dee5262044348d1d78a5f85dd1a57464a60d30daee946699963eb3/propcache-0.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:333ddb9031d2704a301ee3e506dc46b1fe5f294ec198ed6435ad5b6a085facfe", size = 208182, upload_time = "2025-10-08T19:47:11.319Z" }, - { url = "https://files.pythonhosted.org/packages/c6/0c/cd762dd011a9287389a6a3eb43aa30207bde253610cca06824aeabfe9653/propcache-0.4.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:fd0858c20f078a32cf55f7e81473d96dcf3b93fd2ccdb3d40fdf54b8573df3af", size = 211215, upload_time = "2025-10-08T19:47:13.146Z" }, - { url = "https://files.pythonhosted.org/packages/30/3e/49861e90233ba36890ae0ca4c660e95df565b2cd15d4a68556ab5865974e/propcache-0.4.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:678ae89ebc632c5c204c794f8dab2837c5f159aeb59e6ed0539500400577298c", size = 218112, upload_time = "2025-10-08T19:47:14.913Z" }, - { url = "https://files.pythonhosted.org/packages/f1/8b/544bc867e24e1bd48f3118cecd3b05c694e160a168478fa28770f22fd094/propcache-0.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d472aeb4fbf9865e0c6d622d7f4d54a4e101a89715d8904282bb5f9a2f476c3f", size = 204442, upload_time = "2025-10-08T19:47:16.277Z" }, - { url = "https://files.pythonhosted.org/packages/50/a6/4282772fd016a76d3e5c0df58380a5ea64900afd836cec2c2f662d1b9bb3/propcache-0.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4d3df5fa7e36b3225954fba85589da77a0fe6a53e3976de39caf04a0db4c36f1", size = 199398, upload_time = "2025-10-08T19:47:17.962Z" }, - { url = "https://files.pythonhosted.org/packages/3e/ec/d8a7cd406ee1ddb705db2139f8a10a8a427100347bd698e7014351c7af09/propcache-0.4.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:ee17f18d2498f2673e432faaa71698032b0127ebf23ae5974eeaf806c279df24", size = 196920, upload_time = "2025-10-08T19:47:19.355Z" }, - { url = "https://files.pythonhosted.org/packages/f6/6c/f38ab64af3764f431e359f8baf9e0a21013e24329e8b85d2da32e8ed07ca/propcache-0.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:580e97762b950f993ae618e167e7be9256b8353c2dcd8b99ec100eb50f5286aa", size = 203748, upload_time = "2025-10-08T19:47:21.338Z" }, - { url = "https://files.pythonhosted.org/packages/d6/e3/fa846bd70f6534d647886621388f0a265254d30e3ce47e5c8e6e27dbf153/propcache-0.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:501d20b891688eb8e7aa903021f0b72d5a55db40ffaab27edefd1027caaafa61", size = 205877, upload_time = "2025-10-08T19:47:23.059Z" }, - { url = "https://files.pythonhosted.org/packages/e2/39/8163fc6f3133fea7b5f2827e8eba2029a0277ab2c5beee6c1db7b10fc23d/propcache-0.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a0bd56e5b100aef69bd8562b74b46254e7c8812918d3baa700c8a8009b0af66", size = 199437, upload_time = "2025-10-08T19:47:24.445Z" }, - { url = "https://files.pythonhosted.org/packages/93/89/caa9089970ca49c7c01662bd0eeedfe85494e863e8043565aeb6472ce8fe/propcache-0.4.1-cp313-cp313-win32.whl", hash = "sha256:bcc9aaa5d80322bc2fb24bb7accb4a30f81e90ab8d6ba187aec0744bc302ad81", size = 37586, upload_time = "2025-10-08T19:47:25.736Z" }, - { url = "https://files.pythonhosted.org/packages/f5/ab/f76ec3c3627c883215b5c8080debb4394ef5a7a29be811f786415fc1e6fd/propcache-0.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:381914df18634f5494334d201e98245c0596067504b9372d8cf93f4bb23e025e", size = 40790, upload_time = "2025-10-08T19:47:26.847Z" }, - { url = "https://files.pythonhosted.org/packages/59/1b/e71ae98235f8e2ba5004d8cb19765a74877abf189bc53fc0c80d799e56c3/propcache-0.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:8873eb4460fd55333ea49b7d189749ecf6e55bf85080f11b1c4530ed3034cba1", size = 37158, upload_time = "2025-10-08T19:47:27.961Z" }, - { url = "https://files.pythonhosted.org/packages/83/ce/a31bbdfc24ee0dcbba458c8175ed26089cf109a55bbe7b7640ed2470cfe9/propcache-0.4.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:92d1935ee1f8d7442da9c0c4fa7ac20d07e94064184811b685f5c4fada64553b", size = 81451, upload_time = "2025-10-08T19:47:29.445Z" }, - { url = "https://files.pythonhosted.org/packages/25/9c/442a45a470a68456e710d96cacd3573ef26a1d0a60067e6a7d5e655621ed/propcache-0.4.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:473c61b39e1460d386479b9b2f337da492042447c9b685f28be4f74d3529e566", size = 46374, upload_time = "2025-10-08T19:47:30.579Z" }, - { url = "https://files.pythonhosted.org/packages/f4/bf/b1d5e21dbc3b2e889ea4327044fb16312a736d97640fb8b6aa3f9c7b3b65/propcache-0.4.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c0ef0aaafc66fbd87842a3fe3902fd889825646bc21149eafe47be6072725835", size = 48396, upload_time = "2025-10-08T19:47:31.79Z" }, - { url = "https://files.pythonhosted.org/packages/f4/04/5b4c54a103d480e978d3c8a76073502b18db0c4bc17ab91b3cb5092ad949/propcache-0.4.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95393b4d66bfae908c3ca8d169d5f79cd65636ae15b5e7a4f6e67af675adb0e", size = 275950, upload_time = "2025-10-08T19:47:33.481Z" }, - { url = "https://files.pythonhosted.org/packages/b4/c1/86f846827fb969c4b78b0af79bba1d1ea2156492e1b83dea8b8a6ae27395/propcache-0.4.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c07fda85708bc48578467e85099645167a955ba093be0a2dcba962195676e859", size = 273856, upload_time = "2025-10-08T19:47:34.906Z" }, - { url = "https://files.pythonhosted.org/packages/36/1d/fc272a63c8d3bbad6878c336c7a7dea15e8f2d23a544bda43205dfa83ada/propcache-0.4.1-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:af223b406d6d000830c6f65f1e6431783fc3f713ba3e6cc8c024d5ee96170a4b", size = 280420, upload_time = "2025-10-08T19:47:36.338Z" }, - { url = "https://files.pythonhosted.org/packages/07/0c/01f2219d39f7e53d52e5173bcb09c976609ba30209912a0680adfb8c593a/propcache-0.4.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a78372c932c90ee474559c5ddfffd718238e8673c340dc21fe45c5b8b54559a0", size = 263254, upload_time = "2025-10-08T19:47:37.692Z" }, - { url = "https://files.pythonhosted.org/packages/2d/18/cd28081658ce597898f0c4d174d4d0f3c5b6d4dc27ffafeef835c95eb359/propcache-0.4.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:564d9f0d4d9509e1a870c920a89b2fec951b44bf5ba7d537a9e7c1ccec2c18af", size = 261205, upload_time = "2025-10-08T19:47:39.659Z" }, - { url = "https://files.pythonhosted.org/packages/7a/71/1f9e22eb8b8316701c2a19fa1f388c8a3185082607da8e406a803c9b954e/propcache-0.4.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:17612831fda0138059cc5546f4d12a2aacfb9e47068c06af35c400ba58ba7393", size = 247873, upload_time = "2025-10-08T19:47:41.084Z" }, - { url = "https://files.pythonhosted.org/packages/4a/65/3d4b61f36af2b4eddba9def857959f1016a51066b4f1ce348e0cf7881f58/propcache-0.4.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:41a89040cb10bd345b3c1a873b2bf36413d48da1def52f268a055f7398514874", size = 262739, upload_time = "2025-10-08T19:47:42.51Z" }, - { url = "https://files.pythonhosted.org/packages/2a/42/26746ab087faa77c1c68079b228810436ccd9a5ce9ac85e2b7307195fd06/propcache-0.4.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e35b88984e7fa64aacecea39236cee32dd9bd8c55f57ba8a75cf2399553f9bd7", size = 263514, upload_time = "2025-10-08T19:47:43.927Z" }, - { url = "https://files.pythonhosted.org/packages/94/13/630690fe201f5502d2403dd3cfd451ed8858fe3c738ee88d095ad2ff407b/propcache-0.4.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f8b465489f927b0df505cbe26ffbeed4d6d8a2bbc61ce90eb074ff129ef0ab1", size = 257781, upload_time = "2025-10-08T19:47:45.448Z" }, - { url = "https://files.pythonhosted.org/packages/92/f7/1d4ec5841505f423469efbfc381d64b7b467438cd5a4bbcbb063f3b73d27/propcache-0.4.1-cp313-cp313t-win32.whl", hash = "sha256:2ad890caa1d928c7c2965b48f3a3815c853180831d0e5503d35cf00c472f4717", size = 41396, upload_time = "2025-10-08T19:47:47.202Z" }, - { url = "https://files.pythonhosted.org/packages/48/f0/615c30622316496d2cbbc29f5985f7777d3ada70f23370608c1d3e081c1f/propcache-0.4.1-cp313-cp313t-win_amd64.whl", hash = "sha256:f7ee0e597f495cf415bcbd3da3caa3bd7e816b74d0d52b8145954c5e6fd3ff37", size = 44897, upload_time = "2025-10-08T19:47:48.336Z" }, - { url = "https://files.pythonhosted.org/packages/fd/ca/6002e46eccbe0e33dcd4069ef32f7f1c9e243736e07adca37ae8c4830ec3/propcache-0.4.1-cp313-cp313t-win_arm64.whl", hash = "sha256:929d7cbe1f01bb7baffb33dc14eb5691c95831450a26354cd210a8155170c93a", size = 39789, upload_time = "2025-10-08T19:47:49.876Z" }, - { url = "https://files.pythonhosted.org/packages/5b/5a/bc7b4a4ef808fa59a816c17b20c4bef6884daebbdf627ff2a161da67da19/propcache-0.4.1-py3-none-any.whl", hash = "sha256:af2a6052aeb6cf17d3e46ee169099044fd8224cbaf75c76a2ef596e8163e2237", size = 13305, upload_time = "2025-10-08T19:49:00.792Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/9e/da/e9fc233cf63743258bff22b3dfa7ea5baef7b5bc324af47a0ad89b8ffc6f/propcache-0.4.1.tar.gz", hash = "sha256:f48107a8c637e80362555f37ecf49abe20370e557cc4ab374f04ec4423c97c3d", size = 46442, upload-time = "2025-10-08T19:49:02.291Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/0e/934b541323035566a9af292dba85a195f7b78179114f2c6ebb24551118a9/propcache-0.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c2d1fa3201efaf55d730400d945b5b3ab6e672e100ba0f9a409d950ab25d7db", size = 79534, upload-time = "2025-10-08T19:46:02.083Z" }, + { url = "https://files.pythonhosted.org/packages/a1/6b/db0d03d96726d995dc7171286c6ba9d8d14251f37433890f88368951a44e/propcache-0.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1eb2994229cc8ce7fe9b3db88f5465f5fd8651672840b2e426b88cdb1a30aac8", size = 45526, upload-time = "2025-10-08T19:46:03.884Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c3/82728404aea669e1600f304f2609cde9e665c18df5a11cdd57ed73c1dceb/propcache-0.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:66c1f011f45a3b33d7bcb22daed4b29c0c9e2224758b6be00686731e1b46f925", size = 47263, upload-time = "2025-10-08T19:46:05.405Z" }, + { url = "https://files.pythonhosted.org/packages/df/1b/39313ddad2bf9187a1432654c38249bab4562ef535ef07f5eb6eb04d0b1b/propcache-0.4.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9a52009f2adffe195d0b605c25ec929d26b36ef986ba85244891dee3b294df21", size = 201012, upload-time = "2025-10-08T19:46:07.165Z" }, + { url = "https://files.pythonhosted.org/packages/5b/01/f1d0b57d136f294a142acf97f4ed58c8e5b974c21e543000968357115011/propcache-0.4.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5d4e2366a9c7b837555cf02fb9be2e3167d333aff716332ef1b7c3a142ec40c5", size = 209491, upload-time = "2025-10-08T19:46:08.909Z" }, + { url = "https://files.pythonhosted.org/packages/a1/c8/038d909c61c5bb039070b3fb02ad5cccdb1dde0d714792e251cdb17c9c05/propcache-0.4.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:9d2b6caef873b4f09e26ea7e33d65f42b944837563a47a94719cc3544319a0db", size = 215319, upload-time = "2025-10-08T19:46:10.7Z" }, + { url = "https://files.pythonhosted.org/packages/08/57/8c87e93142b2c1fa2408e45695205a7ba05fb5db458c0bf5c06ba0e09ea6/propcache-0.4.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b16ec437a8c8a965ecf95739448dd938b5c7f56e67ea009f4300d8df05f32b7", size = 196856, upload-time = "2025-10-08T19:46:12.003Z" }, + { url = "https://files.pythonhosted.org/packages/42/df/5615fec76aa561987a534759b3686008a288e73107faa49a8ae5795a9f7a/propcache-0.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:296f4c8ed03ca7476813fe666c9ea97869a8d7aec972618671b33a38a5182ef4", size = 193241, upload-time = "2025-10-08T19:46:13.495Z" }, + { url = "https://files.pythonhosted.org/packages/d5/21/62949eb3a7a54afe8327011c90aca7e03547787a88fb8bd9726806482fea/propcache-0.4.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:1f0978529a418ebd1f49dad413a2b68af33f85d5c5ca5c6ca2a3bed375a7ac60", size = 190552, upload-time = "2025-10-08T19:46:14.938Z" }, + { url = "https://files.pythonhosted.org/packages/30/ee/ab4d727dd70806e5b4de96a798ae7ac6e4d42516f030ee60522474b6b332/propcache-0.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fd138803047fb4c062b1c1dd95462f5209456bfab55c734458f15d11da288f8f", size = 200113, upload-time = "2025-10-08T19:46:16.695Z" }, + { url = "https://files.pythonhosted.org/packages/8a/0b/38b46208e6711b016aa8966a3ac793eee0d05c7159d8342aa27fc0bc365e/propcache-0.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8c9b3cbe4584636d72ff556d9036e0c9317fa27b3ac1f0f558e7e84d1c9c5900", size = 200778, upload-time = "2025-10-08T19:46:18.023Z" }, + { url = "https://files.pythonhosted.org/packages/cf/81/5abec54355ed344476bee711e9f04815d4b00a311ab0535599204eecc257/propcache-0.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f93243fdc5657247533273ac4f86ae106cc6445a0efacb9a1bfe982fcfefd90c", size = 193047, upload-time = "2025-10-08T19:46:19.449Z" }, + { url = "https://files.pythonhosted.org/packages/ec/b6/1f237c04e32063cb034acd5f6ef34ef3a394f75502e72703545631ab1ef6/propcache-0.4.1-cp310-cp310-win32.whl", hash = "sha256:a0ee98db9c5f80785b266eb805016e36058ac72c51a064040f2bc43b61101cdb", size = 38093, upload-time = "2025-10-08T19:46:20.643Z" }, + { url = "https://files.pythonhosted.org/packages/a6/67/354aac4e0603a15f76439caf0427781bcd6797f370377f75a642133bc954/propcache-0.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:1cdb7988c4e5ac7f6d175a28a9aa0c94cb6f2ebe52756a3c0cda98d2809a9e37", size = 41638, upload-time = "2025-10-08T19:46:21.935Z" }, + { url = "https://files.pythonhosted.org/packages/e0/e1/74e55b9fd1a4c209ff1a9a824bf6c8b3d1fc5a1ac3eabe23462637466785/propcache-0.4.1-cp310-cp310-win_arm64.whl", hash = "sha256:d82ad62b19645419fe79dd63b3f9253e15b30e955c0170e5cebc350c1844e581", size = 38229, upload-time = "2025-10-08T19:46:23.368Z" }, + { url = "https://files.pythonhosted.org/packages/8c/d4/4e2c9aaf7ac2242b9358f98dccd8f90f2605402f5afeff6c578682c2c491/propcache-0.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:60a8fda9644b7dfd5dece8c61d8a85e271cb958075bfc4e01083c148b61a7caf", size = 80208, upload-time = "2025-10-08T19:46:24.597Z" }, + { url = "https://files.pythonhosted.org/packages/c2/21/d7b68e911f9c8e18e4ae43bdbc1e1e9bbd971f8866eb81608947b6f585ff/propcache-0.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c30b53e7e6bda1d547cabb47c825f3843a0a1a42b0496087bb58d8fedf9f41b5", size = 45777, upload-time = "2025-10-08T19:46:25.733Z" }, + { url = "https://files.pythonhosted.org/packages/d3/1d/11605e99ac8ea9435651ee71ab4cb4bf03f0949586246476a25aadfec54a/propcache-0.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6918ecbd897443087a3b7cd978d56546a812517dcaaca51b49526720571fa93e", size = 47647, upload-time = "2025-10-08T19:46:27.304Z" }, + { url = "https://files.pythonhosted.org/packages/58/1a/3c62c127a8466c9c843bccb503d40a273e5cc69838805f322e2826509e0d/propcache-0.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3d902a36df4e5989763425a8ab9e98cd8ad5c52c823b34ee7ef307fd50582566", size = 214929, upload-time = "2025-10-08T19:46:28.62Z" }, + { url = "https://files.pythonhosted.org/packages/56/b9/8fa98f850960b367c4b8fe0592e7fc341daa7a9462e925228f10a60cf74f/propcache-0.4.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a9695397f85973bb40427dedddf70d8dc4a44b22f1650dd4af9eedf443d45165", size = 221778, upload-time = "2025-10-08T19:46:30.358Z" }, + { url = "https://files.pythonhosted.org/packages/46/a6/0ab4f660eb59649d14b3d3d65c439421cf2f87fe5dd68591cbe3c1e78a89/propcache-0.4.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2bb07ffd7eaad486576430c89f9b215f9e4be68c4866a96e97db9e97fead85dc", size = 228144, upload-time = "2025-10-08T19:46:32.607Z" }, + { url = "https://files.pythonhosted.org/packages/52/6a/57f43e054fb3d3a56ac9fc532bc684fc6169a26c75c353e65425b3e56eef/propcache-0.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fd6f30fdcf9ae2a70abd34da54f18da086160e4d7d9251f81f3da0ff84fc5a48", size = 210030, upload-time = "2025-10-08T19:46:33.969Z" }, + { url = "https://files.pythonhosted.org/packages/40/e2/27e6feebb5f6b8408fa29f5efbb765cd54c153ac77314d27e457a3e993b7/propcache-0.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fc38cba02d1acba4e2869eef1a57a43dfbd3d49a59bf90dda7444ec2be6a5570", size = 208252, upload-time = "2025-10-08T19:46:35.309Z" }, + { url = "https://files.pythonhosted.org/packages/9e/f8/91c27b22ccda1dbc7967f921c42825564fa5336a01ecd72eb78a9f4f53c2/propcache-0.4.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:67fad6162281e80e882fb3ec355398cf72864a54069d060321f6cd0ade95fe85", size = 202064, upload-time = "2025-10-08T19:46:36.993Z" }, + { url = "https://files.pythonhosted.org/packages/f2/26/7f00bd6bd1adba5aafe5f4a66390f243acab58eab24ff1a08bebb2ef9d40/propcache-0.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f10207adf04d08bec185bae14d9606a1444715bc99180f9331c9c02093e1959e", size = 212429, upload-time = "2025-10-08T19:46:38.398Z" }, + { url = "https://files.pythonhosted.org/packages/84/89/fd108ba7815c1117ddca79c228f3f8a15fc82a73bca8b142eb5de13b2785/propcache-0.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e9b0d8d0845bbc4cfcdcbcdbf5086886bc8157aa963c31c777ceff7846c77757", size = 216727, upload-time = "2025-10-08T19:46:39.732Z" }, + { url = "https://files.pythonhosted.org/packages/79/37/3ec3f7e3173e73f1d600495d8b545b53802cbf35506e5732dd8578db3724/propcache-0.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:981333cb2f4c1896a12f4ab92a9cc8f09ea664e9b7dbdc4eff74627af3a11c0f", size = 205097, upload-time = "2025-10-08T19:46:41.025Z" }, + { url = "https://files.pythonhosted.org/packages/61/b0/b2631c19793f869d35f47d5a3a56fb19e9160d3c119f15ac7344fc3ccae7/propcache-0.4.1-cp311-cp311-win32.whl", hash = "sha256:f1d2f90aeec838a52f1c1a32fe9a619fefd5e411721a9117fbf82aea638fe8a1", size = 38084, upload-time = "2025-10-08T19:46:42.693Z" }, + { url = "https://files.pythonhosted.org/packages/f4/78/6cce448e2098e9f3bfc91bb877f06aa24b6ccace872e39c53b2f707c4648/propcache-0.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:364426a62660f3f699949ac8c621aad6977be7126c5807ce48c0aeb8e7333ea6", size = 41637, upload-time = "2025-10-08T19:46:43.778Z" }, + { url = "https://files.pythonhosted.org/packages/9c/e9/754f180cccd7f51a39913782c74717c581b9cc8177ad0e949f4d51812383/propcache-0.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:e53f3a38d3510c11953f3e6a33f205c6d1b001129f972805ca9b42fc308bc239", size = 38064, upload-time = "2025-10-08T19:46:44.872Z" }, + { url = "https://files.pythonhosted.org/packages/a2/0f/f17b1b2b221d5ca28b4b876e8bb046ac40466513960646bda8e1853cdfa2/propcache-0.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e153e9cd40cc8945138822807139367f256f89c6810c2634a4f6902b52d3b4e2", size = 80061, upload-time = "2025-10-08T19:46:46.075Z" }, + { url = "https://files.pythonhosted.org/packages/76/47/8ccf75935f51448ba9a16a71b783eb7ef6b9ee60f5d14c7f8a8a79fbeed7/propcache-0.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cd547953428f7abb73c5ad82cbb32109566204260d98e41e5dfdc682eb7f8403", size = 46037, upload-time = "2025-10-08T19:46:47.23Z" }, + { url = "https://files.pythonhosted.org/packages/0a/b6/5c9a0e42df4d00bfb4a3cbbe5cf9f54260300c88a0e9af1f47ca5ce17ac0/propcache-0.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f048da1b4f243fc44f205dfd320933a951b8d89e0afd4c7cacc762a8b9165207", size = 47324, upload-time = "2025-10-08T19:46:48.384Z" }, + { url = "https://files.pythonhosted.org/packages/9e/d3/6c7ee328b39a81ee877c962469f1e795f9db87f925251efeb0545e0020d0/propcache-0.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ec17c65562a827bba85e3872ead335f95405ea1674860d96483a02f5c698fa72", size = 225505, upload-time = "2025-10-08T19:46:50.055Z" }, + { url = "https://files.pythonhosted.org/packages/01/5d/1c53f4563490b1d06a684742cc6076ef944bc6457df6051b7d1a877c057b/propcache-0.4.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:405aac25c6394ef275dee4c709be43745d36674b223ba4eb7144bf4d691b7367", size = 230242, upload-time = "2025-10-08T19:46:51.815Z" }, + { url = "https://files.pythonhosted.org/packages/20/e1/ce4620633b0e2422207c3cb774a0ee61cac13abc6217763a7b9e2e3f4a12/propcache-0.4.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0013cb6f8dde4b2a2f66903b8ba740bdfe378c943c4377a200551ceb27f379e4", size = 238474, upload-time = "2025-10-08T19:46:53.208Z" }, + { url = "https://files.pythonhosted.org/packages/46/4b/3aae6835b8e5f44ea6a68348ad90f78134047b503765087be2f9912140ea/propcache-0.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15932ab57837c3368b024473a525e25d316d8353016e7cc0e5ba9eb343fbb1cf", size = 221575, upload-time = "2025-10-08T19:46:54.511Z" }, + { url = "https://files.pythonhosted.org/packages/6e/a5/8a5e8678bcc9d3a1a15b9a29165640d64762d424a16af543f00629c87338/propcache-0.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:031dce78b9dc099f4c29785d9cf5577a3faf9ebf74ecbd3c856a7b92768c3df3", size = 216736, upload-time = "2025-10-08T19:46:56.212Z" }, + { url = "https://files.pythonhosted.org/packages/f1/63/b7b215eddeac83ca1c6b934f89d09a625aa9ee4ba158338854c87210cc36/propcache-0.4.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ab08df6c9a035bee56e31af99be621526bd237bea9f32def431c656b29e41778", size = 213019, upload-time = "2025-10-08T19:46:57.595Z" }, + { url = "https://files.pythonhosted.org/packages/57/74/f580099a58c8af587cac7ba19ee7cb418506342fbbe2d4a4401661cca886/propcache-0.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4d7af63f9f93fe593afbf104c21b3b15868efb2c21d07d8732c0c4287e66b6a6", size = 220376, upload-time = "2025-10-08T19:46:59.067Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ee/542f1313aff7eaf19c2bb758c5d0560d2683dac001a1c96d0774af799843/propcache-0.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cfc27c945f422e8b5071b6e93169679e4eb5bf73bbcbf1ba3ae3a83d2f78ebd9", size = 226988, upload-time = "2025-10-08T19:47:00.544Z" }, + { url = "https://files.pythonhosted.org/packages/8f/18/9c6b015dd9c6930f6ce2229e1f02fb35298b847f2087ea2b436a5bfa7287/propcache-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:35c3277624a080cc6ec6f847cbbbb5b49affa3598c4535a0a4682a697aaa5c75", size = 215615, upload-time = "2025-10-08T19:47:01.968Z" }, + { url = "https://files.pythonhosted.org/packages/80/9e/e7b85720b98c45a45e1fca6a177024934dc9bc5f4d5dd04207f216fc33ed/propcache-0.4.1-cp312-cp312-win32.whl", hash = "sha256:671538c2262dadb5ba6395e26c1731e1d52534bfe9ae56d0b5573ce539266aa8", size = 38066, upload-time = "2025-10-08T19:47:03.503Z" }, + { url = "https://files.pythonhosted.org/packages/54/09/d19cff2a5aaac632ec8fc03737b223597b1e347416934c1b3a7df079784c/propcache-0.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:cb2d222e72399fcf5890d1d5cc1060857b9b236adff2792ff48ca2dfd46c81db", size = 41655, upload-time = "2025-10-08T19:47:04.973Z" }, + { url = "https://files.pythonhosted.org/packages/68/ab/6b5c191bb5de08036a8c697b265d4ca76148efb10fa162f14af14fb5f076/propcache-0.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:204483131fb222bdaaeeea9f9e6c6ed0cac32731f75dfc1d4a567fc1926477c1", size = 37789, upload-time = "2025-10-08T19:47:06.077Z" }, + { url = "https://files.pythonhosted.org/packages/bf/df/6d9c1b6ac12b003837dde8a10231a7344512186e87b36e855bef32241942/propcache-0.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:43eedf29202c08550aac1d14e0ee619b0430aaef78f85864c1a892294fbc28cf", size = 77750, upload-time = "2025-10-08T19:47:07.648Z" }, + { url = "https://files.pythonhosted.org/packages/8b/e8/677a0025e8a2acf07d3418a2e7ba529c9c33caf09d3c1f25513023c1db56/propcache-0.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d62cdfcfd89ccb8de04e0eda998535c406bf5e060ffd56be6c586cbcc05b3311", size = 44780, upload-time = "2025-10-08T19:47:08.851Z" }, + { url = "https://files.pythonhosted.org/packages/89/a4/92380f7ca60f99ebae761936bc48a72a639e8a47b29050615eef757cb2a7/propcache-0.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cae65ad55793da34db5f54e4029b89d3b9b9490d8abe1b4c7ab5d4b8ec7ebf74", size = 46308, upload-time = "2025-10-08T19:47:09.982Z" }, + { url = "https://files.pythonhosted.org/packages/2d/48/c5ac64dee5262044348d1d78a5f85dd1a57464a60d30daee946699963eb3/propcache-0.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:333ddb9031d2704a301ee3e506dc46b1fe5f294ec198ed6435ad5b6a085facfe", size = 208182, upload-time = "2025-10-08T19:47:11.319Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0c/cd762dd011a9287389a6a3eb43aa30207bde253610cca06824aeabfe9653/propcache-0.4.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:fd0858c20f078a32cf55f7e81473d96dcf3b93fd2ccdb3d40fdf54b8573df3af", size = 211215, upload-time = "2025-10-08T19:47:13.146Z" }, + { url = "https://files.pythonhosted.org/packages/30/3e/49861e90233ba36890ae0ca4c660e95df565b2cd15d4a68556ab5865974e/propcache-0.4.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:678ae89ebc632c5c204c794f8dab2837c5f159aeb59e6ed0539500400577298c", size = 218112, upload-time = "2025-10-08T19:47:14.913Z" }, + { url = "https://files.pythonhosted.org/packages/f1/8b/544bc867e24e1bd48f3118cecd3b05c694e160a168478fa28770f22fd094/propcache-0.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d472aeb4fbf9865e0c6d622d7f4d54a4e101a89715d8904282bb5f9a2f476c3f", size = 204442, upload-time = "2025-10-08T19:47:16.277Z" }, + { url = "https://files.pythonhosted.org/packages/50/a6/4282772fd016a76d3e5c0df58380a5ea64900afd836cec2c2f662d1b9bb3/propcache-0.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4d3df5fa7e36b3225954fba85589da77a0fe6a53e3976de39caf04a0db4c36f1", size = 199398, upload-time = "2025-10-08T19:47:17.962Z" }, + { url = "https://files.pythonhosted.org/packages/3e/ec/d8a7cd406ee1ddb705db2139f8a10a8a427100347bd698e7014351c7af09/propcache-0.4.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:ee17f18d2498f2673e432faaa71698032b0127ebf23ae5974eeaf806c279df24", size = 196920, upload-time = "2025-10-08T19:47:19.355Z" }, + { url = "https://files.pythonhosted.org/packages/f6/6c/f38ab64af3764f431e359f8baf9e0a21013e24329e8b85d2da32e8ed07ca/propcache-0.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:580e97762b950f993ae618e167e7be9256b8353c2dcd8b99ec100eb50f5286aa", size = 203748, upload-time = "2025-10-08T19:47:21.338Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e3/fa846bd70f6534d647886621388f0a265254d30e3ce47e5c8e6e27dbf153/propcache-0.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:501d20b891688eb8e7aa903021f0b72d5a55db40ffaab27edefd1027caaafa61", size = 205877, upload-time = "2025-10-08T19:47:23.059Z" }, + { url = "https://files.pythonhosted.org/packages/e2/39/8163fc6f3133fea7b5f2827e8eba2029a0277ab2c5beee6c1db7b10fc23d/propcache-0.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a0bd56e5b100aef69bd8562b74b46254e7c8812918d3baa700c8a8009b0af66", size = 199437, upload-time = "2025-10-08T19:47:24.445Z" }, + { url = "https://files.pythonhosted.org/packages/93/89/caa9089970ca49c7c01662bd0eeedfe85494e863e8043565aeb6472ce8fe/propcache-0.4.1-cp313-cp313-win32.whl", hash = "sha256:bcc9aaa5d80322bc2fb24bb7accb4a30f81e90ab8d6ba187aec0744bc302ad81", size = 37586, upload-time = "2025-10-08T19:47:25.736Z" }, + { url = "https://files.pythonhosted.org/packages/f5/ab/f76ec3c3627c883215b5c8080debb4394ef5a7a29be811f786415fc1e6fd/propcache-0.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:381914df18634f5494334d201e98245c0596067504b9372d8cf93f4bb23e025e", size = 40790, upload-time = "2025-10-08T19:47:26.847Z" }, + { url = "https://files.pythonhosted.org/packages/59/1b/e71ae98235f8e2ba5004d8cb19765a74877abf189bc53fc0c80d799e56c3/propcache-0.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:8873eb4460fd55333ea49b7d189749ecf6e55bf85080f11b1c4530ed3034cba1", size = 37158, upload-time = "2025-10-08T19:47:27.961Z" }, + { url = "https://files.pythonhosted.org/packages/83/ce/a31bbdfc24ee0dcbba458c8175ed26089cf109a55bbe7b7640ed2470cfe9/propcache-0.4.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:92d1935ee1f8d7442da9c0c4fa7ac20d07e94064184811b685f5c4fada64553b", size = 81451, upload-time = "2025-10-08T19:47:29.445Z" }, + { url = "https://files.pythonhosted.org/packages/25/9c/442a45a470a68456e710d96cacd3573ef26a1d0a60067e6a7d5e655621ed/propcache-0.4.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:473c61b39e1460d386479b9b2f337da492042447c9b685f28be4f74d3529e566", size = 46374, upload-time = "2025-10-08T19:47:30.579Z" }, + { url = "https://files.pythonhosted.org/packages/f4/bf/b1d5e21dbc3b2e889ea4327044fb16312a736d97640fb8b6aa3f9c7b3b65/propcache-0.4.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c0ef0aaafc66fbd87842a3fe3902fd889825646bc21149eafe47be6072725835", size = 48396, upload-time = "2025-10-08T19:47:31.79Z" }, + { url = "https://files.pythonhosted.org/packages/f4/04/5b4c54a103d480e978d3c8a76073502b18db0c4bc17ab91b3cb5092ad949/propcache-0.4.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95393b4d66bfae908c3ca8d169d5f79cd65636ae15b5e7a4f6e67af675adb0e", size = 275950, upload-time = "2025-10-08T19:47:33.481Z" }, + { url = "https://files.pythonhosted.org/packages/b4/c1/86f846827fb969c4b78b0af79bba1d1ea2156492e1b83dea8b8a6ae27395/propcache-0.4.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c07fda85708bc48578467e85099645167a955ba093be0a2dcba962195676e859", size = 273856, upload-time = "2025-10-08T19:47:34.906Z" }, + { url = "https://files.pythonhosted.org/packages/36/1d/fc272a63c8d3bbad6878c336c7a7dea15e8f2d23a544bda43205dfa83ada/propcache-0.4.1-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:af223b406d6d000830c6f65f1e6431783fc3f713ba3e6cc8c024d5ee96170a4b", size = 280420, upload-time = "2025-10-08T19:47:36.338Z" }, + { url = "https://files.pythonhosted.org/packages/07/0c/01f2219d39f7e53d52e5173bcb09c976609ba30209912a0680adfb8c593a/propcache-0.4.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a78372c932c90ee474559c5ddfffd718238e8673c340dc21fe45c5b8b54559a0", size = 263254, upload-time = "2025-10-08T19:47:37.692Z" }, + { url = "https://files.pythonhosted.org/packages/2d/18/cd28081658ce597898f0c4d174d4d0f3c5b6d4dc27ffafeef835c95eb359/propcache-0.4.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:564d9f0d4d9509e1a870c920a89b2fec951b44bf5ba7d537a9e7c1ccec2c18af", size = 261205, upload-time = "2025-10-08T19:47:39.659Z" }, + { url = "https://files.pythonhosted.org/packages/7a/71/1f9e22eb8b8316701c2a19fa1f388c8a3185082607da8e406a803c9b954e/propcache-0.4.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:17612831fda0138059cc5546f4d12a2aacfb9e47068c06af35c400ba58ba7393", size = 247873, upload-time = "2025-10-08T19:47:41.084Z" }, + { url = "https://files.pythonhosted.org/packages/4a/65/3d4b61f36af2b4eddba9def857959f1016a51066b4f1ce348e0cf7881f58/propcache-0.4.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:41a89040cb10bd345b3c1a873b2bf36413d48da1def52f268a055f7398514874", size = 262739, upload-time = "2025-10-08T19:47:42.51Z" }, + { url = "https://files.pythonhosted.org/packages/2a/42/26746ab087faa77c1c68079b228810436ccd9a5ce9ac85e2b7307195fd06/propcache-0.4.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e35b88984e7fa64aacecea39236cee32dd9bd8c55f57ba8a75cf2399553f9bd7", size = 263514, upload-time = "2025-10-08T19:47:43.927Z" }, + { url = "https://files.pythonhosted.org/packages/94/13/630690fe201f5502d2403dd3cfd451ed8858fe3c738ee88d095ad2ff407b/propcache-0.4.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f8b465489f927b0df505cbe26ffbeed4d6d8a2bbc61ce90eb074ff129ef0ab1", size = 257781, upload-time = "2025-10-08T19:47:45.448Z" }, + { url = "https://files.pythonhosted.org/packages/92/f7/1d4ec5841505f423469efbfc381d64b7b467438cd5a4bbcbb063f3b73d27/propcache-0.4.1-cp313-cp313t-win32.whl", hash = "sha256:2ad890caa1d928c7c2965b48f3a3815c853180831d0e5503d35cf00c472f4717", size = 41396, upload-time = "2025-10-08T19:47:47.202Z" }, + { url = "https://files.pythonhosted.org/packages/48/f0/615c30622316496d2cbbc29f5985f7777d3ada70f23370608c1d3e081c1f/propcache-0.4.1-cp313-cp313t-win_amd64.whl", hash = "sha256:f7ee0e597f495cf415bcbd3da3caa3bd7e816b74d0d52b8145954c5e6fd3ff37", size = 44897, upload-time = "2025-10-08T19:47:48.336Z" }, + { url = "https://files.pythonhosted.org/packages/fd/ca/6002e46eccbe0e33dcd4069ef32f7f1c9e243736e07adca37ae8c4830ec3/propcache-0.4.1-cp313-cp313t-win_arm64.whl", hash = "sha256:929d7cbe1f01bb7baffb33dc14eb5691c95831450a26354cd210a8155170c93a", size = 39789, upload-time = "2025-10-08T19:47:49.876Z" }, + { url = "https://files.pythonhosted.org/packages/5b/5a/bc7b4a4ef808fa59a816c17b20c4bef6884daebbdf627ff2a161da67da19/propcache-0.4.1-py3-none-any.whl", hash = "sha256:af2a6052aeb6cf17d3e46ee169099044fd8224cbaf75c76a2ef596e8163e2237", size = 13305, upload-time = "2025-10-08T19:49:00.792Z" }, ] [[package]] name = "protobuf" version = "6.33.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ba/25/7c72c307aafc96fa87062aa6291d9f7c94836e43214d43722e86037aac02/protobuf-6.33.5.tar.gz", hash = "sha256:6ddcac2a081f8b7b9642c09406bc6a4290128fce5f471cddd165960bb9119e5c", size = 444465, upload_time = "2026-01-29T21:51:33.494Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/25/7c72c307aafc96fa87062aa6291d9f7c94836e43214d43722e86037aac02/protobuf-6.33.5.tar.gz", hash = "sha256:6ddcac2a081f8b7b9642c09406bc6a4290128fce5f471cddd165960bb9119e5c", size = 444465, upload-time = "2026-01-29T21:51:33.494Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/79/af92d0a8369732b027e6d6084251dd8e782c685c72da161bd4a2e00fbabb/protobuf-6.33.5-cp310-abi3-win32.whl", hash = "sha256:d71b040839446bac0f4d162e758bea99c8251161dae9d0983a3b88dee345153b", size = 425769, upload_time = "2026-01-29T21:51:21.751Z" }, - { url = "https://files.pythonhosted.org/packages/55/75/bb9bc917d10e9ee13dee8607eb9ab963b7cf8be607c46e7862c748aa2af7/protobuf-6.33.5-cp310-abi3-win_amd64.whl", hash = "sha256:3093804752167bcab3998bec9f1048baae6e29505adaf1afd14a37bddede533c", size = 437118, upload_time = "2026-01-29T21:51:24.022Z" }, - { url = "https://files.pythonhosted.org/packages/a2/6b/e48dfc1191bc5b52950246275bf4089773e91cb5ba3592621723cdddca62/protobuf-6.33.5-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:a5cb85982d95d906df1e2210e58f8e4f1e3cdc088e52c921a041f9c9a0386de5", size = 427766, upload_time = "2026-01-29T21:51:25.413Z" }, - { url = "https://files.pythonhosted.org/packages/4e/b1/c79468184310de09d75095ed1314b839eb2f72df71097db9d1404a1b2717/protobuf-6.33.5-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:9b71e0281f36f179d00cbcb119cb19dec4d14a81393e5ea220f64b286173e190", size = 324638, upload_time = "2026-01-29T21:51:26.423Z" }, - { url = "https://files.pythonhosted.org/packages/c5/f5/65d838092fd01c44d16037953fd4c2cc851e783de9b8f02b27ec4ffd906f/protobuf-6.33.5-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:8afa18e1d6d20af15b417e728e9f60f3aa108ee76f23c3b2c07a2c3b546d3afd", size = 339411, upload_time = "2026-01-29T21:51:27.446Z" }, - { url = "https://files.pythonhosted.org/packages/9b/53/a9443aa3ca9ba8724fdfa02dd1887c1bcd8e89556b715cfbacca6b63dbec/protobuf-6.33.5-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:cbf16ba3350fb7b889fca858fb215967792dc125b35c7976ca4818bee3521cf0", size = 323465, upload_time = "2026-01-29T21:51:28.925Z" }, - { url = "https://files.pythonhosted.org/packages/57/bf/2086963c69bdac3d7cff1cc7ff79b8ce5ea0bec6797a017e1be338a46248/protobuf-6.33.5-py3-none-any.whl", hash = "sha256:69915a973dd0f60f31a08b8318b73eab2bd6a392c79184b3612226b0a3f8ec02", size = 170687, upload_time = "2026-01-29T21:51:32.557Z" }, + { url = "https://files.pythonhosted.org/packages/b1/79/af92d0a8369732b027e6d6084251dd8e782c685c72da161bd4a2e00fbabb/protobuf-6.33.5-cp310-abi3-win32.whl", hash = "sha256:d71b040839446bac0f4d162e758bea99c8251161dae9d0983a3b88dee345153b", size = 425769, upload-time = "2026-01-29T21:51:21.751Z" }, + { url = "https://files.pythonhosted.org/packages/55/75/bb9bc917d10e9ee13dee8607eb9ab963b7cf8be607c46e7862c748aa2af7/protobuf-6.33.5-cp310-abi3-win_amd64.whl", hash = "sha256:3093804752167bcab3998bec9f1048baae6e29505adaf1afd14a37bddede533c", size = 437118, upload-time = "2026-01-29T21:51:24.022Z" }, + { url = "https://files.pythonhosted.org/packages/a2/6b/e48dfc1191bc5b52950246275bf4089773e91cb5ba3592621723cdddca62/protobuf-6.33.5-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:a5cb85982d95d906df1e2210e58f8e4f1e3cdc088e52c921a041f9c9a0386de5", size = 427766, upload-time = "2026-01-29T21:51:25.413Z" }, + { url = "https://files.pythonhosted.org/packages/4e/b1/c79468184310de09d75095ed1314b839eb2f72df71097db9d1404a1b2717/protobuf-6.33.5-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:9b71e0281f36f179d00cbcb119cb19dec4d14a81393e5ea220f64b286173e190", size = 324638, upload-time = "2026-01-29T21:51:26.423Z" }, + { url = "https://files.pythonhosted.org/packages/c5/f5/65d838092fd01c44d16037953fd4c2cc851e783de9b8f02b27ec4ffd906f/protobuf-6.33.5-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:8afa18e1d6d20af15b417e728e9f60f3aa108ee76f23c3b2c07a2c3b546d3afd", size = 339411, upload-time = "2026-01-29T21:51:27.446Z" }, + { url = "https://files.pythonhosted.org/packages/9b/53/a9443aa3ca9ba8724fdfa02dd1887c1bcd8e89556b715cfbacca6b63dbec/protobuf-6.33.5-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:cbf16ba3350fb7b889fca858fb215967792dc125b35c7976ca4818bee3521cf0", size = 323465, upload-time = "2026-01-29T21:51:28.925Z" }, + { url = "https://files.pythonhosted.org/packages/57/bf/2086963c69bdac3d7cff1cc7ff79b8ce5ea0bec6797a017e1be338a46248/protobuf-6.33.5-py3-none-any.whl", hash = "sha256:69915a973dd0f60f31a08b8318b73eab2bd6a392c79184b3612226b0a3f8ec02", size = 170687, upload-time = "2026-01-29T21:51:32.557Z" }, ] [[package]] name = "psutil" version = "7.2.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372", size = 493740, upload_time = "2026-01-28T18:14:54.428Z" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372", size = 493740, upload-time = "2026-01-28T18:14:54.428Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/51/08/510cbdb69c25a96f4ae523f733cdc963ae654904e8db864c07585ef99875/psutil-7.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2edccc433cbfa046b980b0df0171cd25bcaeb3a68fe9022db0979e7aa74a826b", size = 130595, upload_time = "2026-01-28T18:14:57.293Z" }, - { url = "https://files.pythonhosted.org/packages/d6/f5/97baea3fe7a5a9af7436301f85490905379b1c6f2dd51fe3ecf24b4c5fbf/psutil-7.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78c8603dcd9a04c7364f1a3e670cea95d51ee865e4efb3556a3a63adef958ea", size = 131082, upload_time = "2026-01-28T18:14:59.732Z" }, - { url = "https://files.pythonhosted.org/packages/37/d6/246513fbf9fa174af531f28412297dd05241d97a75911ac8febefa1a53c6/psutil-7.2.2-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a571f2330c966c62aeda00dd24620425d4b0cc86881c89861fbc04549e5dc63", size = 181476, upload_time = "2026-01-28T18:15:01.884Z" }, - { url = "https://files.pythonhosted.org/packages/b8/b5/9182c9af3836cca61696dabe4fd1304e17bc56cb62f17439e1154f225dd3/psutil-7.2.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:917e891983ca3c1887b4ef36447b1e0873e70c933afc831c6b6da078ba474312", size = 184062, upload_time = "2026-01-28T18:15:04.436Z" }, - { url = "https://files.pythonhosted.org/packages/16/ba/0756dca669f5a9300d0cbcbfae9a4c30e446dfc7440ffe43ded5724bfd93/psutil-7.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:ab486563df44c17f5173621c7b198955bd6b613fb87c71c161f827d3fb149a9b", size = 139893, upload_time = "2026-01-28T18:15:06.378Z" }, - { url = "https://files.pythonhosted.org/packages/1c/61/8fa0e26f33623b49949346de05ec1ddaad02ed8ba64af45f40a147dbfa97/psutil-7.2.2-cp313-cp313t-win_arm64.whl", hash = "sha256:ae0aefdd8796a7737eccea863f80f81e468a1e4cf14d926bd9b6f5f2d5f90ca9", size = 135589, upload_time = "2026-01-28T18:15:08.03Z" }, - { url = "https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486", size = 129090, upload_time = "2026-01-28T18:15:22.168Z" }, - { url = "https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979", size = 129859, upload_time = "2026-01-28T18:15:23.795Z" }, - { url = "https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9", size = 155560, upload_time = "2026-01-28T18:15:25.976Z" }, - { url = "https://files.pythonhosted.org/packages/63/65/37648c0c158dc222aba51c089eb3bdfa238e621674dc42d48706e639204f/psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e", size = 156997, upload_time = "2026-01-28T18:15:27.794Z" }, - { url = "https://files.pythonhosted.org/packages/8e/13/125093eadae863ce03c6ffdbae9929430d116a246ef69866dad94da3bfbc/psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8", size = 148972, upload_time = "2026-01-28T18:15:29.342Z" }, - { url = "https://files.pythonhosted.org/packages/04/78/0acd37ca84ce3ddffaa92ef0f571e073faa6d8ff1f0559ab1272188ea2be/psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc", size = 148266, upload_time = "2026-01-28T18:15:31.597Z" }, - { url = "https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988", size = 137737, upload_time = "2026-01-28T18:15:33.849Z" }, - { url = "https://files.pythonhosted.org/packages/8c/c7/7bb2e321574b10df20cbde462a94e2b71d05f9bbda251ef27d104668306a/psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee", size = 134617, upload_time = "2026-01-28T18:15:36.514Z" }, + { url = "https://files.pythonhosted.org/packages/51/08/510cbdb69c25a96f4ae523f733cdc963ae654904e8db864c07585ef99875/psutil-7.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2edccc433cbfa046b980b0df0171cd25bcaeb3a68fe9022db0979e7aa74a826b", size = 130595, upload-time = "2026-01-28T18:14:57.293Z" }, + { url = "https://files.pythonhosted.org/packages/d6/f5/97baea3fe7a5a9af7436301f85490905379b1c6f2dd51fe3ecf24b4c5fbf/psutil-7.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78c8603dcd9a04c7364f1a3e670cea95d51ee865e4efb3556a3a63adef958ea", size = 131082, upload-time = "2026-01-28T18:14:59.732Z" }, + { url = "https://files.pythonhosted.org/packages/37/d6/246513fbf9fa174af531f28412297dd05241d97a75911ac8febefa1a53c6/psutil-7.2.2-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a571f2330c966c62aeda00dd24620425d4b0cc86881c89861fbc04549e5dc63", size = 181476, upload-time = "2026-01-28T18:15:01.884Z" }, + { url = "https://files.pythonhosted.org/packages/b8/b5/9182c9af3836cca61696dabe4fd1304e17bc56cb62f17439e1154f225dd3/psutil-7.2.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:917e891983ca3c1887b4ef36447b1e0873e70c933afc831c6b6da078ba474312", size = 184062, upload-time = "2026-01-28T18:15:04.436Z" }, + { url = "https://files.pythonhosted.org/packages/16/ba/0756dca669f5a9300d0cbcbfae9a4c30e446dfc7440ffe43ded5724bfd93/psutil-7.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:ab486563df44c17f5173621c7b198955bd6b613fb87c71c161f827d3fb149a9b", size = 139893, upload-time = "2026-01-28T18:15:06.378Z" }, + { url = "https://files.pythonhosted.org/packages/1c/61/8fa0e26f33623b49949346de05ec1ddaad02ed8ba64af45f40a147dbfa97/psutil-7.2.2-cp313-cp313t-win_arm64.whl", hash = "sha256:ae0aefdd8796a7737eccea863f80f81e468a1e4cf14d926bd9b6f5f2d5f90ca9", size = 135589, upload-time = "2026-01-28T18:15:08.03Z" }, + { url = "https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486", size = 129090, upload-time = "2026-01-28T18:15:22.168Z" }, + { url = "https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979", size = 129859, upload-time = "2026-01-28T18:15:23.795Z" }, + { url = "https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9", size = 155560, upload-time = "2026-01-28T18:15:25.976Z" }, + { url = "https://files.pythonhosted.org/packages/63/65/37648c0c158dc222aba51c089eb3bdfa238e621674dc42d48706e639204f/psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e", size = 156997, upload-time = "2026-01-28T18:15:27.794Z" }, + { url = "https://files.pythonhosted.org/packages/8e/13/125093eadae863ce03c6ffdbae9929430d116a246ef69866dad94da3bfbc/psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8", size = 148972, upload-time = "2026-01-28T18:15:29.342Z" }, + { url = "https://files.pythonhosted.org/packages/04/78/0acd37ca84ce3ddffaa92ef0f571e073faa6d8ff1f0559ab1272188ea2be/psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc", size = 148266, upload-time = "2026-01-28T18:15:31.597Z" }, + { url = "https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988", size = 137737, upload-time = "2026-01-28T18:15:33.849Z" }, + { url = "https://files.pythonhosted.org/packages/8c/c7/7bb2e321574b10df20cbde462a94e2b71d05f9bbda251ef27d104668306a/psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee", size = 134617, upload-time = "2026-01-28T18:15:36.514Z" }, ] [[package]] @@ -3151,9 +3201,9 @@ dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.13'" }, { name = "tzdata", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e0/1a/7d9ef4fdc13ef7f15b934c393edc97a35c281bb7d3c3329fbfcbe915a7c2/psycopg-3.3.2.tar.gz", hash = "sha256:707a67975ee214d200511177a6a80e56e654754c9afca06a7194ea6bbfde9ca7", size = 165630, upload_time = "2025-12-06T17:34:53.899Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/1a/7d9ef4fdc13ef7f15b934c393edc97a35c281bb7d3c3329fbfcbe915a7c2/psycopg-3.3.2.tar.gz", hash = "sha256:707a67975ee214d200511177a6a80e56e654754c9afca06a7194ea6bbfde9ca7", size = 165630, upload-time = "2025-12-06T17:34:53.899Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8c/51/2779ccdf9305981a06b21a6b27e8547c948d85c41c76ff434192784a4c93/psycopg-3.3.2-py3-none-any.whl", hash = "sha256:3e94bc5f4690247d734599af56e51bae8e0db8e4311ea413f801fef82b14a99b", size = 212774, upload_time = "2025-12-06T17:31:41.414Z" }, + { url = "https://files.pythonhosted.org/packages/8c/51/2779ccdf9305981a06b21a6b27e8547c948d85c41c76ff434192784a4c93/psycopg-3.3.2-py3-none-any.whl", hash = "sha256:3e94bc5f4690247d734599af56e51bae8e0db8e4311ea413f801fef82b14a99b", size = 212774, upload-time = "2025-12-06T17:31:41.414Z" }, ] [package.optional-dependencies] @@ -3166,59 +3216,59 @@ name = "psycopg-binary" version = "3.3.2" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/25/d7/edfb0d9e56081246fd88490f99b1bafebd3588480cca601a4de0c41a3e08/psycopg_binary-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0768c5f32934bb52a5df098317eca9bdcf411de627c5dca2ee57662b64b54b41", size = 4597785, upload_time = "2025-12-06T17:31:44.867Z" }, - { url = "https://files.pythonhosted.org/packages/71/45/8458201d9573dd851263a05cefddd4bfd31e8b3c6434b3e38d62aea9f15a/psycopg_binary-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:09b3014013f05cd89828640d3a1db5f829cc24ad8fa81b6e42b2c04685a0c9d4", size = 4664440, upload_time = "2025-12-06T17:31:49.1Z" }, - { url = "https://files.pythonhosted.org/packages/d1/33/484260d87456cfe88dc219c1919026f11949b9d1de8a6371ddbe027d4d60/psycopg_binary-3.3.2-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:3789d452a9d17a841c7f4f97bbcba51a21f957ea35641a4c98507520e6b6a068", size = 5478355, upload_time = "2025-12-06T17:31:52.657Z" }, - { url = "https://files.pythonhosted.org/packages/34/b2/18c91630c30c83f534c2bfa75fb533293fc9c3ab31bb7f2bf1cd9579c53b/psycopg_binary-3.3.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:44e89938d36acc4495735af70a886d206a5bfdc80258f95b69b52f68b2968d9e", size = 5152398, upload_time = "2025-12-06T17:31:56.092Z" }, - { url = "https://files.pythonhosted.org/packages/c0/14/7c705e1934107196d9dca2040cf34bce2ca26de62520e43073d2673052d4/psycopg_binary-3.3.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90ed9da805e52985b0202aed4f352842c907c6b4fc6c7c109c6e646c32e2f43b", size = 6748982, upload_time = "2025-12-06T17:32:00.611Z" }, - { url = "https://files.pythonhosted.org/packages/56/18/80197c47798926f79e563af02a71d1abecab88cf45ddf8dc960700598da7/psycopg_binary-3.3.2-cp310-cp310-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c3a9ccdfee4ae59cf9bf1822777e763bc097ed208f4901e21537fca1070e1391", size = 4991214, upload_time = "2025-12-06T17:32:03.897Z" }, - { url = "https://files.pythonhosted.org/packages/7e/2e/e88e2f678f5d1a968d87e57b30915061c1157e916b8aaa9b0b78bca95e25/psycopg_binary-3.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:de9173f8cc0efd88ac2a89b3b6c287a9a0011cdc2f53b2a12c28d6fd55f9f81c", size = 4517421, upload_time = "2025-12-06T17:32:07.287Z" }, - { url = "https://files.pythonhosted.org/packages/80/9e/d56813b24370723bcd62bf73871aee4d5fca0536f3476c4c4d5b037e3c7f/psycopg_binary-3.3.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:0611f4822674f3269e507a307236efb62ae5a828fcfc923ac85fe22ca19fd7c8", size = 4206124, upload_time = "2025-12-06T17:32:10.374Z" }, - { url = "https://files.pythonhosted.org/packages/91/81/5a11a898969edf0ee43d0613a6dfd689a0aa12d418c69e148a8ff153fbc7/psycopg_binary-3.3.2-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:522b79c7db547767ca923e441c19b97a2157f2f494272a119c854bba4804e186", size = 3937067, upload_time = "2025-12-06T17:32:13.852Z" }, - { url = "https://files.pythonhosted.org/packages/a1/33/a6180ff1e747a0395876d985e8e295c9d7cbe956a2d66f165e7c67cffe55/psycopg_binary-3.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1ea41c0229f3f5a3844ad0857a83a9f869aa7b840448fa0c200e6bcf85d33d19", size = 4243731, upload_time = "2025-12-06T17:32:16.803Z" }, - { url = "https://files.pythonhosted.org/packages/e9/5b/9c1b6fbc900d5b525946ed9a477865c5016a5306080c0557248bb04f1a5b/psycopg_binary-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:8ea05b499278790a8fa0ff9854ab0de2542aca02d661ddff94e830df971ff640", size = 3546403, upload_time = "2025-12-06T17:32:19.621Z" }, - { url = "https://files.pythonhosted.org/packages/57/d9/49640360fc090d27afc4655021544aa71d5393ebae124ffa53a04474b493/psycopg_binary-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:94503b79f7da0b65c80d0dbb2f81dd78b300319ec2435d5e6dcf9622160bc2fa", size = 4597890, upload_time = "2025-12-06T17:32:23.087Z" }, - { url = "https://files.pythonhosted.org/packages/85/cf/99634bbccc8af0dd86df4bce705eea5540d06bb7f5ab3067446ae9ffdae4/psycopg_binary-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07a5f030e0902ec3e27d0506ceb01238c0aecbc73ecd7fa0ee55f86134600b5b", size = 4664396, upload_time = "2025-12-06T17:32:26.421Z" }, - { url = "https://files.pythonhosted.org/packages/40/db/6035dff6d5c6dfca3a4ab0d2ac62ede623646e327e9f99e21e0cf08976c6/psycopg_binary-3.3.2-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e09d0d93d35c134704a2cb2b15f81ffc8174fd602f3e08f7b1a3d8896156cf0", size = 5478743, upload_time = "2025-12-06T17:32:29.901Z" }, - { url = "https://files.pythonhosted.org/packages/03/0f/fc06bbc8e87f09458d2ce04a59cd90565e54e8efca33e0802daee6d2b0e6/psycopg_binary-3.3.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:649c1d33bedda431e0c1df646985fbbeb9274afa964e1aef4be053c0f23a2924", size = 5151820, upload_time = "2025-12-06T17:32:33.562Z" }, - { url = "https://files.pythonhosted.org/packages/86/ab/bcc0397c96a0ad29463e33ed03285826e0fabc43595c195f419d9291ee70/psycopg_binary-3.3.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c5774272f754605059521ff037a86e680342e3847498b0aa86b0f3560c70963c", size = 6747711, upload_time = "2025-12-06T17:32:38.074Z" }, - { url = "https://files.pythonhosted.org/packages/96/eb/7450bc75c31d5be5f7a6d02d26beef6989a4ca6f5efdec65eea6cf612d0e/psycopg_binary-3.3.2-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d391b70c9cc23f6e1142729772a011f364199d2c5ddc0d596f5f43316fbf982d", size = 4991626, upload_time = "2025-12-06T17:32:41.373Z" }, - { url = "https://files.pythonhosted.org/packages/dc/85/65f14453804c82a7fba31cd1a984b90349c0f327b809102c4b99115c0930/psycopg_binary-3.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f3f601f32244a677c7b029ec39412db2772ad04a28bc2cbb4b1f0931ed0ffad7", size = 4516760, upload_time = "2025-12-06T17:32:44.921Z" }, - { url = "https://files.pythonhosted.org/packages/24/8c/3105f00a91d73d9a443932f95156eae8159d5d9cb68a9d2cf512710d484f/psycopg_binary-3.3.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:0ae60e910531cfcc364a8f615a7941cac89efeb3f0fffe0c4824a6d11461eef7", size = 4204028, upload_time = "2025-12-06T17:32:48.355Z" }, - { url = "https://files.pythonhosted.org/packages/1e/dd/74f64a383342ef7c22d1eb2768ed86411c7f877ed2580cd33c17f436fe3c/psycopg_binary-3.3.2-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7c43a773dd1a481dbb2fe64576aa303d80f328cce0eae5e3e4894947c41d1da7", size = 3935780, upload_time = "2025-12-06T17:32:51.347Z" }, - { url = "https://files.pythonhosted.org/packages/85/30/f3f207d1c292949a26cdea6727c9c325b4ee41e04bf2736a4afbe45eb61f/psycopg_binary-3.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5a327327f1188b3fbecac41bf1973a60b86b2eb237db10dc945bd3dc97ec39e4", size = 4243239, upload_time = "2025-12-06T17:32:54.924Z" }, - { url = "https://files.pythonhosted.org/packages/b3/08/8f1b5d6231338bf7bc46f635c4d4965facec52e1c9a7952ca8a70cb57dc0/psycopg_binary-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:136c43f185244893a527540307167f5d3ef4e08786508afe45d6f146228f5aa9", size = 3548102, upload_time = "2025-12-06T17:32:57.944Z" }, - { url = "https://files.pythonhosted.org/packages/4e/1e/8614b01c549dd7e385dacdcd83fe194f6b3acb255a53cc67154ee6bf00e7/psycopg_binary-3.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a9387ab615f929e71ef0f4a8a51e986fa06236ccfa9f3ec98a88f60fbf230634", size = 4579832, upload_time = "2025-12-06T17:33:01.388Z" }, - { url = "https://files.pythonhosted.org/packages/26/97/0bb093570fae2f4454d42c1ae6000f15934391867402f680254e4a7def54/psycopg_binary-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3ff7489df5e06c12d1829544eaec64970fe27fe300f7cf04c8495fe682064688", size = 4658786, upload_time = "2025-12-06T17:33:05.022Z" }, - { url = "https://files.pythonhosted.org/packages/61/20/1d9383e3f2038826900a14137b0647d755f67551aab316e1021443105ed5/psycopg_binary-3.3.2-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:9742580ecc8e1ac45164e98d32ca6df90da509c2d3ff26be245d94c430f92db4", size = 5454896, upload_time = "2025-12-06T17:33:09.023Z" }, - { url = "https://files.pythonhosted.org/packages/a6/62/513c80ad8bbb545e364f7737bf2492d34a4c05eef4f7b5c16428dc42260d/psycopg_binary-3.3.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d45acedcaa58619355f18e0f42af542fcad3fd84ace4b8355d3a5dea23318578", size = 5132731, upload_time = "2025-12-06T17:33:12.519Z" }, - { url = "https://files.pythonhosted.org/packages/f3/28/ddf5f5905f088024bccb19857949467407c693389a14feb527d6171d8215/psycopg_binary-3.3.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d88f32ff8c47cb7f4e7e7a9d1747dcee6f3baa19ed9afa9e5694fd2fb32b61ed", size = 6724495, upload_time = "2025-12-06T17:33:16.624Z" }, - { url = "https://files.pythonhosted.org/packages/6e/93/a1157ebcc650960b264542b547f7914d87a42ff0cc15a7584b29d5807e6b/psycopg_binary-3.3.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:59d0163c4617a2c577cb34afbed93d7a45b8c8364e54b2bd2020ff25d5f5f860", size = 4964979, upload_time = "2025-12-06T17:33:20.179Z" }, - { url = "https://files.pythonhosted.org/packages/0e/27/65939ba6798f9c5be4a5d9cd2061ebaf0851798525c6811d347821c8132d/psycopg_binary-3.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e750afe74e6c17b2c7046d2c3e3173b5a3f6080084671c8aa327215323df155b", size = 4493648, upload_time = "2025-12-06T17:33:23.464Z" }, - { url = "https://files.pythonhosted.org/packages/8a/c4/5e9e4b9b1c1e27026e43387b0ba4aaf3537c7806465dd3f1d5bde631752a/psycopg_binary-3.3.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f26f113013c4dcfbfe9ced57b5bad2035dda1a7349f64bf726021968f9bccad3", size = 4173392, upload_time = "2025-12-06T17:33:26.88Z" }, - { url = "https://files.pythonhosted.org/packages/c6/81/cf43fb76993190cee9af1cbcfe28afb47b1928bdf45a252001017e5af26e/psycopg_binary-3.3.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:8309ee4569dced5e81df5aa2dcd48c7340c8dee603a66430f042dfbd2878edca", size = 3909241, upload_time = "2025-12-06T17:33:30.092Z" }, - { url = "https://files.pythonhosted.org/packages/9d/20/c6377a0d17434674351627489deca493ea0b137c522b99c81d3a106372c8/psycopg_binary-3.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c6464150e25b68ae3cb04c4e57496ea11ebfaae4d98126aea2f4702dd43e3c12", size = 4219746, upload_time = "2025-12-06T17:33:33.097Z" }, - { url = "https://files.pythonhosted.org/packages/25/32/716c57b28eefe02a57a4c9d5bf956849597f5ea476c7010397199e56cfde/psycopg_binary-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:716a586f99bbe4f710dc58b40069fcb33c7627e95cc6fc936f73c9235e07f9cf", size = 3537494, upload_time = "2025-12-06T17:33:35.82Z" }, - { url = "https://files.pythonhosted.org/packages/14/73/7ca7cb22b9ac7393fb5de7d28ca97e8347c375c8498b3bff2c99c1f38038/psycopg_binary-3.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fc5a189e89cbfff174588665bb18d28d2d0428366cc9dae5864afcaa2e57380b", size = 4579068, upload_time = "2025-12-06T17:33:39.303Z" }, - { url = "https://files.pythonhosted.org/packages/f5/42/0cf38ff6c62c792fc5b55398a853a77663210ebd51ed6f0c4a05b06f95a6/psycopg_binary-3.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:083c2e182be433f290dc2c516fd72b9b47054fcd305cce791e0a50d9e93e06f2", size = 4657520, upload_time = "2025-12-06T17:33:42.536Z" }, - { url = "https://files.pythonhosted.org/packages/3b/60/df846bc84cbf2231e01b0fff48b09841fe486fa177665e50f4995b1bfa44/psycopg_binary-3.3.2-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:ac230e3643d1c436a2dfb59ca84357dfc6862c9f372fc5dbd96bafecae581f9f", size = 5452086, upload_time = "2025-12-06T17:33:46.54Z" }, - { url = "https://files.pythonhosted.org/packages/ab/85/30c846a00db86b1b53fd5bfd4b4edfbd0c00de8f2c75dd105610bd7568fc/psycopg_binary-3.3.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d8c899a540f6c7585cee53cddc929dd4d2db90fd828e37f5d4017b63acbc1a5d", size = 5131125, upload_time = "2025-12-06T17:33:50.413Z" }, - { url = "https://files.pythonhosted.org/packages/6d/15/9968732013373f36f8a2a3fb76104dffc8efd9db78709caa5ae1a87b1f80/psycopg_binary-3.3.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50ff10ab8c0abdb5a5451b9315538865b50ba64c907742a1385fdf5f5772b73e", size = 6722914, upload_time = "2025-12-06T17:33:54.544Z" }, - { url = "https://files.pythonhosted.org/packages/b2/ba/29e361fe02143ac5ff5a1ca3e45697344cfbebe2eaf8c4e7eec164bff9a0/psycopg_binary-3.3.2-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:23d2594af848c1fd3d874a9364bef50730124e72df7bb145a20cb45e728c50ed", size = 4966081, upload_time = "2025-12-06T17:33:58.477Z" }, - { url = "https://files.pythonhosted.org/packages/99/45/1be90c8f1a1a237046903e91202fb06708745c179f220b361d6333ed7641/psycopg_binary-3.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ea4fe6b4ead3bbbe27244ea224fcd1f53cb119afc38b71a2f3ce570149a03e30", size = 4493332, upload_time = "2025-12-06T17:34:02.011Z" }, - { url = "https://files.pythonhosted.org/packages/2e/b5/bbdc07d5f0a5e90c617abd624368182aa131485e18038b2c6c85fc054aed/psycopg_binary-3.3.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:742ce48cde825b8e52fb1a658253d6d1ff66d152081cbc76aa45e2986534858d", size = 4170781, upload_time = "2025-12-06T17:34:05.298Z" }, - { url = "https://files.pythonhosted.org/packages/d1/2a/0d45e4f4da2bd78c3237ffa03475ef3751f69a81919c54a6e610eb1a7c96/psycopg_binary-3.3.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:e22bf6b54df994aff37ab52695d635f1ef73155e781eee1f5fa75bc08b58c8da", size = 3910544, upload_time = "2025-12-06T17:34:08.251Z" }, - { url = "https://files.pythonhosted.org/packages/3a/62/a8e0f092f4dbef9a94b032fb71e214cf0a375010692fbe7493a766339e47/psycopg_binary-3.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8db9034cde3bcdafc66980f0130813f5c5d19e74b3f2a19fb3cfbc25ad113121", size = 4220070, upload_time = "2025-12-06T17:34:11.392Z" }, - { url = "https://files.pythonhosted.org/packages/09/e6/5fc8d8aff8afa114bb4a94a0341b9309311e8bf3ab32d816032f8b984d4e/psycopg_binary-3.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:df65174c7cf6b05ea273ce955927d3270b3a6e27b0b12762b009ce6082b8d3fc", size = 3540922, upload_time = "2025-12-06T17:34:14.88Z" }, + { url = "https://files.pythonhosted.org/packages/25/d7/edfb0d9e56081246fd88490f99b1bafebd3588480cca601a4de0c41a3e08/psycopg_binary-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0768c5f32934bb52a5df098317eca9bdcf411de627c5dca2ee57662b64b54b41", size = 4597785, upload-time = "2025-12-06T17:31:44.867Z" }, + { url = "https://files.pythonhosted.org/packages/71/45/8458201d9573dd851263a05cefddd4bfd31e8b3c6434b3e38d62aea9f15a/psycopg_binary-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:09b3014013f05cd89828640d3a1db5f829cc24ad8fa81b6e42b2c04685a0c9d4", size = 4664440, upload-time = "2025-12-06T17:31:49.1Z" }, + { url = "https://files.pythonhosted.org/packages/d1/33/484260d87456cfe88dc219c1919026f11949b9d1de8a6371ddbe027d4d60/psycopg_binary-3.3.2-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:3789d452a9d17a841c7f4f97bbcba51a21f957ea35641a4c98507520e6b6a068", size = 5478355, upload-time = "2025-12-06T17:31:52.657Z" }, + { url = "https://files.pythonhosted.org/packages/34/b2/18c91630c30c83f534c2bfa75fb533293fc9c3ab31bb7f2bf1cd9579c53b/psycopg_binary-3.3.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:44e89938d36acc4495735af70a886d206a5bfdc80258f95b69b52f68b2968d9e", size = 5152398, upload-time = "2025-12-06T17:31:56.092Z" }, + { url = "https://files.pythonhosted.org/packages/c0/14/7c705e1934107196d9dca2040cf34bce2ca26de62520e43073d2673052d4/psycopg_binary-3.3.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90ed9da805e52985b0202aed4f352842c907c6b4fc6c7c109c6e646c32e2f43b", size = 6748982, upload-time = "2025-12-06T17:32:00.611Z" }, + { url = "https://files.pythonhosted.org/packages/56/18/80197c47798926f79e563af02a71d1abecab88cf45ddf8dc960700598da7/psycopg_binary-3.3.2-cp310-cp310-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c3a9ccdfee4ae59cf9bf1822777e763bc097ed208f4901e21537fca1070e1391", size = 4991214, upload-time = "2025-12-06T17:32:03.897Z" }, + { url = "https://files.pythonhosted.org/packages/7e/2e/e88e2f678f5d1a968d87e57b30915061c1157e916b8aaa9b0b78bca95e25/psycopg_binary-3.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:de9173f8cc0efd88ac2a89b3b6c287a9a0011cdc2f53b2a12c28d6fd55f9f81c", size = 4517421, upload-time = "2025-12-06T17:32:07.287Z" }, + { url = "https://files.pythonhosted.org/packages/80/9e/d56813b24370723bcd62bf73871aee4d5fca0536f3476c4c4d5b037e3c7f/psycopg_binary-3.3.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:0611f4822674f3269e507a307236efb62ae5a828fcfc923ac85fe22ca19fd7c8", size = 4206124, upload-time = "2025-12-06T17:32:10.374Z" }, + { url = "https://files.pythonhosted.org/packages/91/81/5a11a898969edf0ee43d0613a6dfd689a0aa12d418c69e148a8ff153fbc7/psycopg_binary-3.3.2-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:522b79c7db547767ca923e441c19b97a2157f2f494272a119c854bba4804e186", size = 3937067, upload-time = "2025-12-06T17:32:13.852Z" }, + { url = "https://files.pythonhosted.org/packages/a1/33/a6180ff1e747a0395876d985e8e295c9d7cbe956a2d66f165e7c67cffe55/psycopg_binary-3.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1ea41c0229f3f5a3844ad0857a83a9f869aa7b840448fa0c200e6bcf85d33d19", size = 4243731, upload-time = "2025-12-06T17:32:16.803Z" }, + { url = "https://files.pythonhosted.org/packages/e9/5b/9c1b6fbc900d5b525946ed9a477865c5016a5306080c0557248bb04f1a5b/psycopg_binary-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:8ea05b499278790a8fa0ff9854ab0de2542aca02d661ddff94e830df971ff640", size = 3546403, upload-time = "2025-12-06T17:32:19.621Z" }, + { url = "https://files.pythonhosted.org/packages/57/d9/49640360fc090d27afc4655021544aa71d5393ebae124ffa53a04474b493/psycopg_binary-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:94503b79f7da0b65c80d0dbb2f81dd78b300319ec2435d5e6dcf9622160bc2fa", size = 4597890, upload-time = "2025-12-06T17:32:23.087Z" }, + { url = "https://files.pythonhosted.org/packages/85/cf/99634bbccc8af0dd86df4bce705eea5540d06bb7f5ab3067446ae9ffdae4/psycopg_binary-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07a5f030e0902ec3e27d0506ceb01238c0aecbc73ecd7fa0ee55f86134600b5b", size = 4664396, upload-time = "2025-12-06T17:32:26.421Z" }, + { url = "https://files.pythonhosted.org/packages/40/db/6035dff6d5c6dfca3a4ab0d2ac62ede623646e327e9f99e21e0cf08976c6/psycopg_binary-3.3.2-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e09d0d93d35c134704a2cb2b15f81ffc8174fd602f3e08f7b1a3d8896156cf0", size = 5478743, upload-time = "2025-12-06T17:32:29.901Z" }, + { url = "https://files.pythonhosted.org/packages/03/0f/fc06bbc8e87f09458d2ce04a59cd90565e54e8efca33e0802daee6d2b0e6/psycopg_binary-3.3.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:649c1d33bedda431e0c1df646985fbbeb9274afa964e1aef4be053c0f23a2924", size = 5151820, upload-time = "2025-12-06T17:32:33.562Z" }, + { url = "https://files.pythonhosted.org/packages/86/ab/bcc0397c96a0ad29463e33ed03285826e0fabc43595c195f419d9291ee70/psycopg_binary-3.3.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c5774272f754605059521ff037a86e680342e3847498b0aa86b0f3560c70963c", size = 6747711, upload-time = "2025-12-06T17:32:38.074Z" }, + { url = "https://files.pythonhosted.org/packages/96/eb/7450bc75c31d5be5f7a6d02d26beef6989a4ca6f5efdec65eea6cf612d0e/psycopg_binary-3.3.2-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d391b70c9cc23f6e1142729772a011f364199d2c5ddc0d596f5f43316fbf982d", size = 4991626, upload-time = "2025-12-06T17:32:41.373Z" }, + { url = "https://files.pythonhosted.org/packages/dc/85/65f14453804c82a7fba31cd1a984b90349c0f327b809102c4b99115c0930/psycopg_binary-3.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f3f601f32244a677c7b029ec39412db2772ad04a28bc2cbb4b1f0931ed0ffad7", size = 4516760, upload-time = "2025-12-06T17:32:44.921Z" }, + { url = "https://files.pythonhosted.org/packages/24/8c/3105f00a91d73d9a443932f95156eae8159d5d9cb68a9d2cf512710d484f/psycopg_binary-3.3.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:0ae60e910531cfcc364a8f615a7941cac89efeb3f0fffe0c4824a6d11461eef7", size = 4204028, upload-time = "2025-12-06T17:32:48.355Z" }, + { url = "https://files.pythonhosted.org/packages/1e/dd/74f64a383342ef7c22d1eb2768ed86411c7f877ed2580cd33c17f436fe3c/psycopg_binary-3.3.2-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7c43a773dd1a481dbb2fe64576aa303d80f328cce0eae5e3e4894947c41d1da7", size = 3935780, upload-time = "2025-12-06T17:32:51.347Z" }, + { url = "https://files.pythonhosted.org/packages/85/30/f3f207d1c292949a26cdea6727c9c325b4ee41e04bf2736a4afbe45eb61f/psycopg_binary-3.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5a327327f1188b3fbecac41bf1973a60b86b2eb237db10dc945bd3dc97ec39e4", size = 4243239, upload-time = "2025-12-06T17:32:54.924Z" }, + { url = "https://files.pythonhosted.org/packages/b3/08/8f1b5d6231338bf7bc46f635c4d4965facec52e1c9a7952ca8a70cb57dc0/psycopg_binary-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:136c43f185244893a527540307167f5d3ef4e08786508afe45d6f146228f5aa9", size = 3548102, upload-time = "2025-12-06T17:32:57.944Z" }, + { url = "https://files.pythonhosted.org/packages/4e/1e/8614b01c549dd7e385dacdcd83fe194f6b3acb255a53cc67154ee6bf00e7/psycopg_binary-3.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a9387ab615f929e71ef0f4a8a51e986fa06236ccfa9f3ec98a88f60fbf230634", size = 4579832, upload-time = "2025-12-06T17:33:01.388Z" }, + { url = "https://files.pythonhosted.org/packages/26/97/0bb093570fae2f4454d42c1ae6000f15934391867402f680254e4a7def54/psycopg_binary-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3ff7489df5e06c12d1829544eaec64970fe27fe300f7cf04c8495fe682064688", size = 4658786, upload-time = "2025-12-06T17:33:05.022Z" }, + { url = "https://files.pythonhosted.org/packages/61/20/1d9383e3f2038826900a14137b0647d755f67551aab316e1021443105ed5/psycopg_binary-3.3.2-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:9742580ecc8e1ac45164e98d32ca6df90da509c2d3ff26be245d94c430f92db4", size = 5454896, upload-time = "2025-12-06T17:33:09.023Z" }, + { url = "https://files.pythonhosted.org/packages/a6/62/513c80ad8bbb545e364f7737bf2492d34a4c05eef4f7b5c16428dc42260d/psycopg_binary-3.3.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d45acedcaa58619355f18e0f42af542fcad3fd84ace4b8355d3a5dea23318578", size = 5132731, upload-time = "2025-12-06T17:33:12.519Z" }, + { url = "https://files.pythonhosted.org/packages/f3/28/ddf5f5905f088024bccb19857949467407c693389a14feb527d6171d8215/psycopg_binary-3.3.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d88f32ff8c47cb7f4e7e7a9d1747dcee6f3baa19ed9afa9e5694fd2fb32b61ed", size = 6724495, upload-time = "2025-12-06T17:33:16.624Z" }, + { url = "https://files.pythonhosted.org/packages/6e/93/a1157ebcc650960b264542b547f7914d87a42ff0cc15a7584b29d5807e6b/psycopg_binary-3.3.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:59d0163c4617a2c577cb34afbed93d7a45b8c8364e54b2bd2020ff25d5f5f860", size = 4964979, upload-time = "2025-12-06T17:33:20.179Z" }, + { url = "https://files.pythonhosted.org/packages/0e/27/65939ba6798f9c5be4a5d9cd2061ebaf0851798525c6811d347821c8132d/psycopg_binary-3.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e750afe74e6c17b2c7046d2c3e3173b5a3f6080084671c8aa327215323df155b", size = 4493648, upload-time = "2025-12-06T17:33:23.464Z" }, + { url = "https://files.pythonhosted.org/packages/8a/c4/5e9e4b9b1c1e27026e43387b0ba4aaf3537c7806465dd3f1d5bde631752a/psycopg_binary-3.3.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f26f113013c4dcfbfe9ced57b5bad2035dda1a7349f64bf726021968f9bccad3", size = 4173392, upload-time = "2025-12-06T17:33:26.88Z" }, + { url = "https://files.pythonhosted.org/packages/c6/81/cf43fb76993190cee9af1cbcfe28afb47b1928bdf45a252001017e5af26e/psycopg_binary-3.3.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:8309ee4569dced5e81df5aa2dcd48c7340c8dee603a66430f042dfbd2878edca", size = 3909241, upload-time = "2025-12-06T17:33:30.092Z" }, + { url = "https://files.pythonhosted.org/packages/9d/20/c6377a0d17434674351627489deca493ea0b137c522b99c81d3a106372c8/psycopg_binary-3.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c6464150e25b68ae3cb04c4e57496ea11ebfaae4d98126aea2f4702dd43e3c12", size = 4219746, upload-time = "2025-12-06T17:33:33.097Z" }, + { url = "https://files.pythonhosted.org/packages/25/32/716c57b28eefe02a57a4c9d5bf956849597f5ea476c7010397199e56cfde/psycopg_binary-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:716a586f99bbe4f710dc58b40069fcb33c7627e95cc6fc936f73c9235e07f9cf", size = 3537494, upload-time = "2025-12-06T17:33:35.82Z" }, + { url = "https://files.pythonhosted.org/packages/14/73/7ca7cb22b9ac7393fb5de7d28ca97e8347c375c8498b3bff2c99c1f38038/psycopg_binary-3.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fc5a189e89cbfff174588665bb18d28d2d0428366cc9dae5864afcaa2e57380b", size = 4579068, upload-time = "2025-12-06T17:33:39.303Z" }, + { url = "https://files.pythonhosted.org/packages/f5/42/0cf38ff6c62c792fc5b55398a853a77663210ebd51ed6f0c4a05b06f95a6/psycopg_binary-3.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:083c2e182be433f290dc2c516fd72b9b47054fcd305cce791e0a50d9e93e06f2", size = 4657520, upload-time = "2025-12-06T17:33:42.536Z" }, + { url = "https://files.pythonhosted.org/packages/3b/60/df846bc84cbf2231e01b0fff48b09841fe486fa177665e50f4995b1bfa44/psycopg_binary-3.3.2-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:ac230e3643d1c436a2dfb59ca84357dfc6862c9f372fc5dbd96bafecae581f9f", size = 5452086, upload-time = "2025-12-06T17:33:46.54Z" }, + { url = "https://files.pythonhosted.org/packages/ab/85/30c846a00db86b1b53fd5bfd4b4edfbd0c00de8f2c75dd105610bd7568fc/psycopg_binary-3.3.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d8c899a540f6c7585cee53cddc929dd4d2db90fd828e37f5d4017b63acbc1a5d", size = 5131125, upload-time = "2025-12-06T17:33:50.413Z" }, + { url = "https://files.pythonhosted.org/packages/6d/15/9968732013373f36f8a2a3fb76104dffc8efd9db78709caa5ae1a87b1f80/psycopg_binary-3.3.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50ff10ab8c0abdb5a5451b9315538865b50ba64c907742a1385fdf5f5772b73e", size = 6722914, upload-time = "2025-12-06T17:33:54.544Z" }, + { url = "https://files.pythonhosted.org/packages/b2/ba/29e361fe02143ac5ff5a1ca3e45697344cfbebe2eaf8c4e7eec164bff9a0/psycopg_binary-3.3.2-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:23d2594af848c1fd3d874a9364bef50730124e72df7bb145a20cb45e728c50ed", size = 4966081, upload-time = "2025-12-06T17:33:58.477Z" }, + { url = "https://files.pythonhosted.org/packages/99/45/1be90c8f1a1a237046903e91202fb06708745c179f220b361d6333ed7641/psycopg_binary-3.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ea4fe6b4ead3bbbe27244ea224fcd1f53cb119afc38b71a2f3ce570149a03e30", size = 4493332, upload-time = "2025-12-06T17:34:02.011Z" }, + { url = "https://files.pythonhosted.org/packages/2e/b5/bbdc07d5f0a5e90c617abd624368182aa131485e18038b2c6c85fc054aed/psycopg_binary-3.3.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:742ce48cde825b8e52fb1a658253d6d1ff66d152081cbc76aa45e2986534858d", size = 4170781, upload-time = "2025-12-06T17:34:05.298Z" }, + { url = "https://files.pythonhosted.org/packages/d1/2a/0d45e4f4da2bd78c3237ffa03475ef3751f69a81919c54a6e610eb1a7c96/psycopg_binary-3.3.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:e22bf6b54df994aff37ab52695d635f1ef73155e781eee1f5fa75bc08b58c8da", size = 3910544, upload-time = "2025-12-06T17:34:08.251Z" }, + { url = "https://files.pythonhosted.org/packages/3a/62/a8e0f092f4dbef9a94b032fb71e214cf0a375010692fbe7493a766339e47/psycopg_binary-3.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8db9034cde3bcdafc66980f0130813f5c5d19e74b3f2a19fb3cfbc25ad113121", size = 4220070, upload-time = "2025-12-06T17:34:11.392Z" }, + { url = "https://files.pythonhosted.org/packages/09/e6/5fc8d8aff8afa114bb4a94a0341b9309311e8bf3ab32d816032f8b984d4e/psycopg_binary-3.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:df65174c7cf6b05ea273ce955927d3270b3a6e27b0b12762b009ce6082b8d3fc", size = 3540922, upload-time = "2025-12-06T17:34:14.88Z" }, ] [[package]] name = "pycparser" version = "3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload_time = "2026-01-21T14:26:51.89Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload_time = "2026-01-21T14:26:50.693Z" }, + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, ] [[package]] @@ -3231,9 +3281,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49", size = 821591, upload_time = "2025-11-26T15:11:46.471Z" } +sdist = { url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49", size = 821591, upload-time = "2025-11-26T15:11:46.471Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580, upload_time = "2025-11-26T15:11:44.605Z" }, + { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580, upload-time = "2025-11-26T15:11:44.605Z" }, ] [[package]] @@ -3243,87 +3293,87 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952, upload_time = "2025-11-04T13:43:49.098Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/90/32c9941e728d564b411d574d8ee0cf09b12ec978cb22b294995bae5549a5/pydantic_core-2.41.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:77b63866ca88d804225eaa4af3e664c5faf3568cea95360d21f4725ab6e07146", size = 2107298, upload_time = "2025-11-04T13:39:04.116Z" }, - { url = "https://files.pythonhosted.org/packages/fb/a8/61c96a77fe28993d9a6fb0f4127e05430a267b235a124545d79fea46dd65/pydantic_core-2.41.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dfa8a0c812ac681395907e71e1274819dec685fec28273a28905df579ef137e2", size = 1901475, upload_time = "2025-11-04T13:39:06.055Z" }, - { url = "https://files.pythonhosted.org/packages/5d/b6/338abf60225acc18cdc08b4faef592d0310923d19a87fba1faf05af5346e/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5921a4d3ca3aee735d9fd163808f5e8dd6c6972101e4adbda9a4667908849b97", size = 1918815, upload_time = "2025-11-04T13:39:10.41Z" }, - { url = "https://files.pythonhosted.org/packages/d1/1c/2ed0433e682983d8e8cba9c8d8ef274d4791ec6a6f24c58935b90e780e0a/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e25c479382d26a2a41b7ebea1043564a937db462816ea07afa8a44c0866d52f9", size = 2065567, upload_time = "2025-11-04T13:39:12.244Z" }, - { url = "https://files.pythonhosted.org/packages/b3/24/cf84974ee7d6eae06b9e63289b7b8f6549d416b5c199ca2d7ce13bbcf619/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f547144f2966e1e16ae626d8ce72b4cfa0caedc7fa28052001c94fb2fcaa1c52", size = 2230442, upload_time = "2025-11-04T13:39:13.962Z" }, - { url = "https://files.pythonhosted.org/packages/fd/21/4e287865504b3edc0136c89c9c09431be326168b1eb7841911cbc877a995/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f52298fbd394f9ed112d56f3d11aabd0d5bd27beb3084cc3d8ad069483b8941", size = 2350956, upload_time = "2025-11-04T13:39:15.889Z" }, - { url = "https://files.pythonhosted.org/packages/a8/76/7727ef2ffa4b62fcab916686a68a0426b9b790139720e1934e8ba797e238/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:100baa204bb412b74fe285fb0f3a385256dad1d1879f0a5cb1499ed2e83d132a", size = 2068253, upload_time = "2025-11-04T13:39:17.403Z" }, - { url = "https://files.pythonhosted.org/packages/d5/8c/a4abfc79604bcb4c748e18975c44f94f756f08fb04218d5cb87eb0d3a63e/pydantic_core-2.41.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:05a2c8852530ad2812cb7914dc61a1125dc4e06252ee98e5638a12da6cc6fb6c", size = 2177050, upload_time = "2025-11-04T13:39:19.351Z" }, - { url = "https://files.pythonhosted.org/packages/67/b1/de2e9a9a79b480f9cb0b6e8b6ba4c50b18d4e89852426364c66aa82bb7b3/pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:29452c56df2ed968d18d7e21f4ab0ac55e71dc59524872f6fc57dcf4a3249ed2", size = 2147178, upload_time = "2025-11-04T13:39:21Z" }, - { url = "https://files.pythonhosted.org/packages/16/c1/dfb33f837a47b20417500efaa0378adc6635b3c79e8369ff7a03c494b4ac/pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:d5160812ea7a8a2ffbe233d8da666880cad0cbaf5d4de74ae15c313213d62556", size = 2341833, upload_time = "2025-11-04T13:39:22.606Z" }, - { url = "https://files.pythonhosted.org/packages/47/36/00f398642a0f4b815a9a558c4f1dca1b4020a7d49562807d7bc9ff279a6c/pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:df3959765b553b9440adfd3c795617c352154e497a4eaf3752555cfb5da8fc49", size = 2321156, upload_time = "2025-11-04T13:39:25.843Z" }, - { url = "https://files.pythonhosted.org/packages/7e/70/cad3acd89fde2010807354d978725ae111ddf6d0ea46d1ea1775b5c1bd0c/pydantic_core-2.41.5-cp310-cp310-win32.whl", hash = "sha256:1f8d33a7f4d5a7889e60dc39856d76d09333d8a6ed0f5f1190635cbec70ec4ba", size = 1989378, upload_time = "2025-11-04T13:39:27.92Z" }, - { url = "https://files.pythonhosted.org/packages/76/92/d338652464c6c367e5608e4488201702cd1cbb0f33f7b6a85a60fe5f3720/pydantic_core-2.41.5-cp310-cp310-win_amd64.whl", hash = "sha256:62de39db01b8d593e45871af2af9e497295db8d73b085f6bfd0b18c83c70a8f9", size = 2013622, upload_time = "2025-11-04T13:39:29.848Z" }, - { url = "https://files.pythonhosted.org/packages/e8/72/74a989dd9f2084b3d9530b0915fdda64ac48831c30dbf7c72a41a5232db8/pydantic_core-2.41.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a3a52f6156e73e7ccb0f8cced536adccb7042be67cb45f9562e12b319c119da6", size = 2105873, upload_time = "2025-11-04T13:39:31.373Z" }, - { url = "https://files.pythonhosted.org/packages/12/44/37e403fd9455708b3b942949e1d7febc02167662bf1a7da5b78ee1ea2842/pydantic_core-2.41.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7f3bf998340c6d4b0c9a2f02d6a400e51f123b59565d74dc60d252ce888c260b", size = 1899826, upload_time = "2025-11-04T13:39:32.897Z" }, - { url = "https://files.pythonhosted.org/packages/33/7f/1d5cab3ccf44c1935a359d51a8a2a9e1a654b744b5e7f80d41b88d501eec/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:378bec5c66998815d224c9ca994f1e14c0c21cb95d2f52b6021cc0b2a58f2a5a", size = 1917869, upload_time = "2025-11-04T13:39:34.469Z" }, - { url = "https://files.pythonhosted.org/packages/6e/6a/30d94a9674a7fe4f4744052ed6c5e083424510be1e93da5bc47569d11810/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7b576130c69225432866fe2f4a469a85a54ade141d96fd396dffcf607b558f8", size = 2063890, upload_time = "2025-11-04T13:39:36.053Z" }, - { url = "https://files.pythonhosted.org/packages/50/be/76e5d46203fcb2750e542f32e6c371ffa9b8ad17364cf94bb0818dbfb50c/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6cb58b9c66f7e4179a2d5e0f849c48eff5c1fca560994d6eb6543abf955a149e", size = 2229740, upload_time = "2025-11-04T13:39:37.753Z" }, - { url = "https://files.pythonhosted.org/packages/d3/ee/fed784df0144793489f87db310a6bbf8118d7b630ed07aa180d6067e653a/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88942d3a3dff3afc8288c21e565e476fc278902ae4d6d134f1eeda118cc830b1", size = 2350021, upload_time = "2025-11-04T13:39:40.94Z" }, - { url = "https://files.pythonhosted.org/packages/c8/be/8fed28dd0a180dca19e72c233cbf58efa36df055e5b9d90d64fd1740b828/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f31d95a179f8d64d90f6831d71fa93290893a33148d890ba15de25642c5d075b", size = 2066378, upload_time = "2025-11-04T13:39:42.523Z" }, - { url = "https://files.pythonhosted.org/packages/b0/3b/698cf8ae1d536a010e05121b4958b1257f0b5522085e335360e53a6b1c8b/pydantic_core-2.41.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1df3d34aced70add6f867a8cf413e299177e0c22660cc767218373d0779487b", size = 2175761, upload_time = "2025-11-04T13:39:44.553Z" }, - { url = "https://files.pythonhosted.org/packages/b8/ba/15d537423939553116dea94ce02f9c31be0fa9d0b806d427e0308ec17145/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4009935984bd36bd2c774e13f9a09563ce8de4abaa7226f5108262fa3e637284", size = 2146303, upload_time = "2025-11-04T13:39:46.238Z" }, - { url = "https://files.pythonhosted.org/packages/58/7f/0de669bf37d206723795f9c90c82966726a2ab06c336deba4735b55af431/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:34a64bc3441dc1213096a20fe27e8e128bd3ff89921706e83c0b1ac971276594", size = 2340355, upload_time = "2025-11-04T13:39:48.002Z" }, - { url = "https://files.pythonhosted.org/packages/e5/de/e7482c435b83d7e3c3ee5ee4451f6e8973cff0eb6007d2872ce6383f6398/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c9e19dd6e28fdcaa5a1de679aec4141f691023916427ef9bae8584f9c2fb3b0e", size = 2319875, upload_time = "2025-11-04T13:39:49.705Z" }, - { url = "https://files.pythonhosted.org/packages/fe/e6/8c9e81bb6dd7560e33b9053351c29f30c8194b72f2d6932888581f503482/pydantic_core-2.41.5-cp311-cp311-win32.whl", hash = "sha256:2c010c6ded393148374c0f6f0bf89d206bf3217f201faa0635dcd56bd1520f6b", size = 1987549, upload_time = "2025-11-04T13:39:51.842Z" }, - { url = "https://files.pythonhosted.org/packages/11/66/f14d1d978ea94d1bc21fc98fcf570f9542fe55bfcc40269d4e1a21c19bf7/pydantic_core-2.41.5-cp311-cp311-win_amd64.whl", hash = "sha256:76ee27c6e9c7f16f47db7a94157112a2f3a00e958bc626e2f4ee8bec5c328fbe", size = 2011305, upload_time = "2025-11-04T13:39:53.485Z" }, - { url = "https://files.pythonhosted.org/packages/56/d8/0e271434e8efd03186c5386671328154ee349ff0354d83c74f5caaf096ed/pydantic_core-2.41.5-cp311-cp311-win_arm64.whl", hash = "sha256:4bc36bbc0b7584de96561184ad7f012478987882ebf9f9c389b23f432ea3d90f", size = 1972902, upload_time = "2025-11-04T13:39:56.488Z" }, - { url = "https://files.pythonhosted.org/packages/5f/5d/5f6c63eebb5afee93bcaae4ce9a898f3373ca23df3ccaef086d0233a35a7/pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7", size = 2110990, upload_time = "2025-11-04T13:39:58.079Z" }, - { url = "https://files.pythonhosted.org/packages/aa/32/9c2e8ccb57c01111e0fd091f236c7b371c1bccea0fa85247ac55b1e2b6b6/pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0", size = 1896003, upload_time = "2025-11-04T13:39:59.956Z" }, - { url = "https://files.pythonhosted.org/packages/68/b8/a01b53cb0e59139fbc9e4fda3e9724ede8de279097179be4ff31f1abb65a/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69", size = 1919200, upload_time = "2025-11-04T13:40:02.241Z" }, - { url = "https://files.pythonhosted.org/packages/38/de/8c36b5198a29bdaade07b5985e80a233a5ac27137846f3bc2d3b40a47360/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75", size = 2052578, upload_time = "2025-11-04T13:40:04.401Z" }, - { url = "https://files.pythonhosted.org/packages/00/b5/0e8e4b5b081eac6cb3dbb7e60a65907549a1ce035a724368c330112adfdd/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05", size = 2208504, upload_time = "2025-11-04T13:40:06.072Z" }, - { url = "https://files.pythonhosted.org/packages/77/56/87a61aad59c7c5b9dc8caad5a41a5545cba3810c3e828708b3d7404f6cef/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc", size = 2335816, upload_time = "2025-11-04T13:40:07.835Z" }, - { url = "https://files.pythonhosted.org/packages/0d/76/941cc9f73529988688a665a5c0ecff1112b3d95ab48f81db5f7606f522d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c", size = 2075366, upload_time = "2025-11-04T13:40:09.804Z" }, - { url = "https://files.pythonhosted.org/packages/d3/43/ebef01f69baa07a482844faaa0a591bad1ef129253ffd0cdaa9d8a7f72d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5", size = 2171698, upload_time = "2025-11-04T13:40:12.004Z" }, - { url = "https://files.pythonhosted.org/packages/b1/87/41f3202e4193e3bacfc2c065fab7706ebe81af46a83d3e27605029c1f5a6/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c", size = 2132603, upload_time = "2025-11-04T13:40:13.868Z" }, - { url = "https://files.pythonhosted.org/packages/49/7d/4c00df99cb12070b6bccdef4a195255e6020a550d572768d92cc54dba91a/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294", size = 2329591, upload_time = "2025-11-04T13:40:15.672Z" }, - { url = "https://files.pythonhosted.org/packages/cc/6a/ebf4b1d65d458f3cda6a7335d141305dfa19bdc61140a884d165a8a1bbc7/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1", size = 2319068, upload_time = "2025-11-04T13:40:17.532Z" }, - { url = "https://files.pythonhosted.org/packages/49/3b/774f2b5cd4192d5ab75870ce4381fd89cf218af999515baf07e7206753f0/pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d", size = 1985908, upload_time = "2025-11-04T13:40:19.309Z" }, - { url = "https://files.pythonhosted.org/packages/86/45/00173a033c801cacf67c190fef088789394feaf88a98a7035b0e40d53dc9/pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815", size = 2020145, upload_time = "2025-11-04T13:40:21.548Z" }, - { url = "https://files.pythonhosted.org/packages/f9/22/91fbc821fa6d261b376a3f73809f907cec5ca6025642c463d3488aad22fb/pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3", size = 1976179, upload_time = "2025-11-04T13:40:23.393Z" }, - { url = "https://files.pythonhosted.org/packages/87/06/8806241ff1f70d9939f9af039c6c35f2360cf16e93c2ca76f184e76b1564/pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9", size = 2120403, upload_time = "2025-11-04T13:40:25.248Z" }, - { url = "https://files.pythonhosted.org/packages/94/02/abfa0e0bda67faa65fef1c84971c7e45928e108fe24333c81f3bfe35d5f5/pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34", size = 1896206, upload_time = "2025-11-04T13:40:27.099Z" }, - { url = "https://files.pythonhosted.org/packages/15/df/a4c740c0943e93e6500f9eb23f4ca7ec9bf71b19e608ae5b579678c8d02f/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0", size = 1919307, upload_time = "2025-11-04T13:40:29.806Z" }, - { url = "https://files.pythonhosted.org/packages/9a/e3/6324802931ae1d123528988e0e86587c2072ac2e5394b4bc2bc34b61ff6e/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33", size = 2063258, upload_time = "2025-11-04T13:40:33.544Z" }, - { url = "https://files.pythonhosted.org/packages/c9/d4/2230d7151d4957dd79c3044ea26346c148c98fbf0ee6ebd41056f2d62ab5/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e", size = 2214917, upload_time = "2025-11-04T13:40:35.479Z" }, - { url = "https://files.pythonhosted.org/packages/e6/9f/eaac5df17a3672fef0081b6c1bb0b82b33ee89aa5cec0d7b05f52fd4a1fa/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2", size = 2332186, upload_time = "2025-11-04T13:40:37.436Z" }, - { url = "https://files.pythonhosted.org/packages/cf/4e/35a80cae583a37cf15604b44240e45c05e04e86f9cfd766623149297e971/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586", size = 2073164, upload_time = "2025-11-04T13:40:40.289Z" }, - { url = "https://files.pythonhosted.org/packages/bf/e3/f6e262673c6140dd3305d144d032f7bd5f7497d3871c1428521f19f9efa2/pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d", size = 2179146, upload_time = "2025-11-04T13:40:42.809Z" }, - { url = "https://files.pythonhosted.org/packages/75/c7/20bd7fc05f0c6ea2056a4565c6f36f8968c0924f19b7d97bbfea55780e73/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740", size = 2137788, upload_time = "2025-11-04T13:40:44.752Z" }, - { url = "https://files.pythonhosted.org/packages/3a/8d/34318ef985c45196e004bc46c6eab2eda437e744c124ef0dbe1ff2c9d06b/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e", size = 2340133, upload_time = "2025-11-04T13:40:46.66Z" }, - { url = "https://files.pythonhosted.org/packages/9c/59/013626bf8c78a5a5d9350d12e7697d3d4de951a75565496abd40ccd46bee/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858", size = 2324852, upload_time = "2025-11-04T13:40:48.575Z" }, - { url = "https://files.pythonhosted.org/packages/1a/d9/c248c103856f807ef70c18a4f986693a46a8ffe1602e5d361485da502d20/pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36", size = 1994679, upload_time = "2025-11-04T13:40:50.619Z" }, - { url = "https://files.pythonhosted.org/packages/9e/8b/341991b158ddab181cff136acd2552c9f35bd30380422a639c0671e99a91/pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11", size = 2019766, upload_time = "2025-11-04T13:40:52.631Z" }, - { url = "https://files.pythonhosted.org/packages/73/7d/f2f9db34af103bea3e09735bb40b021788a5e834c81eedb541991badf8f5/pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd", size = 1981005, upload_time = "2025-11-04T13:40:54.734Z" }, - { url = "https://files.pythonhosted.org/packages/11/72/90fda5ee3b97e51c494938a4a44c3a35a9c96c19bba12372fb9c634d6f57/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:b96d5f26b05d03cc60f11a7761a5ded1741da411e7fe0909e27a5e6a0cb7b034", size = 2115441, upload_time = "2025-11-04T13:42:39.557Z" }, - { url = "https://files.pythonhosted.org/packages/1f/53/8942f884fa33f50794f119012dc6a1a02ac43a56407adaac20463df8e98f/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:634e8609e89ceecea15e2d61bc9ac3718caaaa71963717bf3c8f38bfde64242c", size = 1930291, upload_time = "2025-11-04T13:42:42.169Z" }, - { url = "https://files.pythonhosted.org/packages/79/c8/ecb9ed9cd942bce09fc888ee960b52654fbdbede4ba6c2d6e0d3b1d8b49c/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e8740d7503eb008aa2df04d3b9735f845d43ae845e6dcd2be0b55a2da43cd2", size = 1948632, upload_time = "2025-11-04T13:42:44.564Z" }, - { url = "https://files.pythonhosted.org/packages/2e/1b/687711069de7efa6af934e74f601e2a4307365e8fdc404703afc453eab26/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f15489ba13d61f670dcc96772e733aad1a6f9c429cc27574c6cdaed82d0146ad", size = 2138905, upload_time = "2025-11-04T13:42:47.156Z" }, - { url = "https://files.pythonhosted.org/packages/09/32/59b0c7e63e277fa7911c2fc70ccfb45ce4b98991e7ef37110663437005af/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd", size = 2110495, upload_time = "2025-11-04T13:42:49.689Z" }, - { url = "https://files.pythonhosted.org/packages/aa/81/05e400037eaf55ad400bcd318c05bb345b57e708887f07ddb2d20e3f0e98/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc", size = 1915388, upload_time = "2025-11-04T13:42:52.215Z" }, - { url = "https://files.pythonhosted.org/packages/6e/0d/e3549b2399f71d56476b77dbf3cf8937cec5cd70536bdc0e374a421d0599/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56", size = 1942879, upload_time = "2025-11-04T13:42:56.483Z" }, - { url = "https://files.pythonhosted.org/packages/f7/07/34573da085946b6a313d7c42f82f16e8920bfd730665de2d11c0c37a74b5/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b", size = 2139017, upload_time = "2025-11-04T13:42:59.471Z" }, - { url = "https://files.pythonhosted.org/packages/e6/b0/1a2aa41e3b5a4ba11420aba2d091b2d17959c8d1519ece3627c371951e73/pydantic_core-2.41.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b5819cd790dbf0c5eb9f82c73c16b39a65dd6dd4d1439dcdea7816ec9adddab8", size = 2103351, upload_time = "2025-11-04T13:43:02.058Z" }, - { url = "https://files.pythonhosted.org/packages/a4/ee/31b1f0020baaf6d091c87900ae05c6aeae101fa4e188e1613c80e4f1ea31/pydantic_core-2.41.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5a4e67afbc95fa5c34cf27d9089bca7fcab4e51e57278d710320a70b956d1b9a", size = 1925363, upload_time = "2025-11-04T13:43:05.159Z" }, - { url = "https://files.pythonhosted.org/packages/e1/89/ab8e86208467e467a80deaca4e434adac37b10a9d134cd2f99b28a01e483/pydantic_core-2.41.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ece5c59f0ce7d001e017643d8d24da587ea1f74f6993467d85ae8a5ef9d4f42b", size = 2135615, upload_time = "2025-11-04T13:43:08.116Z" }, - { url = "https://files.pythonhosted.org/packages/99/0a/99a53d06dd0348b2008f2f30884b34719c323f16c3be4e6cc1203b74a91d/pydantic_core-2.41.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:16f80f7abe3351f8ea6858914ddc8c77e02578544a0ebc15b4c2e1a0e813b0b2", size = 2175369, upload_time = "2025-11-04T13:43:12.49Z" }, - { url = "https://files.pythonhosted.org/packages/6d/94/30ca3b73c6d485b9bb0bc66e611cff4a7138ff9736b7e66bcf0852151636/pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:33cb885e759a705b426baada1fe68cbb0a2e68e34c5d0d0289a364cf01709093", size = 2144218, upload_time = "2025-11-04T13:43:15.431Z" }, - { url = "https://files.pythonhosted.org/packages/87/57/31b4f8e12680b739a91f472b5671294236b82586889ef764b5fbc6669238/pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:c8d8b4eb992936023be7dee581270af5c6e0697a8559895f527f5b7105ecd36a", size = 2329951, upload_time = "2025-11-04T13:43:18.062Z" }, - { url = "https://files.pythonhosted.org/packages/7d/73/3c2c8edef77b8f7310e6fb012dbc4b8551386ed575b9eb6fb2506e28a7eb/pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:242a206cd0318f95cd21bdacff3fcc3aab23e79bba5cac3db5a841c9ef9c6963", size = 2318428, upload_time = "2025-11-04T13:43:20.679Z" }, - { url = "https://files.pythonhosted.org/packages/2f/02/8559b1f26ee0d502c74f9cca5c0d2fd97e967e083e006bbbb4e97f3a043a/pydantic_core-2.41.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d3a978c4f57a597908b7e697229d996d77a6d3c94901e9edee593adada95ce1a", size = 2147009, upload_time = "2025-11-04T13:43:23.286Z" }, - { url = "https://files.pythonhosted.org/packages/5f/9b/1b3f0e9f9305839d7e84912f9e8bfbd191ed1b1ef48083609f0dabde978c/pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2379fa7ed44ddecb5bfe4e48577d752db9fc10be00a6b7446e9663ba143de26", size = 2101980, upload_time = "2025-11-04T13:43:25.97Z" }, - { url = "https://files.pythonhosted.org/packages/a4/ed/d71fefcb4263df0da6a85b5d8a7508360f2f2e9b3bf5814be9c8bccdccc1/pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:266fb4cbf5e3cbd0b53669a6d1b039c45e3ce651fd5442eff4d07c2cc8d66808", size = 1923865, upload_time = "2025-11-04T13:43:28.763Z" }, - { url = "https://files.pythonhosted.org/packages/ce/3a/626b38db460d675f873e4444b4bb030453bbe7b4ba55df821d026a0493c4/pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58133647260ea01e4d0500089a8c4f07bd7aa6ce109682b1426394988d8aaacc", size = 2134256, upload_time = "2025-11-04T13:43:31.71Z" }, - { url = "https://files.pythonhosted.org/packages/83/d9/8412d7f06f616bbc053d30cb4e5f76786af3221462ad5eee1f202021eb4e/pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:287dad91cfb551c363dc62899a80e9e14da1f0e2b6ebde82c806612ca2a13ef1", size = 2174762, upload_time = "2025-11-04T13:43:34.744Z" }, - { url = "https://files.pythonhosted.org/packages/55/4c/162d906b8e3ba3a99354e20faa1b49a85206c47de97a639510a0e673f5da/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:03b77d184b9eb40240ae9fd676ca364ce1085f203e1b1256f8ab9984dca80a84", size = 2143141, upload_time = "2025-11-04T13:43:37.701Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f2/f11dd73284122713f5f89fc940f370d035fa8e1e078d446b3313955157fe/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:a668ce24de96165bb239160b3d854943128f4334822900534f2fe947930e5770", size = 2330317, upload_time = "2025-11-04T13:43:40.406Z" }, - { url = "https://files.pythonhosted.org/packages/88/9d/b06ca6acfe4abb296110fb1273a4d848a0bfb2ff65f3ee92127b3244e16b/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f14f8f046c14563f8eb3f45f499cc658ab8d10072961e07225e507adb700e93f", size = 2316992, upload_time = "2025-11-04T13:43:43.602Z" }, - { url = "https://files.pythonhosted.org/packages/36/c7/cfc8e811f061c841d7990b0201912c3556bfeb99cdcb7ed24adc8d6f8704/pydantic_core-2.41.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:56121965f7a4dc965bff783d70b907ddf3d57f6eba29b6d2e5dabfaf07799c51", size = 2145302, upload_time = "2025-11-04T13:43:46.64Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952, upload-time = "2025-11-04T13:43:49.098Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/90/32c9941e728d564b411d574d8ee0cf09b12ec978cb22b294995bae5549a5/pydantic_core-2.41.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:77b63866ca88d804225eaa4af3e664c5faf3568cea95360d21f4725ab6e07146", size = 2107298, upload-time = "2025-11-04T13:39:04.116Z" }, + { url = "https://files.pythonhosted.org/packages/fb/a8/61c96a77fe28993d9a6fb0f4127e05430a267b235a124545d79fea46dd65/pydantic_core-2.41.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dfa8a0c812ac681395907e71e1274819dec685fec28273a28905df579ef137e2", size = 1901475, upload-time = "2025-11-04T13:39:06.055Z" }, + { url = "https://files.pythonhosted.org/packages/5d/b6/338abf60225acc18cdc08b4faef592d0310923d19a87fba1faf05af5346e/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5921a4d3ca3aee735d9fd163808f5e8dd6c6972101e4adbda9a4667908849b97", size = 1918815, upload-time = "2025-11-04T13:39:10.41Z" }, + { url = "https://files.pythonhosted.org/packages/d1/1c/2ed0433e682983d8e8cba9c8d8ef274d4791ec6a6f24c58935b90e780e0a/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e25c479382d26a2a41b7ebea1043564a937db462816ea07afa8a44c0866d52f9", size = 2065567, upload-time = "2025-11-04T13:39:12.244Z" }, + { url = "https://files.pythonhosted.org/packages/b3/24/cf84974ee7d6eae06b9e63289b7b8f6549d416b5c199ca2d7ce13bbcf619/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f547144f2966e1e16ae626d8ce72b4cfa0caedc7fa28052001c94fb2fcaa1c52", size = 2230442, upload-time = "2025-11-04T13:39:13.962Z" }, + { url = "https://files.pythonhosted.org/packages/fd/21/4e287865504b3edc0136c89c9c09431be326168b1eb7841911cbc877a995/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f52298fbd394f9ed112d56f3d11aabd0d5bd27beb3084cc3d8ad069483b8941", size = 2350956, upload-time = "2025-11-04T13:39:15.889Z" }, + { url = "https://files.pythonhosted.org/packages/a8/76/7727ef2ffa4b62fcab916686a68a0426b9b790139720e1934e8ba797e238/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:100baa204bb412b74fe285fb0f3a385256dad1d1879f0a5cb1499ed2e83d132a", size = 2068253, upload-time = "2025-11-04T13:39:17.403Z" }, + { url = "https://files.pythonhosted.org/packages/d5/8c/a4abfc79604bcb4c748e18975c44f94f756f08fb04218d5cb87eb0d3a63e/pydantic_core-2.41.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:05a2c8852530ad2812cb7914dc61a1125dc4e06252ee98e5638a12da6cc6fb6c", size = 2177050, upload-time = "2025-11-04T13:39:19.351Z" }, + { url = "https://files.pythonhosted.org/packages/67/b1/de2e9a9a79b480f9cb0b6e8b6ba4c50b18d4e89852426364c66aa82bb7b3/pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:29452c56df2ed968d18d7e21f4ab0ac55e71dc59524872f6fc57dcf4a3249ed2", size = 2147178, upload-time = "2025-11-04T13:39:21Z" }, + { url = "https://files.pythonhosted.org/packages/16/c1/dfb33f837a47b20417500efaa0378adc6635b3c79e8369ff7a03c494b4ac/pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:d5160812ea7a8a2ffbe233d8da666880cad0cbaf5d4de74ae15c313213d62556", size = 2341833, upload-time = "2025-11-04T13:39:22.606Z" }, + { url = "https://files.pythonhosted.org/packages/47/36/00f398642a0f4b815a9a558c4f1dca1b4020a7d49562807d7bc9ff279a6c/pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:df3959765b553b9440adfd3c795617c352154e497a4eaf3752555cfb5da8fc49", size = 2321156, upload-time = "2025-11-04T13:39:25.843Z" }, + { url = "https://files.pythonhosted.org/packages/7e/70/cad3acd89fde2010807354d978725ae111ddf6d0ea46d1ea1775b5c1bd0c/pydantic_core-2.41.5-cp310-cp310-win32.whl", hash = "sha256:1f8d33a7f4d5a7889e60dc39856d76d09333d8a6ed0f5f1190635cbec70ec4ba", size = 1989378, upload-time = "2025-11-04T13:39:27.92Z" }, + { url = "https://files.pythonhosted.org/packages/76/92/d338652464c6c367e5608e4488201702cd1cbb0f33f7b6a85a60fe5f3720/pydantic_core-2.41.5-cp310-cp310-win_amd64.whl", hash = "sha256:62de39db01b8d593e45871af2af9e497295db8d73b085f6bfd0b18c83c70a8f9", size = 2013622, upload-time = "2025-11-04T13:39:29.848Z" }, + { url = "https://files.pythonhosted.org/packages/e8/72/74a989dd9f2084b3d9530b0915fdda64ac48831c30dbf7c72a41a5232db8/pydantic_core-2.41.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a3a52f6156e73e7ccb0f8cced536adccb7042be67cb45f9562e12b319c119da6", size = 2105873, upload-time = "2025-11-04T13:39:31.373Z" }, + { url = "https://files.pythonhosted.org/packages/12/44/37e403fd9455708b3b942949e1d7febc02167662bf1a7da5b78ee1ea2842/pydantic_core-2.41.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7f3bf998340c6d4b0c9a2f02d6a400e51f123b59565d74dc60d252ce888c260b", size = 1899826, upload-time = "2025-11-04T13:39:32.897Z" }, + { url = "https://files.pythonhosted.org/packages/33/7f/1d5cab3ccf44c1935a359d51a8a2a9e1a654b744b5e7f80d41b88d501eec/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:378bec5c66998815d224c9ca994f1e14c0c21cb95d2f52b6021cc0b2a58f2a5a", size = 1917869, upload-time = "2025-11-04T13:39:34.469Z" }, + { url = "https://files.pythonhosted.org/packages/6e/6a/30d94a9674a7fe4f4744052ed6c5e083424510be1e93da5bc47569d11810/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7b576130c69225432866fe2f4a469a85a54ade141d96fd396dffcf607b558f8", size = 2063890, upload-time = "2025-11-04T13:39:36.053Z" }, + { url = "https://files.pythonhosted.org/packages/50/be/76e5d46203fcb2750e542f32e6c371ffa9b8ad17364cf94bb0818dbfb50c/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6cb58b9c66f7e4179a2d5e0f849c48eff5c1fca560994d6eb6543abf955a149e", size = 2229740, upload-time = "2025-11-04T13:39:37.753Z" }, + { url = "https://files.pythonhosted.org/packages/d3/ee/fed784df0144793489f87db310a6bbf8118d7b630ed07aa180d6067e653a/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88942d3a3dff3afc8288c21e565e476fc278902ae4d6d134f1eeda118cc830b1", size = 2350021, upload-time = "2025-11-04T13:39:40.94Z" }, + { url = "https://files.pythonhosted.org/packages/c8/be/8fed28dd0a180dca19e72c233cbf58efa36df055e5b9d90d64fd1740b828/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f31d95a179f8d64d90f6831d71fa93290893a33148d890ba15de25642c5d075b", size = 2066378, upload-time = "2025-11-04T13:39:42.523Z" }, + { url = "https://files.pythonhosted.org/packages/b0/3b/698cf8ae1d536a010e05121b4958b1257f0b5522085e335360e53a6b1c8b/pydantic_core-2.41.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1df3d34aced70add6f867a8cf413e299177e0c22660cc767218373d0779487b", size = 2175761, upload-time = "2025-11-04T13:39:44.553Z" }, + { url = "https://files.pythonhosted.org/packages/b8/ba/15d537423939553116dea94ce02f9c31be0fa9d0b806d427e0308ec17145/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4009935984bd36bd2c774e13f9a09563ce8de4abaa7226f5108262fa3e637284", size = 2146303, upload-time = "2025-11-04T13:39:46.238Z" }, + { url = "https://files.pythonhosted.org/packages/58/7f/0de669bf37d206723795f9c90c82966726a2ab06c336deba4735b55af431/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:34a64bc3441dc1213096a20fe27e8e128bd3ff89921706e83c0b1ac971276594", size = 2340355, upload-time = "2025-11-04T13:39:48.002Z" }, + { url = "https://files.pythonhosted.org/packages/e5/de/e7482c435b83d7e3c3ee5ee4451f6e8973cff0eb6007d2872ce6383f6398/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c9e19dd6e28fdcaa5a1de679aec4141f691023916427ef9bae8584f9c2fb3b0e", size = 2319875, upload-time = "2025-11-04T13:39:49.705Z" }, + { url = "https://files.pythonhosted.org/packages/fe/e6/8c9e81bb6dd7560e33b9053351c29f30c8194b72f2d6932888581f503482/pydantic_core-2.41.5-cp311-cp311-win32.whl", hash = "sha256:2c010c6ded393148374c0f6f0bf89d206bf3217f201faa0635dcd56bd1520f6b", size = 1987549, upload-time = "2025-11-04T13:39:51.842Z" }, + { url = "https://files.pythonhosted.org/packages/11/66/f14d1d978ea94d1bc21fc98fcf570f9542fe55bfcc40269d4e1a21c19bf7/pydantic_core-2.41.5-cp311-cp311-win_amd64.whl", hash = "sha256:76ee27c6e9c7f16f47db7a94157112a2f3a00e958bc626e2f4ee8bec5c328fbe", size = 2011305, upload-time = "2025-11-04T13:39:53.485Z" }, + { url = "https://files.pythonhosted.org/packages/56/d8/0e271434e8efd03186c5386671328154ee349ff0354d83c74f5caaf096ed/pydantic_core-2.41.5-cp311-cp311-win_arm64.whl", hash = "sha256:4bc36bbc0b7584de96561184ad7f012478987882ebf9f9c389b23f432ea3d90f", size = 1972902, upload-time = "2025-11-04T13:39:56.488Z" }, + { url = "https://files.pythonhosted.org/packages/5f/5d/5f6c63eebb5afee93bcaae4ce9a898f3373ca23df3ccaef086d0233a35a7/pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7", size = 2110990, upload-time = "2025-11-04T13:39:58.079Z" }, + { url = "https://files.pythonhosted.org/packages/aa/32/9c2e8ccb57c01111e0fd091f236c7b371c1bccea0fa85247ac55b1e2b6b6/pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0", size = 1896003, upload-time = "2025-11-04T13:39:59.956Z" }, + { url = "https://files.pythonhosted.org/packages/68/b8/a01b53cb0e59139fbc9e4fda3e9724ede8de279097179be4ff31f1abb65a/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69", size = 1919200, upload-time = "2025-11-04T13:40:02.241Z" }, + { url = "https://files.pythonhosted.org/packages/38/de/8c36b5198a29bdaade07b5985e80a233a5ac27137846f3bc2d3b40a47360/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75", size = 2052578, upload-time = "2025-11-04T13:40:04.401Z" }, + { url = "https://files.pythonhosted.org/packages/00/b5/0e8e4b5b081eac6cb3dbb7e60a65907549a1ce035a724368c330112adfdd/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05", size = 2208504, upload-time = "2025-11-04T13:40:06.072Z" }, + { url = "https://files.pythonhosted.org/packages/77/56/87a61aad59c7c5b9dc8caad5a41a5545cba3810c3e828708b3d7404f6cef/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc", size = 2335816, upload-time = "2025-11-04T13:40:07.835Z" }, + { url = "https://files.pythonhosted.org/packages/0d/76/941cc9f73529988688a665a5c0ecff1112b3d95ab48f81db5f7606f522d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c", size = 2075366, upload-time = "2025-11-04T13:40:09.804Z" }, + { url = "https://files.pythonhosted.org/packages/d3/43/ebef01f69baa07a482844faaa0a591bad1ef129253ffd0cdaa9d8a7f72d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5", size = 2171698, upload-time = "2025-11-04T13:40:12.004Z" }, + { url = "https://files.pythonhosted.org/packages/b1/87/41f3202e4193e3bacfc2c065fab7706ebe81af46a83d3e27605029c1f5a6/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c", size = 2132603, upload-time = "2025-11-04T13:40:13.868Z" }, + { url = "https://files.pythonhosted.org/packages/49/7d/4c00df99cb12070b6bccdef4a195255e6020a550d572768d92cc54dba91a/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294", size = 2329591, upload-time = "2025-11-04T13:40:15.672Z" }, + { url = "https://files.pythonhosted.org/packages/cc/6a/ebf4b1d65d458f3cda6a7335d141305dfa19bdc61140a884d165a8a1bbc7/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1", size = 2319068, upload-time = "2025-11-04T13:40:17.532Z" }, + { url = "https://files.pythonhosted.org/packages/49/3b/774f2b5cd4192d5ab75870ce4381fd89cf218af999515baf07e7206753f0/pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d", size = 1985908, upload-time = "2025-11-04T13:40:19.309Z" }, + { url = "https://files.pythonhosted.org/packages/86/45/00173a033c801cacf67c190fef088789394feaf88a98a7035b0e40d53dc9/pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815", size = 2020145, upload-time = "2025-11-04T13:40:21.548Z" }, + { url = "https://files.pythonhosted.org/packages/f9/22/91fbc821fa6d261b376a3f73809f907cec5ca6025642c463d3488aad22fb/pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3", size = 1976179, upload-time = "2025-11-04T13:40:23.393Z" }, + { url = "https://files.pythonhosted.org/packages/87/06/8806241ff1f70d9939f9af039c6c35f2360cf16e93c2ca76f184e76b1564/pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9", size = 2120403, upload-time = "2025-11-04T13:40:25.248Z" }, + { url = "https://files.pythonhosted.org/packages/94/02/abfa0e0bda67faa65fef1c84971c7e45928e108fe24333c81f3bfe35d5f5/pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34", size = 1896206, upload-time = "2025-11-04T13:40:27.099Z" }, + { url = "https://files.pythonhosted.org/packages/15/df/a4c740c0943e93e6500f9eb23f4ca7ec9bf71b19e608ae5b579678c8d02f/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0", size = 1919307, upload-time = "2025-11-04T13:40:29.806Z" }, + { url = "https://files.pythonhosted.org/packages/9a/e3/6324802931ae1d123528988e0e86587c2072ac2e5394b4bc2bc34b61ff6e/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33", size = 2063258, upload-time = "2025-11-04T13:40:33.544Z" }, + { url = "https://files.pythonhosted.org/packages/c9/d4/2230d7151d4957dd79c3044ea26346c148c98fbf0ee6ebd41056f2d62ab5/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e", size = 2214917, upload-time = "2025-11-04T13:40:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/e6/9f/eaac5df17a3672fef0081b6c1bb0b82b33ee89aa5cec0d7b05f52fd4a1fa/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2", size = 2332186, upload-time = "2025-11-04T13:40:37.436Z" }, + { url = "https://files.pythonhosted.org/packages/cf/4e/35a80cae583a37cf15604b44240e45c05e04e86f9cfd766623149297e971/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586", size = 2073164, upload-time = "2025-11-04T13:40:40.289Z" }, + { url = "https://files.pythonhosted.org/packages/bf/e3/f6e262673c6140dd3305d144d032f7bd5f7497d3871c1428521f19f9efa2/pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d", size = 2179146, upload-time = "2025-11-04T13:40:42.809Z" }, + { url = "https://files.pythonhosted.org/packages/75/c7/20bd7fc05f0c6ea2056a4565c6f36f8968c0924f19b7d97bbfea55780e73/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740", size = 2137788, upload-time = "2025-11-04T13:40:44.752Z" }, + { url = "https://files.pythonhosted.org/packages/3a/8d/34318ef985c45196e004bc46c6eab2eda437e744c124ef0dbe1ff2c9d06b/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e", size = 2340133, upload-time = "2025-11-04T13:40:46.66Z" }, + { url = "https://files.pythonhosted.org/packages/9c/59/013626bf8c78a5a5d9350d12e7697d3d4de951a75565496abd40ccd46bee/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858", size = 2324852, upload-time = "2025-11-04T13:40:48.575Z" }, + { url = "https://files.pythonhosted.org/packages/1a/d9/c248c103856f807ef70c18a4f986693a46a8ffe1602e5d361485da502d20/pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36", size = 1994679, upload-time = "2025-11-04T13:40:50.619Z" }, + { url = "https://files.pythonhosted.org/packages/9e/8b/341991b158ddab181cff136acd2552c9f35bd30380422a639c0671e99a91/pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11", size = 2019766, upload-time = "2025-11-04T13:40:52.631Z" }, + { url = "https://files.pythonhosted.org/packages/73/7d/f2f9db34af103bea3e09735bb40b021788a5e834c81eedb541991badf8f5/pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd", size = 1981005, upload-time = "2025-11-04T13:40:54.734Z" }, + { url = "https://files.pythonhosted.org/packages/11/72/90fda5ee3b97e51c494938a4a44c3a35a9c96c19bba12372fb9c634d6f57/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:b96d5f26b05d03cc60f11a7761a5ded1741da411e7fe0909e27a5e6a0cb7b034", size = 2115441, upload-time = "2025-11-04T13:42:39.557Z" }, + { url = "https://files.pythonhosted.org/packages/1f/53/8942f884fa33f50794f119012dc6a1a02ac43a56407adaac20463df8e98f/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:634e8609e89ceecea15e2d61bc9ac3718caaaa71963717bf3c8f38bfde64242c", size = 1930291, upload-time = "2025-11-04T13:42:42.169Z" }, + { url = "https://files.pythonhosted.org/packages/79/c8/ecb9ed9cd942bce09fc888ee960b52654fbdbede4ba6c2d6e0d3b1d8b49c/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e8740d7503eb008aa2df04d3b9735f845d43ae845e6dcd2be0b55a2da43cd2", size = 1948632, upload-time = "2025-11-04T13:42:44.564Z" }, + { url = "https://files.pythonhosted.org/packages/2e/1b/687711069de7efa6af934e74f601e2a4307365e8fdc404703afc453eab26/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f15489ba13d61f670dcc96772e733aad1a6f9c429cc27574c6cdaed82d0146ad", size = 2138905, upload-time = "2025-11-04T13:42:47.156Z" }, + { url = "https://files.pythonhosted.org/packages/09/32/59b0c7e63e277fa7911c2fc70ccfb45ce4b98991e7ef37110663437005af/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd", size = 2110495, upload-time = "2025-11-04T13:42:49.689Z" }, + { url = "https://files.pythonhosted.org/packages/aa/81/05e400037eaf55ad400bcd318c05bb345b57e708887f07ddb2d20e3f0e98/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc", size = 1915388, upload-time = "2025-11-04T13:42:52.215Z" }, + { url = "https://files.pythonhosted.org/packages/6e/0d/e3549b2399f71d56476b77dbf3cf8937cec5cd70536bdc0e374a421d0599/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56", size = 1942879, upload-time = "2025-11-04T13:42:56.483Z" }, + { url = "https://files.pythonhosted.org/packages/f7/07/34573da085946b6a313d7c42f82f16e8920bfd730665de2d11c0c37a74b5/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b", size = 2139017, upload-time = "2025-11-04T13:42:59.471Z" }, + { url = "https://files.pythonhosted.org/packages/e6/b0/1a2aa41e3b5a4ba11420aba2d091b2d17959c8d1519ece3627c371951e73/pydantic_core-2.41.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b5819cd790dbf0c5eb9f82c73c16b39a65dd6dd4d1439dcdea7816ec9adddab8", size = 2103351, upload-time = "2025-11-04T13:43:02.058Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ee/31b1f0020baaf6d091c87900ae05c6aeae101fa4e188e1613c80e4f1ea31/pydantic_core-2.41.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5a4e67afbc95fa5c34cf27d9089bca7fcab4e51e57278d710320a70b956d1b9a", size = 1925363, upload-time = "2025-11-04T13:43:05.159Z" }, + { url = "https://files.pythonhosted.org/packages/e1/89/ab8e86208467e467a80deaca4e434adac37b10a9d134cd2f99b28a01e483/pydantic_core-2.41.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ece5c59f0ce7d001e017643d8d24da587ea1f74f6993467d85ae8a5ef9d4f42b", size = 2135615, upload-time = "2025-11-04T13:43:08.116Z" }, + { url = "https://files.pythonhosted.org/packages/99/0a/99a53d06dd0348b2008f2f30884b34719c323f16c3be4e6cc1203b74a91d/pydantic_core-2.41.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:16f80f7abe3351f8ea6858914ddc8c77e02578544a0ebc15b4c2e1a0e813b0b2", size = 2175369, upload-time = "2025-11-04T13:43:12.49Z" }, + { url = "https://files.pythonhosted.org/packages/6d/94/30ca3b73c6d485b9bb0bc66e611cff4a7138ff9736b7e66bcf0852151636/pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:33cb885e759a705b426baada1fe68cbb0a2e68e34c5d0d0289a364cf01709093", size = 2144218, upload-time = "2025-11-04T13:43:15.431Z" }, + { url = "https://files.pythonhosted.org/packages/87/57/31b4f8e12680b739a91f472b5671294236b82586889ef764b5fbc6669238/pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:c8d8b4eb992936023be7dee581270af5c6e0697a8559895f527f5b7105ecd36a", size = 2329951, upload-time = "2025-11-04T13:43:18.062Z" }, + { url = "https://files.pythonhosted.org/packages/7d/73/3c2c8edef77b8f7310e6fb012dbc4b8551386ed575b9eb6fb2506e28a7eb/pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:242a206cd0318f95cd21bdacff3fcc3aab23e79bba5cac3db5a841c9ef9c6963", size = 2318428, upload-time = "2025-11-04T13:43:20.679Z" }, + { url = "https://files.pythonhosted.org/packages/2f/02/8559b1f26ee0d502c74f9cca5c0d2fd97e967e083e006bbbb4e97f3a043a/pydantic_core-2.41.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d3a978c4f57a597908b7e697229d996d77a6d3c94901e9edee593adada95ce1a", size = 2147009, upload-time = "2025-11-04T13:43:23.286Z" }, + { url = "https://files.pythonhosted.org/packages/5f/9b/1b3f0e9f9305839d7e84912f9e8bfbd191ed1b1ef48083609f0dabde978c/pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2379fa7ed44ddecb5bfe4e48577d752db9fc10be00a6b7446e9663ba143de26", size = 2101980, upload-time = "2025-11-04T13:43:25.97Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ed/d71fefcb4263df0da6a85b5d8a7508360f2f2e9b3bf5814be9c8bccdccc1/pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:266fb4cbf5e3cbd0b53669a6d1b039c45e3ce651fd5442eff4d07c2cc8d66808", size = 1923865, upload-time = "2025-11-04T13:43:28.763Z" }, + { url = "https://files.pythonhosted.org/packages/ce/3a/626b38db460d675f873e4444b4bb030453bbe7b4ba55df821d026a0493c4/pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58133647260ea01e4d0500089a8c4f07bd7aa6ce109682b1426394988d8aaacc", size = 2134256, upload-time = "2025-11-04T13:43:31.71Z" }, + { url = "https://files.pythonhosted.org/packages/83/d9/8412d7f06f616bbc053d30cb4e5f76786af3221462ad5eee1f202021eb4e/pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:287dad91cfb551c363dc62899a80e9e14da1f0e2b6ebde82c806612ca2a13ef1", size = 2174762, upload-time = "2025-11-04T13:43:34.744Z" }, + { url = "https://files.pythonhosted.org/packages/55/4c/162d906b8e3ba3a99354e20faa1b49a85206c47de97a639510a0e673f5da/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:03b77d184b9eb40240ae9fd676ca364ce1085f203e1b1256f8ab9984dca80a84", size = 2143141, upload-time = "2025-11-04T13:43:37.701Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f2/f11dd73284122713f5f89fc940f370d035fa8e1e078d446b3313955157fe/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:a668ce24de96165bb239160b3d854943128f4334822900534f2fe947930e5770", size = 2330317, upload-time = "2025-11-04T13:43:40.406Z" }, + { url = "https://files.pythonhosted.org/packages/88/9d/b06ca6acfe4abb296110fb1273a4d848a0bfb2ff65f3ee92127b3244e16b/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f14f8f046c14563f8eb3f45f499cc658ab8d10072961e07225e507adb700e93f", size = 2316992, upload-time = "2025-11-04T13:43:43.602Z" }, + { url = "https://files.pythonhosted.org/packages/36/c7/cfc8e811f061c841d7990b0201912c3556bfeb99cdcb7ed24adc8d6f8704/pydantic_core-2.41.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:56121965f7a4dc965bff783d70b907ddf3d57f6eba29b6d2e5dabfaf07799c51", size = 2145302, upload-time = "2025-11-04T13:43:46.64Z" }, ] [[package]] @@ -3335,9 +3385,9 @@ dependencies = [ { name = "python-dotenv" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/96/a1/ae859ffac5a3338a66b74c5e29e244fd3a3cc483c89feaf9f56c39898d75/pydantic_settings-2.13.0.tar.gz", hash = "sha256:95d875514610e8595672800a5c40b073e99e4aae467fa7c8f9c263061ea2e1fe", size = 222450, upload_time = "2026-02-15T12:11:23.476Z" } +sdist = { url = "https://files.pythonhosted.org/packages/96/a1/ae859ffac5a3338a66b74c5e29e244fd3a3cc483c89feaf9f56c39898d75/pydantic_settings-2.13.0.tar.gz", hash = "sha256:95d875514610e8595672800a5c40b073e99e4aae467fa7c8f9c263061ea2e1fe", size = 222450, upload-time = "2026-02-15T12:11:23.476Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b0/1a/dd1b9d7e627486cf8e7523d09b70010e05a4bc41414f4ae6ce184cf0afb6/pydantic_settings-2.13.0-py3-none-any.whl", hash = "sha256:d67b576fff39cd086b595441bf9c75d4193ca9c0ed643b90360694d0f1240246", size = 58429, upload_time = "2026-02-15T12:11:22.133Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1a/dd1b9d7e627486cf8e7523d09b70010e05a4bc41414f4ae6ce184cf0afb6/pydantic_settings-2.13.0-py3-none-any.whl", hash = "sha256:d67b576fff39cd086b595441bf9c75d4193ca9c0ed643b90360694d0f1240246", size = 58429, upload-time = "2026-02-15T12:11:22.133Z" }, ] [[package]] @@ -3347,27 +3397,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/75/c1/1c55272f49d761cec38ddb80be9817935b9c91ebd6a8988e10f532868d56/pydash-8.0.6.tar.gz", hash = "sha256:b2821547e9723f69cf3a986be4db64de41730be149b2641947ecd12e1e11025a", size = 164338, upload_time = "2026-01-17T16:42:56.576Z" } +sdist = { url = "https://files.pythonhosted.org/packages/75/c1/1c55272f49d761cec38ddb80be9817935b9c91ebd6a8988e10f532868d56/pydash-8.0.6.tar.gz", hash = "sha256:b2821547e9723f69cf3a986be4db64de41730be149b2641947ecd12e1e11025a", size = 164338, upload-time = "2026-01-17T16:42:56.576Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a5/b7/cc5e7974699db40014d58c7dd7c4ad4ffc244d36930dc9ec7d06ee67d7a9/pydash-8.0.6-py3-none-any.whl", hash = "sha256:ee70a81a5b292c007f28f03a4ee8e75c1f5d7576df5457b836ec7ab2839cc5d0", size = 101561, upload_time = "2026-01-17T16:42:55.448Z" }, + { url = "https://files.pythonhosted.org/packages/a5/b7/cc5e7974699db40014d58c7dd7c4ad4ffc244d36930dc9ec7d06ee67d7a9/pydash-8.0.6-py3-none-any.whl", hash = "sha256:ee70a81a5b292c007f28f03a4ee8e75c1f5d7576df5457b836ec7ab2839cc5d0", size = 101561, upload-time = "2026-01-17T16:42:55.448Z" }, ] [[package]] name = "pygments" version = "2.19.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload_time = "2025-06-21T13:39:12.283Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload_time = "2025-06-21T13:39:07.939Z" }, + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, ] [[package]] name = "pyjwt" version = "2.11.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5c/5a/b46fa56bf322901eee5b0454a34343cdbdae202cd421775a8ee4e42fd519/pyjwt-2.11.0.tar.gz", hash = "sha256:35f95c1f0fbe5d5ba6e43f00271c275f7a1a4db1dab27bf708073b75318ea623", size = 98019, upload_time = "2026-01-30T19:59:55.694Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/5a/b46fa56bf322901eee5b0454a34343cdbdae202cd421775a8ee4e42fd519/pyjwt-2.11.0.tar.gz", hash = "sha256:35f95c1f0fbe5d5ba6e43f00271c275f7a1a4db1dab27bf708073b75318ea623", size = 98019, upload-time = "2026-01-30T19:59:55.694Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6f/01/c26ce75ba460d5cd503da9e13b21a33804d38c2165dec7b716d06b13010c/pyjwt-2.11.0-py3-none-any.whl", hash = "sha256:94a6bde30eb5c8e04fee991062b534071fd1439ef58d2adc9ccb823e7bcd0469", size = 28224, upload_time = "2026-01-30T19:59:54.539Z" }, + { url = "https://files.pythonhosted.org/packages/6f/01/c26ce75ba460d5cd503da9e13b21a33804d38c2165dec7b716d06b13010c/pyjwt-2.11.0-py3-none-any.whl", hash = "sha256:94a6bde30eb5c8e04fee991062b534071fd1439ef58d2adc9ccb823e7bcd0469", size = 28224, upload-time = "2026-01-30T19:59:54.539Z" }, ] [[package]] @@ -3378,9 +3428,9 @@ dependencies = [ { name = "markdown" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9e/26/d1015444da4d952a1ca487a236b522eb979766f0295a0bd0c5fc089989a9/pymdown_extensions-10.21.3.tar.gz", hash = "sha256:72cfcf55f07aea0d4af2c4f11dd4e52466ddfb1bb819673146398e0bd3a77354", size = 854140, upload_time = "2026-05-13T12:57:32.267Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/26/d1015444da4d952a1ca487a236b522eb979766f0295a0bd0c5fc089989a9/pymdown_extensions-10.21.3.tar.gz", hash = "sha256:72cfcf55f07aea0d4af2c4f11dd4e52466ddfb1bb819673146398e0bd3a77354", size = 854140, upload-time = "2026-05-13T12:57:32.267Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/85/545a951eecc270fcd688288c600017e2050a1aacb56c711d208586d3e470/pymdown_extensions-10.21.3-py3-none-any.whl", hash = "sha256:d7a5d08014fc571e80ca21dd6f854e31f94c489800350564d55d15b3c41e76b6", size = 269002, upload_time = "2026-05-13T12:57:30.296Z" }, + { url = "https://files.pythonhosted.org/packages/7e/85/545a951eecc270fcd688288c600017e2050a1aacb56c711d208586d3e470/pymdown_extensions-10.21.3-py3-none-any.whl", hash = "sha256:d7a5d08014fc571e80ca21dd6f854e31f94c489800350564d55d15b3c41e76b6", size = 269002, upload-time = "2026-05-13T12:57:30.296Z" }, ] [[package]] @@ -3395,9 +3445,9 @@ dependencies = [ { name = "pluggy" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/80/1f/9d8e98e4133ffb16c90f3b405c43e38d3abb715bb5d7a63a5a684f7e46a3/pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280", size = 1357116, upload_time = "2023-12-31T12:00:18.035Z" } +sdist = { url = "https://files.pythonhosted.org/packages/80/1f/9d8e98e4133ffb16c90f3b405c43e38d3abb715bb5d7a63a5a684f7e46a3/pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280", size = 1357116, upload-time = "2023-12-31T12:00:18.035Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/51/ff/f6e8b8f39e08547faece4bd80f89d5a8de68a38b2d179cc1c4490ffa3286/pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8", size = 325287, upload_time = "2023-12-31T12:00:13.963Z" }, + { url = "https://files.pythonhosted.org/packages/51/ff/f6e8b8f39e08547faece4bd80f89d5a8de68a38b2d179cc1c4490ffa3286/pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8", size = 325287, upload-time = "2023-12-31T12:00:13.963Z" }, ] [[package]] @@ -3407,9 +3457,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/de/b4/0b378b7bf26a8ae161c3890c0b48a91a04106c5713ce81b4b080ea2f4f18/pytest_asyncio-0.23.8.tar.gz", hash = "sha256:759b10b33a6dc61cce40a8bd5205e302978bbbcc00e279a8b61d9a6a3c82e4d3", size = 46920, upload_time = "2024-07-17T17:39:34.617Z" } +sdist = { url = "https://files.pythonhosted.org/packages/de/b4/0b378b7bf26a8ae161c3890c0b48a91a04106c5713ce81b4b080ea2f4f18/pytest_asyncio-0.23.8.tar.gz", hash = "sha256:759b10b33a6dc61cce40a8bd5205e302978bbbcc00e279a8b61d9a6a3c82e4d3", size = 46920, upload-time = "2024-07-17T17:39:34.617Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/82/62e2d63639ecb0fbe8a7ee59ef0bc69a4669ec50f6d3459f74ad4e4189a2/pytest_asyncio-0.23.8-py3-none-any.whl", hash = "sha256:50265d892689a5faefb84df80819d1ecef566eb3549cf915dfb33569359d1ce2", size = 17663, upload_time = "2024-07-17T17:39:32.478Z" }, + { url = "https://files.pythonhosted.org/packages/ee/82/62e2d63639ecb0fbe8a7ee59ef0bc69a4669ec50f6d3459f74ad4e4189a2/pytest_asyncio-0.23.8-py3-none-any.whl", hash = "sha256:50265d892689a5faefb84df80819d1ecef566eb3549cf915dfb33569359d1ce2", size = 17663, upload-time = "2024-07-17T17:39:32.478Z" }, ] [[package]] @@ -3419,9 +3469,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload_time = "2024-03-01T18:36:20.211Z" } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload_time = "2024-03-01T18:36:18.57Z" }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] [[package]] @@ -3432,82 +3482,82 @@ dependencies = [ { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ae/e0/cc5a8653e9a24f6cf84768f05064aa8ed5a83dcefd5e2a043db14a1c5f44/python_discovery-1.3.0.tar.gz", hash = "sha256:d098f1e86be5d45fe4d14bf1029294aabbd332f4321179dec85e76cddce834b0", size = 63925, upload_time = "2026-05-05T14:38:39.769Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/e0/cc5a8653e9a24f6cf84768f05064aa8ed5a83dcefd5e2a043db14a1c5f44/python_discovery-1.3.0.tar.gz", hash = "sha256:d098f1e86be5d45fe4d14bf1029294aabbd332f4321179dec85e76cddce834b0", size = 63925, upload-time = "2026-05-05T14:38:39.769Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/30/d4/24d543ab8b8158b7f5a97113c831205f5c900c92c8762b1e7f44b7ea0405/python_discovery-1.3.0-py3-none-any.whl", hash = "sha256:441d9ced3dfce36e113beb35ca302c71c7ef06f3c0f9c227a0b9bb3bd49b9e9f", size = 33124, upload_time = "2026-05-05T14:38:38.539Z" }, + { url = "https://files.pythonhosted.org/packages/30/d4/24d543ab8b8158b7f5a97113c831205f5c900c92c8762b1e7f44b7ea0405/python_discovery-1.3.0-py3-none-any.whl", hash = "sha256:441d9ced3dfce36e113beb35ca302c71c7ef06f3c0f9c227a0b9bb3bd49b9e9f", size = 33124, upload-time = "2026-05-05T14:38:38.539Z" }, ] [[package]] name = "python-dotenv" version = "1.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f0/26/19cadc79a718c5edbec86fd4919a6b6d3f681039a2f6d66d14be94e75fb9/python_dotenv-1.2.1.tar.gz", hash = "sha256:42667e897e16ab0d66954af0e60a9caa94f0fd4ecf3aaf6d2d260eec1aa36ad6", size = 44221, upload_time = "2025-10-26T15:12:10.434Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/26/19cadc79a718c5edbec86fd4919a6b6d3f681039a2f6d66d14be94e75fb9/python_dotenv-1.2.1.tar.gz", hash = "sha256:42667e897e16ab0d66954af0e60a9caa94f0fd4ecf3aaf6d2d260eec1aa36ad6", size = 44221, upload-time = "2025-10-26T15:12:10.434Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl", hash = "sha256:b81ee9561e9ca4004139c6cbba3a238c32b03e4894671e181b671e8cb8425d61", size = 21230, upload_time = "2025-10-26T15:12:09.109Z" }, + { url = "https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl", hash = "sha256:b81ee9561e9ca4004139c6cbba3a238c32b03e4894671e181b671e8cb8425d61", size = 21230, upload-time = "2025-10-26T15:12:09.109Z" }, ] [[package]] name = "python-multipart" version = "0.0.22" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/01/979e98d542a70714b0cb2b6728ed0b7c46792b695e3eaec3e20711271ca3/python_multipart-0.0.22.tar.gz", hash = "sha256:7340bef99a7e0032613f56dc36027b959fd3b30a787ed62d310e951f7c3a3a58", size = 37612, upload_time = "2026-01-25T10:15:56.219Z" } +sdist = { url = "https://files.pythonhosted.org/packages/94/01/979e98d542a70714b0cb2b6728ed0b7c46792b695e3eaec3e20711271ca3/python_multipart-0.0.22.tar.gz", hash = "sha256:7340bef99a7e0032613f56dc36027b959fd3b30a787ed62d310e951f7c3a3a58", size = 37612, upload-time = "2026-01-25T10:15:56.219Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1b/d0/397f9626e711ff749a95d96b7af99b9c566a9bb5129b8e4c10fc4d100304/python_multipart-0.0.22-py3-none-any.whl", hash = "sha256:2b2cd894c83d21bf49d702499531c7bafd057d730c201782048f7945d82de155", size = 24579, upload_time = "2026-01-25T10:15:54.811Z" }, + { url = "https://files.pythonhosted.org/packages/1b/d0/397f9626e711ff749a95d96b7af99b9c566a9bb5129b8e4c10fc4d100304/python_multipart-0.0.22-py3-none-any.whl", hash = "sha256:2b2cd894c83d21bf49d702499531c7bafd057d730c201782048f7945d82de155", size = 24579, upload-time = "2026-01-25T10:15:54.811Z" }, ] [[package]] name = "pytz" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload_time = "2025-03-25T02:25:00.538Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload_time = "2025-03-25T02:24:58.468Z" }, + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, ] [[package]] name = "pyyaml" version = "6.0.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload_time = "2025-09-25T21:33:16.546Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload_time = "2025-09-25T21:31:46.04Z" }, - { url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload_time = "2025-09-25T21:31:47.706Z" }, - { url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload_time = "2025-09-25T21:31:49.21Z" }, - { url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload_time = "2025-09-25T21:31:50.735Z" }, - { url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload_time = "2025-09-25T21:31:51.828Z" }, - { url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload_time = "2025-09-25T21:31:53.282Z" }, - { url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload_time = "2025-09-25T21:31:54.807Z" }, - { url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload_time = "2025-09-25T21:31:55.885Z" }, - { url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload_time = "2025-09-25T21:31:57.406Z" }, - { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload_time = "2025-09-25T21:31:58.655Z" }, - { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload_time = "2025-09-25T21:32:00.088Z" }, - { url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload_time = "2025-09-25T21:32:01.31Z" }, - { url = "https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size = 882114, upload_time = "2025-09-25T21:32:03.376Z" }, - { url = "https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size = 806638, upload_time = "2025-09-25T21:32:04.553Z" }, - { url = "https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size = 767463, upload_time = "2025-09-25T21:32:06.152Z" }, - { url = "https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size = 794986, upload_time = "2025-09-25T21:32:07.367Z" }, - { url = "https://files.pythonhosted.org/packages/45/91/47a6e1c42d9ee337c4839208f30d9f09caa9f720ec7582917b264defc875/pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", size = 142543, upload_time = "2025-09-25T21:32:08.95Z" }, - { url = "https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size = 158763, upload_time = "2025-09-25T21:32:09.96Z" }, - { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload_time = "2025-09-25T21:32:11.445Z" }, - { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload_time = "2025-09-25T21:32:12.492Z" }, - { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload_time = "2025-09-25T21:32:13.652Z" }, - { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload_time = "2025-09-25T21:32:15.21Z" }, - { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload_time = "2025-09-25T21:32:16.431Z" }, - { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload_time = "2025-09-25T21:32:17.56Z" }, - { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload_time = "2025-09-25T21:32:18.834Z" }, - { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload_time = "2025-09-25T21:32:20.209Z" }, - { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload_time = "2025-09-25T21:32:21.167Z" }, - { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload_time = "2025-09-25T21:32:22.617Z" }, - { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload_time = "2025-09-25T21:32:23.673Z" }, - { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload_time = "2025-09-25T21:32:25.149Z" }, - { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload_time = "2025-09-25T21:32:26.575Z" }, - { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload_time = "2025-09-25T21:32:27.727Z" }, - { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload_time = "2025-09-25T21:32:28.878Z" }, - { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload_time = "2025-09-25T21:32:30.178Z" }, - { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload_time = "2025-09-25T21:32:31.353Z" }, - { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload_time = "2025-09-25T21:32:32.58Z" }, - { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload_time = "2025-09-25T21:32:33.659Z" }, - { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload_time = "2025-09-25T21:32:34.663Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" }, + { url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" }, + { url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" }, + { url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" }, + { url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" }, + { url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" }, + { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" }, + { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" }, + { url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload-time = "2025-09-25T21:32:01.31Z" }, + { url = "https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size = 882114, upload-time = "2025-09-25T21:32:03.376Z" }, + { url = "https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size = 806638, upload-time = "2025-09-25T21:32:04.553Z" }, + { url = "https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size = 767463, upload-time = "2025-09-25T21:32:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size = 794986, upload-time = "2025-09-25T21:32:07.367Z" }, + { url = "https://files.pythonhosted.org/packages/45/91/47a6e1c42d9ee337c4839208f30d9f09caa9f720ec7582917b264defc875/pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", size = 142543, upload-time = "2025-09-25T21:32:08.95Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size = 158763, upload-time = "2025-09-25T21:32:09.96Z" }, + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, ] [[package]] @@ -3517,60 +3567,60 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "(python_full_version < '3.11' and implementation_name == 'pypy') or (implementation_name == 'pypy' and sys_platform != 'emscripten')" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/04/0b/3c9baedbdf613ecaa7aa07027780b8867f57b6293b6ee50de316c9f3222b/pyzmq-27.1.0.tar.gz", hash = "sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540", size = 281750, upload_time = "2025-09-08T23:10:18.157Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/67/b9/52aa9ec2867528b54f1e60846728d8b4d84726630874fee3a91e66c7df81/pyzmq-27.1.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:508e23ec9bc44c0005c4946ea013d9317ae00ac67778bd47519fdf5a0e930ff4", size = 1329850, upload_time = "2025-09-08T23:07:26.274Z" }, - { url = "https://files.pythonhosted.org/packages/99/64/5653e7b7425b169f994835a2b2abf9486264401fdef18df91ddae47ce2cc/pyzmq-27.1.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:507b6f430bdcf0ee48c0d30e734ea89ce5567fd7b8a0f0044a369c176aa44556", size = 906380, upload_time = "2025-09-08T23:07:29.78Z" }, - { url = "https://files.pythonhosted.org/packages/73/78/7d713284dbe022f6440e391bd1f3c48d9185673878034cfb3939cdf333b2/pyzmq-27.1.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bf7b38f9fd7b81cb6d9391b2946382c8237fd814075c6aa9c3b746d53076023b", size = 666421, upload_time = "2025-09-08T23:07:31.263Z" }, - { url = "https://files.pythonhosted.org/packages/30/76/8f099f9d6482450428b17c4d6b241281af7ce6a9de8149ca8c1c649f6792/pyzmq-27.1.0-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03ff0b279b40d687691a6217c12242ee71f0fba28bf8626ff50e3ef0f4410e1e", size = 854149, upload_time = "2025-09-08T23:07:33.17Z" }, - { url = "https://files.pythonhosted.org/packages/59/f0/37fbfff06c68016019043897e4c969ceab18bde46cd2aca89821fcf4fb2e/pyzmq-27.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:677e744fee605753eac48198b15a2124016c009a11056f93807000ab11ce6526", size = 1655070, upload_time = "2025-09-08T23:07:35.205Z" }, - { url = "https://files.pythonhosted.org/packages/47/14/7254be73f7a8edc3587609554fcaa7bfd30649bf89cd260e4487ca70fdaa/pyzmq-27.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dd2fec2b13137416a1c5648b7009499bcc8fea78154cd888855fa32514f3dad1", size = 2033441, upload_time = "2025-09-08T23:07:37.432Z" }, - { url = "https://files.pythonhosted.org/packages/22/dc/49f2be26c6f86f347e796a4d99b19167fc94503f0af3fd010ad262158822/pyzmq-27.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:08e90bb4b57603b84eab1d0ca05b3bbb10f60c1839dc471fc1c9e1507bef3386", size = 1891529, upload_time = "2025-09-08T23:07:39.047Z" }, - { url = "https://files.pythonhosted.org/packages/a3/3e/154fb963ae25be70c0064ce97776c937ecc7d8b0259f22858154a9999769/pyzmq-27.1.0-cp310-cp310-win32.whl", hash = "sha256:a5b42d7a0658b515319148875fcb782bbf118dd41c671b62dae33666c2213bda", size = 567276, upload_time = "2025-09-08T23:07:40.695Z" }, - { url = "https://files.pythonhosted.org/packages/62/b2/f4ab56c8c595abcb26b2be5fd9fa9e6899c1e5ad54964e93ae8bb35482be/pyzmq-27.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:c0bb87227430ee3aefcc0ade2088100e528d5d3298a0a715a64f3d04c60ba02f", size = 632208, upload_time = "2025-09-08T23:07:42.298Z" }, - { url = "https://files.pythonhosted.org/packages/3b/e3/be2cc7ab8332bdac0522fdb64c17b1b6241a795bee02e0196636ec5beb79/pyzmq-27.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:9a916f76c2ab8d045b19f2286851a38e9ac94ea91faf65bd64735924522a8b32", size = 559766, upload_time = "2025-09-08T23:07:43.869Z" }, - { url = "https://files.pythonhosted.org/packages/06/5d/305323ba86b284e6fcb0d842d6adaa2999035f70f8c38a9b6d21ad28c3d4/pyzmq-27.1.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:226b091818d461a3bef763805e75685e478ac17e9008f49fce2d3e52b3d58b86", size = 1333328, upload_time = "2025-09-08T23:07:45.946Z" }, - { url = "https://files.pythonhosted.org/packages/bd/a0/fc7e78a23748ad5443ac3275943457e8452da67fda347e05260261108cbc/pyzmq-27.1.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:0790a0161c281ca9723f804871b4027f2e8b5a528d357c8952d08cd1a9c15581", size = 908803, upload_time = "2025-09-08T23:07:47.551Z" }, - { url = "https://files.pythonhosted.org/packages/7e/22/37d15eb05f3bdfa4abea6f6d96eb3bb58585fbd3e4e0ded4e743bc650c97/pyzmq-27.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c895a6f35476b0c3a54e3eb6ccf41bf3018de937016e6e18748317f25d4e925f", size = 668836, upload_time = "2025-09-08T23:07:49.436Z" }, - { url = "https://files.pythonhosted.org/packages/b1/c4/2a6fe5111a01005fc7af3878259ce17684fabb8852815eda6225620f3c59/pyzmq-27.1.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bbf8d3630bf96550b3be8e1fc0fea5cbdc8d5466c1192887bd94869da17a63e", size = 857038, upload_time = "2025-09-08T23:07:51.234Z" }, - { url = "https://files.pythonhosted.org/packages/cb/eb/bfdcb41d0db9cd233d6fb22dc131583774135505ada800ebf14dfb0a7c40/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15c8bd0fe0dabf808e2d7a681398c4e5ded70a551ab47482067a572c054c8e2e", size = 1657531, upload_time = "2025-09-08T23:07:52.795Z" }, - { url = "https://files.pythonhosted.org/packages/ab/21/e3180ca269ed4a0de5c34417dfe71a8ae80421198be83ee619a8a485b0c7/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bafcb3dd171b4ae9f19ee6380dfc71ce0390fefaf26b504c0e5f628d7c8c54f2", size = 2034786, upload_time = "2025-09-08T23:07:55.047Z" }, - { url = "https://files.pythonhosted.org/packages/3b/b1/5e21d0b517434b7f33588ff76c177c5a167858cc38ef740608898cd329f2/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e829529fcaa09937189178115c49c504e69289abd39967cd8a4c215761373394", size = 1894220, upload_time = "2025-09-08T23:07:57.172Z" }, - { url = "https://files.pythonhosted.org/packages/03/f2/44913a6ff6941905efc24a1acf3d3cb6146b636c546c7406c38c49c403d4/pyzmq-27.1.0-cp311-cp311-win32.whl", hash = "sha256:6df079c47d5902af6db298ec92151db82ecb557af663098b92f2508c398bb54f", size = 567155, upload_time = "2025-09-08T23:07:59.05Z" }, - { url = "https://files.pythonhosted.org/packages/23/6d/d8d92a0eb270a925c9b4dd039c0b4dc10abc2fcbc48331788824ef113935/pyzmq-27.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:190cbf120fbc0fc4957b56866830def56628934a9d112aec0e2507aa6a032b97", size = 633428, upload_time = "2025-09-08T23:08:00.663Z" }, - { url = "https://files.pythonhosted.org/packages/ae/14/01afebc96c5abbbd713ecfc7469cfb1bc801c819a74ed5c9fad9a48801cb/pyzmq-27.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:eca6b47df11a132d1745eb3b5b5e557a7dae2c303277aa0e69c6ba91b8736e07", size = 559497, upload_time = "2025-09-08T23:08:02.15Z" }, - { url = "https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc", size = 1306279, upload_time = "2025-09-08T23:08:03.807Z" }, - { url = "https://files.pythonhosted.org/packages/e8/5e/c3c49fdd0f535ef45eefcc16934648e9e59dace4a37ee88fc53f6cd8e641/pyzmq-27.1.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113", size = 895645, upload_time = "2025-09-08T23:08:05.301Z" }, - { url = "https://files.pythonhosted.org/packages/f8/e5/b0b2504cb4e903a74dcf1ebae157f9e20ebb6ea76095f6cfffea28c42ecd/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233", size = 652574, upload_time = "2025-09-08T23:08:06.828Z" }, - { url = "https://files.pythonhosted.org/packages/f8/9b/c108cdb55560eaf253f0cbdb61b29971e9fb34d9c3499b0e96e4e60ed8a5/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31", size = 840995, upload_time = "2025-09-08T23:08:08.396Z" }, - { url = "https://files.pythonhosted.org/packages/c2/bb/b79798ca177b9eb0825b4c9998c6af8cd2a7f15a6a1a4272c1d1a21d382f/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28", size = 1642070, upload_time = "2025-09-08T23:08:09.989Z" }, - { url = "https://files.pythonhosted.org/packages/9c/80/2df2e7977c4ede24c79ae39dcef3899bfc5f34d1ca7a5b24f182c9b7a9ca/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856", size = 2021121, upload_time = "2025-09-08T23:08:11.907Z" }, - { url = "https://files.pythonhosted.org/packages/46/bd/2d45ad24f5f5ae7e8d01525eb76786fa7557136555cac7d929880519e33a/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496", size = 1878550, upload_time = "2025-09-08T23:08:13.513Z" }, - { url = "https://files.pythonhosted.org/packages/e6/2f/104c0a3c778d7c2ab8190e9db4f62f0b6957b53c9d87db77c284b69f33ea/pyzmq-27.1.0-cp312-abi3-win32.whl", hash = "sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd", size = 559184, upload_time = "2025-09-08T23:08:15.163Z" }, - { url = "https://files.pythonhosted.org/packages/fc/7f/a21b20d577e4100c6a41795842028235998a643b1ad406a6d4163ea8f53e/pyzmq-27.1.0-cp312-abi3-win_amd64.whl", hash = "sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf", size = 619480, upload_time = "2025-09-08T23:08:17.192Z" }, - { url = "https://files.pythonhosted.org/packages/78/c2/c012beae5f76b72f007a9e91ee9401cb88c51d0f83c6257a03e785c81cc2/pyzmq-27.1.0-cp312-abi3-win_arm64.whl", hash = "sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f", size = 552993, upload_time = "2025-09-08T23:08:18.926Z" }, - { url = "https://files.pythonhosted.org/packages/60/cb/84a13459c51da6cec1b7b1dc1a47e6db6da50b77ad7fd9c145842750a011/pyzmq-27.1.0-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:93ad4b0855a664229559e45c8d23797ceac03183c7b6f5b4428152a6b06684a5", size = 1122436, upload_time = "2025-09-08T23:08:20.801Z" }, - { url = "https://files.pythonhosted.org/packages/dc/b6/94414759a69a26c3dd674570a81813c46a078767d931a6c70ad29fc585cb/pyzmq-27.1.0-cp313-cp313-android_24_x86_64.whl", hash = "sha256:fbb4f2400bfda24f12f009cba62ad5734148569ff4949b1b6ec3b519444342e6", size = 1156301, upload_time = "2025-09-08T23:08:22.47Z" }, - { url = "https://files.pythonhosted.org/packages/a5/ad/15906493fd40c316377fd8a8f6b1f93104f97a752667763c9b9c1b71d42d/pyzmq-27.1.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:e343d067f7b151cfe4eb3bb796a7752c9d369eed007b91231e817071d2c2fec7", size = 1341197, upload_time = "2025-09-08T23:08:24.286Z" }, - { url = "https://files.pythonhosted.org/packages/14/1d/d343f3ce13db53a54cb8946594e567410b2125394dafcc0268d8dda027e0/pyzmq-27.1.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:08363b2011dec81c354d694bdecaef4770e0ae96b9afea70b3f47b973655cc05", size = 897275, upload_time = "2025-09-08T23:08:26.063Z" }, - { url = "https://files.pythonhosted.org/packages/69/2d/d83dd6d7ca929a2fc67d2c3005415cdf322af7751d773524809f9e585129/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d54530c8c8b5b8ddb3318f481297441af102517602b569146185fa10b63f4fa9", size = 660469, upload_time = "2025-09-08T23:08:27.623Z" }, - { url = "https://files.pythonhosted.org/packages/3e/cd/9822a7af117f4bc0f1952dbe9ef8358eb50a24928efd5edf54210b850259/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3afa12c392f0a44a2414056d730eebc33ec0926aae92b5ad5cf26ebb6cc128", size = 847961, upload_time = "2025-09-08T23:08:29.672Z" }, - { url = "https://files.pythonhosted.org/packages/9a/12/f003e824a19ed73be15542f172fd0ec4ad0b60cf37436652c93b9df7c585/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c65047adafe573ff023b3187bb93faa583151627bc9c51fc4fb2c561ed689d39", size = 1650282, upload_time = "2025-09-08T23:08:31.349Z" }, - { url = "https://files.pythonhosted.org/packages/d5/4a/e82d788ed58e9a23995cee70dbc20c9aded3d13a92d30d57ec2291f1e8a3/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:90e6e9441c946a8b0a667356f7078d96411391a3b8f80980315455574177ec97", size = 2024468, upload_time = "2025-09-08T23:08:33.543Z" }, - { url = "https://files.pythonhosted.org/packages/d9/94/2da0a60841f757481e402b34bf4c8bf57fa54a5466b965de791b1e6f747d/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:add071b2d25f84e8189aaf0882d39a285b42fa3853016ebab234a5e78c7a43db", size = 1885394, upload_time = "2025-09-08T23:08:35.51Z" }, - { url = "https://files.pythonhosted.org/packages/4f/6f/55c10e2e49ad52d080dc24e37adb215e5b0d64990b57598abc2e3f01725b/pyzmq-27.1.0-cp313-cp313t-win32.whl", hash = "sha256:7ccc0700cfdf7bd487bea8d850ec38f204478681ea02a582a8da8171b7f90a1c", size = 574964, upload_time = "2025-09-08T23:08:37.178Z" }, - { url = "https://files.pythonhosted.org/packages/87/4d/2534970ba63dd7c522d8ca80fb92777f362c0f321900667c615e2067cb29/pyzmq-27.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8085a9fba668216b9b4323be338ee5437a235fe275b9d1610e422ccc279733e2", size = 641029, upload_time = "2025-09-08T23:08:40.595Z" }, - { url = "https://files.pythonhosted.org/packages/f6/fa/f8aea7a28b0641f31d40dea42d7ef003fded31e184ef47db696bc74cd610/pyzmq-27.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:6bb54ca21bcfe361e445256c15eedf083f153811c37be87e0514934d6913061e", size = 561541, upload_time = "2025-09-08T23:08:42.668Z" }, - { url = "https://files.pythonhosted.org/packages/f3/81/a65e71c1552f74dec9dff91d95bafb6e0d33338a8dfefbc88aa562a20c92/pyzmq-27.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c17e03cbc9312bee223864f1a2b13a99522e0dc9f7c5df0177cd45210ac286e6", size = 836266, upload_time = "2025-09-08T23:09:40.048Z" }, - { url = "https://files.pythonhosted.org/packages/58/ed/0202ca350f4f2b69faa95c6d931e3c05c3a397c184cacb84cb4f8f42f287/pyzmq-27.1.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:f328d01128373cb6763823b2b4e7f73bdf767834268c565151eacb3b7a392f90", size = 800206, upload_time = "2025-09-08T23:09:41.902Z" }, - { url = "https://files.pythonhosted.org/packages/47/42/1ff831fa87fe8f0a840ddb399054ca0009605d820e2b44ea43114f5459f4/pyzmq-27.1.0-pp310-pypy310_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c1790386614232e1b3a40a958454bdd42c6d1811837b15ddbb052a032a43f62", size = 567747, upload_time = "2025-09-08T23:09:43.741Z" }, - { url = "https://files.pythonhosted.org/packages/d1/db/5c4d6807434751e3f21231bee98109aa57b9b9b55e058e450d0aef59b70f/pyzmq-27.1.0-pp310-pypy310_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:448f9cb54eb0cee4732b46584f2710c8bc178b0e5371d9e4fc8125201e413a74", size = 747371, upload_time = "2025-09-08T23:09:45.575Z" }, - { url = "https://files.pythonhosted.org/packages/26/af/78ce193dbf03567eb8c0dc30e3df2b9e56f12a670bf7eb20f9fb532c7e8a/pyzmq-27.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:05b12f2d32112bf8c95ef2e74ec4f1d4beb01f8b5e703b38537f8849f92cb9ba", size = 544862, upload_time = "2025-09-08T23:09:47.448Z" }, - { url = "https://files.pythonhosted.org/packages/4c/c6/c4dcdecdbaa70969ee1fdced6d7b8f60cfabe64d25361f27ac4665a70620/pyzmq-27.1.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:18770c8d3563715387139060d37859c02ce40718d1faf299abddcdcc6a649066", size = 836265, upload_time = "2025-09-08T23:09:49.376Z" }, - { url = "https://files.pythonhosted.org/packages/3e/79/f38c92eeaeb03a2ccc2ba9866f0439593bb08c5e3b714ac1d553e5c96e25/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:ac25465d42f92e990f8d8b0546b01c391ad431c3bf447683fdc40565941d0604", size = 800208, upload_time = "2025-09-08T23:09:51.073Z" }, - { url = "https://files.pythonhosted.org/packages/49/0e/3f0d0d335c6b3abb9b7b723776d0b21fa7f3a6c819a0db6097059aada160/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53b40f8ae006f2734ee7608d59ed661419f087521edbfc2149c3932e9c14808c", size = 567747, upload_time = "2025-09-08T23:09:52.698Z" }, - { url = "https://files.pythonhosted.org/packages/a1/cf/f2b3784d536250ffd4be70e049f3b60981235d70c6e8ce7e3ef21e1adb25/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f605d884e7c8be8fe1aa94e0a783bf3f591b84c24e4bc4f3e7564c82ac25e271", size = 747371, upload_time = "2025-09-08T23:09:54.563Z" }, - { url = "https://files.pythonhosted.org/packages/01/1b/5dbe84eefc86f48473947e2f41711aded97eecef1231f4558f1f02713c12/pyzmq-27.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c9f7f6e13dff2e44a6afeaf2cf54cee5929ad64afaf4d40b50f93c58fc687355", size = 544862, upload_time = "2025-09-08T23:09:56.509Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/04/0b/3c9baedbdf613ecaa7aa07027780b8867f57b6293b6ee50de316c9f3222b/pyzmq-27.1.0.tar.gz", hash = "sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540", size = 281750, upload-time = "2025-09-08T23:10:18.157Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/67/b9/52aa9ec2867528b54f1e60846728d8b4d84726630874fee3a91e66c7df81/pyzmq-27.1.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:508e23ec9bc44c0005c4946ea013d9317ae00ac67778bd47519fdf5a0e930ff4", size = 1329850, upload-time = "2025-09-08T23:07:26.274Z" }, + { url = "https://files.pythonhosted.org/packages/99/64/5653e7b7425b169f994835a2b2abf9486264401fdef18df91ddae47ce2cc/pyzmq-27.1.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:507b6f430bdcf0ee48c0d30e734ea89ce5567fd7b8a0f0044a369c176aa44556", size = 906380, upload-time = "2025-09-08T23:07:29.78Z" }, + { url = "https://files.pythonhosted.org/packages/73/78/7d713284dbe022f6440e391bd1f3c48d9185673878034cfb3939cdf333b2/pyzmq-27.1.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bf7b38f9fd7b81cb6d9391b2946382c8237fd814075c6aa9c3b746d53076023b", size = 666421, upload-time = "2025-09-08T23:07:31.263Z" }, + { url = "https://files.pythonhosted.org/packages/30/76/8f099f9d6482450428b17c4d6b241281af7ce6a9de8149ca8c1c649f6792/pyzmq-27.1.0-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03ff0b279b40d687691a6217c12242ee71f0fba28bf8626ff50e3ef0f4410e1e", size = 854149, upload-time = "2025-09-08T23:07:33.17Z" }, + { url = "https://files.pythonhosted.org/packages/59/f0/37fbfff06c68016019043897e4c969ceab18bde46cd2aca89821fcf4fb2e/pyzmq-27.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:677e744fee605753eac48198b15a2124016c009a11056f93807000ab11ce6526", size = 1655070, upload-time = "2025-09-08T23:07:35.205Z" }, + { url = "https://files.pythonhosted.org/packages/47/14/7254be73f7a8edc3587609554fcaa7bfd30649bf89cd260e4487ca70fdaa/pyzmq-27.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dd2fec2b13137416a1c5648b7009499bcc8fea78154cd888855fa32514f3dad1", size = 2033441, upload-time = "2025-09-08T23:07:37.432Z" }, + { url = "https://files.pythonhosted.org/packages/22/dc/49f2be26c6f86f347e796a4d99b19167fc94503f0af3fd010ad262158822/pyzmq-27.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:08e90bb4b57603b84eab1d0ca05b3bbb10f60c1839dc471fc1c9e1507bef3386", size = 1891529, upload-time = "2025-09-08T23:07:39.047Z" }, + { url = "https://files.pythonhosted.org/packages/a3/3e/154fb963ae25be70c0064ce97776c937ecc7d8b0259f22858154a9999769/pyzmq-27.1.0-cp310-cp310-win32.whl", hash = "sha256:a5b42d7a0658b515319148875fcb782bbf118dd41c671b62dae33666c2213bda", size = 567276, upload-time = "2025-09-08T23:07:40.695Z" }, + { url = "https://files.pythonhosted.org/packages/62/b2/f4ab56c8c595abcb26b2be5fd9fa9e6899c1e5ad54964e93ae8bb35482be/pyzmq-27.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:c0bb87227430ee3aefcc0ade2088100e528d5d3298a0a715a64f3d04c60ba02f", size = 632208, upload-time = "2025-09-08T23:07:42.298Z" }, + { url = "https://files.pythonhosted.org/packages/3b/e3/be2cc7ab8332bdac0522fdb64c17b1b6241a795bee02e0196636ec5beb79/pyzmq-27.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:9a916f76c2ab8d045b19f2286851a38e9ac94ea91faf65bd64735924522a8b32", size = 559766, upload-time = "2025-09-08T23:07:43.869Z" }, + { url = "https://files.pythonhosted.org/packages/06/5d/305323ba86b284e6fcb0d842d6adaa2999035f70f8c38a9b6d21ad28c3d4/pyzmq-27.1.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:226b091818d461a3bef763805e75685e478ac17e9008f49fce2d3e52b3d58b86", size = 1333328, upload-time = "2025-09-08T23:07:45.946Z" }, + { url = "https://files.pythonhosted.org/packages/bd/a0/fc7e78a23748ad5443ac3275943457e8452da67fda347e05260261108cbc/pyzmq-27.1.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:0790a0161c281ca9723f804871b4027f2e8b5a528d357c8952d08cd1a9c15581", size = 908803, upload-time = "2025-09-08T23:07:47.551Z" }, + { url = "https://files.pythonhosted.org/packages/7e/22/37d15eb05f3bdfa4abea6f6d96eb3bb58585fbd3e4e0ded4e743bc650c97/pyzmq-27.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c895a6f35476b0c3a54e3eb6ccf41bf3018de937016e6e18748317f25d4e925f", size = 668836, upload-time = "2025-09-08T23:07:49.436Z" }, + { url = "https://files.pythonhosted.org/packages/b1/c4/2a6fe5111a01005fc7af3878259ce17684fabb8852815eda6225620f3c59/pyzmq-27.1.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bbf8d3630bf96550b3be8e1fc0fea5cbdc8d5466c1192887bd94869da17a63e", size = 857038, upload-time = "2025-09-08T23:07:51.234Z" }, + { url = "https://files.pythonhosted.org/packages/cb/eb/bfdcb41d0db9cd233d6fb22dc131583774135505ada800ebf14dfb0a7c40/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15c8bd0fe0dabf808e2d7a681398c4e5ded70a551ab47482067a572c054c8e2e", size = 1657531, upload-time = "2025-09-08T23:07:52.795Z" }, + { url = "https://files.pythonhosted.org/packages/ab/21/e3180ca269ed4a0de5c34417dfe71a8ae80421198be83ee619a8a485b0c7/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bafcb3dd171b4ae9f19ee6380dfc71ce0390fefaf26b504c0e5f628d7c8c54f2", size = 2034786, upload-time = "2025-09-08T23:07:55.047Z" }, + { url = "https://files.pythonhosted.org/packages/3b/b1/5e21d0b517434b7f33588ff76c177c5a167858cc38ef740608898cd329f2/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e829529fcaa09937189178115c49c504e69289abd39967cd8a4c215761373394", size = 1894220, upload-time = "2025-09-08T23:07:57.172Z" }, + { url = "https://files.pythonhosted.org/packages/03/f2/44913a6ff6941905efc24a1acf3d3cb6146b636c546c7406c38c49c403d4/pyzmq-27.1.0-cp311-cp311-win32.whl", hash = "sha256:6df079c47d5902af6db298ec92151db82ecb557af663098b92f2508c398bb54f", size = 567155, upload-time = "2025-09-08T23:07:59.05Z" }, + { url = "https://files.pythonhosted.org/packages/23/6d/d8d92a0eb270a925c9b4dd039c0b4dc10abc2fcbc48331788824ef113935/pyzmq-27.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:190cbf120fbc0fc4957b56866830def56628934a9d112aec0e2507aa6a032b97", size = 633428, upload-time = "2025-09-08T23:08:00.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/14/01afebc96c5abbbd713ecfc7469cfb1bc801c819a74ed5c9fad9a48801cb/pyzmq-27.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:eca6b47df11a132d1745eb3b5b5e557a7dae2c303277aa0e69c6ba91b8736e07", size = 559497, upload-time = "2025-09-08T23:08:02.15Z" }, + { url = "https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc", size = 1306279, upload-time = "2025-09-08T23:08:03.807Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5e/c3c49fdd0f535ef45eefcc16934648e9e59dace4a37ee88fc53f6cd8e641/pyzmq-27.1.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113", size = 895645, upload-time = "2025-09-08T23:08:05.301Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e5/b0b2504cb4e903a74dcf1ebae157f9e20ebb6ea76095f6cfffea28c42ecd/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233", size = 652574, upload-time = "2025-09-08T23:08:06.828Z" }, + { url = "https://files.pythonhosted.org/packages/f8/9b/c108cdb55560eaf253f0cbdb61b29971e9fb34d9c3499b0e96e4e60ed8a5/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31", size = 840995, upload-time = "2025-09-08T23:08:08.396Z" }, + { url = "https://files.pythonhosted.org/packages/c2/bb/b79798ca177b9eb0825b4c9998c6af8cd2a7f15a6a1a4272c1d1a21d382f/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28", size = 1642070, upload-time = "2025-09-08T23:08:09.989Z" }, + { url = "https://files.pythonhosted.org/packages/9c/80/2df2e7977c4ede24c79ae39dcef3899bfc5f34d1ca7a5b24f182c9b7a9ca/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856", size = 2021121, upload-time = "2025-09-08T23:08:11.907Z" }, + { url = "https://files.pythonhosted.org/packages/46/bd/2d45ad24f5f5ae7e8d01525eb76786fa7557136555cac7d929880519e33a/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496", size = 1878550, upload-time = "2025-09-08T23:08:13.513Z" }, + { url = "https://files.pythonhosted.org/packages/e6/2f/104c0a3c778d7c2ab8190e9db4f62f0b6957b53c9d87db77c284b69f33ea/pyzmq-27.1.0-cp312-abi3-win32.whl", hash = "sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd", size = 559184, upload-time = "2025-09-08T23:08:15.163Z" }, + { url = "https://files.pythonhosted.org/packages/fc/7f/a21b20d577e4100c6a41795842028235998a643b1ad406a6d4163ea8f53e/pyzmq-27.1.0-cp312-abi3-win_amd64.whl", hash = "sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf", size = 619480, upload-time = "2025-09-08T23:08:17.192Z" }, + { url = "https://files.pythonhosted.org/packages/78/c2/c012beae5f76b72f007a9e91ee9401cb88c51d0f83c6257a03e785c81cc2/pyzmq-27.1.0-cp312-abi3-win_arm64.whl", hash = "sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f", size = 552993, upload-time = "2025-09-08T23:08:18.926Z" }, + { url = "https://files.pythonhosted.org/packages/60/cb/84a13459c51da6cec1b7b1dc1a47e6db6da50b77ad7fd9c145842750a011/pyzmq-27.1.0-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:93ad4b0855a664229559e45c8d23797ceac03183c7b6f5b4428152a6b06684a5", size = 1122436, upload-time = "2025-09-08T23:08:20.801Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b6/94414759a69a26c3dd674570a81813c46a078767d931a6c70ad29fc585cb/pyzmq-27.1.0-cp313-cp313-android_24_x86_64.whl", hash = "sha256:fbb4f2400bfda24f12f009cba62ad5734148569ff4949b1b6ec3b519444342e6", size = 1156301, upload-time = "2025-09-08T23:08:22.47Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ad/15906493fd40c316377fd8a8f6b1f93104f97a752667763c9b9c1b71d42d/pyzmq-27.1.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:e343d067f7b151cfe4eb3bb796a7752c9d369eed007b91231e817071d2c2fec7", size = 1341197, upload-time = "2025-09-08T23:08:24.286Z" }, + { url = "https://files.pythonhosted.org/packages/14/1d/d343f3ce13db53a54cb8946594e567410b2125394dafcc0268d8dda027e0/pyzmq-27.1.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:08363b2011dec81c354d694bdecaef4770e0ae96b9afea70b3f47b973655cc05", size = 897275, upload-time = "2025-09-08T23:08:26.063Z" }, + { url = "https://files.pythonhosted.org/packages/69/2d/d83dd6d7ca929a2fc67d2c3005415cdf322af7751d773524809f9e585129/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d54530c8c8b5b8ddb3318f481297441af102517602b569146185fa10b63f4fa9", size = 660469, upload-time = "2025-09-08T23:08:27.623Z" }, + { url = "https://files.pythonhosted.org/packages/3e/cd/9822a7af117f4bc0f1952dbe9ef8358eb50a24928efd5edf54210b850259/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3afa12c392f0a44a2414056d730eebc33ec0926aae92b5ad5cf26ebb6cc128", size = 847961, upload-time = "2025-09-08T23:08:29.672Z" }, + { url = "https://files.pythonhosted.org/packages/9a/12/f003e824a19ed73be15542f172fd0ec4ad0b60cf37436652c93b9df7c585/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c65047adafe573ff023b3187bb93faa583151627bc9c51fc4fb2c561ed689d39", size = 1650282, upload-time = "2025-09-08T23:08:31.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/4a/e82d788ed58e9a23995cee70dbc20c9aded3d13a92d30d57ec2291f1e8a3/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:90e6e9441c946a8b0a667356f7078d96411391a3b8f80980315455574177ec97", size = 2024468, upload-time = "2025-09-08T23:08:33.543Z" }, + { url = "https://files.pythonhosted.org/packages/d9/94/2da0a60841f757481e402b34bf4c8bf57fa54a5466b965de791b1e6f747d/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:add071b2d25f84e8189aaf0882d39a285b42fa3853016ebab234a5e78c7a43db", size = 1885394, upload-time = "2025-09-08T23:08:35.51Z" }, + { url = "https://files.pythonhosted.org/packages/4f/6f/55c10e2e49ad52d080dc24e37adb215e5b0d64990b57598abc2e3f01725b/pyzmq-27.1.0-cp313-cp313t-win32.whl", hash = "sha256:7ccc0700cfdf7bd487bea8d850ec38f204478681ea02a582a8da8171b7f90a1c", size = 574964, upload-time = "2025-09-08T23:08:37.178Z" }, + { url = "https://files.pythonhosted.org/packages/87/4d/2534970ba63dd7c522d8ca80fb92777f362c0f321900667c615e2067cb29/pyzmq-27.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8085a9fba668216b9b4323be338ee5437a235fe275b9d1610e422ccc279733e2", size = 641029, upload-time = "2025-09-08T23:08:40.595Z" }, + { url = "https://files.pythonhosted.org/packages/f6/fa/f8aea7a28b0641f31d40dea42d7ef003fded31e184ef47db696bc74cd610/pyzmq-27.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:6bb54ca21bcfe361e445256c15eedf083f153811c37be87e0514934d6913061e", size = 561541, upload-time = "2025-09-08T23:08:42.668Z" }, + { url = "https://files.pythonhosted.org/packages/f3/81/a65e71c1552f74dec9dff91d95bafb6e0d33338a8dfefbc88aa562a20c92/pyzmq-27.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c17e03cbc9312bee223864f1a2b13a99522e0dc9f7c5df0177cd45210ac286e6", size = 836266, upload-time = "2025-09-08T23:09:40.048Z" }, + { url = "https://files.pythonhosted.org/packages/58/ed/0202ca350f4f2b69faa95c6d931e3c05c3a397c184cacb84cb4f8f42f287/pyzmq-27.1.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:f328d01128373cb6763823b2b4e7f73bdf767834268c565151eacb3b7a392f90", size = 800206, upload-time = "2025-09-08T23:09:41.902Z" }, + { url = "https://files.pythonhosted.org/packages/47/42/1ff831fa87fe8f0a840ddb399054ca0009605d820e2b44ea43114f5459f4/pyzmq-27.1.0-pp310-pypy310_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c1790386614232e1b3a40a958454bdd42c6d1811837b15ddbb052a032a43f62", size = 567747, upload-time = "2025-09-08T23:09:43.741Z" }, + { url = "https://files.pythonhosted.org/packages/d1/db/5c4d6807434751e3f21231bee98109aa57b9b9b55e058e450d0aef59b70f/pyzmq-27.1.0-pp310-pypy310_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:448f9cb54eb0cee4732b46584f2710c8bc178b0e5371d9e4fc8125201e413a74", size = 747371, upload-time = "2025-09-08T23:09:45.575Z" }, + { url = "https://files.pythonhosted.org/packages/26/af/78ce193dbf03567eb8c0dc30e3df2b9e56f12a670bf7eb20f9fb532c7e8a/pyzmq-27.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:05b12f2d32112bf8c95ef2e74ec4f1d4beb01f8b5e703b38537f8849f92cb9ba", size = 544862, upload-time = "2025-09-08T23:09:47.448Z" }, + { url = "https://files.pythonhosted.org/packages/4c/c6/c4dcdecdbaa70969ee1fdced6d7b8f60cfabe64d25361f27ac4665a70620/pyzmq-27.1.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:18770c8d3563715387139060d37859c02ce40718d1faf299abddcdcc6a649066", size = 836265, upload-time = "2025-09-08T23:09:49.376Z" }, + { url = "https://files.pythonhosted.org/packages/3e/79/f38c92eeaeb03a2ccc2ba9866f0439593bb08c5e3b714ac1d553e5c96e25/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:ac25465d42f92e990f8d8b0546b01c391ad431c3bf447683fdc40565941d0604", size = 800208, upload-time = "2025-09-08T23:09:51.073Z" }, + { url = "https://files.pythonhosted.org/packages/49/0e/3f0d0d335c6b3abb9b7b723776d0b21fa7f3a6c819a0db6097059aada160/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53b40f8ae006f2734ee7608d59ed661419f087521edbfc2149c3932e9c14808c", size = 567747, upload-time = "2025-09-08T23:09:52.698Z" }, + { url = "https://files.pythonhosted.org/packages/a1/cf/f2b3784d536250ffd4be70e049f3b60981235d70c6e8ce7e3ef21e1adb25/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f605d884e7c8be8fe1aa94e0a783bf3f591b84c24e4bc4f3e7564c82ac25e271", size = 747371, upload-time = "2025-09-08T23:09:54.563Z" }, + { url = "https://files.pythonhosted.org/packages/01/1b/5dbe84eefc86f48473947e2f41711aded97eecef1231f4558f1f02713c12/pyzmq-27.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c9f7f6e13dff2e44a6afeaf2cf54cee5929ad64afaf4d40b50f93c58fc687355", size = 544862, upload-time = "2025-09-08T23:09:56.509Z" }, ] [[package]] @@ -3582,98 +3632,98 @@ dependencies = [ { name = "rpds-py" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload_time = "2025-10-13T15:30:48.871Z" } +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload_time = "2025-10-13T15:30:47.625Z" }, + { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload-time = "2025-10-13T15:30:47.625Z" }, ] [[package]] name = "regex" version = "2026.1.15" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/86/07d5056945f9ec4590b518171c4254a5925832eb727b56d3c38a7476f316/regex-2026.1.15.tar.gz", hash = "sha256:164759aa25575cbc0651bef59a0b18353e54300d79ace8084c818ad8ac72b7d5", size = 414811, upload_time = "2026-01-14T23:18:02.775Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ea/d2/e6ee96b7dff201a83f650241c52db8e5bd080967cb93211f57aa448dc9d6/regex-2026.1.15-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4e3dd93c8f9abe8aa4b6c652016da9a3afa190df5ad822907efe6b206c09896e", size = 488166, upload_time = "2026-01-14T23:13:46.408Z" }, - { url = "https://files.pythonhosted.org/packages/23/8a/819e9ce14c9f87af026d0690901b3931f3101160833e5d4c8061fa3a1b67/regex-2026.1.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:97499ff7862e868b1977107873dd1a06e151467129159a6ffd07b66706ba3a9f", size = 290632, upload_time = "2026-01-14T23:13:48.688Z" }, - { url = "https://files.pythonhosted.org/packages/d5/c3/23dfe15af25d1d45b07dfd4caa6003ad710dcdcb4c4b279909bdfe7a2de8/regex-2026.1.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0bda75ebcac38d884240914c6c43d8ab5fb82e74cde6da94b43b17c411aa4c2b", size = 288500, upload_time = "2026-01-14T23:13:50.503Z" }, - { url = "https://files.pythonhosted.org/packages/c6/31/1adc33e2f717df30d2f4d973f8776d2ba6ecf939301efab29fca57505c95/regex-2026.1.15-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7dcc02368585334f5bc81fc73a2a6a0bbade60e7d83da21cead622faf408f32c", size = 781670, upload_time = "2026-01-14T23:13:52.453Z" }, - { url = "https://files.pythonhosted.org/packages/23/ce/21a8a22d13bc4adcb927c27b840c948f15fc973e21ed2346c1bd0eae22dc/regex-2026.1.15-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:693b465171707bbe882a7a05de5e866f33c76aa449750bee94a8d90463533cc9", size = 850820, upload_time = "2026-01-14T23:13:54.894Z" }, - { url = "https://files.pythonhosted.org/packages/6c/4f/3eeacdf587a4705a44484cd0b30e9230a0e602811fb3e2cc32268c70d509/regex-2026.1.15-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b0d190e6f013ea938623a58706d1469a62103fb2a241ce2873a9906e0386582c", size = 898777, upload_time = "2026-01-14T23:13:56.908Z" }, - { url = "https://files.pythonhosted.org/packages/79/a9/1898a077e2965c35fc22796488141a22676eed2d73701e37c73ad7c0b459/regex-2026.1.15-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ff818702440a5878a81886f127b80127f5d50563753a28211482867f8318106", size = 791750, upload_time = "2026-01-14T23:13:58.527Z" }, - { url = "https://files.pythonhosted.org/packages/4c/84/e31f9d149a178889b3817212827f5e0e8c827a049ff31b4b381e76b26e2d/regex-2026.1.15-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f052d1be37ef35a54e394de66136e30fa1191fab64f71fc06ac7bc98c9a84618", size = 782674, upload_time = "2026-01-14T23:13:59.874Z" }, - { url = "https://files.pythonhosted.org/packages/d2/ff/adf60063db24532add6a1676943754a5654dcac8237af024ede38244fd12/regex-2026.1.15-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6bfc31a37fd1592f0c4fc4bfc674b5c42e52efe45b4b7a6a14f334cca4bcebe4", size = 767906, upload_time = "2026-01-14T23:14:01.298Z" }, - { url = "https://files.pythonhosted.org/packages/af/3e/e6a216cee1e2780fec11afe7fc47b6f3925d7264e8149c607ac389fd9b1a/regex-2026.1.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3d6ce5ae80066b319ae3bc62fd55a557c9491baa5efd0d355f0de08c4ba54e79", size = 774798, upload_time = "2026-01-14T23:14:02.715Z" }, - { url = "https://files.pythonhosted.org/packages/0f/98/23a4a8378a9208514ed3efc7e7850c27fa01e00ed8557c958df0335edc4a/regex-2026.1.15-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:1704d204bd42b6bb80167df0e4554f35c255b579ba99616def38f69e14a5ccb9", size = 845861, upload_time = "2026-01-14T23:14:04.824Z" }, - { url = "https://files.pythonhosted.org/packages/f8/57/d7605a9d53bd07421a8785d349cd29677fe660e13674fa4c6cbd624ae354/regex-2026.1.15-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:e3174a5ed4171570dc8318afada56373aa9289eb6dc0d96cceb48e7358b0e220", size = 755648, upload_time = "2026-01-14T23:14:06.371Z" }, - { url = "https://files.pythonhosted.org/packages/6f/76/6f2e24aa192da1e299cc1101674a60579d3912391867ce0b946ba83e2194/regex-2026.1.15-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:87adf5bd6d72e3e17c9cb59ac4096b1faaf84b7eb3037a5ffa61c4b4370f0f13", size = 836250, upload_time = "2026-01-14T23:14:08.343Z" }, - { url = "https://files.pythonhosted.org/packages/11/3a/1f2a1d29453299a7858eab7759045fc3d9d1b429b088dec2dc85b6fa16a2/regex-2026.1.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e85dc94595f4d766bd7d872a9de5ede1ca8d3063f3bdf1e2c725f5eb411159e3", size = 779919, upload_time = "2026-01-14T23:14:09.954Z" }, - { url = "https://files.pythonhosted.org/packages/c0/67/eab9bc955c9dcc58e9b222c801e39cff7ca0b04261792a2149166ce7e792/regex-2026.1.15-cp310-cp310-win32.whl", hash = "sha256:21ca32c28c30d5d65fc9886ff576fc9b59bbca08933e844fa2363e530f4c8218", size = 265888, upload_time = "2026-01-14T23:14:11.35Z" }, - { url = "https://files.pythonhosted.org/packages/1d/62/31d16ae24e1f8803bddb0885508acecaec997fcdcde9c243787103119ae4/regex-2026.1.15-cp310-cp310-win_amd64.whl", hash = "sha256:3038a62fc7d6e5547b8915a3d927a0fbeef84cdbe0b1deb8c99bbd4a8961b52a", size = 277830, upload_time = "2026-01-14T23:14:12.908Z" }, - { url = "https://files.pythonhosted.org/packages/e5/36/5d9972bccd6417ecd5a8be319cebfd80b296875e7f116c37fb2a2deecebf/regex-2026.1.15-cp310-cp310-win_arm64.whl", hash = "sha256:505831646c945e3e63552cc1b1b9b514f0e93232972a2d5bedbcc32f15bc82e3", size = 270376, upload_time = "2026-01-14T23:14:14.782Z" }, - { url = "https://files.pythonhosted.org/packages/d0/c9/0c80c96eab96948363d270143138d671d5731c3a692b417629bf3492a9d6/regex-2026.1.15-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ae6020fb311f68d753b7efa9d4b9a5d47a5d6466ea0d5e3b5a471a960ea6e4a", size = 488168, upload_time = "2026-01-14T23:14:16.129Z" }, - { url = "https://files.pythonhosted.org/packages/17/f0/271c92f5389a552494c429e5cc38d76d1322eb142fb5db3c8ccc47751468/regex-2026.1.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eddf73f41225942c1f994914742afa53dc0d01a6e20fe14b878a1b1edc74151f", size = 290636, upload_time = "2026-01-14T23:14:17.715Z" }, - { url = "https://files.pythonhosted.org/packages/a0/f9/5f1fd077d106ca5655a0f9ff8f25a1ab55b92128b5713a91ed7134ff688e/regex-2026.1.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e8cd52557603f5c66a548f69421310886b28b7066853089e1a71ee710e1cdc1", size = 288496, upload_time = "2026-01-14T23:14:19.326Z" }, - { url = "https://files.pythonhosted.org/packages/b5/e1/8f43b03a4968c748858ec77f746c286d81f896c2e437ccf050ebc5d3128c/regex-2026.1.15-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5170907244b14303edc5978f522f16c974f32d3aa92109fabc2af52411c9433b", size = 793503, upload_time = "2026-01-14T23:14:20.922Z" }, - { url = "https://files.pythonhosted.org/packages/8d/4e/a39a5e8edc5377a46a7c875c2f9a626ed3338cb3bb06931be461c3e1a34a/regex-2026.1.15-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2748c1ec0663580b4510bd89941a31560b4b439a0b428b49472a3d9944d11cd8", size = 860535, upload_time = "2026-01-14T23:14:22.405Z" }, - { url = "https://files.pythonhosted.org/packages/dc/1c/9dce667a32a9477f7a2869c1c767dc00727284a9fa3ff5c09a5c6c03575e/regex-2026.1.15-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2f2775843ca49360508d080eaa87f94fa248e2c946bbcd963bb3aae14f333413", size = 907225, upload_time = "2026-01-14T23:14:23.897Z" }, - { url = "https://files.pythonhosted.org/packages/a4/3c/87ca0a02736d16b6262921425e84b48984e77d8e4e572c9072ce96e66c30/regex-2026.1.15-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9ea2604370efc9a174c1b5dcc81784fb040044232150f7f33756049edfc9026", size = 800526, upload_time = "2026-01-14T23:14:26.039Z" }, - { url = "https://files.pythonhosted.org/packages/4b/ff/647d5715aeea7c87bdcbd2f578f47b415f55c24e361e639fe8c0cc88878f/regex-2026.1.15-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0dcd31594264029b57bf16f37fd7248a70b3b764ed9e0839a8f271b2d22c0785", size = 773446, upload_time = "2026-01-14T23:14:28.109Z" }, - { url = "https://files.pythonhosted.org/packages/af/89/bf22cac25cb4ba0fe6bff52ebedbb65b77a179052a9d6037136ae93f42f4/regex-2026.1.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c08c1f3e34338256732bd6938747daa3c0d5b251e04b6e43b5813e94d503076e", size = 783051, upload_time = "2026-01-14T23:14:29.929Z" }, - { url = "https://files.pythonhosted.org/packages/1e/f4/6ed03e71dca6348a5188363a34f5e26ffd5db1404780288ff0d79513bce4/regex-2026.1.15-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e43a55f378df1e7a4fa3547c88d9a5a9b7113f653a66821bcea4718fe6c58763", size = 854485, upload_time = "2026-01-14T23:14:31.366Z" }, - { url = "https://files.pythonhosted.org/packages/d9/9a/8e8560bd78caded8eb137e3e47612430a05b9a772caf60876435192d670a/regex-2026.1.15-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:f82110ab962a541737bd0ce87978d4c658f06e7591ba899192e2712a517badbb", size = 762195, upload_time = "2026-01-14T23:14:32.802Z" }, - { url = "https://files.pythonhosted.org/packages/38/6b/61fc710f9aa8dfcd764fe27d37edfaa023b1a23305a0d84fccd5adb346ea/regex-2026.1.15-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:27618391db7bdaf87ac6c92b31e8f0dfb83a9de0075855152b720140bda177a2", size = 845986, upload_time = "2026-01-14T23:14:34.898Z" }, - { url = "https://files.pythonhosted.org/packages/fd/2e/fbee4cb93f9d686901a7ca8d94285b80405e8c34fe4107f63ffcbfb56379/regex-2026.1.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bfb0d6be01fbae8d6655c8ca21b3b72458606c4aec9bbc932db758d47aba6db1", size = 788992, upload_time = "2026-01-14T23:14:37.116Z" }, - { url = "https://files.pythonhosted.org/packages/ed/14/3076348f3f586de64b1ab75a3fbabdaab7684af7f308ad43be7ef1849e55/regex-2026.1.15-cp311-cp311-win32.whl", hash = "sha256:b10e42a6de0e32559a92f2f8dc908478cc0fa02838d7dbe764c44dca3fa13569", size = 265893, upload_time = "2026-01-14T23:14:38.426Z" }, - { url = "https://files.pythonhosted.org/packages/0f/19/772cf8b5fc803f5c89ba85d8b1870a1ca580dc482aa030383a9289c82e44/regex-2026.1.15-cp311-cp311-win_amd64.whl", hash = "sha256:e9bf3f0bbdb56633c07d7116ae60a576f846efdd86a8848f8d62b749e1209ca7", size = 277840, upload_time = "2026-01-14T23:14:39.785Z" }, - { url = "https://files.pythonhosted.org/packages/78/84/d05f61142709474da3c0853222d91086d3e1372bcdab516c6fd8d80f3297/regex-2026.1.15-cp311-cp311-win_arm64.whl", hash = "sha256:41aef6f953283291c4e4e6850607bd71502be67779586a61472beacb315c97ec", size = 270374, upload_time = "2026-01-14T23:14:41.592Z" }, - { url = "https://files.pythonhosted.org/packages/92/81/10d8cf43c807d0326efe874c1b79f22bfb0fb226027b0b19ebc26d301408/regex-2026.1.15-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:4c8fcc5793dde01641a35905d6731ee1548f02b956815f8f1cab89e515a5bdf1", size = 489398, upload_time = "2026-01-14T23:14:43.741Z" }, - { url = "https://files.pythonhosted.org/packages/90/b0/7c2a74e74ef2a7c32de724658a69a862880e3e4155cba992ba04d1c70400/regex-2026.1.15-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bfd876041a956e6a90ad7cdb3f6a630c07d491280bfeed4544053cd434901681", size = 291339, upload_time = "2026-01-14T23:14:45.183Z" }, - { url = "https://files.pythonhosted.org/packages/19/4d/16d0773d0c818417f4cc20aa0da90064b966d22cd62a8c46765b5bd2d643/regex-2026.1.15-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9250d087bc92b7d4899ccd5539a1b2334e44eee85d848c4c1aef8e221d3f8c8f", size = 289003, upload_time = "2026-01-14T23:14:47.25Z" }, - { url = "https://files.pythonhosted.org/packages/c6/e4/1fc4599450c9f0863d9406e944592d968b8d6dfd0d552a7d569e43bceada/regex-2026.1.15-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8a154cf6537ebbc110e24dabe53095e714245c272da9c1be05734bdad4a61aa", size = 798656, upload_time = "2026-01-14T23:14:48.77Z" }, - { url = "https://files.pythonhosted.org/packages/b2/e6/59650d73a73fa8a60b3a590545bfcf1172b4384a7df2e7fe7b9aab4e2da9/regex-2026.1.15-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8050ba2e3ea1d8731a549e83c18d2f0999fbc99a5f6bd06b4c91449f55291804", size = 864252, upload_time = "2026-01-14T23:14:50.528Z" }, - { url = "https://files.pythonhosted.org/packages/6e/ab/1d0f4d50a1638849a97d731364c9a80fa304fec46325e48330c170ee8e80/regex-2026.1.15-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0bf065240704cb8951cc04972cf107063917022511273e0969bdb34fc173456c", size = 912268, upload_time = "2026-01-14T23:14:52.952Z" }, - { url = "https://files.pythonhosted.org/packages/dd/df/0d722c030c82faa1d331d1921ee268a4e8fb55ca8b9042c9341c352f17fa/regex-2026.1.15-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c32bef3e7aeee75746748643667668ef941d28b003bfc89994ecf09a10f7a1b5", size = 803589, upload_time = "2026-01-14T23:14:55.182Z" }, - { url = "https://files.pythonhosted.org/packages/66/23/33289beba7ccb8b805c6610a8913d0131f834928afc555b241caabd422a9/regex-2026.1.15-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d5eaa4a4c5b1906bd0d2508d68927f15b81821f85092e06f1a34a4254b0e1af3", size = 775700, upload_time = "2026-01-14T23:14:56.707Z" }, - { url = "https://files.pythonhosted.org/packages/e7/65/bf3a42fa6897a0d3afa81acb25c42f4b71c274f698ceabd75523259f6688/regex-2026.1.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:86c1077a3cc60d453d4084d5b9649065f3bf1184e22992bd322e1f081d3117fb", size = 787928, upload_time = "2026-01-14T23:14:58.312Z" }, - { url = "https://files.pythonhosted.org/packages/f4/f5/13bf65864fc314f68cdd6d8ca94adcab064d4d39dbd0b10fef29a9da48fc/regex-2026.1.15-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:2b091aefc05c78d286657cd4db95f2e6313375ff65dcf085e42e4c04d9c8d410", size = 858607, upload_time = "2026-01-14T23:15:00.657Z" }, - { url = "https://files.pythonhosted.org/packages/a3/31/040e589834d7a439ee43fb0e1e902bc81bd58a5ba81acffe586bb3321d35/regex-2026.1.15-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:57e7d17f59f9ebfa9667e6e5a1c0127b96b87cb9cede8335482451ed00788ba4", size = 763729, upload_time = "2026-01-14T23:15:02.248Z" }, - { url = "https://files.pythonhosted.org/packages/9b/84/6921e8129687a427edf25a34a5594b588b6d88f491320b9de5b6339a4fcb/regex-2026.1.15-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:c6c4dcdfff2c08509faa15d36ba7e5ef5fcfab25f1e8f85a0c8f45bc3a30725d", size = 850697, upload_time = "2026-01-14T23:15:03.878Z" }, - { url = "https://files.pythonhosted.org/packages/8a/87/3d06143d4b128f4229158f2de5de6c8f2485170c7221e61bf381313314b2/regex-2026.1.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:cf8ff04c642716a7f2048713ddc6278c5fd41faa3b9cab12607c7abecd012c22", size = 789849, upload_time = "2026-01-14T23:15:06.102Z" }, - { url = "https://files.pythonhosted.org/packages/77/69/c50a63842b6bd48850ebc7ab22d46e7a2a32d824ad6c605b218441814639/regex-2026.1.15-cp312-cp312-win32.whl", hash = "sha256:82345326b1d8d56afbe41d881fdf62f1926d7264b2fc1537f99ae5da9aad7913", size = 266279, upload_time = "2026-01-14T23:15:07.678Z" }, - { url = "https://files.pythonhosted.org/packages/f2/36/39d0b29d087e2b11fd8191e15e81cce1b635fcc845297c67f11d0d19274d/regex-2026.1.15-cp312-cp312-win_amd64.whl", hash = "sha256:4def140aa6156bc64ee9912383d4038f3fdd18fee03a6f222abd4de6357ce42a", size = 277166, upload_time = "2026-01-14T23:15:09.257Z" }, - { url = "https://files.pythonhosted.org/packages/28/32/5b8e476a12262748851fa8ab1b0be540360692325975b094e594dfebbb52/regex-2026.1.15-cp312-cp312-win_arm64.whl", hash = "sha256:c6c565d9a6e1a8d783c1948937ffc377dd5771e83bd56de8317c450a954d2056", size = 270415, upload_time = "2026-01-14T23:15:10.743Z" }, - { url = "https://files.pythonhosted.org/packages/f8/2e/6870bb16e982669b674cce3ee9ff2d1d46ab80528ee6bcc20fb2292efb60/regex-2026.1.15-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e69d0deeb977ffe7ed3d2e4439360089f9c3f217ada608f0f88ebd67afb6385e", size = 489164, upload_time = "2026-01-14T23:15:13.962Z" }, - { url = "https://files.pythonhosted.org/packages/dc/67/9774542e203849b0286badf67199970a44ebdb0cc5fb739f06e47ada72f8/regex-2026.1.15-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3601ffb5375de85a16f407854d11cca8fe3f5febbe3ac78fb2866bb220c74d10", size = 291218, upload_time = "2026-01-14T23:15:15.647Z" }, - { url = "https://files.pythonhosted.org/packages/b2/87/b0cda79f22b8dee05f774922a214da109f9a4c0eca5da2c9d72d77ea062c/regex-2026.1.15-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4c5ef43b5c2d4114eb8ea424bb8c9cec01d5d17f242af88b2448f5ee81caadbc", size = 288895, upload_time = "2026-01-14T23:15:17.788Z" }, - { url = "https://files.pythonhosted.org/packages/3b/6a/0041f0a2170d32be01ab981d6346c83a8934277d82c780d60b127331f264/regex-2026.1.15-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:968c14d4f03e10b2fd960f1d5168c1f0ac969381d3c1fcc973bc45fb06346599", size = 798680, upload_time = "2026-01-14T23:15:19.342Z" }, - { url = "https://files.pythonhosted.org/packages/58/de/30e1cfcdbe3e891324aa7568b7c968771f82190df5524fabc1138cb2d45a/regex-2026.1.15-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:56a5595d0f892f214609c9f76b41b7428bed439d98dc961efafdd1354d42baae", size = 864210, upload_time = "2026-01-14T23:15:22.005Z" }, - { url = "https://files.pythonhosted.org/packages/64/44/4db2f5c5ca0ccd40ff052ae7b1e9731352fcdad946c2b812285a7505ca75/regex-2026.1.15-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0bf650f26087363434c4e560011f8e4e738f6f3e029b85d4904c50135b86cfa5", size = 912358, upload_time = "2026-01-14T23:15:24.569Z" }, - { url = "https://files.pythonhosted.org/packages/79/b6/e6a5665d43a7c42467138c8a2549be432bad22cbd206f5ec87162de74bd7/regex-2026.1.15-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18388a62989c72ac24de75f1449d0fb0b04dfccd0a1a7c1c43af5eb503d890f6", size = 803583, upload_time = "2026-01-14T23:15:26.526Z" }, - { url = "https://files.pythonhosted.org/packages/e7/53/7cd478222169d85d74d7437e74750005e993f52f335f7c04ff7adfda3310/regex-2026.1.15-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6d220a2517f5893f55daac983bfa9fe998a7dbcaee4f5d27a88500f8b7873788", size = 775782, upload_time = "2026-01-14T23:15:29.352Z" }, - { url = "https://files.pythonhosted.org/packages/ca/b5/75f9a9ee4b03a7c009fe60500fe550b45df94f0955ca29af16333ef557c5/regex-2026.1.15-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c9c08c2fbc6120e70abff5d7f28ffb4d969e14294fb2143b4b5c7d20e46d1714", size = 787978, upload_time = "2026-01-14T23:15:31.295Z" }, - { url = "https://files.pythonhosted.org/packages/72/b3/79821c826245bbe9ccbb54f6eadb7879c722fd3e0248c17bfc90bf54e123/regex-2026.1.15-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7ef7d5d4bd49ec7364315167a4134a015f61e8266c6d446fc116a9ac4456e10d", size = 858550, upload_time = "2026-01-14T23:15:33.558Z" }, - { url = "https://files.pythonhosted.org/packages/4a/85/2ab5f77a1c465745bfbfcb3ad63178a58337ae8d5274315e2cc623a822fa/regex-2026.1.15-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:6e42844ad64194fa08d5ccb75fe6a459b9b08e6d7296bd704460168d58a388f3", size = 763747, upload_time = "2026-01-14T23:15:35.206Z" }, - { url = "https://files.pythonhosted.org/packages/6d/84/c27df502d4bfe2873a3e3a7cf1bdb2b9cc10284d1a44797cf38bed790470/regex-2026.1.15-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:cfecdaa4b19f9ca534746eb3b55a5195d5c95b88cac32a205e981ec0a22b7d31", size = 850615, upload_time = "2026-01-14T23:15:37.523Z" }, - { url = "https://files.pythonhosted.org/packages/7d/b7/658a9782fb253680aa8ecb5ccbb51f69e088ed48142c46d9f0c99b46c575/regex-2026.1.15-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:08df9722d9b87834a3d701f3fca570b2be115654dbfd30179f30ab2f39d606d3", size = 789951, upload_time = "2026-01-14T23:15:39.582Z" }, - { url = "https://files.pythonhosted.org/packages/fc/2a/5928af114441e059f15b2f63e188bd00c6529b3051c974ade7444b85fcda/regex-2026.1.15-cp313-cp313-win32.whl", hash = "sha256:d426616dae0967ca225ab12c22274eb816558f2f99ccb4a1d52ca92e8baf180f", size = 266275, upload_time = "2026-01-14T23:15:42.108Z" }, - { url = "https://files.pythonhosted.org/packages/4f/16/5bfbb89e435897bff28cf0352a992ca719d9e55ebf8b629203c96b6ce4f7/regex-2026.1.15-cp313-cp313-win_amd64.whl", hash = "sha256:febd38857b09867d3ed3f4f1af7d241c5c50362e25ef43034995b77a50df494e", size = 277145, upload_time = "2026-01-14T23:15:44.244Z" }, - { url = "https://files.pythonhosted.org/packages/56/c1/a09ff7392ef4233296e821aec5f78c51be5e91ffde0d163059e50fd75835/regex-2026.1.15-cp313-cp313-win_arm64.whl", hash = "sha256:8e32f7896f83774f91499d239e24cebfadbc07639c1494bb7213983842348337", size = 270411, upload_time = "2026-01-14T23:15:45.858Z" }, - { url = "https://files.pythonhosted.org/packages/3c/38/0cfd5a78e5c6db00e6782fdae70458f89850ce95baa5e8694ab91d89744f/regex-2026.1.15-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:ec94c04149b6a7b8120f9f44565722c7ae31b7a6d2275569d2eefa76b83da3be", size = 492068, upload_time = "2026-01-14T23:15:47.616Z" }, - { url = "https://files.pythonhosted.org/packages/50/72/6c86acff16cb7c959c4355826bbf06aad670682d07c8f3998d9ef4fee7cd/regex-2026.1.15-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:40c86d8046915bb9aeb15d3f3f15b6fd500b8ea4485b30e1bbc799dab3fe29f8", size = 292756, upload_time = "2026-01-14T23:15:49.307Z" }, - { url = "https://files.pythonhosted.org/packages/4e/58/df7fb69eadfe76526ddfce28abdc0af09ffe65f20c2c90932e89d705153f/regex-2026.1.15-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:726ea4e727aba21643205edad8f2187ec682d3305d790f73b7a51c7587b64bdd", size = 291114, upload_time = "2026-01-14T23:15:51.484Z" }, - { url = "https://files.pythonhosted.org/packages/ed/6c/a4011cd1cf96b90d2cdc7e156f91efbd26531e822a7fbb82a43c1016678e/regex-2026.1.15-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1cb740d044aff31898804e7bf1181cc72c03d11dfd19932b9911ffc19a79070a", size = 807524, upload_time = "2026-01-14T23:15:53.102Z" }, - { url = "https://files.pythonhosted.org/packages/1d/25/a53ffb73183f69c3e9f4355c4922b76d2840aee160af6af5fac229b6201d/regex-2026.1.15-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:05d75a668e9ea16f832390d22131fe1e8acc8389a694c8febc3e340b0f810b93", size = 873455, upload_time = "2026-01-14T23:15:54.956Z" }, - { url = "https://files.pythonhosted.org/packages/66/0b/8b47fc2e8f97d9b4a851736f3890a5f786443aa8901061c55f24c955f45b/regex-2026.1.15-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d991483606f3dbec93287b9f35596f41aa2e92b7c2ebbb935b63f409e243c9af", size = 915007, upload_time = "2026-01-14T23:15:57.041Z" }, - { url = "https://files.pythonhosted.org/packages/c2/fa/97de0d681e6d26fabe71968dbee06dd52819e9a22fdce5dac7256c31ed84/regex-2026.1.15-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:194312a14819d3e44628a44ed6fea6898fdbecb0550089d84c403475138d0a09", size = 812794, upload_time = "2026-01-14T23:15:58.916Z" }, - { url = "https://files.pythonhosted.org/packages/22/38/e752f94e860d429654aa2b1c51880bff8dfe8f084268258adf9151cf1f53/regex-2026.1.15-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fe2fda4110a3d0bc163c2e0664be44657431440722c5c5315c65155cab92f9e5", size = 781159, upload_time = "2026-01-14T23:16:00.817Z" }, - { url = "https://files.pythonhosted.org/packages/e9/a7/d739ffaef33c378fc888302a018d7f81080393d96c476b058b8c64fd2b0d/regex-2026.1.15-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:124dc36c85d34ef2d9164da41a53c1c8c122cfb1f6e1ec377a1f27ee81deb794", size = 795558, upload_time = "2026-01-14T23:16:03.267Z" }, - { url = "https://files.pythonhosted.org/packages/3e/c4/542876f9a0ac576100fc73e9c75b779f5c31e3527576cfc9cb3009dcc58a/regex-2026.1.15-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:a1774cd1981cd212506a23a14dba7fdeaee259f5deba2df6229966d9911e767a", size = 868427, upload_time = "2026-01-14T23:16:05.646Z" }, - { url = "https://files.pythonhosted.org/packages/fc/0f/d5655bea5b22069e32ae85a947aa564912f23758e112cdb74212848a1a1b/regex-2026.1.15-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:b5f7d8d2867152cdb625e72a530d2ccb48a3d199159144cbdd63870882fb6f80", size = 769939, upload_time = "2026-01-14T23:16:07.542Z" }, - { url = "https://files.pythonhosted.org/packages/20/06/7e18a4fa9d326daeda46d471a44ef94201c46eaa26dbbb780b5d92cbfdda/regex-2026.1.15-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:492534a0ab925d1db998defc3c302dae3616a2fc3fe2e08db1472348f096ddf2", size = 854753, upload_time = "2026-01-14T23:16:10.395Z" }, - { url = "https://files.pythonhosted.org/packages/3b/67/dc8946ef3965e166f558ef3b47f492bc364e96a265eb4a2bb3ca765c8e46/regex-2026.1.15-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c661fc820cfb33e166bf2450d3dadbda47c8d8981898adb9b6fe24e5e582ba60", size = 799559, upload_time = "2026-01-14T23:16:12.347Z" }, - { url = "https://files.pythonhosted.org/packages/a5/61/1bba81ff6d50c86c65d9fd84ce9699dd106438ee4cdb105bf60374ee8412/regex-2026.1.15-cp313-cp313t-win32.whl", hash = "sha256:99ad739c3686085e614bf77a508e26954ff1b8f14da0e3765ff7abbf7799f952", size = 268879, upload_time = "2026-01-14T23:16:14.049Z" }, - { url = "https://files.pythonhosted.org/packages/e9/5e/cef7d4c5fb0ea3ac5c775fd37db5747f7378b29526cc83f572198924ff47/regex-2026.1.15-cp313-cp313t-win_amd64.whl", hash = "sha256:32655d17905e7ff8ba5c764c43cb124e34a9245e45b83c22e81041e1071aee10", size = 280317, upload_time = "2026-01-14T23:16:15.718Z" }, - { url = "https://files.pythonhosted.org/packages/b4/52/4317f7a5988544e34ab57b4bde0f04944c4786128c933fb09825924d3e82/regex-2026.1.15-cp313-cp313t-win_arm64.whl", hash = "sha256:b2a13dd6a95e95a489ca242319d18fc02e07ceb28fa9ad146385194d95b3c829", size = 271551, upload_time = "2026-01-14T23:16:17.533Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/0b/86/07d5056945f9ec4590b518171c4254a5925832eb727b56d3c38a7476f316/regex-2026.1.15.tar.gz", hash = "sha256:164759aa25575cbc0651bef59a0b18353e54300d79ace8084c818ad8ac72b7d5", size = 414811, upload-time = "2026-01-14T23:18:02.775Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/d2/e6ee96b7dff201a83f650241c52db8e5bd080967cb93211f57aa448dc9d6/regex-2026.1.15-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4e3dd93c8f9abe8aa4b6c652016da9a3afa190df5ad822907efe6b206c09896e", size = 488166, upload-time = "2026-01-14T23:13:46.408Z" }, + { url = "https://files.pythonhosted.org/packages/23/8a/819e9ce14c9f87af026d0690901b3931f3101160833e5d4c8061fa3a1b67/regex-2026.1.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:97499ff7862e868b1977107873dd1a06e151467129159a6ffd07b66706ba3a9f", size = 290632, upload-time = "2026-01-14T23:13:48.688Z" }, + { url = "https://files.pythonhosted.org/packages/d5/c3/23dfe15af25d1d45b07dfd4caa6003ad710dcdcb4c4b279909bdfe7a2de8/regex-2026.1.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0bda75ebcac38d884240914c6c43d8ab5fb82e74cde6da94b43b17c411aa4c2b", size = 288500, upload-time = "2026-01-14T23:13:50.503Z" }, + { url = "https://files.pythonhosted.org/packages/c6/31/1adc33e2f717df30d2f4d973f8776d2ba6ecf939301efab29fca57505c95/regex-2026.1.15-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7dcc02368585334f5bc81fc73a2a6a0bbade60e7d83da21cead622faf408f32c", size = 781670, upload-time = "2026-01-14T23:13:52.453Z" }, + { url = "https://files.pythonhosted.org/packages/23/ce/21a8a22d13bc4adcb927c27b840c948f15fc973e21ed2346c1bd0eae22dc/regex-2026.1.15-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:693b465171707bbe882a7a05de5e866f33c76aa449750bee94a8d90463533cc9", size = 850820, upload-time = "2026-01-14T23:13:54.894Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4f/3eeacdf587a4705a44484cd0b30e9230a0e602811fb3e2cc32268c70d509/regex-2026.1.15-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b0d190e6f013ea938623a58706d1469a62103fb2a241ce2873a9906e0386582c", size = 898777, upload-time = "2026-01-14T23:13:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/79/a9/1898a077e2965c35fc22796488141a22676eed2d73701e37c73ad7c0b459/regex-2026.1.15-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ff818702440a5878a81886f127b80127f5d50563753a28211482867f8318106", size = 791750, upload-time = "2026-01-14T23:13:58.527Z" }, + { url = "https://files.pythonhosted.org/packages/4c/84/e31f9d149a178889b3817212827f5e0e8c827a049ff31b4b381e76b26e2d/regex-2026.1.15-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f052d1be37ef35a54e394de66136e30fa1191fab64f71fc06ac7bc98c9a84618", size = 782674, upload-time = "2026-01-14T23:13:59.874Z" }, + { url = "https://files.pythonhosted.org/packages/d2/ff/adf60063db24532add6a1676943754a5654dcac8237af024ede38244fd12/regex-2026.1.15-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6bfc31a37fd1592f0c4fc4bfc674b5c42e52efe45b4b7a6a14f334cca4bcebe4", size = 767906, upload-time = "2026-01-14T23:14:01.298Z" }, + { url = "https://files.pythonhosted.org/packages/af/3e/e6a216cee1e2780fec11afe7fc47b6f3925d7264e8149c607ac389fd9b1a/regex-2026.1.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3d6ce5ae80066b319ae3bc62fd55a557c9491baa5efd0d355f0de08c4ba54e79", size = 774798, upload-time = "2026-01-14T23:14:02.715Z" }, + { url = "https://files.pythonhosted.org/packages/0f/98/23a4a8378a9208514ed3efc7e7850c27fa01e00ed8557c958df0335edc4a/regex-2026.1.15-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:1704d204bd42b6bb80167df0e4554f35c255b579ba99616def38f69e14a5ccb9", size = 845861, upload-time = "2026-01-14T23:14:04.824Z" }, + { url = "https://files.pythonhosted.org/packages/f8/57/d7605a9d53bd07421a8785d349cd29677fe660e13674fa4c6cbd624ae354/regex-2026.1.15-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:e3174a5ed4171570dc8318afada56373aa9289eb6dc0d96cceb48e7358b0e220", size = 755648, upload-time = "2026-01-14T23:14:06.371Z" }, + { url = "https://files.pythonhosted.org/packages/6f/76/6f2e24aa192da1e299cc1101674a60579d3912391867ce0b946ba83e2194/regex-2026.1.15-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:87adf5bd6d72e3e17c9cb59ac4096b1faaf84b7eb3037a5ffa61c4b4370f0f13", size = 836250, upload-time = "2026-01-14T23:14:08.343Z" }, + { url = "https://files.pythonhosted.org/packages/11/3a/1f2a1d29453299a7858eab7759045fc3d9d1b429b088dec2dc85b6fa16a2/regex-2026.1.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e85dc94595f4d766bd7d872a9de5ede1ca8d3063f3bdf1e2c725f5eb411159e3", size = 779919, upload-time = "2026-01-14T23:14:09.954Z" }, + { url = "https://files.pythonhosted.org/packages/c0/67/eab9bc955c9dcc58e9b222c801e39cff7ca0b04261792a2149166ce7e792/regex-2026.1.15-cp310-cp310-win32.whl", hash = "sha256:21ca32c28c30d5d65fc9886ff576fc9b59bbca08933e844fa2363e530f4c8218", size = 265888, upload-time = "2026-01-14T23:14:11.35Z" }, + { url = "https://files.pythonhosted.org/packages/1d/62/31d16ae24e1f8803bddb0885508acecaec997fcdcde9c243787103119ae4/regex-2026.1.15-cp310-cp310-win_amd64.whl", hash = "sha256:3038a62fc7d6e5547b8915a3d927a0fbeef84cdbe0b1deb8c99bbd4a8961b52a", size = 277830, upload-time = "2026-01-14T23:14:12.908Z" }, + { url = "https://files.pythonhosted.org/packages/e5/36/5d9972bccd6417ecd5a8be319cebfd80b296875e7f116c37fb2a2deecebf/regex-2026.1.15-cp310-cp310-win_arm64.whl", hash = "sha256:505831646c945e3e63552cc1b1b9b514f0e93232972a2d5bedbcc32f15bc82e3", size = 270376, upload-time = "2026-01-14T23:14:14.782Z" }, + { url = "https://files.pythonhosted.org/packages/d0/c9/0c80c96eab96948363d270143138d671d5731c3a692b417629bf3492a9d6/regex-2026.1.15-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ae6020fb311f68d753b7efa9d4b9a5d47a5d6466ea0d5e3b5a471a960ea6e4a", size = 488168, upload-time = "2026-01-14T23:14:16.129Z" }, + { url = "https://files.pythonhosted.org/packages/17/f0/271c92f5389a552494c429e5cc38d76d1322eb142fb5db3c8ccc47751468/regex-2026.1.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eddf73f41225942c1f994914742afa53dc0d01a6e20fe14b878a1b1edc74151f", size = 290636, upload-time = "2026-01-14T23:14:17.715Z" }, + { url = "https://files.pythonhosted.org/packages/a0/f9/5f1fd077d106ca5655a0f9ff8f25a1ab55b92128b5713a91ed7134ff688e/regex-2026.1.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e8cd52557603f5c66a548f69421310886b28b7066853089e1a71ee710e1cdc1", size = 288496, upload-time = "2026-01-14T23:14:19.326Z" }, + { url = "https://files.pythonhosted.org/packages/b5/e1/8f43b03a4968c748858ec77f746c286d81f896c2e437ccf050ebc5d3128c/regex-2026.1.15-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5170907244b14303edc5978f522f16c974f32d3aa92109fabc2af52411c9433b", size = 793503, upload-time = "2026-01-14T23:14:20.922Z" }, + { url = "https://files.pythonhosted.org/packages/8d/4e/a39a5e8edc5377a46a7c875c2f9a626ed3338cb3bb06931be461c3e1a34a/regex-2026.1.15-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2748c1ec0663580b4510bd89941a31560b4b439a0b428b49472a3d9944d11cd8", size = 860535, upload-time = "2026-01-14T23:14:22.405Z" }, + { url = "https://files.pythonhosted.org/packages/dc/1c/9dce667a32a9477f7a2869c1c767dc00727284a9fa3ff5c09a5c6c03575e/regex-2026.1.15-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2f2775843ca49360508d080eaa87f94fa248e2c946bbcd963bb3aae14f333413", size = 907225, upload-time = "2026-01-14T23:14:23.897Z" }, + { url = "https://files.pythonhosted.org/packages/a4/3c/87ca0a02736d16b6262921425e84b48984e77d8e4e572c9072ce96e66c30/regex-2026.1.15-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9ea2604370efc9a174c1b5dcc81784fb040044232150f7f33756049edfc9026", size = 800526, upload-time = "2026-01-14T23:14:26.039Z" }, + { url = "https://files.pythonhosted.org/packages/4b/ff/647d5715aeea7c87bdcbd2f578f47b415f55c24e361e639fe8c0cc88878f/regex-2026.1.15-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0dcd31594264029b57bf16f37fd7248a70b3b764ed9e0839a8f271b2d22c0785", size = 773446, upload-time = "2026-01-14T23:14:28.109Z" }, + { url = "https://files.pythonhosted.org/packages/af/89/bf22cac25cb4ba0fe6bff52ebedbb65b77a179052a9d6037136ae93f42f4/regex-2026.1.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c08c1f3e34338256732bd6938747daa3c0d5b251e04b6e43b5813e94d503076e", size = 783051, upload-time = "2026-01-14T23:14:29.929Z" }, + { url = "https://files.pythonhosted.org/packages/1e/f4/6ed03e71dca6348a5188363a34f5e26ffd5db1404780288ff0d79513bce4/regex-2026.1.15-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e43a55f378df1e7a4fa3547c88d9a5a9b7113f653a66821bcea4718fe6c58763", size = 854485, upload-time = "2026-01-14T23:14:31.366Z" }, + { url = "https://files.pythonhosted.org/packages/d9/9a/8e8560bd78caded8eb137e3e47612430a05b9a772caf60876435192d670a/regex-2026.1.15-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:f82110ab962a541737bd0ce87978d4c658f06e7591ba899192e2712a517badbb", size = 762195, upload-time = "2026-01-14T23:14:32.802Z" }, + { url = "https://files.pythonhosted.org/packages/38/6b/61fc710f9aa8dfcd764fe27d37edfaa023b1a23305a0d84fccd5adb346ea/regex-2026.1.15-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:27618391db7bdaf87ac6c92b31e8f0dfb83a9de0075855152b720140bda177a2", size = 845986, upload-time = "2026-01-14T23:14:34.898Z" }, + { url = "https://files.pythonhosted.org/packages/fd/2e/fbee4cb93f9d686901a7ca8d94285b80405e8c34fe4107f63ffcbfb56379/regex-2026.1.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bfb0d6be01fbae8d6655c8ca21b3b72458606c4aec9bbc932db758d47aba6db1", size = 788992, upload-time = "2026-01-14T23:14:37.116Z" }, + { url = "https://files.pythonhosted.org/packages/ed/14/3076348f3f586de64b1ab75a3fbabdaab7684af7f308ad43be7ef1849e55/regex-2026.1.15-cp311-cp311-win32.whl", hash = "sha256:b10e42a6de0e32559a92f2f8dc908478cc0fa02838d7dbe764c44dca3fa13569", size = 265893, upload-time = "2026-01-14T23:14:38.426Z" }, + { url = "https://files.pythonhosted.org/packages/0f/19/772cf8b5fc803f5c89ba85d8b1870a1ca580dc482aa030383a9289c82e44/regex-2026.1.15-cp311-cp311-win_amd64.whl", hash = "sha256:e9bf3f0bbdb56633c07d7116ae60a576f846efdd86a8848f8d62b749e1209ca7", size = 277840, upload-time = "2026-01-14T23:14:39.785Z" }, + { url = "https://files.pythonhosted.org/packages/78/84/d05f61142709474da3c0853222d91086d3e1372bcdab516c6fd8d80f3297/regex-2026.1.15-cp311-cp311-win_arm64.whl", hash = "sha256:41aef6f953283291c4e4e6850607bd71502be67779586a61472beacb315c97ec", size = 270374, upload-time = "2026-01-14T23:14:41.592Z" }, + { url = "https://files.pythonhosted.org/packages/92/81/10d8cf43c807d0326efe874c1b79f22bfb0fb226027b0b19ebc26d301408/regex-2026.1.15-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:4c8fcc5793dde01641a35905d6731ee1548f02b956815f8f1cab89e515a5bdf1", size = 489398, upload-time = "2026-01-14T23:14:43.741Z" }, + { url = "https://files.pythonhosted.org/packages/90/b0/7c2a74e74ef2a7c32de724658a69a862880e3e4155cba992ba04d1c70400/regex-2026.1.15-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bfd876041a956e6a90ad7cdb3f6a630c07d491280bfeed4544053cd434901681", size = 291339, upload-time = "2026-01-14T23:14:45.183Z" }, + { url = "https://files.pythonhosted.org/packages/19/4d/16d0773d0c818417f4cc20aa0da90064b966d22cd62a8c46765b5bd2d643/regex-2026.1.15-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9250d087bc92b7d4899ccd5539a1b2334e44eee85d848c4c1aef8e221d3f8c8f", size = 289003, upload-time = "2026-01-14T23:14:47.25Z" }, + { url = "https://files.pythonhosted.org/packages/c6/e4/1fc4599450c9f0863d9406e944592d968b8d6dfd0d552a7d569e43bceada/regex-2026.1.15-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8a154cf6537ebbc110e24dabe53095e714245c272da9c1be05734bdad4a61aa", size = 798656, upload-time = "2026-01-14T23:14:48.77Z" }, + { url = "https://files.pythonhosted.org/packages/b2/e6/59650d73a73fa8a60b3a590545bfcf1172b4384a7df2e7fe7b9aab4e2da9/regex-2026.1.15-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8050ba2e3ea1d8731a549e83c18d2f0999fbc99a5f6bd06b4c91449f55291804", size = 864252, upload-time = "2026-01-14T23:14:50.528Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ab/1d0f4d50a1638849a97d731364c9a80fa304fec46325e48330c170ee8e80/regex-2026.1.15-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0bf065240704cb8951cc04972cf107063917022511273e0969bdb34fc173456c", size = 912268, upload-time = "2026-01-14T23:14:52.952Z" }, + { url = "https://files.pythonhosted.org/packages/dd/df/0d722c030c82faa1d331d1921ee268a4e8fb55ca8b9042c9341c352f17fa/regex-2026.1.15-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c32bef3e7aeee75746748643667668ef941d28b003bfc89994ecf09a10f7a1b5", size = 803589, upload-time = "2026-01-14T23:14:55.182Z" }, + { url = "https://files.pythonhosted.org/packages/66/23/33289beba7ccb8b805c6610a8913d0131f834928afc555b241caabd422a9/regex-2026.1.15-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d5eaa4a4c5b1906bd0d2508d68927f15b81821f85092e06f1a34a4254b0e1af3", size = 775700, upload-time = "2026-01-14T23:14:56.707Z" }, + { url = "https://files.pythonhosted.org/packages/e7/65/bf3a42fa6897a0d3afa81acb25c42f4b71c274f698ceabd75523259f6688/regex-2026.1.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:86c1077a3cc60d453d4084d5b9649065f3bf1184e22992bd322e1f081d3117fb", size = 787928, upload-time = "2026-01-14T23:14:58.312Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f5/13bf65864fc314f68cdd6d8ca94adcab064d4d39dbd0b10fef29a9da48fc/regex-2026.1.15-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:2b091aefc05c78d286657cd4db95f2e6313375ff65dcf085e42e4c04d9c8d410", size = 858607, upload-time = "2026-01-14T23:15:00.657Z" }, + { url = "https://files.pythonhosted.org/packages/a3/31/040e589834d7a439ee43fb0e1e902bc81bd58a5ba81acffe586bb3321d35/regex-2026.1.15-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:57e7d17f59f9ebfa9667e6e5a1c0127b96b87cb9cede8335482451ed00788ba4", size = 763729, upload-time = "2026-01-14T23:15:02.248Z" }, + { url = "https://files.pythonhosted.org/packages/9b/84/6921e8129687a427edf25a34a5594b588b6d88f491320b9de5b6339a4fcb/regex-2026.1.15-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:c6c4dcdfff2c08509faa15d36ba7e5ef5fcfab25f1e8f85a0c8f45bc3a30725d", size = 850697, upload-time = "2026-01-14T23:15:03.878Z" }, + { url = "https://files.pythonhosted.org/packages/8a/87/3d06143d4b128f4229158f2de5de6c8f2485170c7221e61bf381313314b2/regex-2026.1.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:cf8ff04c642716a7f2048713ddc6278c5fd41faa3b9cab12607c7abecd012c22", size = 789849, upload-time = "2026-01-14T23:15:06.102Z" }, + { url = "https://files.pythonhosted.org/packages/77/69/c50a63842b6bd48850ebc7ab22d46e7a2a32d824ad6c605b218441814639/regex-2026.1.15-cp312-cp312-win32.whl", hash = "sha256:82345326b1d8d56afbe41d881fdf62f1926d7264b2fc1537f99ae5da9aad7913", size = 266279, upload-time = "2026-01-14T23:15:07.678Z" }, + { url = "https://files.pythonhosted.org/packages/f2/36/39d0b29d087e2b11fd8191e15e81cce1b635fcc845297c67f11d0d19274d/regex-2026.1.15-cp312-cp312-win_amd64.whl", hash = "sha256:4def140aa6156bc64ee9912383d4038f3fdd18fee03a6f222abd4de6357ce42a", size = 277166, upload-time = "2026-01-14T23:15:09.257Z" }, + { url = "https://files.pythonhosted.org/packages/28/32/5b8e476a12262748851fa8ab1b0be540360692325975b094e594dfebbb52/regex-2026.1.15-cp312-cp312-win_arm64.whl", hash = "sha256:c6c565d9a6e1a8d783c1948937ffc377dd5771e83bd56de8317c450a954d2056", size = 270415, upload-time = "2026-01-14T23:15:10.743Z" }, + { url = "https://files.pythonhosted.org/packages/f8/2e/6870bb16e982669b674cce3ee9ff2d1d46ab80528ee6bcc20fb2292efb60/regex-2026.1.15-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e69d0deeb977ffe7ed3d2e4439360089f9c3f217ada608f0f88ebd67afb6385e", size = 489164, upload-time = "2026-01-14T23:15:13.962Z" }, + { url = "https://files.pythonhosted.org/packages/dc/67/9774542e203849b0286badf67199970a44ebdb0cc5fb739f06e47ada72f8/regex-2026.1.15-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3601ffb5375de85a16f407854d11cca8fe3f5febbe3ac78fb2866bb220c74d10", size = 291218, upload-time = "2026-01-14T23:15:15.647Z" }, + { url = "https://files.pythonhosted.org/packages/b2/87/b0cda79f22b8dee05f774922a214da109f9a4c0eca5da2c9d72d77ea062c/regex-2026.1.15-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4c5ef43b5c2d4114eb8ea424bb8c9cec01d5d17f242af88b2448f5ee81caadbc", size = 288895, upload-time = "2026-01-14T23:15:17.788Z" }, + { url = "https://files.pythonhosted.org/packages/3b/6a/0041f0a2170d32be01ab981d6346c83a8934277d82c780d60b127331f264/regex-2026.1.15-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:968c14d4f03e10b2fd960f1d5168c1f0ac969381d3c1fcc973bc45fb06346599", size = 798680, upload-time = "2026-01-14T23:15:19.342Z" }, + { url = "https://files.pythonhosted.org/packages/58/de/30e1cfcdbe3e891324aa7568b7c968771f82190df5524fabc1138cb2d45a/regex-2026.1.15-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:56a5595d0f892f214609c9f76b41b7428bed439d98dc961efafdd1354d42baae", size = 864210, upload-time = "2026-01-14T23:15:22.005Z" }, + { url = "https://files.pythonhosted.org/packages/64/44/4db2f5c5ca0ccd40ff052ae7b1e9731352fcdad946c2b812285a7505ca75/regex-2026.1.15-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0bf650f26087363434c4e560011f8e4e738f6f3e029b85d4904c50135b86cfa5", size = 912358, upload-time = "2026-01-14T23:15:24.569Z" }, + { url = "https://files.pythonhosted.org/packages/79/b6/e6a5665d43a7c42467138c8a2549be432bad22cbd206f5ec87162de74bd7/regex-2026.1.15-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18388a62989c72ac24de75f1449d0fb0b04dfccd0a1a7c1c43af5eb503d890f6", size = 803583, upload-time = "2026-01-14T23:15:26.526Z" }, + { url = "https://files.pythonhosted.org/packages/e7/53/7cd478222169d85d74d7437e74750005e993f52f335f7c04ff7adfda3310/regex-2026.1.15-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6d220a2517f5893f55daac983bfa9fe998a7dbcaee4f5d27a88500f8b7873788", size = 775782, upload-time = "2026-01-14T23:15:29.352Z" }, + { url = "https://files.pythonhosted.org/packages/ca/b5/75f9a9ee4b03a7c009fe60500fe550b45df94f0955ca29af16333ef557c5/regex-2026.1.15-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c9c08c2fbc6120e70abff5d7f28ffb4d969e14294fb2143b4b5c7d20e46d1714", size = 787978, upload-time = "2026-01-14T23:15:31.295Z" }, + { url = "https://files.pythonhosted.org/packages/72/b3/79821c826245bbe9ccbb54f6eadb7879c722fd3e0248c17bfc90bf54e123/regex-2026.1.15-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7ef7d5d4bd49ec7364315167a4134a015f61e8266c6d446fc116a9ac4456e10d", size = 858550, upload-time = "2026-01-14T23:15:33.558Z" }, + { url = "https://files.pythonhosted.org/packages/4a/85/2ab5f77a1c465745bfbfcb3ad63178a58337ae8d5274315e2cc623a822fa/regex-2026.1.15-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:6e42844ad64194fa08d5ccb75fe6a459b9b08e6d7296bd704460168d58a388f3", size = 763747, upload-time = "2026-01-14T23:15:35.206Z" }, + { url = "https://files.pythonhosted.org/packages/6d/84/c27df502d4bfe2873a3e3a7cf1bdb2b9cc10284d1a44797cf38bed790470/regex-2026.1.15-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:cfecdaa4b19f9ca534746eb3b55a5195d5c95b88cac32a205e981ec0a22b7d31", size = 850615, upload-time = "2026-01-14T23:15:37.523Z" }, + { url = "https://files.pythonhosted.org/packages/7d/b7/658a9782fb253680aa8ecb5ccbb51f69e088ed48142c46d9f0c99b46c575/regex-2026.1.15-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:08df9722d9b87834a3d701f3fca570b2be115654dbfd30179f30ab2f39d606d3", size = 789951, upload-time = "2026-01-14T23:15:39.582Z" }, + { url = "https://files.pythonhosted.org/packages/fc/2a/5928af114441e059f15b2f63e188bd00c6529b3051c974ade7444b85fcda/regex-2026.1.15-cp313-cp313-win32.whl", hash = "sha256:d426616dae0967ca225ab12c22274eb816558f2f99ccb4a1d52ca92e8baf180f", size = 266275, upload-time = "2026-01-14T23:15:42.108Z" }, + { url = "https://files.pythonhosted.org/packages/4f/16/5bfbb89e435897bff28cf0352a992ca719d9e55ebf8b629203c96b6ce4f7/regex-2026.1.15-cp313-cp313-win_amd64.whl", hash = "sha256:febd38857b09867d3ed3f4f1af7d241c5c50362e25ef43034995b77a50df494e", size = 277145, upload-time = "2026-01-14T23:15:44.244Z" }, + { url = "https://files.pythonhosted.org/packages/56/c1/a09ff7392ef4233296e821aec5f78c51be5e91ffde0d163059e50fd75835/regex-2026.1.15-cp313-cp313-win_arm64.whl", hash = "sha256:8e32f7896f83774f91499d239e24cebfadbc07639c1494bb7213983842348337", size = 270411, upload-time = "2026-01-14T23:15:45.858Z" }, + { url = "https://files.pythonhosted.org/packages/3c/38/0cfd5a78e5c6db00e6782fdae70458f89850ce95baa5e8694ab91d89744f/regex-2026.1.15-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:ec94c04149b6a7b8120f9f44565722c7ae31b7a6d2275569d2eefa76b83da3be", size = 492068, upload-time = "2026-01-14T23:15:47.616Z" }, + { url = "https://files.pythonhosted.org/packages/50/72/6c86acff16cb7c959c4355826bbf06aad670682d07c8f3998d9ef4fee7cd/regex-2026.1.15-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:40c86d8046915bb9aeb15d3f3f15b6fd500b8ea4485b30e1bbc799dab3fe29f8", size = 292756, upload-time = "2026-01-14T23:15:49.307Z" }, + { url = "https://files.pythonhosted.org/packages/4e/58/df7fb69eadfe76526ddfce28abdc0af09ffe65f20c2c90932e89d705153f/regex-2026.1.15-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:726ea4e727aba21643205edad8f2187ec682d3305d790f73b7a51c7587b64bdd", size = 291114, upload-time = "2026-01-14T23:15:51.484Z" }, + { url = "https://files.pythonhosted.org/packages/ed/6c/a4011cd1cf96b90d2cdc7e156f91efbd26531e822a7fbb82a43c1016678e/regex-2026.1.15-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1cb740d044aff31898804e7bf1181cc72c03d11dfd19932b9911ffc19a79070a", size = 807524, upload-time = "2026-01-14T23:15:53.102Z" }, + { url = "https://files.pythonhosted.org/packages/1d/25/a53ffb73183f69c3e9f4355c4922b76d2840aee160af6af5fac229b6201d/regex-2026.1.15-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:05d75a668e9ea16f832390d22131fe1e8acc8389a694c8febc3e340b0f810b93", size = 873455, upload-time = "2026-01-14T23:15:54.956Z" }, + { url = "https://files.pythonhosted.org/packages/66/0b/8b47fc2e8f97d9b4a851736f3890a5f786443aa8901061c55f24c955f45b/regex-2026.1.15-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d991483606f3dbec93287b9f35596f41aa2e92b7c2ebbb935b63f409e243c9af", size = 915007, upload-time = "2026-01-14T23:15:57.041Z" }, + { url = "https://files.pythonhosted.org/packages/c2/fa/97de0d681e6d26fabe71968dbee06dd52819e9a22fdce5dac7256c31ed84/regex-2026.1.15-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:194312a14819d3e44628a44ed6fea6898fdbecb0550089d84c403475138d0a09", size = 812794, upload-time = "2026-01-14T23:15:58.916Z" }, + { url = "https://files.pythonhosted.org/packages/22/38/e752f94e860d429654aa2b1c51880bff8dfe8f084268258adf9151cf1f53/regex-2026.1.15-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fe2fda4110a3d0bc163c2e0664be44657431440722c5c5315c65155cab92f9e5", size = 781159, upload-time = "2026-01-14T23:16:00.817Z" }, + { url = "https://files.pythonhosted.org/packages/e9/a7/d739ffaef33c378fc888302a018d7f81080393d96c476b058b8c64fd2b0d/regex-2026.1.15-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:124dc36c85d34ef2d9164da41a53c1c8c122cfb1f6e1ec377a1f27ee81deb794", size = 795558, upload-time = "2026-01-14T23:16:03.267Z" }, + { url = "https://files.pythonhosted.org/packages/3e/c4/542876f9a0ac576100fc73e9c75b779f5c31e3527576cfc9cb3009dcc58a/regex-2026.1.15-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:a1774cd1981cd212506a23a14dba7fdeaee259f5deba2df6229966d9911e767a", size = 868427, upload-time = "2026-01-14T23:16:05.646Z" }, + { url = "https://files.pythonhosted.org/packages/fc/0f/d5655bea5b22069e32ae85a947aa564912f23758e112cdb74212848a1a1b/regex-2026.1.15-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:b5f7d8d2867152cdb625e72a530d2ccb48a3d199159144cbdd63870882fb6f80", size = 769939, upload-time = "2026-01-14T23:16:07.542Z" }, + { url = "https://files.pythonhosted.org/packages/20/06/7e18a4fa9d326daeda46d471a44ef94201c46eaa26dbbb780b5d92cbfdda/regex-2026.1.15-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:492534a0ab925d1db998defc3c302dae3616a2fc3fe2e08db1472348f096ddf2", size = 854753, upload-time = "2026-01-14T23:16:10.395Z" }, + { url = "https://files.pythonhosted.org/packages/3b/67/dc8946ef3965e166f558ef3b47f492bc364e96a265eb4a2bb3ca765c8e46/regex-2026.1.15-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c661fc820cfb33e166bf2450d3dadbda47c8d8981898adb9b6fe24e5e582ba60", size = 799559, upload-time = "2026-01-14T23:16:12.347Z" }, + { url = "https://files.pythonhosted.org/packages/a5/61/1bba81ff6d50c86c65d9fd84ce9699dd106438ee4cdb105bf60374ee8412/regex-2026.1.15-cp313-cp313t-win32.whl", hash = "sha256:99ad739c3686085e614bf77a508e26954ff1b8f14da0e3765ff7abbf7799f952", size = 268879, upload-time = "2026-01-14T23:16:14.049Z" }, + { url = "https://files.pythonhosted.org/packages/e9/5e/cef7d4c5fb0ea3ac5c775fd37db5747f7378b29526cc83f572198924ff47/regex-2026.1.15-cp313-cp313t-win_amd64.whl", hash = "sha256:32655d17905e7ff8ba5c764c43cb124e34a9245e45b83c22e81041e1071aee10", size = 280317, upload-time = "2026-01-14T23:16:15.718Z" }, + { url = "https://files.pythonhosted.org/packages/b4/52/4317f7a5988544e34ab57b4bde0f04944c4786128c933fb09825924d3e82/regex-2026.1.15-cp313-cp313t-win_arm64.whl", hash = "sha256:b2a13dd6a95e95a489ca242319d18fc02e07ceb28fa9ad146385194d95b3c829", size = 271551, upload-time = "2026-01-14T23:16:17.533Z" }, ] [[package]] @@ -3686,9 +3736,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload_time = "2025-08-18T20:46:02.573Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload_time = "2025-08-18T20:46:00.542Z" }, + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, ] [[package]] @@ -3698,9 +3748,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3c/f8/5dc70102e4d337063452c82e1f0d95e39abfe67aa222ed8a5ddeb9df8de8/requests_file-3.0.1.tar.gz", hash = "sha256:f14243d7796c588f3521bd423c5dea2ee4cc730e54a3cac9574d78aca1272576", size = 6967, upload_time = "2025-10-20T18:56:42.279Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3c/f8/5dc70102e4d337063452c82e1f0d95e39abfe67aa222ed8a5ddeb9df8de8/requests_file-3.0.1.tar.gz", hash = "sha256:f14243d7796c588f3521bd423c5dea2ee4cc730e54a3cac9574d78aca1272576", size = 6967, upload-time = "2025-10-20T18:56:42.279Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/d5/de8f089119205a09da657ed4784c584ede8381a0ce6821212a6d4ca47054/requests_file-3.0.1-py2.py3-none-any.whl", hash = "sha256:d0f5eb94353986d998f80ac63c7f146a307728be051d4d1cd390dbdb59c10fa2", size = 4514, upload_time = "2025-10-20T18:56:41.184Z" }, + { url = "https://files.pythonhosted.org/packages/e1/d5/de8f089119205a09da657ed4784c584ede8381a0ce6821212a6d4ca47054/requests_file-3.0.1-py2.py3-none-any.whl", hash = "sha256:d0f5eb94353986d998f80ac63c7f146a307728be051d4d1cd390dbdb59c10fa2", size = 4514, upload-time = "2025-10-20T18:56:41.184Z" }, ] [[package]] @@ -3710,9 +3760,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888, upload_time = "2023-05-01T04:11:33.229Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888, upload-time = "2023-05-01T04:11:33.229Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481, upload_time = "2023-05-01T04:11:28.427Z" }, + { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481, upload-time = "2023-05-01T04:11:28.427Z" }, ] [[package]] @@ -3722,18 +3772,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload_time = "2021-05-12T16:37:54.178Z" } +sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload-time = "2021-05-12T16:37:54.178Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload_time = "2021-05-12T16:37:52.536Z" }, + { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload-time = "2021-05-12T16:37:52.536Z" }, ] [[package]] name = "rfc3986-validator" version = "0.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760, upload_time = "2019-10-28T16:00:19.144Z" } +sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760, upload-time = "2019-10-28T16:00:19.144Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload_time = "2019-10-28T16:00:13.976Z" }, + { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload-time = "2019-10-28T16:00:13.976Z" }, ] [[package]] @@ -3743,9 +3793,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "lark" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2c/06/37c1a5557acf449e8e406a830a05bf885ac47d33270aec454ef78675008d/rfc3987_syntax-1.1.0.tar.gz", hash = "sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d", size = 14239, upload_time = "2025-07-18T01:05:05.015Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/06/37c1a5557acf449e8e406a830a05bf885ac47d33270aec454ef78675008d/rfc3987_syntax-1.1.0.tar.gz", hash = "sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d", size = 14239, upload-time = "2025-07-18T01:05:05.015Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/71/44ce230e1b7fadd372515a97e32a83011f906ddded8d03e3c6aafbdedbb7/rfc3987_syntax-1.1.0-py3-none-any.whl", hash = "sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f", size = 8046, upload_time = "2025-07-18T01:05:03.843Z" }, + { url = "https://files.pythonhosted.org/packages/7e/71/44ce230e1b7fadd372515a97e32a83011f906ddded8d03e3c6aafbdedbb7/rfc3987_syntax-1.1.0-py3-none-any.whl", hash = "sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f", size = 8046, upload-time = "2025-07-18T01:05:03.843Z" }, ] [[package]] @@ -3756,9 +3806,9 @@ dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/74/99/a4cab2acbb884f80e558b0771e97e21e939c5dfb460f488d19df485e8298/rich-14.3.2.tar.gz", hash = "sha256:e712f11c1a562a11843306f5ed999475f09ac31ffb64281f73ab29ffdda8b3b8", size = 230143, upload_time = "2026-02-01T16:20:47.908Z" } +sdist = { url = "https://files.pythonhosted.org/packages/74/99/a4cab2acbb884f80e558b0771e97e21e939c5dfb460f488d19df485e8298/rich-14.3.2.tar.gz", hash = "sha256:e712f11c1a562a11843306f5ed999475f09ac31ffb64281f73ab29ffdda8b3b8", size = 230143, upload-time = "2026-02-01T16:20:47.908Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/45/615f5babd880b4bd7d405cc0dc348234c5ffb6ed1ea33e152ede08b2072d/rich-14.3.2-py3-none-any.whl", hash = "sha256:08e67c3e90884651da3239ea668222d19bea7b589149d8014a21c633420dbb69", size = 309963, upload_time = "2026-02-01T16:20:46.078Z" }, + { url = "https://files.pythonhosted.org/packages/ef/45/615f5babd880b4bd7d405cc0dc348234c5ffb6ed1ea33e152ede08b2072d/rich-14.3.2-py3-none-any.whl", hash = "sha256:08e67c3e90884651da3239ea668222d19bea7b589149d8014a21c633420dbb69", size = 309963, upload-time = "2026-02-01T16:20:46.078Z" }, ] [[package]] @@ -3770,162 +3820,162 @@ dependencies = [ { name = "rich" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d0/c9/4bbf4bfee195ed1b7d7a6733cc523ca61dbfb4a3e3c12ea090aaffd97597/rich_toolkit-0.19.4.tar.gz", hash = "sha256:52e23d56f9dc30d1343eb3b3f6f18764c313fbfea24e52e6a1d6069bec9c18eb", size = 193951, upload_time = "2026-02-12T10:08:15.814Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/c9/4bbf4bfee195ed1b7d7a6733cc523ca61dbfb4a3e3c12ea090aaffd97597/rich_toolkit-0.19.4.tar.gz", hash = "sha256:52e23d56f9dc30d1343eb3b3f6f18764c313fbfea24e52e6a1d6069bec9c18eb", size = 193951, upload-time = "2026-02-12T10:08:15.814Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/28/31/97d39719def09c134385bfcfbedfed255168b571e7beb3ad7765aae660ca/rich_toolkit-0.19.4-py3-none-any.whl", hash = "sha256:34ac344de8862801644be8b703e26becf44b047e687f208d7829e8f7cfc311d6", size = 32757, upload_time = "2026-02-12T10:08:15.037Z" }, + { url = "https://files.pythonhosted.org/packages/28/31/97d39719def09c134385bfcfbedfed255168b571e7beb3ad7765aae660ca/rich_toolkit-0.19.4-py3-none-any.whl", hash = "sha256:34ac344de8862801644be8b703e26becf44b047e687f208d7829e8f7cfc311d6", size = 32757, upload-time = "2026-02-12T10:08:15.037Z" }, ] [[package]] name = "rpds-py" version = "0.30.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/af/3f2f423103f1113b36230496629986e0ef7e199d2aa8392452b484b38ced/rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84", size = 69469, upload_time = "2025-11-30T20:24:38.837Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/06/0c/0c411a0ec64ccb6d104dcabe0e713e05e153a9a2c3c2bd2b32ce412166fe/rpds_py-0.30.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:679ae98e00c0e8d68a7fda324e16b90fd5260945b45d3b824c892cec9eea3288", size = 370490, upload_time = "2025-11-30T20:21:33.256Z" }, - { url = "https://files.pythonhosted.org/packages/19/6a/4ba3d0fb7297ebae71171822554abe48d7cab29c28b8f9f2c04b79988c05/rpds_py-0.30.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4cc2206b76b4f576934f0ed374b10d7ca5f457858b157ca52064bdfc26b9fc00", size = 359751, upload_time = "2025-11-30T20:21:34.591Z" }, - { url = "https://files.pythonhosted.org/packages/cd/7c/e4933565ef7f7a0818985d87c15d9d273f1a649afa6a52ea35ad011195ea/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:389a2d49eded1896c3d48b0136ead37c48e221b391c052fba3f4055c367f60a6", size = 389696, upload_time = "2025-11-30T20:21:36.122Z" }, - { url = "https://files.pythonhosted.org/packages/5e/01/6271a2511ad0815f00f7ed4390cf2567bec1d4b1da39e2c27a41e6e3b4de/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:32c8528634e1bf7121f3de08fa85b138f4e0dc47657866630611b03967f041d7", size = 403136, upload_time = "2025-11-30T20:21:37.728Z" }, - { url = "https://files.pythonhosted.org/packages/55/64/c857eb7cd7541e9b4eee9d49c196e833128a55b89a9850a9c9ac33ccf897/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f207f69853edd6f6700b86efb84999651baf3789e78a466431df1331608e5324", size = 524699, upload_time = "2025-11-30T20:21:38.92Z" }, - { url = "https://files.pythonhosted.org/packages/9c/ed/94816543404078af9ab26159c44f9e98e20fe47e2126d5d32c9d9948d10a/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:67b02ec25ba7a9e8fa74c63b6ca44cf5707f2fbfadae3ee8e7494297d56aa9df", size = 412022, upload_time = "2025-11-30T20:21:40.407Z" }, - { url = "https://files.pythonhosted.org/packages/61/b5/707f6cf0066a6412aacc11d17920ea2e19e5b2f04081c64526eb35b5c6e7/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0e95f6819a19965ff420f65578bacb0b00f251fefe2c8b23347c37174271f3", size = 390522, upload_time = "2025-11-30T20:21:42.17Z" }, - { url = "https://files.pythonhosted.org/packages/13/4e/57a85fda37a229ff4226f8cbcf09f2a455d1ed20e802ce5b2b4a7f5ed053/rpds_py-0.30.0-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:a452763cc5198f2f98898eb98f7569649fe5da666c2dc6b5ddb10fde5a574221", size = 404579, upload_time = "2025-11-30T20:21:43.769Z" }, - { url = "https://files.pythonhosted.org/packages/f9/da/c9339293513ec680a721e0e16bf2bac3db6e5d7e922488de471308349bba/rpds_py-0.30.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e0b65193a413ccc930671c55153a03ee57cecb49e6227204b04fae512eb657a7", size = 421305, upload_time = "2025-11-30T20:21:44.994Z" }, - { url = "https://files.pythonhosted.org/packages/f9/be/522cb84751114f4ad9d822ff5a1aa3c98006341895d5f084779b99596e5c/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:858738e9c32147f78b3ac24dc0edb6610000e56dc0f700fd5f651d0a0f0eb9ff", size = 572503, upload_time = "2025-11-30T20:21:46.91Z" }, - { url = "https://files.pythonhosted.org/packages/a2/9b/de879f7e7ceddc973ea6e4629e9b380213a6938a249e94b0cdbcc325bb66/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:da279aa314f00acbb803da1e76fa18666778e8a8f83484fba94526da5de2cba7", size = 598322, upload_time = "2025-11-30T20:21:48.709Z" }, - { url = "https://files.pythonhosted.org/packages/48/ac/f01fc22efec3f37d8a914fc1b2fb9bcafd56a299edbe96406f3053edea5a/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7c64d38fb49b6cdeda16ab49e35fe0da2e1e9b34bc38bd78386530f218b37139", size = 560792, upload_time = "2025-11-30T20:21:50.024Z" }, - { url = "https://files.pythonhosted.org/packages/e2/da/4e2b19d0f131f35b6146425f846563d0ce036763e38913d917187307a671/rpds_py-0.30.0-cp310-cp310-win32.whl", hash = "sha256:6de2a32a1665b93233cde140ff8b3467bdb9e2af2b91079f0333a0974d12d464", size = 221901, upload_time = "2025-11-30T20:21:51.32Z" }, - { url = "https://files.pythonhosted.org/packages/96/cb/156d7a5cf4f78a7cc571465d8aec7a3c447c94f6749c5123f08438bcf7bc/rpds_py-0.30.0-cp310-cp310-win_amd64.whl", hash = "sha256:1726859cd0de969f88dc8673bdd954185b9104e05806be64bcd87badbe313169", size = 235823, upload_time = "2025-11-30T20:21:52.505Z" }, - { url = "https://files.pythonhosted.org/packages/4d/6e/f964e88b3d2abee2a82c1ac8366da848fce1c6d834dc2132c3fda3970290/rpds_py-0.30.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a2bffea6a4ca9f01b3f8e548302470306689684e61602aa3d141e34da06cf425", size = 370157, upload_time = "2025-11-30T20:21:53.789Z" }, - { url = "https://files.pythonhosted.org/packages/94/ba/24e5ebb7c1c82e74c4e4f33b2112a5573ddc703915b13a073737b59b86e0/rpds_py-0.30.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dc4f992dfe1e2bc3ebc7444f6c7051b4bc13cd8e33e43511e8ffd13bf407010d", size = 359676, upload_time = "2025-11-30T20:21:55.475Z" }, - { url = "https://files.pythonhosted.org/packages/84/86/04dbba1b087227747d64d80c3b74df946b986c57af0a9f0c98726d4d7a3b/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:422c3cb9856d80b09d30d2eb255d0754b23e090034e1deb4083f8004bd0761e4", size = 389938, upload_time = "2025-11-30T20:21:57.079Z" }, - { url = "https://files.pythonhosted.org/packages/42/bb/1463f0b1722b7f45431bdd468301991d1328b16cffe0b1c2918eba2c4eee/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07ae8a593e1c3c6b82ca3292efbe73c30b61332fd612e05abee07c79359f292f", size = 402932, upload_time = "2025-11-30T20:21:58.47Z" }, - { url = "https://files.pythonhosted.org/packages/99/ee/2520700a5c1f2d76631f948b0736cdf9b0acb25abd0ca8e889b5c62ac2e3/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12f90dd7557b6bd57f40abe7747e81e0c0b119bef015ea7726e69fe550e394a4", size = 525830, upload_time = "2025-11-30T20:21:59.699Z" }, - { url = "https://files.pythonhosted.org/packages/e0/ad/bd0331f740f5705cc555a5e17fdf334671262160270962e69a2bdef3bf76/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99b47d6ad9a6da00bec6aabe5a6279ecd3c06a329d4aa4771034a21e335c3a97", size = 412033, upload_time = "2025-11-30T20:22:00.991Z" }, - { url = "https://files.pythonhosted.org/packages/f8/1e/372195d326549bb51f0ba0f2ecb9874579906b97e08880e7a65c3bef1a99/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33f559f3104504506a44bb666b93a33f5d33133765b0c216a5bf2f1e1503af89", size = 390828, upload_time = "2025-11-30T20:22:02.723Z" }, - { url = "https://files.pythonhosted.org/packages/ab/2b/d88bb33294e3e0c76bc8f351a3721212713629ffca1700fa94979cb3eae8/rpds_py-0.30.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:946fe926af6e44f3697abbc305ea168c2c31d3e3ef1058cf68f379bf0335a78d", size = 404683, upload_time = "2025-11-30T20:22:04.367Z" }, - { url = "https://files.pythonhosted.org/packages/50/32/c759a8d42bcb5289c1fac697cd92f6fe01a018dd937e62ae77e0e7f15702/rpds_py-0.30.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:495aeca4b93d465efde585977365187149e75383ad2684f81519f504f5c13038", size = 421583, upload_time = "2025-11-30T20:22:05.814Z" }, - { url = "https://files.pythonhosted.org/packages/2b/81/e729761dbd55ddf5d84ec4ff1f47857f4374b0f19bdabfcf929164da3e24/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9a0ca5da0386dee0655b4ccdf46119df60e0f10da268d04fe7cc87886872ba7", size = 572496, upload_time = "2025-11-30T20:22:07.713Z" }, - { url = "https://files.pythonhosted.org/packages/14/f6/69066a924c3557c9c30baa6ec3a0aa07526305684c6f86c696b08860726c/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8d6d1cc13664ec13c1b84241204ff3b12f9bb82464b8ad6e7a5d3486975c2eed", size = 598669, upload_time = "2025-11-30T20:22:09.312Z" }, - { url = "https://files.pythonhosted.org/packages/5f/48/905896b1eb8a05630d20333d1d8ffd162394127b74ce0b0784ae04498d32/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3896fa1be39912cf0757753826bc8bdc8ca331a28a7c4ae46b7a21280b06bb85", size = 561011, upload_time = "2025-11-30T20:22:11.309Z" }, - { url = "https://files.pythonhosted.org/packages/22/16/cd3027c7e279d22e5eb431dd3c0fbc677bed58797fe7581e148f3f68818b/rpds_py-0.30.0-cp311-cp311-win32.whl", hash = "sha256:55f66022632205940f1827effeff17c4fa7ae1953d2b74a8581baaefb7d16f8c", size = 221406, upload_time = "2025-11-30T20:22:13.101Z" }, - { url = "https://files.pythonhosted.org/packages/fa/5b/e7b7aa136f28462b344e652ee010d4de26ee9fd16f1bfd5811f5153ccf89/rpds_py-0.30.0-cp311-cp311-win_amd64.whl", hash = "sha256:a51033ff701fca756439d641c0ad09a41d9242fa69121c7d8769604a0a629825", size = 236024, upload_time = "2025-11-30T20:22:14.853Z" }, - { url = "https://files.pythonhosted.org/packages/14/a6/364bba985e4c13658edb156640608f2c9e1d3ea3c81b27aa9d889fff0e31/rpds_py-0.30.0-cp311-cp311-win_arm64.whl", hash = "sha256:47b0ef6231c58f506ef0b74d44e330405caa8428e770fec25329ed2cb971a229", size = 229069, upload_time = "2025-11-30T20:22:16.577Z" }, - { url = "https://files.pythonhosted.org/packages/03/e7/98a2f4ac921d82f33e03f3835f5bf3a4a40aa1bfdc57975e74a97b2b4bdd/rpds_py-0.30.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad", size = 375086, upload_time = "2025-11-30T20:22:17.93Z" }, - { url = "https://files.pythonhosted.org/packages/4d/a1/bca7fd3d452b272e13335db8d6b0b3ecde0f90ad6f16f3328c6fb150c889/rpds_py-0.30.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05", size = 359053, upload_time = "2025-11-30T20:22:19.297Z" }, - { url = "https://files.pythonhosted.org/packages/65/1c/ae157e83a6357eceff62ba7e52113e3ec4834a84cfe07fa4b0757a7d105f/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28", size = 390763, upload_time = "2025-11-30T20:22:21.661Z" }, - { url = "https://files.pythonhosted.org/packages/d4/36/eb2eb8515e2ad24c0bd43c3ee9cd74c33f7ca6430755ccdb240fd3144c44/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd", size = 408951, upload_time = "2025-11-30T20:22:23.408Z" }, - { url = "https://files.pythonhosted.org/packages/d6/65/ad8dc1784a331fabbd740ef6f71ce2198c7ed0890dab595adb9ea2d775a1/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f", size = 514622, upload_time = "2025-11-30T20:22:25.16Z" }, - { url = "https://files.pythonhosted.org/packages/63/8e/0cfa7ae158e15e143fe03993b5bcd743a59f541f5952e1546b1ac1b5fd45/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1", size = 414492, upload_time = "2025-11-30T20:22:26.505Z" }, - { url = "https://files.pythonhosted.org/packages/60/1b/6f8f29f3f995c7ffdde46a626ddccd7c63aefc0efae881dc13b6e5d5bb16/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23", size = 394080, upload_time = "2025-11-30T20:22:27.934Z" }, - { url = "https://files.pythonhosted.org/packages/6d/d5/a266341051a7a3ca2f4b750a3aa4abc986378431fc2da508c5034d081b70/rpds_py-0.30.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6", size = 408680, upload_time = "2025-11-30T20:22:29.341Z" }, - { url = "https://files.pythonhosted.org/packages/10/3b/71b725851df9ab7a7a4e33cf36d241933da66040d195a84781f49c50490c/rpds_py-0.30.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51", size = 423589, upload_time = "2025-11-30T20:22:31.469Z" }, - { url = "https://files.pythonhosted.org/packages/00/2b/e59e58c544dc9bd8bd8384ecdb8ea91f6727f0e37a7131baeff8d6f51661/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5", size = 573289, upload_time = "2025-11-30T20:22:32.997Z" }, - { url = "https://files.pythonhosted.org/packages/da/3e/a18e6f5b460893172a7d6a680e86d3b6bc87a54c1f0b03446a3c8c7b588f/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e", size = 599737, upload_time = "2025-11-30T20:22:34.419Z" }, - { url = "https://files.pythonhosted.org/packages/5c/e2/714694e4b87b85a18e2c243614974413c60aa107fd815b8cbc42b873d1d7/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394", size = 563120, upload_time = "2025-11-30T20:22:35.903Z" }, - { url = "https://files.pythonhosted.org/packages/6f/ab/d5d5e3bcedb0a77f4f613706b750e50a5a3ba1c15ccd3665ecc636c968fd/rpds_py-0.30.0-cp312-cp312-win32.whl", hash = "sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf", size = 223782, upload_time = "2025-11-30T20:22:37.271Z" }, - { url = "https://files.pythonhosted.org/packages/39/3b/f786af9957306fdc38a74cef405b7b93180f481fb48453a114bb6465744a/rpds_py-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b", size = 240463, upload_time = "2025-11-30T20:22:39.021Z" }, - { url = "https://files.pythonhosted.org/packages/f3/d2/b91dc748126c1559042cfe41990deb92c4ee3e2b415f6b5234969ffaf0cc/rpds_py-0.30.0-cp312-cp312-win_arm64.whl", hash = "sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e", size = 230868, upload_time = "2025-11-30T20:22:40.493Z" }, - { url = "https://files.pythonhosted.org/packages/ed/dc/d61221eb88ff410de3c49143407f6f3147acf2538c86f2ab7ce65ae7d5f9/rpds_py-0.30.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f83424d738204d9770830d35290ff3273fbb02b41f919870479fab14b9d303b2", size = 374887, upload_time = "2025-11-30T20:22:41.812Z" }, - { url = "https://files.pythonhosted.org/packages/fd/32/55fb50ae104061dbc564ef15cc43c013dc4a9f4527a1f4d99baddf56fe5f/rpds_py-0.30.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7536cd91353c5273434b4e003cbda89034d67e7710eab8761fd918ec6c69cf8", size = 358904, upload_time = "2025-11-30T20:22:43.479Z" }, - { url = "https://files.pythonhosted.org/packages/58/70/faed8186300e3b9bdd138d0273109784eea2396c68458ed580f885dfe7ad/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2771c6c15973347f50fece41fc447c054b7ac2ae0502388ce3b6738cd366e3d4", size = 389945, upload_time = "2025-11-30T20:22:44.819Z" }, - { url = "https://files.pythonhosted.org/packages/bd/a8/073cac3ed2c6387df38f71296d002ab43496a96b92c823e76f46b8af0543/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0a59119fc6e3f460315fe9d08149f8102aa322299deaa5cab5b40092345c2136", size = 407783, upload_time = "2025-11-30T20:22:46.103Z" }, - { url = "https://files.pythonhosted.org/packages/77/57/5999eb8c58671f1c11eba084115e77a8899d6e694d2a18f69f0ba471ec8b/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76fec018282b4ead0364022e3c54b60bf368b9d926877957a8624b58419169b7", size = 515021, upload_time = "2025-11-30T20:22:47.458Z" }, - { url = "https://files.pythonhosted.org/packages/e0/af/5ab4833eadc36c0a8ed2bc5c0de0493c04f6c06de223170bd0798ff98ced/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:692bef75a5525db97318e8cd061542b5a79812d711ea03dbc1f6f8dbb0c5f0d2", size = 414589, upload_time = "2025-11-30T20:22:48.872Z" }, - { url = "https://files.pythonhosted.org/packages/b7/de/f7192e12b21b9e9a68a6d0f249b4af3fdcdff8418be0767a627564afa1f1/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9027da1ce107104c50c81383cae773ef5c24d296dd11c99e2629dbd7967a20c6", size = 394025, upload_time = "2025-11-30T20:22:50.196Z" }, - { url = "https://files.pythonhosted.org/packages/91/c4/fc70cd0249496493500e7cc2de87504f5aa6509de1e88623431fec76d4b6/rpds_py-0.30.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:9cf69cdda1f5968a30a359aba2f7f9aa648a9ce4b580d6826437f2b291cfc86e", size = 408895, upload_time = "2025-11-30T20:22:51.87Z" }, - { url = "https://files.pythonhosted.org/packages/58/95/d9275b05ab96556fefff73a385813eb66032e4c99f411d0795372d9abcea/rpds_py-0.30.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a4796a717bf12b9da9d3ad002519a86063dcac8988b030e405704ef7d74d2d9d", size = 422799, upload_time = "2025-11-30T20:22:53.341Z" }, - { url = "https://files.pythonhosted.org/packages/06/c1/3088fc04b6624eb12a57eb814f0d4997a44b0d208d6cace713033ff1a6ba/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5d4c2aa7c50ad4728a094ebd5eb46c452e9cb7edbfdb18f9e1221f597a73e1e7", size = 572731, upload_time = "2025-11-30T20:22:54.778Z" }, - { url = "https://files.pythonhosted.org/packages/d8/42/c612a833183b39774e8ac8fecae81263a68b9583ee343db33ab571a7ce55/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ba81a9203d07805435eb06f536d95a266c21e5b2dfbf6517748ca40c98d19e31", size = 599027, upload_time = "2025-11-30T20:22:56.212Z" }, - { url = "https://files.pythonhosted.org/packages/5f/60/525a50f45b01d70005403ae0e25f43c0384369ad24ffe46e8d9068b50086/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:945dccface01af02675628334f7cf49c2af4c1c904748efc5cf7bbdf0b579f95", size = 563020, upload_time = "2025-11-30T20:22:58.2Z" }, - { url = "https://files.pythonhosted.org/packages/0b/5d/47c4655e9bcd5ca907148535c10e7d489044243cc9941c16ed7cd53be91d/rpds_py-0.30.0-cp313-cp313-win32.whl", hash = "sha256:b40fb160a2db369a194cb27943582b38f79fc4887291417685f3ad693c5a1d5d", size = 223139, upload_time = "2025-11-30T20:23:00.209Z" }, - { url = "https://files.pythonhosted.org/packages/f2/e1/485132437d20aa4d3e1d8b3fb5a5e65aa8139f1e097080c2a8443201742c/rpds_py-0.30.0-cp313-cp313-win_amd64.whl", hash = "sha256:806f36b1b605e2d6a72716f321f20036b9489d29c51c91f4dd29a3e3afb73b15", size = 240224, upload_time = "2025-11-30T20:23:02.008Z" }, - { url = "https://files.pythonhosted.org/packages/24/95/ffd128ed1146a153d928617b0ef673960130be0009c77d8fbf0abe306713/rpds_py-0.30.0-cp313-cp313-win_arm64.whl", hash = "sha256:d96c2086587c7c30d44f31f42eae4eac89b60dabbac18c7669be3700f13c3ce1", size = 230645, upload_time = "2025-11-30T20:23:03.43Z" }, - { url = "https://files.pythonhosted.org/packages/ff/1b/b10de890a0def2a319a2626334a7f0ae388215eb60914dbac8a3bae54435/rpds_py-0.30.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:eb0b93f2e5c2189ee831ee43f156ed34e2a89a78a66b98cadad955972548be5a", size = 364443, upload_time = "2025-11-30T20:23:04.878Z" }, - { url = "https://files.pythonhosted.org/packages/0d/bf/27e39f5971dc4f305a4fb9c672ca06f290f7c4e261c568f3dea16a410d47/rpds_py-0.30.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:922e10f31f303c7c920da8981051ff6d8c1a56207dbdf330d9047f6d30b70e5e", size = 353375, upload_time = "2025-11-30T20:23:06.342Z" }, - { url = "https://files.pythonhosted.org/packages/40/58/442ada3bba6e8e6615fc00483135c14a7538d2ffac30e2d933ccf6852232/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdc62c8286ba9bf7f47befdcea13ea0e26bf294bda99758fd90535cbaf408000", size = 383850, upload_time = "2025-11-30T20:23:07.825Z" }, - { url = "https://files.pythonhosted.org/packages/14/14/f59b0127409a33c6ef6f5c1ebd5ad8e32d7861c9c7adfa9a624fc3889f6c/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47f9a91efc418b54fb8190a6b4aa7813a23fb79c51f4bb84e418f5476c38b8db", size = 392812, upload_time = "2025-11-30T20:23:09.228Z" }, - { url = "https://files.pythonhosted.org/packages/b3/66/e0be3e162ac299b3a22527e8913767d869e6cc75c46bd844aa43fb81ab62/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3587eb9b17f3789ad50824084fa6f81921bbf9a795826570bda82cb3ed91f2", size = 517841, upload_time = "2025-11-30T20:23:11.186Z" }, - { url = "https://files.pythonhosted.org/packages/3d/55/fa3b9cf31d0c963ecf1ba777f7cf4b2a2c976795ac430d24a1f43d25a6ba/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39c02563fc592411c2c61d26b6c5fe1e51eaa44a75aa2c8735ca88b0d9599daa", size = 408149, upload_time = "2025-11-30T20:23:12.864Z" }, - { url = "https://files.pythonhosted.org/packages/60/ca/780cf3b1a32b18c0f05c441958d3758f02544f1d613abf9488cd78876378/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51a1234d8febafdfd33a42d97da7a43f5dcb120c1060e352a3fbc0c6d36e2083", size = 383843, upload_time = "2025-11-30T20:23:14.638Z" }, - { url = "https://files.pythonhosted.org/packages/82/86/d5f2e04f2aa6247c613da0c1dd87fcd08fa17107e858193566048a1e2f0a/rpds_py-0.30.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:eb2c4071ab598733724c08221091e8d80e89064cd472819285a9ab0f24bcedb9", size = 396507, upload_time = "2025-11-30T20:23:16.105Z" }, - { url = "https://files.pythonhosted.org/packages/4b/9a/453255d2f769fe44e07ea9785c8347edaf867f7026872e76c1ad9f7bed92/rpds_py-0.30.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bdfdb946967d816e6adf9a3d8201bfad269c67efe6cefd7093ef959683c8de0", size = 414949, upload_time = "2025-11-30T20:23:17.539Z" }, - { url = "https://files.pythonhosted.org/packages/a3/31/622a86cdc0c45d6df0e9ccb6becdba5074735e7033c20e401a6d9d0e2ca0/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c77afbd5f5250bf27bf516c7c4a016813eb2d3e116139aed0096940c5982da94", size = 565790, upload_time = "2025-11-30T20:23:19.029Z" }, - { url = "https://files.pythonhosted.org/packages/1c/5d/15bbf0fb4a3f58a3b1c67855ec1efcc4ceaef4e86644665fff03e1b66d8d/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:61046904275472a76c8c90c9ccee9013d70a6d0f73eecefd38c1ae7c39045a08", size = 590217, upload_time = "2025-11-30T20:23:20.885Z" }, - { url = "https://files.pythonhosted.org/packages/6d/61/21b8c41f68e60c8cc3b2e25644f0e3681926020f11d06ab0b78e3c6bbff1/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c5f36a861bc4b7da6516dbdf302c55313afa09b81931e8280361a4f6c9a2d27", size = 555806, upload_time = "2025-11-30T20:23:22.488Z" }, - { url = "https://files.pythonhosted.org/packages/f9/39/7e067bb06c31de48de3eb200f9fc7c58982a4d3db44b07e73963e10d3be9/rpds_py-0.30.0-cp313-cp313t-win32.whl", hash = "sha256:3d4a69de7a3e50ffc214ae16d79d8fbb0922972da0356dcf4d0fdca2878559c6", size = 211341, upload_time = "2025-11-30T20:23:24.449Z" }, - { url = "https://files.pythonhosted.org/packages/0a/4d/222ef0b46443cf4cf46764d9c630f3fe4abaa7245be9417e56e9f52b8f65/rpds_py-0.30.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f14fc5df50a716f7ece6a80b6c78bb35ea2ca47c499e422aa4463455dd96d56d", size = 225768, upload_time = "2025-11-30T20:23:25.908Z" }, - { url = "https://files.pythonhosted.org/packages/69/71/3f34339ee70521864411f8b6992e7ab13ac30d8e4e3309e07c7361767d91/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c2262bdba0ad4fc6fb5545660673925c2d2a5d9e2e0fb603aad545427be0fc58", size = 372292, upload_time = "2025-11-30T20:24:16.537Z" }, - { url = "https://files.pythonhosted.org/packages/57/09/f183df9b8f2d66720d2ef71075c59f7e1b336bec7ee4c48f0a2b06857653/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ee6af14263f25eedc3bb918a3c04245106a42dfd4f5c2285ea6f997b1fc3f89a", size = 362128, upload_time = "2025-11-30T20:24:18.086Z" }, - { url = "https://files.pythonhosted.org/packages/7a/68/5c2594e937253457342e078f0cc1ded3dd7b2ad59afdbf2d354869110a02/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3adbb8179ce342d235c31ab8ec511e66c73faa27a47e076ccc92421add53e2bb", size = 391542, upload_time = "2025-11-30T20:24:20.092Z" }, - { url = "https://files.pythonhosted.org/packages/49/5c/31ef1afd70b4b4fbdb2800249f34c57c64beb687495b10aec0365f53dfc4/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:250fa00e9543ac9b97ac258bd37367ff5256666122c2d0f2bc97577c60a1818c", size = 404004, upload_time = "2025-11-30T20:24:22.231Z" }, - { url = "https://files.pythonhosted.org/packages/e3/63/0cfbea38d05756f3440ce6534d51a491d26176ac045e2707adc99bb6e60a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9854cf4f488b3d57b9aaeb105f06d78e5529d3145b1e4a41750167e8c213c6d3", size = 527063, upload_time = "2025-11-30T20:24:24.302Z" }, - { url = "https://files.pythonhosted.org/packages/42/e6/01e1f72a2456678b0f618fc9a1a13f882061690893c192fcad9f2926553a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:993914b8e560023bc0a8bf742c5f303551992dcb85e247b1e5c7f4a7d145bda5", size = 413099, upload_time = "2025-11-30T20:24:25.916Z" }, - { url = "https://files.pythonhosted.org/packages/b8/25/8df56677f209003dcbb180765520c544525e3ef21ea72279c98b9aa7c7fb/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58edca431fb9b29950807e301826586e5bbf24163677732429770a697ffe6738", size = 392177, upload_time = "2025-11-30T20:24:27.834Z" }, - { url = "https://files.pythonhosted.org/packages/4a/b4/0a771378c5f16f8115f796d1f437950158679bcd2a7c68cf251cfb00ed5b/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:dea5b552272a944763b34394d04577cf0f9bd013207bc32323b5a89a53cf9c2f", size = 406015, upload_time = "2025-11-30T20:24:29.457Z" }, - { url = "https://files.pythonhosted.org/packages/36/d8/456dbba0af75049dc6f63ff295a2f92766b9d521fa00de67a2bd6427d57a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ba3af48635eb83d03f6c9735dfb21785303e73d22ad03d489e88adae6eab8877", size = 423736, upload_time = "2025-11-30T20:24:31.22Z" }, - { url = "https://files.pythonhosted.org/packages/13/64/b4d76f227d5c45a7e0b796c674fd81b0a6c4fbd48dc29271857d8219571c/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:dff13836529b921e22f15cb099751209a60009731a68519630a24d61f0b1b30a", size = 573981, upload_time = "2025-11-30T20:24:32.934Z" }, - { url = "https://files.pythonhosted.org/packages/20/91/092bacadeda3edf92bf743cc96a7be133e13a39cdbfd7b5082e7ab638406/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1b151685b23929ab7beec71080a8889d4d6d9fa9a983d213f07121205d48e2c4", size = 599782, upload_time = "2025-11-30T20:24:35.169Z" }, - { url = "https://files.pythonhosted.org/packages/d1/b7/b95708304cd49b7b6f82fdd039f1748b66ec2b21d6a45180910802f1abf1/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e", size = 562191, upload_time = "2025-11-30T20:24:36.853Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/20/af/3f2f423103f1113b36230496629986e0ef7e199d2aa8392452b484b38ced/rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84", size = 69469, upload-time = "2025-11-30T20:24:38.837Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/0c/0c411a0ec64ccb6d104dcabe0e713e05e153a9a2c3c2bd2b32ce412166fe/rpds_py-0.30.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:679ae98e00c0e8d68a7fda324e16b90fd5260945b45d3b824c892cec9eea3288", size = 370490, upload-time = "2025-11-30T20:21:33.256Z" }, + { url = "https://files.pythonhosted.org/packages/19/6a/4ba3d0fb7297ebae71171822554abe48d7cab29c28b8f9f2c04b79988c05/rpds_py-0.30.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4cc2206b76b4f576934f0ed374b10d7ca5f457858b157ca52064bdfc26b9fc00", size = 359751, upload-time = "2025-11-30T20:21:34.591Z" }, + { url = "https://files.pythonhosted.org/packages/cd/7c/e4933565ef7f7a0818985d87c15d9d273f1a649afa6a52ea35ad011195ea/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:389a2d49eded1896c3d48b0136ead37c48e221b391c052fba3f4055c367f60a6", size = 389696, upload-time = "2025-11-30T20:21:36.122Z" }, + { url = "https://files.pythonhosted.org/packages/5e/01/6271a2511ad0815f00f7ed4390cf2567bec1d4b1da39e2c27a41e6e3b4de/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:32c8528634e1bf7121f3de08fa85b138f4e0dc47657866630611b03967f041d7", size = 403136, upload-time = "2025-11-30T20:21:37.728Z" }, + { url = "https://files.pythonhosted.org/packages/55/64/c857eb7cd7541e9b4eee9d49c196e833128a55b89a9850a9c9ac33ccf897/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f207f69853edd6f6700b86efb84999651baf3789e78a466431df1331608e5324", size = 524699, upload-time = "2025-11-30T20:21:38.92Z" }, + { url = "https://files.pythonhosted.org/packages/9c/ed/94816543404078af9ab26159c44f9e98e20fe47e2126d5d32c9d9948d10a/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:67b02ec25ba7a9e8fa74c63b6ca44cf5707f2fbfadae3ee8e7494297d56aa9df", size = 412022, upload-time = "2025-11-30T20:21:40.407Z" }, + { url = "https://files.pythonhosted.org/packages/61/b5/707f6cf0066a6412aacc11d17920ea2e19e5b2f04081c64526eb35b5c6e7/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0e95f6819a19965ff420f65578bacb0b00f251fefe2c8b23347c37174271f3", size = 390522, upload-time = "2025-11-30T20:21:42.17Z" }, + { url = "https://files.pythonhosted.org/packages/13/4e/57a85fda37a229ff4226f8cbcf09f2a455d1ed20e802ce5b2b4a7f5ed053/rpds_py-0.30.0-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:a452763cc5198f2f98898eb98f7569649fe5da666c2dc6b5ddb10fde5a574221", size = 404579, upload-time = "2025-11-30T20:21:43.769Z" }, + { url = "https://files.pythonhosted.org/packages/f9/da/c9339293513ec680a721e0e16bf2bac3db6e5d7e922488de471308349bba/rpds_py-0.30.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e0b65193a413ccc930671c55153a03ee57cecb49e6227204b04fae512eb657a7", size = 421305, upload-time = "2025-11-30T20:21:44.994Z" }, + { url = "https://files.pythonhosted.org/packages/f9/be/522cb84751114f4ad9d822ff5a1aa3c98006341895d5f084779b99596e5c/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:858738e9c32147f78b3ac24dc0edb6610000e56dc0f700fd5f651d0a0f0eb9ff", size = 572503, upload-time = "2025-11-30T20:21:46.91Z" }, + { url = "https://files.pythonhosted.org/packages/a2/9b/de879f7e7ceddc973ea6e4629e9b380213a6938a249e94b0cdbcc325bb66/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:da279aa314f00acbb803da1e76fa18666778e8a8f83484fba94526da5de2cba7", size = 598322, upload-time = "2025-11-30T20:21:48.709Z" }, + { url = "https://files.pythonhosted.org/packages/48/ac/f01fc22efec3f37d8a914fc1b2fb9bcafd56a299edbe96406f3053edea5a/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7c64d38fb49b6cdeda16ab49e35fe0da2e1e9b34bc38bd78386530f218b37139", size = 560792, upload-time = "2025-11-30T20:21:50.024Z" }, + { url = "https://files.pythonhosted.org/packages/e2/da/4e2b19d0f131f35b6146425f846563d0ce036763e38913d917187307a671/rpds_py-0.30.0-cp310-cp310-win32.whl", hash = "sha256:6de2a32a1665b93233cde140ff8b3467bdb9e2af2b91079f0333a0974d12d464", size = 221901, upload-time = "2025-11-30T20:21:51.32Z" }, + { url = "https://files.pythonhosted.org/packages/96/cb/156d7a5cf4f78a7cc571465d8aec7a3c447c94f6749c5123f08438bcf7bc/rpds_py-0.30.0-cp310-cp310-win_amd64.whl", hash = "sha256:1726859cd0de969f88dc8673bdd954185b9104e05806be64bcd87badbe313169", size = 235823, upload-time = "2025-11-30T20:21:52.505Z" }, + { url = "https://files.pythonhosted.org/packages/4d/6e/f964e88b3d2abee2a82c1ac8366da848fce1c6d834dc2132c3fda3970290/rpds_py-0.30.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a2bffea6a4ca9f01b3f8e548302470306689684e61602aa3d141e34da06cf425", size = 370157, upload-time = "2025-11-30T20:21:53.789Z" }, + { url = "https://files.pythonhosted.org/packages/94/ba/24e5ebb7c1c82e74c4e4f33b2112a5573ddc703915b13a073737b59b86e0/rpds_py-0.30.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dc4f992dfe1e2bc3ebc7444f6c7051b4bc13cd8e33e43511e8ffd13bf407010d", size = 359676, upload-time = "2025-11-30T20:21:55.475Z" }, + { url = "https://files.pythonhosted.org/packages/84/86/04dbba1b087227747d64d80c3b74df946b986c57af0a9f0c98726d4d7a3b/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:422c3cb9856d80b09d30d2eb255d0754b23e090034e1deb4083f8004bd0761e4", size = 389938, upload-time = "2025-11-30T20:21:57.079Z" }, + { url = "https://files.pythonhosted.org/packages/42/bb/1463f0b1722b7f45431bdd468301991d1328b16cffe0b1c2918eba2c4eee/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07ae8a593e1c3c6b82ca3292efbe73c30b61332fd612e05abee07c79359f292f", size = 402932, upload-time = "2025-11-30T20:21:58.47Z" }, + { url = "https://files.pythonhosted.org/packages/99/ee/2520700a5c1f2d76631f948b0736cdf9b0acb25abd0ca8e889b5c62ac2e3/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12f90dd7557b6bd57f40abe7747e81e0c0b119bef015ea7726e69fe550e394a4", size = 525830, upload-time = "2025-11-30T20:21:59.699Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ad/bd0331f740f5705cc555a5e17fdf334671262160270962e69a2bdef3bf76/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99b47d6ad9a6da00bec6aabe5a6279ecd3c06a329d4aa4771034a21e335c3a97", size = 412033, upload-time = "2025-11-30T20:22:00.991Z" }, + { url = "https://files.pythonhosted.org/packages/f8/1e/372195d326549bb51f0ba0f2ecb9874579906b97e08880e7a65c3bef1a99/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33f559f3104504506a44bb666b93a33f5d33133765b0c216a5bf2f1e1503af89", size = 390828, upload-time = "2025-11-30T20:22:02.723Z" }, + { url = "https://files.pythonhosted.org/packages/ab/2b/d88bb33294e3e0c76bc8f351a3721212713629ffca1700fa94979cb3eae8/rpds_py-0.30.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:946fe926af6e44f3697abbc305ea168c2c31d3e3ef1058cf68f379bf0335a78d", size = 404683, upload-time = "2025-11-30T20:22:04.367Z" }, + { url = "https://files.pythonhosted.org/packages/50/32/c759a8d42bcb5289c1fac697cd92f6fe01a018dd937e62ae77e0e7f15702/rpds_py-0.30.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:495aeca4b93d465efde585977365187149e75383ad2684f81519f504f5c13038", size = 421583, upload-time = "2025-11-30T20:22:05.814Z" }, + { url = "https://files.pythonhosted.org/packages/2b/81/e729761dbd55ddf5d84ec4ff1f47857f4374b0f19bdabfcf929164da3e24/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9a0ca5da0386dee0655b4ccdf46119df60e0f10da268d04fe7cc87886872ba7", size = 572496, upload-time = "2025-11-30T20:22:07.713Z" }, + { url = "https://files.pythonhosted.org/packages/14/f6/69066a924c3557c9c30baa6ec3a0aa07526305684c6f86c696b08860726c/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8d6d1cc13664ec13c1b84241204ff3b12f9bb82464b8ad6e7a5d3486975c2eed", size = 598669, upload-time = "2025-11-30T20:22:09.312Z" }, + { url = "https://files.pythonhosted.org/packages/5f/48/905896b1eb8a05630d20333d1d8ffd162394127b74ce0b0784ae04498d32/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3896fa1be39912cf0757753826bc8bdc8ca331a28a7c4ae46b7a21280b06bb85", size = 561011, upload-time = "2025-11-30T20:22:11.309Z" }, + { url = "https://files.pythonhosted.org/packages/22/16/cd3027c7e279d22e5eb431dd3c0fbc677bed58797fe7581e148f3f68818b/rpds_py-0.30.0-cp311-cp311-win32.whl", hash = "sha256:55f66022632205940f1827effeff17c4fa7ae1953d2b74a8581baaefb7d16f8c", size = 221406, upload-time = "2025-11-30T20:22:13.101Z" }, + { url = "https://files.pythonhosted.org/packages/fa/5b/e7b7aa136f28462b344e652ee010d4de26ee9fd16f1bfd5811f5153ccf89/rpds_py-0.30.0-cp311-cp311-win_amd64.whl", hash = "sha256:a51033ff701fca756439d641c0ad09a41d9242fa69121c7d8769604a0a629825", size = 236024, upload-time = "2025-11-30T20:22:14.853Z" }, + { url = "https://files.pythonhosted.org/packages/14/a6/364bba985e4c13658edb156640608f2c9e1d3ea3c81b27aa9d889fff0e31/rpds_py-0.30.0-cp311-cp311-win_arm64.whl", hash = "sha256:47b0ef6231c58f506ef0b74d44e330405caa8428e770fec25329ed2cb971a229", size = 229069, upload-time = "2025-11-30T20:22:16.577Z" }, + { url = "https://files.pythonhosted.org/packages/03/e7/98a2f4ac921d82f33e03f3835f5bf3a4a40aa1bfdc57975e74a97b2b4bdd/rpds_py-0.30.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad", size = 375086, upload-time = "2025-11-30T20:22:17.93Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a1/bca7fd3d452b272e13335db8d6b0b3ecde0f90ad6f16f3328c6fb150c889/rpds_py-0.30.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05", size = 359053, upload-time = "2025-11-30T20:22:19.297Z" }, + { url = "https://files.pythonhosted.org/packages/65/1c/ae157e83a6357eceff62ba7e52113e3ec4834a84cfe07fa4b0757a7d105f/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28", size = 390763, upload-time = "2025-11-30T20:22:21.661Z" }, + { url = "https://files.pythonhosted.org/packages/d4/36/eb2eb8515e2ad24c0bd43c3ee9cd74c33f7ca6430755ccdb240fd3144c44/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd", size = 408951, upload-time = "2025-11-30T20:22:23.408Z" }, + { url = "https://files.pythonhosted.org/packages/d6/65/ad8dc1784a331fabbd740ef6f71ce2198c7ed0890dab595adb9ea2d775a1/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f", size = 514622, upload-time = "2025-11-30T20:22:25.16Z" }, + { url = "https://files.pythonhosted.org/packages/63/8e/0cfa7ae158e15e143fe03993b5bcd743a59f541f5952e1546b1ac1b5fd45/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1", size = 414492, upload-time = "2025-11-30T20:22:26.505Z" }, + { url = "https://files.pythonhosted.org/packages/60/1b/6f8f29f3f995c7ffdde46a626ddccd7c63aefc0efae881dc13b6e5d5bb16/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23", size = 394080, upload-time = "2025-11-30T20:22:27.934Z" }, + { url = "https://files.pythonhosted.org/packages/6d/d5/a266341051a7a3ca2f4b750a3aa4abc986378431fc2da508c5034d081b70/rpds_py-0.30.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6", size = 408680, upload-time = "2025-11-30T20:22:29.341Z" }, + { url = "https://files.pythonhosted.org/packages/10/3b/71b725851df9ab7a7a4e33cf36d241933da66040d195a84781f49c50490c/rpds_py-0.30.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51", size = 423589, upload-time = "2025-11-30T20:22:31.469Z" }, + { url = "https://files.pythonhosted.org/packages/00/2b/e59e58c544dc9bd8bd8384ecdb8ea91f6727f0e37a7131baeff8d6f51661/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5", size = 573289, upload-time = "2025-11-30T20:22:32.997Z" }, + { url = "https://files.pythonhosted.org/packages/da/3e/a18e6f5b460893172a7d6a680e86d3b6bc87a54c1f0b03446a3c8c7b588f/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e", size = 599737, upload-time = "2025-11-30T20:22:34.419Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e2/714694e4b87b85a18e2c243614974413c60aa107fd815b8cbc42b873d1d7/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394", size = 563120, upload-time = "2025-11-30T20:22:35.903Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ab/d5d5e3bcedb0a77f4f613706b750e50a5a3ba1c15ccd3665ecc636c968fd/rpds_py-0.30.0-cp312-cp312-win32.whl", hash = "sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf", size = 223782, upload-time = "2025-11-30T20:22:37.271Z" }, + { url = "https://files.pythonhosted.org/packages/39/3b/f786af9957306fdc38a74cef405b7b93180f481fb48453a114bb6465744a/rpds_py-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b", size = 240463, upload-time = "2025-11-30T20:22:39.021Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d2/b91dc748126c1559042cfe41990deb92c4ee3e2b415f6b5234969ffaf0cc/rpds_py-0.30.0-cp312-cp312-win_arm64.whl", hash = "sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e", size = 230868, upload-time = "2025-11-30T20:22:40.493Z" }, + { url = "https://files.pythonhosted.org/packages/ed/dc/d61221eb88ff410de3c49143407f6f3147acf2538c86f2ab7ce65ae7d5f9/rpds_py-0.30.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f83424d738204d9770830d35290ff3273fbb02b41f919870479fab14b9d303b2", size = 374887, upload-time = "2025-11-30T20:22:41.812Z" }, + { url = "https://files.pythonhosted.org/packages/fd/32/55fb50ae104061dbc564ef15cc43c013dc4a9f4527a1f4d99baddf56fe5f/rpds_py-0.30.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7536cd91353c5273434b4e003cbda89034d67e7710eab8761fd918ec6c69cf8", size = 358904, upload-time = "2025-11-30T20:22:43.479Z" }, + { url = "https://files.pythonhosted.org/packages/58/70/faed8186300e3b9bdd138d0273109784eea2396c68458ed580f885dfe7ad/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2771c6c15973347f50fece41fc447c054b7ac2ae0502388ce3b6738cd366e3d4", size = 389945, upload-time = "2025-11-30T20:22:44.819Z" }, + { url = "https://files.pythonhosted.org/packages/bd/a8/073cac3ed2c6387df38f71296d002ab43496a96b92c823e76f46b8af0543/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0a59119fc6e3f460315fe9d08149f8102aa322299deaa5cab5b40092345c2136", size = 407783, upload-time = "2025-11-30T20:22:46.103Z" }, + { url = "https://files.pythonhosted.org/packages/77/57/5999eb8c58671f1c11eba084115e77a8899d6e694d2a18f69f0ba471ec8b/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76fec018282b4ead0364022e3c54b60bf368b9d926877957a8624b58419169b7", size = 515021, upload-time = "2025-11-30T20:22:47.458Z" }, + { url = "https://files.pythonhosted.org/packages/e0/af/5ab4833eadc36c0a8ed2bc5c0de0493c04f6c06de223170bd0798ff98ced/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:692bef75a5525db97318e8cd061542b5a79812d711ea03dbc1f6f8dbb0c5f0d2", size = 414589, upload-time = "2025-11-30T20:22:48.872Z" }, + { url = "https://files.pythonhosted.org/packages/b7/de/f7192e12b21b9e9a68a6d0f249b4af3fdcdff8418be0767a627564afa1f1/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9027da1ce107104c50c81383cae773ef5c24d296dd11c99e2629dbd7967a20c6", size = 394025, upload-time = "2025-11-30T20:22:50.196Z" }, + { url = "https://files.pythonhosted.org/packages/91/c4/fc70cd0249496493500e7cc2de87504f5aa6509de1e88623431fec76d4b6/rpds_py-0.30.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:9cf69cdda1f5968a30a359aba2f7f9aa648a9ce4b580d6826437f2b291cfc86e", size = 408895, upload-time = "2025-11-30T20:22:51.87Z" }, + { url = "https://files.pythonhosted.org/packages/58/95/d9275b05ab96556fefff73a385813eb66032e4c99f411d0795372d9abcea/rpds_py-0.30.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a4796a717bf12b9da9d3ad002519a86063dcac8988b030e405704ef7d74d2d9d", size = 422799, upload-time = "2025-11-30T20:22:53.341Z" }, + { url = "https://files.pythonhosted.org/packages/06/c1/3088fc04b6624eb12a57eb814f0d4997a44b0d208d6cace713033ff1a6ba/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5d4c2aa7c50ad4728a094ebd5eb46c452e9cb7edbfdb18f9e1221f597a73e1e7", size = 572731, upload-time = "2025-11-30T20:22:54.778Z" }, + { url = "https://files.pythonhosted.org/packages/d8/42/c612a833183b39774e8ac8fecae81263a68b9583ee343db33ab571a7ce55/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ba81a9203d07805435eb06f536d95a266c21e5b2dfbf6517748ca40c98d19e31", size = 599027, upload-time = "2025-11-30T20:22:56.212Z" }, + { url = "https://files.pythonhosted.org/packages/5f/60/525a50f45b01d70005403ae0e25f43c0384369ad24ffe46e8d9068b50086/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:945dccface01af02675628334f7cf49c2af4c1c904748efc5cf7bbdf0b579f95", size = 563020, upload-time = "2025-11-30T20:22:58.2Z" }, + { url = "https://files.pythonhosted.org/packages/0b/5d/47c4655e9bcd5ca907148535c10e7d489044243cc9941c16ed7cd53be91d/rpds_py-0.30.0-cp313-cp313-win32.whl", hash = "sha256:b40fb160a2db369a194cb27943582b38f79fc4887291417685f3ad693c5a1d5d", size = 223139, upload-time = "2025-11-30T20:23:00.209Z" }, + { url = "https://files.pythonhosted.org/packages/f2/e1/485132437d20aa4d3e1d8b3fb5a5e65aa8139f1e097080c2a8443201742c/rpds_py-0.30.0-cp313-cp313-win_amd64.whl", hash = "sha256:806f36b1b605e2d6a72716f321f20036b9489d29c51c91f4dd29a3e3afb73b15", size = 240224, upload-time = "2025-11-30T20:23:02.008Z" }, + { url = "https://files.pythonhosted.org/packages/24/95/ffd128ed1146a153d928617b0ef673960130be0009c77d8fbf0abe306713/rpds_py-0.30.0-cp313-cp313-win_arm64.whl", hash = "sha256:d96c2086587c7c30d44f31f42eae4eac89b60dabbac18c7669be3700f13c3ce1", size = 230645, upload-time = "2025-11-30T20:23:03.43Z" }, + { url = "https://files.pythonhosted.org/packages/ff/1b/b10de890a0def2a319a2626334a7f0ae388215eb60914dbac8a3bae54435/rpds_py-0.30.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:eb0b93f2e5c2189ee831ee43f156ed34e2a89a78a66b98cadad955972548be5a", size = 364443, upload-time = "2025-11-30T20:23:04.878Z" }, + { url = "https://files.pythonhosted.org/packages/0d/bf/27e39f5971dc4f305a4fb9c672ca06f290f7c4e261c568f3dea16a410d47/rpds_py-0.30.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:922e10f31f303c7c920da8981051ff6d8c1a56207dbdf330d9047f6d30b70e5e", size = 353375, upload-time = "2025-11-30T20:23:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/40/58/442ada3bba6e8e6615fc00483135c14a7538d2ffac30e2d933ccf6852232/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdc62c8286ba9bf7f47befdcea13ea0e26bf294bda99758fd90535cbaf408000", size = 383850, upload-time = "2025-11-30T20:23:07.825Z" }, + { url = "https://files.pythonhosted.org/packages/14/14/f59b0127409a33c6ef6f5c1ebd5ad8e32d7861c9c7adfa9a624fc3889f6c/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47f9a91efc418b54fb8190a6b4aa7813a23fb79c51f4bb84e418f5476c38b8db", size = 392812, upload-time = "2025-11-30T20:23:09.228Z" }, + { url = "https://files.pythonhosted.org/packages/b3/66/e0be3e162ac299b3a22527e8913767d869e6cc75c46bd844aa43fb81ab62/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3587eb9b17f3789ad50824084fa6f81921bbf9a795826570bda82cb3ed91f2", size = 517841, upload-time = "2025-11-30T20:23:11.186Z" }, + { url = "https://files.pythonhosted.org/packages/3d/55/fa3b9cf31d0c963ecf1ba777f7cf4b2a2c976795ac430d24a1f43d25a6ba/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39c02563fc592411c2c61d26b6c5fe1e51eaa44a75aa2c8735ca88b0d9599daa", size = 408149, upload-time = "2025-11-30T20:23:12.864Z" }, + { url = "https://files.pythonhosted.org/packages/60/ca/780cf3b1a32b18c0f05c441958d3758f02544f1d613abf9488cd78876378/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51a1234d8febafdfd33a42d97da7a43f5dcb120c1060e352a3fbc0c6d36e2083", size = 383843, upload-time = "2025-11-30T20:23:14.638Z" }, + { url = "https://files.pythonhosted.org/packages/82/86/d5f2e04f2aa6247c613da0c1dd87fcd08fa17107e858193566048a1e2f0a/rpds_py-0.30.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:eb2c4071ab598733724c08221091e8d80e89064cd472819285a9ab0f24bcedb9", size = 396507, upload-time = "2025-11-30T20:23:16.105Z" }, + { url = "https://files.pythonhosted.org/packages/4b/9a/453255d2f769fe44e07ea9785c8347edaf867f7026872e76c1ad9f7bed92/rpds_py-0.30.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bdfdb946967d816e6adf9a3d8201bfad269c67efe6cefd7093ef959683c8de0", size = 414949, upload-time = "2025-11-30T20:23:17.539Z" }, + { url = "https://files.pythonhosted.org/packages/a3/31/622a86cdc0c45d6df0e9ccb6becdba5074735e7033c20e401a6d9d0e2ca0/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c77afbd5f5250bf27bf516c7c4a016813eb2d3e116139aed0096940c5982da94", size = 565790, upload-time = "2025-11-30T20:23:19.029Z" }, + { url = "https://files.pythonhosted.org/packages/1c/5d/15bbf0fb4a3f58a3b1c67855ec1efcc4ceaef4e86644665fff03e1b66d8d/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:61046904275472a76c8c90c9ccee9013d70a6d0f73eecefd38c1ae7c39045a08", size = 590217, upload-time = "2025-11-30T20:23:20.885Z" }, + { url = "https://files.pythonhosted.org/packages/6d/61/21b8c41f68e60c8cc3b2e25644f0e3681926020f11d06ab0b78e3c6bbff1/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c5f36a861bc4b7da6516dbdf302c55313afa09b81931e8280361a4f6c9a2d27", size = 555806, upload-time = "2025-11-30T20:23:22.488Z" }, + { url = "https://files.pythonhosted.org/packages/f9/39/7e067bb06c31de48de3eb200f9fc7c58982a4d3db44b07e73963e10d3be9/rpds_py-0.30.0-cp313-cp313t-win32.whl", hash = "sha256:3d4a69de7a3e50ffc214ae16d79d8fbb0922972da0356dcf4d0fdca2878559c6", size = 211341, upload-time = "2025-11-30T20:23:24.449Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4d/222ef0b46443cf4cf46764d9c630f3fe4abaa7245be9417e56e9f52b8f65/rpds_py-0.30.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f14fc5df50a716f7ece6a80b6c78bb35ea2ca47c499e422aa4463455dd96d56d", size = 225768, upload-time = "2025-11-30T20:23:25.908Z" }, + { url = "https://files.pythonhosted.org/packages/69/71/3f34339ee70521864411f8b6992e7ab13ac30d8e4e3309e07c7361767d91/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c2262bdba0ad4fc6fb5545660673925c2d2a5d9e2e0fb603aad545427be0fc58", size = 372292, upload-time = "2025-11-30T20:24:16.537Z" }, + { url = "https://files.pythonhosted.org/packages/57/09/f183df9b8f2d66720d2ef71075c59f7e1b336bec7ee4c48f0a2b06857653/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ee6af14263f25eedc3bb918a3c04245106a42dfd4f5c2285ea6f997b1fc3f89a", size = 362128, upload-time = "2025-11-30T20:24:18.086Z" }, + { url = "https://files.pythonhosted.org/packages/7a/68/5c2594e937253457342e078f0cc1ded3dd7b2ad59afdbf2d354869110a02/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3adbb8179ce342d235c31ab8ec511e66c73faa27a47e076ccc92421add53e2bb", size = 391542, upload-time = "2025-11-30T20:24:20.092Z" }, + { url = "https://files.pythonhosted.org/packages/49/5c/31ef1afd70b4b4fbdb2800249f34c57c64beb687495b10aec0365f53dfc4/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:250fa00e9543ac9b97ac258bd37367ff5256666122c2d0f2bc97577c60a1818c", size = 404004, upload-time = "2025-11-30T20:24:22.231Z" }, + { url = "https://files.pythonhosted.org/packages/e3/63/0cfbea38d05756f3440ce6534d51a491d26176ac045e2707adc99bb6e60a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9854cf4f488b3d57b9aaeb105f06d78e5529d3145b1e4a41750167e8c213c6d3", size = 527063, upload-time = "2025-11-30T20:24:24.302Z" }, + { url = "https://files.pythonhosted.org/packages/42/e6/01e1f72a2456678b0f618fc9a1a13f882061690893c192fcad9f2926553a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:993914b8e560023bc0a8bf742c5f303551992dcb85e247b1e5c7f4a7d145bda5", size = 413099, upload-time = "2025-11-30T20:24:25.916Z" }, + { url = "https://files.pythonhosted.org/packages/b8/25/8df56677f209003dcbb180765520c544525e3ef21ea72279c98b9aa7c7fb/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58edca431fb9b29950807e301826586e5bbf24163677732429770a697ffe6738", size = 392177, upload-time = "2025-11-30T20:24:27.834Z" }, + { url = "https://files.pythonhosted.org/packages/4a/b4/0a771378c5f16f8115f796d1f437950158679bcd2a7c68cf251cfb00ed5b/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:dea5b552272a944763b34394d04577cf0f9bd013207bc32323b5a89a53cf9c2f", size = 406015, upload-time = "2025-11-30T20:24:29.457Z" }, + { url = "https://files.pythonhosted.org/packages/36/d8/456dbba0af75049dc6f63ff295a2f92766b9d521fa00de67a2bd6427d57a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ba3af48635eb83d03f6c9735dfb21785303e73d22ad03d489e88adae6eab8877", size = 423736, upload-time = "2025-11-30T20:24:31.22Z" }, + { url = "https://files.pythonhosted.org/packages/13/64/b4d76f227d5c45a7e0b796c674fd81b0a6c4fbd48dc29271857d8219571c/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:dff13836529b921e22f15cb099751209a60009731a68519630a24d61f0b1b30a", size = 573981, upload-time = "2025-11-30T20:24:32.934Z" }, + { url = "https://files.pythonhosted.org/packages/20/91/092bacadeda3edf92bf743cc96a7be133e13a39cdbfd7b5082e7ab638406/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1b151685b23929ab7beec71080a8889d4d6d9fa9a983d213f07121205d48e2c4", size = 599782, upload-time = "2025-11-30T20:24:35.169Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b7/b95708304cd49b7b6f82fdd039f1748b66ec2b21d6a45180910802f1abf1/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e", size = 562191, upload-time = "2025-11-30T20:24:36.853Z" }, ] [[package]] name = "rstr" version = "3.2.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9f/80/d7449656d45a776b7a443ce3af4eb97c4debe416a1a80f60311c7cfd02ff/rstr-3.2.2.tar.gz", hash = "sha256:c4a564d4dfb4472d931d145c43d1cf1ad78c24592142e7755b8866179eeac012", size = 13560, upload_time = "2023-10-11T20:07:57.422Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/80/d7449656d45a776b7a443ce3af4eb97c4debe416a1a80f60311c7cfd02ff/rstr-3.2.2.tar.gz", hash = "sha256:c4a564d4dfb4472d931d145c43d1cf1ad78c24592142e7755b8866179eeac012", size = 13560, upload-time = "2023-10-11T20:07:57.422Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/8c/a0f14f2fcdd846839c478048032b2fc93293deaa936ff6751f27dcf50995/rstr-3.2.2-py3-none-any.whl", hash = "sha256:f39195d38da1748331eeec52f1276e71eb6295e7949beea91a5e9af2340d7b3b", size = 10030, upload_time = "2023-10-11T20:07:55.873Z" }, + { url = "https://files.pythonhosted.org/packages/c8/8c/a0f14f2fcdd846839c478048032b2fc93293deaa936ff6751f27dcf50995/rstr-3.2.2-py3-none-any.whl", hash = "sha256:f39195d38da1748331eeec52f1276e71eb6295e7949beea91a5e9af2340d7b3b", size = 10030, upload-time = "2023-10-11T20:07:55.873Z" }, ] [[package]] name = "ruff" version = "0.15.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/04/dc/4e6ac71b511b141cf626357a3946679abeba4cf67bc7cc5a17920f31e10d/ruff-0.15.1.tar.gz", hash = "sha256:c590fe13fb57c97141ae975c03a1aedb3d3156030cabd740d6ff0b0d601e203f", size = 4540855, upload_time = "2026-02-12T23:09:09.998Z" } +sdist = { url = "https://files.pythonhosted.org/packages/04/dc/4e6ac71b511b141cf626357a3946679abeba4cf67bc7cc5a17920f31e10d/ruff-0.15.1.tar.gz", hash = "sha256:c590fe13fb57c97141ae975c03a1aedb3d3156030cabd740d6ff0b0d601e203f", size = 4540855, upload-time = "2026-02-12T23:09:09.998Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/23/bf/e6e4324238c17f9d9120a9d60aa99a7daaa21204c07fcd84e2ef03bb5fd1/ruff-0.15.1-py3-none-linux_armv6l.whl", hash = "sha256:b101ed7cf4615bda6ffe65bdb59f964e9f4a0d3f85cbf0e54f0ab76d7b90228a", size = 10367819, upload_time = "2026-02-12T23:09:03.598Z" }, - { url = "https://files.pythonhosted.org/packages/b3/ea/c8f89d32e7912269d38c58f3649e453ac32c528f93bb7f4219258be2e7ed/ruff-0.15.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:939c995e9277e63ea632cc8d3fae17aa758526f49a9a850d2e7e758bfef46602", size = 10798618, upload_time = "2026-02-12T23:09:22.928Z" }, - { url = "https://files.pythonhosted.org/packages/5e/0f/1d0d88bc862624247d82c20c10d4c0f6bb2f346559d8af281674cf327f15/ruff-0.15.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:1d83466455fdefe60b8d9c8df81d3c1bbb2115cede53549d3b522ce2bc703899", size = 10148518, upload_time = "2026-02-12T23:08:58.339Z" }, - { url = "https://files.pythonhosted.org/packages/f5/c8/291c49cefaa4a9248e986256df2ade7add79388fe179e0691be06fae6f37/ruff-0.15.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9457e3c3291024866222b96108ab2d8265b477e5b1534c7ddb1810904858d16", size = 10518811, upload_time = "2026-02-12T23:09:31.865Z" }, - { url = "https://files.pythonhosted.org/packages/c3/1a/f5707440e5ae43ffa5365cac8bbb91e9665f4a883f560893829cf16a606b/ruff-0.15.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:92c92b003e9d4f7fbd33b1867bb15a1b785b1735069108dfc23821ba045b29bc", size = 10196169, upload_time = "2026-02-12T23:09:17.306Z" }, - { url = "https://files.pythonhosted.org/packages/2a/ff/26ddc8c4da04c8fd3ee65a89c9fb99eaa5c30394269d424461467be2271f/ruff-0.15.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fe5c41ab43e3a06778844c586251eb5a510f67125427625f9eb2b9526535779", size = 10990491, upload_time = "2026-02-12T23:09:25.503Z" }, - { url = "https://files.pythonhosted.org/packages/fc/00/50920cb385b89413f7cdb4bb9bc8fc59c1b0f30028d8bccc294189a54955/ruff-0.15.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66a6dd6df4d80dc382c6484f8ce1bcceb55c32e9f27a8b94c32f6c7331bf14fb", size = 11843280, upload_time = "2026-02-12T23:09:19.88Z" }, - { url = "https://files.pythonhosted.org/packages/5d/6d/2f5cad8380caf5632a15460c323ae326f1e1a2b5b90a6ee7519017a017ca/ruff-0.15.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a4a42cbb8af0bda9bcd7606b064d7c0bc311a88d141d02f78920be6acb5aa83", size = 11274336, upload_time = "2026-02-12T23:09:14.907Z" }, - { url = "https://files.pythonhosted.org/packages/a3/1d/5f56cae1d6c40b8a318513599b35ea4b075d7dc1cd1d04449578c29d1d75/ruff-0.15.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ab064052c31dddada35079901592dfba2e05f5b1e43af3954aafcbc1096a5b2", size = 11137288, upload_time = "2026-02-12T23:09:07.475Z" }, - { url = "https://files.pythonhosted.org/packages/cd/20/6f8d7d8f768c93b0382b33b9306b3b999918816da46537d5a61635514635/ruff-0.15.1-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:5631c940fe9fe91f817a4c2ea4e81f47bee3ca4aa646134a24374f3c19ad9454", size = 11070681, upload_time = "2026-02-12T23:08:55.43Z" }, - { url = "https://files.pythonhosted.org/packages/9a/67/d640ac76069f64cdea59dba02af2e00b1fa30e2103c7f8d049c0cff4cafd/ruff-0.15.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:68138a4ba184b4691ccdc39f7795c66b3c68160c586519e7e8444cf5a53e1b4c", size = 10486401, upload_time = "2026-02-12T23:09:27.927Z" }, - { url = "https://files.pythonhosted.org/packages/65/3d/e1429f64a3ff89297497916b88c32a5cc88eeca7e9c787072d0e7f1d3e1e/ruff-0.15.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:518f9af03bfc33c03bdb4cb63fabc935341bb7f54af500f92ac309ecfbba6330", size = 10197452, upload_time = "2026-02-12T23:09:12.147Z" }, - { url = "https://files.pythonhosted.org/packages/78/83/e2c3bade17dad63bf1e1c2ffaf11490603b760be149e1419b07049b36ef2/ruff-0.15.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:da79f4d6a826caaea95de0237a67e33b81e6ec2e25fc7e1993a4015dffca7c61", size = 10693900, upload_time = "2026-02-12T23:09:34.418Z" }, - { url = "https://files.pythonhosted.org/packages/a1/27/fdc0e11a813e6338e0706e8b39bb7a1d61ea5b36873b351acee7e524a72a/ruff-0.15.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:3dd86dccb83cd7d4dcfac303ffc277e6048600dfc22e38158afa208e8bf94a1f", size = 11227302, upload_time = "2026-02-12T23:09:36.536Z" }, - { url = "https://files.pythonhosted.org/packages/f6/58/ac864a75067dcbd3b95be5ab4eb2b601d7fbc3d3d736a27e391a4f92a5c1/ruff-0.15.1-py3-none-win32.whl", hash = "sha256:660975d9cb49b5d5278b12b03bb9951d554543a90b74ed5d366b20e2c57c2098", size = 10462555, upload_time = "2026-02-12T23:09:29.899Z" }, - { url = "https://files.pythonhosted.org/packages/e0/5e/d4ccc8a27ecdb78116feac4935dfc39d1304536f4296168f91ed3ec00cd2/ruff-0.15.1-py3-none-win_amd64.whl", hash = "sha256:c820fef9dd5d4172a6570e5721704a96c6679b80cf7be41659ed439653f62336", size = 11599956, upload_time = "2026-02-12T23:09:01.157Z" }, - { url = "https://files.pythonhosted.org/packages/2a/07/5bda6a85b220c64c65686bc85bd0bbb23b29c62b3a9f9433fa55f17cda93/ruff-0.15.1-py3-none-win_arm64.whl", hash = "sha256:5ff7d5f0f88567850f45081fac8f4ec212be8d0b963e385c3f7d0d2eb4899416", size = 10874604, upload_time = "2026-02-12T23:09:05.515Z" }, + { url = "https://files.pythonhosted.org/packages/23/bf/e6e4324238c17f9d9120a9d60aa99a7daaa21204c07fcd84e2ef03bb5fd1/ruff-0.15.1-py3-none-linux_armv6l.whl", hash = "sha256:b101ed7cf4615bda6ffe65bdb59f964e9f4a0d3f85cbf0e54f0ab76d7b90228a", size = 10367819, upload-time = "2026-02-12T23:09:03.598Z" }, + { url = "https://files.pythonhosted.org/packages/b3/ea/c8f89d32e7912269d38c58f3649e453ac32c528f93bb7f4219258be2e7ed/ruff-0.15.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:939c995e9277e63ea632cc8d3fae17aa758526f49a9a850d2e7e758bfef46602", size = 10798618, upload-time = "2026-02-12T23:09:22.928Z" }, + { url = "https://files.pythonhosted.org/packages/5e/0f/1d0d88bc862624247d82c20c10d4c0f6bb2f346559d8af281674cf327f15/ruff-0.15.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:1d83466455fdefe60b8d9c8df81d3c1bbb2115cede53549d3b522ce2bc703899", size = 10148518, upload-time = "2026-02-12T23:08:58.339Z" }, + { url = "https://files.pythonhosted.org/packages/f5/c8/291c49cefaa4a9248e986256df2ade7add79388fe179e0691be06fae6f37/ruff-0.15.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9457e3c3291024866222b96108ab2d8265b477e5b1534c7ddb1810904858d16", size = 10518811, upload-time = "2026-02-12T23:09:31.865Z" }, + { url = "https://files.pythonhosted.org/packages/c3/1a/f5707440e5ae43ffa5365cac8bbb91e9665f4a883f560893829cf16a606b/ruff-0.15.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:92c92b003e9d4f7fbd33b1867bb15a1b785b1735069108dfc23821ba045b29bc", size = 10196169, upload-time = "2026-02-12T23:09:17.306Z" }, + { url = "https://files.pythonhosted.org/packages/2a/ff/26ddc8c4da04c8fd3ee65a89c9fb99eaa5c30394269d424461467be2271f/ruff-0.15.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fe5c41ab43e3a06778844c586251eb5a510f67125427625f9eb2b9526535779", size = 10990491, upload-time = "2026-02-12T23:09:25.503Z" }, + { url = "https://files.pythonhosted.org/packages/fc/00/50920cb385b89413f7cdb4bb9bc8fc59c1b0f30028d8bccc294189a54955/ruff-0.15.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66a6dd6df4d80dc382c6484f8ce1bcceb55c32e9f27a8b94c32f6c7331bf14fb", size = 11843280, upload-time = "2026-02-12T23:09:19.88Z" }, + { url = "https://files.pythonhosted.org/packages/5d/6d/2f5cad8380caf5632a15460c323ae326f1e1a2b5b90a6ee7519017a017ca/ruff-0.15.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a4a42cbb8af0bda9bcd7606b064d7c0bc311a88d141d02f78920be6acb5aa83", size = 11274336, upload-time = "2026-02-12T23:09:14.907Z" }, + { url = "https://files.pythonhosted.org/packages/a3/1d/5f56cae1d6c40b8a318513599b35ea4b075d7dc1cd1d04449578c29d1d75/ruff-0.15.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ab064052c31dddada35079901592dfba2e05f5b1e43af3954aafcbc1096a5b2", size = 11137288, upload-time = "2026-02-12T23:09:07.475Z" }, + { url = "https://files.pythonhosted.org/packages/cd/20/6f8d7d8f768c93b0382b33b9306b3b999918816da46537d5a61635514635/ruff-0.15.1-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:5631c940fe9fe91f817a4c2ea4e81f47bee3ca4aa646134a24374f3c19ad9454", size = 11070681, upload-time = "2026-02-12T23:08:55.43Z" }, + { url = "https://files.pythonhosted.org/packages/9a/67/d640ac76069f64cdea59dba02af2e00b1fa30e2103c7f8d049c0cff4cafd/ruff-0.15.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:68138a4ba184b4691ccdc39f7795c66b3c68160c586519e7e8444cf5a53e1b4c", size = 10486401, upload-time = "2026-02-12T23:09:27.927Z" }, + { url = "https://files.pythonhosted.org/packages/65/3d/e1429f64a3ff89297497916b88c32a5cc88eeca7e9c787072d0e7f1d3e1e/ruff-0.15.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:518f9af03bfc33c03bdb4cb63fabc935341bb7f54af500f92ac309ecfbba6330", size = 10197452, upload-time = "2026-02-12T23:09:12.147Z" }, + { url = "https://files.pythonhosted.org/packages/78/83/e2c3bade17dad63bf1e1c2ffaf11490603b760be149e1419b07049b36ef2/ruff-0.15.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:da79f4d6a826caaea95de0237a67e33b81e6ec2e25fc7e1993a4015dffca7c61", size = 10693900, upload-time = "2026-02-12T23:09:34.418Z" }, + { url = "https://files.pythonhosted.org/packages/a1/27/fdc0e11a813e6338e0706e8b39bb7a1d61ea5b36873b351acee7e524a72a/ruff-0.15.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:3dd86dccb83cd7d4dcfac303ffc277e6048600dfc22e38158afa208e8bf94a1f", size = 11227302, upload-time = "2026-02-12T23:09:36.536Z" }, + { url = "https://files.pythonhosted.org/packages/f6/58/ac864a75067dcbd3b95be5ab4eb2b601d7fbc3d3d736a27e391a4f92a5c1/ruff-0.15.1-py3-none-win32.whl", hash = "sha256:660975d9cb49b5d5278b12b03bb9951d554543a90b74ed5d366b20e2c57c2098", size = 10462555, upload-time = "2026-02-12T23:09:29.899Z" }, + { url = "https://files.pythonhosted.org/packages/e0/5e/d4ccc8a27ecdb78116feac4935dfc39d1304536f4296168f91ed3ec00cd2/ruff-0.15.1-py3-none-win_amd64.whl", hash = "sha256:c820fef9dd5d4172a6570e5721704a96c6679b80cf7be41659ed439653f62336", size = 11599956, upload-time = "2026-02-12T23:09:01.157Z" }, + { url = "https://files.pythonhosted.org/packages/2a/07/5bda6a85b220c64c65686bc85bd0bbb23b29c62b3a9f9433fa55f17cda93/ruff-0.15.1-py3-none-win_arm64.whl", hash = "sha256:5ff7d5f0f88567850f45081fac8f4ec212be8d0b963e385c3f7d0d2eb4899416", size = 10874604, upload-time = "2026-02-12T23:09:05.515Z" }, ] [[package]] name = "safetensors" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/29/9c/6e74567782559a63bd040a236edca26fd71bc7ba88de2ef35d75df3bca5e/safetensors-0.7.0.tar.gz", hash = "sha256:07663963b67e8bd9f0b8ad15bb9163606cd27cc5a1b96235a50d8369803b96b0", size = 200878, upload_time = "2025-11-19T15:18:43.199Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/47/aef6c06649039accf914afef490268e1067ed82be62bcfa5b7e886ad15e8/safetensors-0.7.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:c82f4d474cf725255d9e6acf17252991c3c8aac038d6ef363a4bf8be2f6db517", size = 467781, upload_time = "2025-11-19T15:18:35.84Z" }, - { url = "https://files.pythonhosted.org/packages/e8/00/374c0c068e30cd31f1e1b46b4b5738168ec79e7689ca82ee93ddfea05109/safetensors-0.7.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:94fd4858284736bb67a897a41608b5b0c2496c9bdb3bf2af1fa3409127f20d57", size = 447058, upload_time = "2025-11-19T15:18:34.416Z" }, - { url = "https://files.pythonhosted.org/packages/f1/06/578ffed52c2296f93d7fd2d844cabfa92be51a587c38c8afbb8ae449ca89/safetensors-0.7.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e07d91d0c92a31200f25351f4acb2bc6aff7f48094e13ebb1d0fb995b54b6542", size = 491748, upload_time = "2025-11-19T15:18:09.79Z" }, - { url = "https://files.pythonhosted.org/packages/ae/33/1debbbb70e4791dde185edb9413d1fe01619255abb64b300157d7f15dddd/safetensors-0.7.0-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8469155f4cb518bafb4acf4865e8bb9d6804110d2d9bdcaa78564b9fd841e104", size = 503881, upload_time = "2025-11-19T15:18:16.145Z" }, - { url = "https://files.pythonhosted.org/packages/8e/1c/40c2ca924d60792c3be509833df711b553c60effbd91da6f5284a83f7122/safetensors-0.7.0-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:54bef08bf00a2bff599982f6b08e8770e09cc012d7bba00783fc7ea38f1fb37d", size = 623463, upload_time = "2025-11-19T15:18:21.11Z" }, - { url = "https://files.pythonhosted.org/packages/9b/3a/13784a9364bd43b0d61eef4bea2845039bc2030458b16594a1bd787ae26e/safetensors-0.7.0-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:42cb091236206bb2016d245c377ed383aa7f78691748f3bb6ee1bfa51ae2ce6a", size = 532855, upload_time = "2025-11-19T15:18:25.719Z" }, - { url = "https://files.pythonhosted.org/packages/a0/60/429e9b1cb3fc651937727befe258ea24122d9663e4d5709a48c9cbfceecb/safetensors-0.7.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac7252938f0696ddea46f5e855dd3138444e82236e3be475f54929f0c510d48", size = 507152, upload_time = "2025-11-19T15:18:33.023Z" }, - { url = "https://files.pythonhosted.org/packages/3c/a8/4b45e4e059270d17af60359713ffd83f97900d45a6afa73aaa0d737d48b6/safetensors-0.7.0-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1d060c70284127fa805085d8f10fbd0962792aed71879d00864acda69dbab981", size = 541856, upload_time = "2025-11-19T15:18:31.075Z" }, - { url = "https://files.pythonhosted.org/packages/06/87/d26d8407c44175d8ae164a95b5a62707fcc445f3c0c56108e37d98070a3d/safetensors-0.7.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:cdab83a366799fa730f90a4ebb563e494f28e9e92c4819e556152ad55e43591b", size = 674060, upload_time = "2025-11-19T15:18:37.211Z" }, - { url = "https://files.pythonhosted.org/packages/11/f5/57644a2ff08dc6325816ba7217e5095f17269dada2554b658442c66aed51/safetensors-0.7.0-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:672132907fcad9f2aedcb705b2d7b3b93354a2aec1b2f706c4db852abe338f85", size = 771715, upload_time = "2025-11-19T15:18:38.689Z" }, - { url = "https://files.pythonhosted.org/packages/86/31/17883e13a814bd278ae6e266b13282a01049b0c81341da7fd0e3e71a80a3/safetensors-0.7.0-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:5d72abdb8a4d56d4020713724ba81dac065fedb7f3667151c4a637f1d3fb26c0", size = 714377, upload_time = "2025-11-19T15:18:40.162Z" }, - { url = "https://files.pythonhosted.org/packages/4a/d8/0c8a7dc9b41dcac53c4cbf9df2b9c83e0e0097203de8b37a712b345c0be5/safetensors-0.7.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b0f6d66c1c538d5a94a73aa9ddca8ccc4227e6c9ff555322ea40bdd142391dd4", size = 677368, upload_time = "2025-11-19T15:18:41.627Z" }, - { url = "https://files.pythonhosted.org/packages/05/e5/cb4b713c8a93469e3c5be7c3f8d77d307e65fe89673e731f5c2bfd0a9237/safetensors-0.7.0-cp38-abi3-win32.whl", hash = "sha256:c74af94bf3ac15ac4d0f2a7c7b4663a15f8c2ab15ed0fc7531ca61d0835eccba", size = 326423, upload_time = "2025-11-19T15:18:45.74Z" }, - { url = "https://files.pythonhosted.org/packages/5d/e6/ec8471c8072382cb91233ba7267fd931219753bb43814cbc71757bfd4dab/safetensors-0.7.0-cp38-abi3-win_amd64.whl", hash = "sha256:d1239932053f56f3456f32eb9625590cc7582e905021f94636202a864d470755", size = 341380, upload_time = "2025-11-19T15:18:44.427Z" }, - { url = "https://files.pythonhosted.org/packages/a7/6a/4d08d89a6fcbe905c5ae68b8b34f0791850882fc19782d0d02c65abbdf3b/safetensors-0.7.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4729811a6640d019a4b7ba8638ee2fd21fa5ca8c7e7bdf0fed62068fcaac737", size = 492430, upload_time = "2025-11-19T15:18:11.884Z" }, - { url = "https://files.pythonhosted.org/packages/dd/29/59ed8152b30f72c42d00d241e58eaca558ae9dbfa5695206e2e0f54c7063/safetensors-0.7.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:12f49080303fa6bb424b362149a12949dfbbf1e06811a88f2307276b0c131afd", size = 503977, upload_time = "2025-11-19T15:18:17.523Z" }, - { url = "https://files.pythonhosted.org/packages/d3/0b/4811bfec67fa260e791369b16dab105e4bae82686120554cc484064e22b4/safetensors-0.7.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0071bffba4150c2f46cae1432d31995d77acfd9f8db598b5d1a2ce67e8440ad2", size = 623890, upload_time = "2025-11-19T15:18:22.666Z" }, - { url = "https://files.pythonhosted.org/packages/58/5b/632a58724221ef03d78ab65062e82a1010e1bef8e8e0b9d7c6d7b8044841/safetensors-0.7.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:473b32699f4200e69801bf5abf93f1a4ecd432a70984df164fc22ccf39c4a6f3", size = 531885, upload_time = "2025-11-19T15:18:27.146Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/29/9c/6e74567782559a63bd040a236edca26fd71bc7ba88de2ef35d75df3bca5e/safetensors-0.7.0.tar.gz", hash = "sha256:07663963b67e8bd9f0b8ad15bb9163606cd27cc5a1b96235a50d8369803b96b0", size = 200878, upload-time = "2025-11-19T15:18:43.199Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/47/aef6c06649039accf914afef490268e1067ed82be62bcfa5b7e886ad15e8/safetensors-0.7.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:c82f4d474cf725255d9e6acf17252991c3c8aac038d6ef363a4bf8be2f6db517", size = 467781, upload-time = "2025-11-19T15:18:35.84Z" }, + { url = "https://files.pythonhosted.org/packages/e8/00/374c0c068e30cd31f1e1b46b4b5738168ec79e7689ca82ee93ddfea05109/safetensors-0.7.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:94fd4858284736bb67a897a41608b5b0c2496c9bdb3bf2af1fa3409127f20d57", size = 447058, upload-time = "2025-11-19T15:18:34.416Z" }, + { url = "https://files.pythonhosted.org/packages/f1/06/578ffed52c2296f93d7fd2d844cabfa92be51a587c38c8afbb8ae449ca89/safetensors-0.7.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e07d91d0c92a31200f25351f4acb2bc6aff7f48094e13ebb1d0fb995b54b6542", size = 491748, upload-time = "2025-11-19T15:18:09.79Z" }, + { url = "https://files.pythonhosted.org/packages/ae/33/1debbbb70e4791dde185edb9413d1fe01619255abb64b300157d7f15dddd/safetensors-0.7.0-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8469155f4cb518bafb4acf4865e8bb9d6804110d2d9bdcaa78564b9fd841e104", size = 503881, upload-time = "2025-11-19T15:18:16.145Z" }, + { url = "https://files.pythonhosted.org/packages/8e/1c/40c2ca924d60792c3be509833df711b553c60effbd91da6f5284a83f7122/safetensors-0.7.0-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:54bef08bf00a2bff599982f6b08e8770e09cc012d7bba00783fc7ea38f1fb37d", size = 623463, upload-time = "2025-11-19T15:18:21.11Z" }, + { url = "https://files.pythonhosted.org/packages/9b/3a/13784a9364bd43b0d61eef4bea2845039bc2030458b16594a1bd787ae26e/safetensors-0.7.0-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:42cb091236206bb2016d245c377ed383aa7f78691748f3bb6ee1bfa51ae2ce6a", size = 532855, upload-time = "2025-11-19T15:18:25.719Z" }, + { url = "https://files.pythonhosted.org/packages/a0/60/429e9b1cb3fc651937727befe258ea24122d9663e4d5709a48c9cbfceecb/safetensors-0.7.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac7252938f0696ddea46f5e855dd3138444e82236e3be475f54929f0c510d48", size = 507152, upload-time = "2025-11-19T15:18:33.023Z" }, + { url = "https://files.pythonhosted.org/packages/3c/a8/4b45e4e059270d17af60359713ffd83f97900d45a6afa73aaa0d737d48b6/safetensors-0.7.0-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1d060c70284127fa805085d8f10fbd0962792aed71879d00864acda69dbab981", size = 541856, upload-time = "2025-11-19T15:18:31.075Z" }, + { url = "https://files.pythonhosted.org/packages/06/87/d26d8407c44175d8ae164a95b5a62707fcc445f3c0c56108e37d98070a3d/safetensors-0.7.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:cdab83a366799fa730f90a4ebb563e494f28e9e92c4819e556152ad55e43591b", size = 674060, upload-time = "2025-11-19T15:18:37.211Z" }, + { url = "https://files.pythonhosted.org/packages/11/f5/57644a2ff08dc6325816ba7217e5095f17269dada2554b658442c66aed51/safetensors-0.7.0-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:672132907fcad9f2aedcb705b2d7b3b93354a2aec1b2f706c4db852abe338f85", size = 771715, upload-time = "2025-11-19T15:18:38.689Z" }, + { url = "https://files.pythonhosted.org/packages/86/31/17883e13a814bd278ae6e266b13282a01049b0c81341da7fd0e3e71a80a3/safetensors-0.7.0-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:5d72abdb8a4d56d4020713724ba81dac065fedb7f3667151c4a637f1d3fb26c0", size = 714377, upload-time = "2025-11-19T15:18:40.162Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d8/0c8a7dc9b41dcac53c4cbf9df2b9c83e0e0097203de8b37a712b345c0be5/safetensors-0.7.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b0f6d66c1c538d5a94a73aa9ddca8ccc4227e6c9ff555322ea40bdd142391dd4", size = 677368, upload-time = "2025-11-19T15:18:41.627Z" }, + { url = "https://files.pythonhosted.org/packages/05/e5/cb4b713c8a93469e3c5be7c3f8d77d307e65fe89673e731f5c2bfd0a9237/safetensors-0.7.0-cp38-abi3-win32.whl", hash = "sha256:c74af94bf3ac15ac4d0f2a7c7b4663a15f8c2ab15ed0fc7531ca61d0835eccba", size = 326423, upload-time = "2025-11-19T15:18:45.74Z" }, + { url = "https://files.pythonhosted.org/packages/5d/e6/ec8471c8072382cb91233ba7267fd931219753bb43814cbc71757bfd4dab/safetensors-0.7.0-cp38-abi3-win_amd64.whl", hash = "sha256:d1239932053f56f3456f32eb9625590cc7582e905021f94636202a864d470755", size = 341380, upload-time = "2025-11-19T15:18:44.427Z" }, + { url = "https://files.pythonhosted.org/packages/a7/6a/4d08d89a6fcbe905c5ae68b8b34f0791850882fc19782d0d02c65abbdf3b/safetensors-0.7.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4729811a6640d019a4b7ba8638ee2fd21fa5ca8c7e7bdf0fed62068fcaac737", size = 492430, upload-time = "2025-11-19T15:18:11.884Z" }, + { url = "https://files.pythonhosted.org/packages/dd/29/59ed8152b30f72c42d00d241e58eaca558ae9dbfa5695206e2e0f54c7063/safetensors-0.7.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:12f49080303fa6bb424b362149a12949dfbbf1e06811a88f2307276b0c131afd", size = 503977, upload-time = "2025-11-19T15:18:17.523Z" }, + { url = "https://files.pythonhosted.org/packages/d3/0b/4811bfec67fa260e791369b16dab105e4bae82686120554cc484064e22b4/safetensors-0.7.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0071bffba4150c2f46cae1432d31995d77acfd9f8db598b5d1a2ce67e8440ad2", size = 623890, upload-time = "2025-11-19T15:18:22.666Z" }, + { url = "https://files.pythonhosted.org/packages/58/5b/632a58724221ef03d78ab65062e82a1010e1bef8e8e0b9d7c6d7b8044841/safetensors-0.7.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:473b32699f4200e69801bf5abf93f1a4ecd432a70984df164fc22ccf39c4a6f3", size = 531885, upload-time = "2025-11-19T15:18:27.146Z" }, ] [[package]] @@ -3942,33 +3992,33 @@ dependencies = [ { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "threadpoolctl", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/c2/a7855e41c9d285dfe86dc50b250978105dce513d6e459ea66a6aeb0e1e0c/scikit_learn-1.7.2.tar.gz", hash = "sha256:20e9e49ecd130598f1ca38a1d85090e1a600147b9c02fa6f15d69cb53d968fda", size = 7193136, upload_time = "2025-09-09T08:21:29.075Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/3e/daed796fd69cce768b8788401cc464ea90b306fb196ae1ffed0b98182859/scikit_learn-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b33579c10a3081d076ab403df4a4190da4f4432d443521674637677dc91e61f", size = 9336221, upload_time = "2025-09-09T08:20:19.328Z" }, - { url = "https://files.pythonhosted.org/packages/1c/ce/af9d99533b24c55ff4e18d9b7b4d9919bbc6cd8f22fe7a7be01519a347d5/scikit_learn-1.7.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:36749fb62b3d961b1ce4fedf08fa57a1986cd409eff2d783bca5d4b9b5fce51c", size = 8653834, upload_time = "2025-09-09T08:20:22.073Z" }, - { url = "https://files.pythonhosted.org/packages/58/0e/8c2a03d518fb6bd0b6b0d4b114c63d5f1db01ff0f9925d8eb10960d01c01/scikit_learn-1.7.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7a58814265dfc52b3295b1900cfb5701589d30a8bb026c7540f1e9d3499d5ec8", size = 9660938, upload_time = "2025-09-09T08:20:24.327Z" }, - { url = "https://files.pythonhosted.org/packages/2b/75/4311605069b5d220e7cf5adabb38535bd96f0079313cdbb04b291479b22a/scikit_learn-1.7.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a847fea807e278f821a0406ca01e387f97653e284ecbd9750e3ee7c90347f18", size = 9477818, upload_time = "2025-09-09T08:20:26.845Z" }, - { url = "https://files.pythonhosted.org/packages/7f/9b/87961813c34adbca21a6b3f6b2bea344c43b30217a6d24cc437c6147f3e8/scikit_learn-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:ca250e6836d10e6f402436d6463d6c0e4d8e0234cfb6a9a47835bd392b852ce5", size = 8886969, upload_time = "2025-09-09T08:20:29.329Z" }, - { url = "https://files.pythonhosted.org/packages/43/83/564e141eef908a5863a54da8ca342a137f45a0bfb71d1d79704c9894c9d1/scikit_learn-1.7.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7509693451651cd7361d30ce4e86a1347493554f172b1c72a39300fa2aea79e", size = 9331967, upload_time = "2025-09-09T08:20:32.421Z" }, - { url = "https://files.pythonhosted.org/packages/18/d6/ba863a4171ac9d7314c4d3fc251f015704a2caeee41ced89f321c049ed83/scikit_learn-1.7.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:0486c8f827c2e7b64837c731c8feff72c0bd2b998067a8a9cbc10643c31f0fe1", size = 8648645, upload_time = "2025-09-09T08:20:34.436Z" }, - { url = "https://files.pythonhosted.org/packages/ef/0e/97dbca66347b8cf0ea8b529e6bb9367e337ba2e8be0ef5c1a545232abfde/scikit_learn-1.7.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:89877e19a80c7b11a2891a27c21c4894fb18e2c2e077815bcade10d34287b20d", size = 9715424, upload_time = "2025-09-09T08:20:36.776Z" }, - { url = "https://files.pythonhosted.org/packages/f7/32/1f3b22e3207e1d2c883a7e09abb956362e7d1bd2f14458c7de258a26ac15/scikit_learn-1.7.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8da8bf89d4d79aaec192d2bda62f9b56ae4e5b4ef93b6a56b5de4977e375c1f1", size = 9509234, upload_time = "2025-09-09T08:20:38.957Z" }, - { url = "https://files.pythonhosted.org/packages/9f/71/34ddbd21f1da67c7a768146968b4d0220ee6831e4bcbad3e03dd3eae88b6/scikit_learn-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:9b7ed8d58725030568523e937c43e56bc01cadb478fc43c042a9aca1dacb3ba1", size = 8894244, upload_time = "2025-09-09T08:20:41.166Z" }, - { url = "https://files.pythonhosted.org/packages/a7/aa/3996e2196075689afb9fce0410ebdb4a09099d7964d061d7213700204409/scikit_learn-1.7.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8d91a97fa2b706943822398ab943cde71858a50245e31bc71dba62aab1d60a96", size = 9259818, upload_time = "2025-09-09T08:20:43.19Z" }, - { url = "https://files.pythonhosted.org/packages/43/5d/779320063e88af9c4a7c2cf463ff11c21ac9c8bd730c4a294b0000b666c9/scikit_learn-1.7.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:acbc0f5fd2edd3432a22c69bed78e837c70cf896cd7993d71d51ba6708507476", size = 8636997, upload_time = "2025-09-09T08:20:45.468Z" }, - { url = "https://files.pythonhosted.org/packages/5c/d0/0c577d9325b05594fdd33aa970bf53fb673f051a45496842caee13cfd7fe/scikit_learn-1.7.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e5bf3d930aee75a65478df91ac1225ff89cd28e9ac7bd1196853a9229b6adb0b", size = 9478381, upload_time = "2025-09-09T08:20:47.982Z" }, - { url = "https://files.pythonhosted.org/packages/82/70/8bf44b933837ba8494ca0fc9a9ab60f1c13b062ad0197f60a56e2fc4c43e/scikit_learn-1.7.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4d6e9deed1a47aca9fe2f267ab8e8fe82ee20b4526b2c0cd9e135cea10feb44", size = 9300296, upload_time = "2025-09-09T08:20:50.366Z" }, - { url = "https://files.pythonhosted.org/packages/c6/99/ed35197a158f1fdc2fe7c3680e9c70d0128f662e1fee4ed495f4b5e13db0/scikit_learn-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:6088aa475f0785e01bcf8529f55280a3d7d298679f50c0bb70a2364a82d0b290", size = 8731256, upload_time = "2025-09-09T08:20:52.627Z" }, - { url = "https://files.pythonhosted.org/packages/ae/93/a3038cb0293037fd335f77f31fe053b89c72f17b1c8908c576c29d953e84/scikit_learn-1.7.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0b7dacaa05e5d76759fb071558a8b5130f4845166d88654a0f9bdf3eb57851b7", size = 9212382, upload_time = "2025-09-09T08:20:54.731Z" }, - { url = "https://files.pythonhosted.org/packages/40/dd/9a88879b0c1104259136146e4742026b52df8540c39fec21a6383f8292c7/scikit_learn-1.7.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:abebbd61ad9e1deed54cca45caea8ad5f79e1b93173dece40bb8e0c658dbe6fe", size = 8592042, upload_time = "2025-09-09T08:20:57.313Z" }, - { url = "https://files.pythonhosted.org/packages/46/af/c5e286471b7d10871b811b72ae794ac5fe2989c0a2df07f0ec723030f5f5/scikit_learn-1.7.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:502c18e39849c0ea1a5d681af1dbcf15f6cce601aebb657aabbfe84133c1907f", size = 9434180, upload_time = "2025-09-09T08:20:59.671Z" }, - { url = "https://files.pythonhosted.org/packages/f1/fd/df59faa53312d585023b2da27e866524ffb8faf87a68516c23896c718320/scikit_learn-1.7.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a4c328a71785382fe3fe676a9ecf2c86189249beff90bf85e22bdb7efaf9ae0", size = 9283660, upload_time = "2025-09-09T08:21:01.71Z" }, - { url = "https://files.pythonhosted.org/packages/a7/c7/03000262759d7b6f38c836ff9d512f438a70d8a8ddae68ee80de72dcfb63/scikit_learn-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:63a9afd6f7b229aad94618c01c252ce9e6fa97918c5ca19c9a17a087d819440c", size = 8702057, upload_time = "2025-09-09T08:21:04.234Z" }, - { url = "https://files.pythonhosted.org/packages/55/87/ef5eb1f267084532c8e4aef98a28b6ffe7425acbfd64b5e2f2e066bc29b3/scikit_learn-1.7.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9acb6c5e867447b4e1390930e3944a005e2cb115922e693c08a323421a6966e8", size = 9558731, upload_time = "2025-09-09T08:21:06.381Z" }, - { url = "https://files.pythonhosted.org/packages/93/f8/6c1e3fc14b10118068d7938878a9f3f4e6d7b74a8ddb1e5bed65159ccda8/scikit_learn-1.7.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:2a41e2a0ef45063e654152ec9d8bcfc39f7afce35b08902bfe290c2498a67a6a", size = 9038852, upload_time = "2025-09-09T08:21:08.628Z" }, - { url = "https://files.pythonhosted.org/packages/83/87/066cafc896ee540c34becf95d30375fe5cbe93c3b75a0ee9aa852cd60021/scikit_learn-1.7.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:98335fb98509b73385b3ab2bd0639b1f610541d3988ee675c670371d6a87aa7c", size = 9527094, upload_time = "2025-09-09T08:21:11.486Z" }, - { url = "https://files.pythonhosted.org/packages/9c/2b/4903e1ccafa1f6453b1ab78413938c8800633988c838aa0be386cbb33072/scikit_learn-1.7.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:191e5550980d45449126e23ed1d5e9e24b2c68329ee1f691a3987476e115e09c", size = 9367436, upload_time = "2025-09-09T08:21:13.602Z" }, - { url = "https://files.pythonhosted.org/packages/b5/aa/8444be3cfb10451617ff9d177b3c190288f4563e6c50ff02728be67ad094/scikit_learn-1.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:57dc4deb1d3762c75d685507fbd0bc17160144b2f2ba4ccea5dc285ab0d0e973", size = 9275749, upload_time = "2025-09-09T08:21:15.96Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/98/c2/a7855e41c9d285dfe86dc50b250978105dce513d6e459ea66a6aeb0e1e0c/scikit_learn-1.7.2.tar.gz", hash = "sha256:20e9e49ecd130598f1ca38a1d85090e1a600147b9c02fa6f15d69cb53d968fda", size = 7193136, upload-time = "2025-09-09T08:21:29.075Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/3e/daed796fd69cce768b8788401cc464ea90b306fb196ae1ffed0b98182859/scikit_learn-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b33579c10a3081d076ab403df4a4190da4f4432d443521674637677dc91e61f", size = 9336221, upload-time = "2025-09-09T08:20:19.328Z" }, + { url = "https://files.pythonhosted.org/packages/1c/ce/af9d99533b24c55ff4e18d9b7b4d9919bbc6cd8f22fe7a7be01519a347d5/scikit_learn-1.7.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:36749fb62b3d961b1ce4fedf08fa57a1986cd409eff2d783bca5d4b9b5fce51c", size = 8653834, upload-time = "2025-09-09T08:20:22.073Z" }, + { url = "https://files.pythonhosted.org/packages/58/0e/8c2a03d518fb6bd0b6b0d4b114c63d5f1db01ff0f9925d8eb10960d01c01/scikit_learn-1.7.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7a58814265dfc52b3295b1900cfb5701589d30a8bb026c7540f1e9d3499d5ec8", size = 9660938, upload-time = "2025-09-09T08:20:24.327Z" }, + { url = "https://files.pythonhosted.org/packages/2b/75/4311605069b5d220e7cf5adabb38535bd96f0079313cdbb04b291479b22a/scikit_learn-1.7.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a847fea807e278f821a0406ca01e387f97653e284ecbd9750e3ee7c90347f18", size = 9477818, upload-time = "2025-09-09T08:20:26.845Z" }, + { url = "https://files.pythonhosted.org/packages/7f/9b/87961813c34adbca21a6b3f6b2bea344c43b30217a6d24cc437c6147f3e8/scikit_learn-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:ca250e6836d10e6f402436d6463d6c0e4d8e0234cfb6a9a47835bd392b852ce5", size = 8886969, upload-time = "2025-09-09T08:20:29.329Z" }, + { url = "https://files.pythonhosted.org/packages/43/83/564e141eef908a5863a54da8ca342a137f45a0bfb71d1d79704c9894c9d1/scikit_learn-1.7.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7509693451651cd7361d30ce4e86a1347493554f172b1c72a39300fa2aea79e", size = 9331967, upload-time = "2025-09-09T08:20:32.421Z" }, + { url = "https://files.pythonhosted.org/packages/18/d6/ba863a4171ac9d7314c4d3fc251f015704a2caeee41ced89f321c049ed83/scikit_learn-1.7.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:0486c8f827c2e7b64837c731c8feff72c0bd2b998067a8a9cbc10643c31f0fe1", size = 8648645, upload-time = "2025-09-09T08:20:34.436Z" }, + { url = "https://files.pythonhosted.org/packages/ef/0e/97dbca66347b8cf0ea8b529e6bb9367e337ba2e8be0ef5c1a545232abfde/scikit_learn-1.7.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:89877e19a80c7b11a2891a27c21c4894fb18e2c2e077815bcade10d34287b20d", size = 9715424, upload-time = "2025-09-09T08:20:36.776Z" }, + { url = "https://files.pythonhosted.org/packages/f7/32/1f3b22e3207e1d2c883a7e09abb956362e7d1bd2f14458c7de258a26ac15/scikit_learn-1.7.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8da8bf89d4d79aaec192d2bda62f9b56ae4e5b4ef93b6a56b5de4977e375c1f1", size = 9509234, upload-time = "2025-09-09T08:20:38.957Z" }, + { url = "https://files.pythonhosted.org/packages/9f/71/34ddbd21f1da67c7a768146968b4d0220ee6831e4bcbad3e03dd3eae88b6/scikit_learn-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:9b7ed8d58725030568523e937c43e56bc01cadb478fc43c042a9aca1dacb3ba1", size = 8894244, upload-time = "2025-09-09T08:20:41.166Z" }, + { url = "https://files.pythonhosted.org/packages/a7/aa/3996e2196075689afb9fce0410ebdb4a09099d7964d061d7213700204409/scikit_learn-1.7.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8d91a97fa2b706943822398ab943cde71858a50245e31bc71dba62aab1d60a96", size = 9259818, upload-time = "2025-09-09T08:20:43.19Z" }, + { url = "https://files.pythonhosted.org/packages/43/5d/779320063e88af9c4a7c2cf463ff11c21ac9c8bd730c4a294b0000b666c9/scikit_learn-1.7.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:acbc0f5fd2edd3432a22c69bed78e837c70cf896cd7993d71d51ba6708507476", size = 8636997, upload-time = "2025-09-09T08:20:45.468Z" }, + { url = "https://files.pythonhosted.org/packages/5c/d0/0c577d9325b05594fdd33aa970bf53fb673f051a45496842caee13cfd7fe/scikit_learn-1.7.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e5bf3d930aee75a65478df91ac1225ff89cd28e9ac7bd1196853a9229b6adb0b", size = 9478381, upload-time = "2025-09-09T08:20:47.982Z" }, + { url = "https://files.pythonhosted.org/packages/82/70/8bf44b933837ba8494ca0fc9a9ab60f1c13b062ad0197f60a56e2fc4c43e/scikit_learn-1.7.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4d6e9deed1a47aca9fe2f267ab8e8fe82ee20b4526b2c0cd9e135cea10feb44", size = 9300296, upload-time = "2025-09-09T08:20:50.366Z" }, + { url = "https://files.pythonhosted.org/packages/c6/99/ed35197a158f1fdc2fe7c3680e9c70d0128f662e1fee4ed495f4b5e13db0/scikit_learn-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:6088aa475f0785e01bcf8529f55280a3d7d298679f50c0bb70a2364a82d0b290", size = 8731256, upload-time = "2025-09-09T08:20:52.627Z" }, + { url = "https://files.pythonhosted.org/packages/ae/93/a3038cb0293037fd335f77f31fe053b89c72f17b1c8908c576c29d953e84/scikit_learn-1.7.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0b7dacaa05e5d76759fb071558a8b5130f4845166d88654a0f9bdf3eb57851b7", size = 9212382, upload-time = "2025-09-09T08:20:54.731Z" }, + { url = "https://files.pythonhosted.org/packages/40/dd/9a88879b0c1104259136146e4742026b52df8540c39fec21a6383f8292c7/scikit_learn-1.7.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:abebbd61ad9e1deed54cca45caea8ad5f79e1b93173dece40bb8e0c658dbe6fe", size = 8592042, upload-time = "2025-09-09T08:20:57.313Z" }, + { url = "https://files.pythonhosted.org/packages/46/af/c5e286471b7d10871b811b72ae794ac5fe2989c0a2df07f0ec723030f5f5/scikit_learn-1.7.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:502c18e39849c0ea1a5d681af1dbcf15f6cce601aebb657aabbfe84133c1907f", size = 9434180, upload-time = "2025-09-09T08:20:59.671Z" }, + { url = "https://files.pythonhosted.org/packages/f1/fd/df59faa53312d585023b2da27e866524ffb8faf87a68516c23896c718320/scikit_learn-1.7.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a4c328a71785382fe3fe676a9ecf2c86189249beff90bf85e22bdb7efaf9ae0", size = 9283660, upload-time = "2025-09-09T08:21:01.71Z" }, + { url = "https://files.pythonhosted.org/packages/a7/c7/03000262759d7b6f38c836ff9d512f438a70d8a8ddae68ee80de72dcfb63/scikit_learn-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:63a9afd6f7b229aad94618c01c252ce9e6fa97918c5ca19c9a17a087d819440c", size = 8702057, upload-time = "2025-09-09T08:21:04.234Z" }, + { url = "https://files.pythonhosted.org/packages/55/87/ef5eb1f267084532c8e4aef98a28b6ffe7425acbfd64b5e2f2e066bc29b3/scikit_learn-1.7.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9acb6c5e867447b4e1390930e3944a005e2cb115922e693c08a323421a6966e8", size = 9558731, upload-time = "2025-09-09T08:21:06.381Z" }, + { url = "https://files.pythonhosted.org/packages/93/f8/6c1e3fc14b10118068d7938878a9f3f4e6d7b74a8ddb1e5bed65159ccda8/scikit_learn-1.7.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:2a41e2a0ef45063e654152ec9d8bcfc39f7afce35b08902bfe290c2498a67a6a", size = 9038852, upload-time = "2025-09-09T08:21:08.628Z" }, + { url = "https://files.pythonhosted.org/packages/83/87/066cafc896ee540c34becf95d30375fe5cbe93c3b75a0ee9aa852cd60021/scikit_learn-1.7.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:98335fb98509b73385b3ab2bd0639b1f610541d3988ee675c670371d6a87aa7c", size = 9527094, upload-time = "2025-09-09T08:21:11.486Z" }, + { url = "https://files.pythonhosted.org/packages/9c/2b/4903e1ccafa1f6453b1ab78413938c8800633988c838aa0be386cbb33072/scikit_learn-1.7.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:191e5550980d45449126e23ed1d5e9e24b2c68329ee1f691a3987476e115e09c", size = 9367436, upload-time = "2025-09-09T08:21:13.602Z" }, + { url = "https://files.pythonhosted.org/packages/b5/aa/8444be3cfb10451617ff9d177b3c190288f4563e6c50ff02728be67ad094/scikit_learn-1.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:57dc4deb1d3762c75d685507fbd0bc17160144b2f2ba4ccea5dc285ab0d0e973", size = 9275749, upload-time = "2025-09-09T08:21:15.96Z" }, ] [[package]] @@ -3991,32 +4041,32 @@ dependencies = [ { name = "scipy", version = "1.17.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "threadpoolctl", marker = "python_full_version >= '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0e/d4/40988bf3b8e34feec1d0e6a051446b1f66225f8529b9309becaeef62b6c4/scikit_learn-1.8.0.tar.gz", hash = "sha256:9bccbb3b40e3de10351f8f5068e105d0f4083b1a65fa07b6634fbc401a6287fd", size = 7335585, upload_time = "2025-12-10T07:08:53.618Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c9/92/53ea2181da8ac6bf27170191028aee7251f8f841f8d3edbfdcaf2008fde9/scikit_learn-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:146b4d36f800c013d267b29168813f7a03a43ecd2895d04861f1240b564421da", size = 8595835, upload_time = "2025-12-10T07:07:39.385Z" }, - { url = "https://files.pythonhosted.org/packages/01/18/d154dc1638803adf987910cdd07097d9c526663a55666a97c124d09fb96a/scikit_learn-1.8.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:f984ca4b14914e6b4094c5d52a32ea16b49832c03bd17a110f004db3c223e8e1", size = 8080381, upload_time = "2025-12-10T07:07:41.93Z" }, - { url = "https://files.pythonhosted.org/packages/8a/44/226142fcb7b7101e64fdee5f49dbe6288d4c7af8abf593237b70fca080a4/scikit_learn-1.8.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e30adb87f0cc81c7690a84f7932dd66be5bac57cfe16b91cb9151683a4a2d3b", size = 8799632, upload_time = "2025-12-10T07:07:43.899Z" }, - { url = "https://files.pythonhosted.org/packages/36/4d/4a67f30778a45d542bbea5db2dbfa1e9e100bf9ba64aefe34215ba9f11f6/scikit_learn-1.8.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ada8121bcb4dac28d930febc791a69f7cb1673c8495e5eee274190b73a4559c1", size = 9103788, upload_time = "2025-12-10T07:07:45.982Z" }, - { url = "https://files.pythonhosted.org/packages/89/3c/45c352094cfa60050bcbb967b1faf246b22e93cb459f2f907b600f2ceda5/scikit_learn-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:c57b1b610bd1f40ba43970e11ce62821c2e6569e4d74023db19c6b26f246cb3b", size = 8081706, upload_time = "2025-12-10T07:07:48.111Z" }, - { url = "https://files.pythonhosted.org/packages/3d/46/5416595bb395757f754feb20c3d776553a386b661658fb21b7c814e89efe/scikit_learn-1.8.0-cp311-cp311-win_arm64.whl", hash = "sha256:2838551e011a64e3053ad7618dda9310175f7515f1742fa2d756f7c874c05961", size = 7688451, upload_time = "2025-12-10T07:07:49.873Z" }, - { url = "https://files.pythonhosted.org/packages/90/74/e6a7cc4b820e95cc38cf36cd74d5aa2b42e8ffc2d21fe5a9a9c45c1c7630/scikit_learn-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5fb63362b5a7ddab88e52b6dbb47dac3fd7dafeee740dc6c8d8a446ddedade8e", size = 8548242, upload_time = "2025-12-10T07:07:51.568Z" }, - { url = "https://files.pythonhosted.org/packages/49/d8/9be608c6024d021041c7f0b3928d4749a706f4e2c3832bbede4fb4f58c95/scikit_learn-1.8.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:5025ce924beccb28298246e589c691fe1b8c1c96507e6d27d12c5fadd85bfd76", size = 8079075, upload_time = "2025-12-10T07:07:53.697Z" }, - { url = "https://files.pythonhosted.org/packages/dd/47/f187b4636ff80cc63f21cd40b7b2d177134acaa10f6bb73746130ee8c2e5/scikit_learn-1.8.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4496bb2cf7a43ce1a2d7524a79e40bc5da45cf598dbf9545b7e8316ccba47bb4", size = 8660492, upload_time = "2025-12-10T07:07:55.574Z" }, - { url = "https://files.pythonhosted.org/packages/97/74/b7a304feb2b49df9fafa9382d4d09061a96ee9a9449a7cbea7988dda0828/scikit_learn-1.8.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0bcfe4d0d14aec44921545fd2af2338c7471de9cb701f1da4c9d85906ab847a", size = 8931904, upload_time = "2025-12-10T07:07:57.666Z" }, - { url = "https://files.pythonhosted.org/packages/9f/c4/0ab22726a04ede56f689476b760f98f8f46607caecff993017ac1b64aa5d/scikit_learn-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:35c007dedb2ffe38fe3ee7d201ebac4a2deccd2408e8621d53067733e3c74809", size = 8019359, upload_time = "2025-12-10T07:07:59.838Z" }, - { url = "https://files.pythonhosted.org/packages/24/90/344a67811cfd561d7335c1b96ca21455e7e472d281c3c279c4d3f2300236/scikit_learn-1.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:8c497fff237d7b4e07e9ef1a640887fa4fb765647f86fbe00f969ff6280ce2bb", size = 7641898, upload_time = "2025-12-10T07:08:01.36Z" }, - { url = "https://files.pythonhosted.org/packages/03/aa/e22e0768512ce9255eba34775be2e85c2048da73da1193e841707f8f039c/scikit_learn-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0d6ae97234d5d7079dc0040990a6f7aeb97cb7fa7e8945f1999a429b23569e0a", size = 8513770, upload_time = "2025-12-10T07:08:03.251Z" }, - { url = "https://files.pythonhosted.org/packages/58/37/31b83b2594105f61a381fc74ca19e8780ee923be2d496fcd8d2e1147bd99/scikit_learn-1.8.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:edec98c5e7c128328124a029bceb09eda2d526997780fef8d65e9a69eead963e", size = 8044458, upload_time = "2025-12-10T07:08:05.336Z" }, - { url = "https://files.pythonhosted.org/packages/2d/5a/3f1caed8765f33eabb723596666da4ebbf43d11e96550fb18bdec42b467b/scikit_learn-1.8.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:74b66d8689d52ed04c271e1329f0c61635bcaf5b926db9b12d58914cdc01fe57", size = 8610341, upload_time = "2025-12-10T07:08:07.732Z" }, - { url = "https://files.pythonhosted.org/packages/38/cf/06896db3f71c75902a8e9943b444a56e727418f6b4b4a90c98c934f51ed4/scikit_learn-1.8.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8fdf95767f989b0cfedb85f7ed8ca215d4be728031f56ff5a519ee1e3276dc2e", size = 8900022, upload_time = "2025-12-10T07:08:09.862Z" }, - { url = "https://files.pythonhosted.org/packages/1c/f9/9b7563caf3ec8873e17a31401858efab6b39a882daf6c1bfa88879c0aa11/scikit_learn-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:2de443b9373b3b615aec1bb57f9baa6bb3a9bd093f1269ba95c17d870422b271", size = 7989409, upload_time = "2025-12-10T07:08:12.028Z" }, - { url = "https://files.pythonhosted.org/packages/49/bd/1f4001503650e72c4f6009ac0c4413cb17d2d601cef6f71c0453da2732fc/scikit_learn-1.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:eddde82a035681427cbedded4e6eff5e57fa59216c2e3e90b10b19ab1d0a65c3", size = 7619760, upload_time = "2025-12-10T07:08:13.688Z" }, - { url = "https://files.pythonhosted.org/packages/d2/7d/a630359fc9dcc95496588c8d8e3245cc8fd81980251079bc09c70d41d951/scikit_learn-1.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7cc267b6108f0a1499a734167282c00c4ebf61328566b55ef262d48e9849c735", size = 8826045, upload_time = "2025-12-10T07:08:15.215Z" }, - { url = "https://files.pythonhosted.org/packages/cc/56/a0c86f6930cfcd1c7054a2bc417e26960bb88d32444fe7f71d5c2cfae891/scikit_learn-1.8.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:fe1c011a640a9f0791146011dfd3c7d9669785f9fed2b2a5f9e207536cf5c2fd", size = 8420324, upload_time = "2025-12-10T07:08:17.561Z" }, - { url = "https://files.pythonhosted.org/packages/46/1e/05962ea1cebc1cf3876667ecb14c283ef755bf409993c5946ade3b77e303/scikit_learn-1.8.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72358cce49465d140cc4e7792015bb1f0296a9742d5622c67e31399b75468b9e", size = 8680651, upload_time = "2025-12-10T07:08:19.952Z" }, - { url = "https://files.pythonhosted.org/packages/fe/56/a85473cd75f200c9759e3a5f0bcab2d116c92a8a02ee08ccd73b870f8bb4/scikit_learn-1.8.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:80832434a6cc114f5219211eec13dcbc16c2bac0e31ef64c6d346cde3cf054cb", size = 8925045, upload_time = "2025-12-10T07:08:22.11Z" }, - { url = "https://files.pythonhosted.org/packages/cc/b7/64d8cfa896c64435ae57f4917a548d7ac7a44762ff9802f75a79b77cb633/scikit_learn-1.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ee787491dbfe082d9c3013f01f5991658b0f38aa8177e4cd4bf434c58f551702", size = 8507994, upload_time = "2025-12-10T07:08:23.943Z" }, - { url = "https://files.pythonhosted.org/packages/5e/37/e192ea709551799379958b4c4771ec507347027bb7c942662c7fbeba31cb/scikit_learn-1.8.0-cp313-cp313t-win_arm64.whl", hash = "sha256:bf97c10a3f5a7543f9b88cbf488d33d175e9146115a451ae34568597ba33dcde", size = 7869518, upload_time = "2025-12-10T07:08:25.71Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/0e/d4/40988bf3b8e34feec1d0e6a051446b1f66225f8529b9309becaeef62b6c4/scikit_learn-1.8.0.tar.gz", hash = "sha256:9bccbb3b40e3de10351f8f5068e105d0f4083b1a65fa07b6634fbc401a6287fd", size = 7335585, upload-time = "2025-12-10T07:08:53.618Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/92/53ea2181da8ac6bf27170191028aee7251f8f841f8d3edbfdcaf2008fde9/scikit_learn-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:146b4d36f800c013d267b29168813f7a03a43ecd2895d04861f1240b564421da", size = 8595835, upload-time = "2025-12-10T07:07:39.385Z" }, + { url = "https://files.pythonhosted.org/packages/01/18/d154dc1638803adf987910cdd07097d9c526663a55666a97c124d09fb96a/scikit_learn-1.8.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:f984ca4b14914e6b4094c5d52a32ea16b49832c03bd17a110f004db3c223e8e1", size = 8080381, upload-time = "2025-12-10T07:07:41.93Z" }, + { url = "https://files.pythonhosted.org/packages/8a/44/226142fcb7b7101e64fdee5f49dbe6288d4c7af8abf593237b70fca080a4/scikit_learn-1.8.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e30adb87f0cc81c7690a84f7932dd66be5bac57cfe16b91cb9151683a4a2d3b", size = 8799632, upload-time = "2025-12-10T07:07:43.899Z" }, + { url = "https://files.pythonhosted.org/packages/36/4d/4a67f30778a45d542bbea5db2dbfa1e9e100bf9ba64aefe34215ba9f11f6/scikit_learn-1.8.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ada8121bcb4dac28d930febc791a69f7cb1673c8495e5eee274190b73a4559c1", size = 9103788, upload-time = "2025-12-10T07:07:45.982Z" }, + { url = "https://files.pythonhosted.org/packages/89/3c/45c352094cfa60050bcbb967b1faf246b22e93cb459f2f907b600f2ceda5/scikit_learn-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:c57b1b610bd1f40ba43970e11ce62821c2e6569e4d74023db19c6b26f246cb3b", size = 8081706, upload-time = "2025-12-10T07:07:48.111Z" }, + { url = "https://files.pythonhosted.org/packages/3d/46/5416595bb395757f754feb20c3d776553a386b661658fb21b7c814e89efe/scikit_learn-1.8.0-cp311-cp311-win_arm64.whl", hash = "sha256:2838551e011a64e3053ad7618dda9310175f7515f1742fa2d756f7c874c05961", size = 7688451, upload-time = "2025-12-10T07:07:49.873Z" }, + { url = "https://files.pythonhosted.org/packages/90/74/e6a7cc4b820e95cc38cf36cd74d5aa2b42e8ffc2d21fe5a9a9c45c1c7630/scikit_learn-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5fb63362b5a7ddab88e52b6dbb47dac3fd7dafeee740dc6c8d8a446ddedade8e", size = 8548242, upload-time = "2025-12-10T07:07:51.568Z" }, + { url = "https://files.pythonhosted.org/packages/49/d8/9be608c6024d021041c7f0b3928d4749a706f4e2c3832bbede4fb4f58c95/scikit_learn-1.8.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:5025ce924beccb28298246e589c691fe1b8c1c96507e6d27d12c5fadd85bfd76", size = 8079075, upload-time = "2025-12-10T07:07:53.697Z" }, + { url = "https://files.pythonhosted.org/packages/dd/47/f187b4636ff80cc63f21cd40b7b2d177134acaa10f6bb73746130ee8c2e5/scikit_learn-1.8.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4496bb2cf7a43ce1a2d7524a79e40bc5da45cf598dbf9545b7e8316ccba47bb4", size = 8660492, upload-time = "2025-12-10T07:07:55.574Z" }, + { url = "https://files.pythonhosted.org/packages/97/74/b7a304feb2b49df9fafa9382d4d09061a96ee9a9449a7cbea7988dda0828/scikit_learn-1.8.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0bcfe4d0d14aec44921545fd2af2338c7471de9cb701f1da4c9d85906ab847a", size = 8931904, upload-time = "2025-12-10T07:07:57.666Z" }, + { url = "https://files.pythonhosted.org/packages/9f/c4/0ab22726a04ede56f689476b760f98f8f46607caecff993017ac1b64aa5d/scikit_learn-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:35c007dedb2ffe38fe3ee7d201ebac4a2deccd2408e8621d53067733e3c74809", size = 8019359, upload-time = "2025-12-10T07:07:59.838Z" }, + { url = "https://files.pythonhosted.org/packages/24/90/344a67811cfd561d7335c1b96ca21455e7e472d281c3c279c4d3f2300236/scikit_learn-1.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:8c497fff237d7b4e07e9ef1a640887fa4fb765647f86fbe00f969ff6280ce2bb", size = 7641898, upload-time = "2025-12-10T07:08:01.36Z" }, + { url = "https://files.pythonhosted.org/packages/03/aa/e22e0768512ce9255eba34775be2e85c2048da73da1193e841707f8f039c/scikit_learn-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0d6ae97234d5d7079dc0040990a6f7aeb97cb7fa7e8945f1999a429b23569e0a", size = 8513770, upload-time = "2025-12-10T07:08:03.251Z" }, + { url = "https://files.pythonhosted.org/packages/58/37/31b83b2594105f61a381fc74ca19e8780ee923be2d496fcd8d2e1147bd99/scikit_learn-1.8.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:edec98c5e7c128328124a029bceb09eda2d526997780fef8d65e9a69eead963e", size = 8044458, upload-time = "2025-12-10T07:08:05.336Z" }, + { url = "https://files.pythonhosted.org/packages/2d/5a/3f1caed8765f33eabb723596666da4ebbf43d11e96550fb18bdec42b467b/scikit_learn-1.8.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:74b66d8689d52ed04c271e1329f0c61635bcaf5b926db9b12d58914cdc01fe57", size = 8610341, upload-time = "2025-12-10T07:08:07.732Z" }, + { url = "https://files.pythonhosted.org/packages/38/cf/06896db3f71c75902a8e9943b444a56e727418f6b4b4a90c98c934f51ed4/scikit_learn-1.8.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8fdf95767f989b0cfedb85f7ed8ca215d4be728031f56ff5a519ee1e3276dc2e", size = 8900022, upload-time = "2025-12-10T07:08:09.862Z" }, + { url = "https://files.pythonhosted.org/packages/1c/f9/9b7563caf3ec8873e17a31401858efab6b39a882daf6c1bfa88879c0aa11/scikit_learn-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:2de443b9373b3b615aec1bb57f9baa6bb3a9bd093f1269ba95c17d870422b271", size = 7989409, upload-time = "2025-12-10T07:08:12.028Z" }, + { url = "https://files.pythonhosted.org/packages/49/bd/1f4001503650e72c4f6009ac0c4413cb17d2d601cef6f71c0453da2732fc/scikit_learn-1.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:eddde82a035681427cbedded4e6eff5e57fa59216c2e3e90b10b19ab1d0a65c3", size = 7619760, upload-time = "2025-12-10T07:08:13.688Z" }, + { url = "https://files.pythonhosted.org/packages/d2/7d/a630359fc9dcc95496588c8d8e3245cc8fd81980251079bc09c70d41d951/scikit_learn-1.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7cc267b6108f0a1499a734167282c00c4ebf61328566b55ef262d48e9849c735", size = 8826045, upload-time = "2025-12-10T07:08:15.215Z" }, + { url = "https://files.pythonhosted.org/packages/cc/56/a0c86f6930cfcd1c7054a2bc417e26960bb88d32444fe7f71d5c2cfae891/scikit_learn-1.8.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:fe1c011a640a9f0791146011dfd3c7d9669785f9fed2b2a5f9e207536cf5c2fd", size = 8420324, upload-time = "2025-12-10T07:08:17.561Z" }, + { url = "https://files.pythonhosted.org/packages/46/1e/05962ea1cebc1cf3876667ecb14c283ef755bf409993c5946ade3b77e303/scikit_learn-1.8.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72358cce49465d140cc4e7792015bb1f0296a9742d5622c67e31399b75468b9e", size = 8680651, upload-time = "2025-12-10T07:08:19.952Z" }, + { url = "https://files.pythonhosted.org/packages/fe/56/a85473cd75f200c9759e3a5f0bcab2d116c92a8a02ee08ccd73b870f8bb4/scikit_learn-1.8.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:80832434a6cc114f5219211eec13dcbc16c2bac0e31ef64c6d346cde3cf054cb", size = 8925045, upload-time = "2025-12-10T07:08:22.11Z" }, + { url = "https://files.pythonhosted.org/packages/cc/b7/64d8cfa896c64435ae57f4917a548d7ac7a44762ff9802f75a79b77cb633/scikit_learn-1.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ee787491dbfe082d9c3013f01f5991658b0f38aa8177e4cd4bf434c58f551702", size = 8507994, upload-time = "2025-12-10T07:08:23.943Z" }, + { url = "https://files.pythonhosted.org/packages/5e/37/e192ea709551799379958b4c4771ec507347027bb7c942662c7fbeba31cb/scikit_learn-1.8.0-cp313-cp313t-win_arm64.whl", hash = "sha256:bf97c10a3f5a7543f9b88cbf488d33d175e9146115a451ae34568597ba33dcde", size = 7869518, upload-time = "2025-12-10T07:08:25.71Z" }, ] [[package]] @@ -4030,53 +4080,53 @@ resolution-markers = [ dependencies = [ { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload_time = "2025-05-08T16:13:05.955Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/78/2f/4966032c5f8cc7e6a60f1b2e0ad686293b9474b65246b0c642e3ef3badd0/scipy-1.15.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:a345928c86d535060c9c2b25e71e87c39ab2f22fc96e9636bd74d1dbf9de448c", size = 38702770, upload_time = "2025-05-08T16:04:20.849Z" }, - { url = "https://files.pythonhosted.org/packages/a0/6e/0c3bf90fae0e910c274db43304ebe25a6b391327f3f10b5dcc638c090795/scipy-1.15.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:ad3432cb0f9ed87477a8d97f03b763fd1d57709f1bbde3c9369b1dff5503b253", size = 30094511, upload_time = "2025-05-08T16:04:27.103Z" }, - { url = "https://files.pythonhosted.org/packages/ea/b1/4deb37252311c1acff7f101f6453f0440794f51b6eacb1aad4459a134081/scipy-1.15.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:aef683a9ae6eb00728a542b796f52a5477b78252edede72b8327a886ab63293f", size = 22368151, upload_time = "2025-05-08T16:04:31.731Z" }, - { url = "https://files.pythonhosted.org/packages/38/7d/f457626e3cd3c29b3a49ca115a304cebb8cc6f31b04678f03b216899d3c6/scipy-1.15.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:1c832e1bd78dea67d5c16f786681b28dd695a8cb1fb90af2e27580d3d0967e92", size = 25121732, upload_time = "2025-05-08T16:04:36.596Z" }, - { url = "https://files.pythonhosted.org/packages/db/0a/92b1de4a7adc7a15dcf5bddc6e191f6f29ee663b30511ce20467ef9b82e4/scipy-1.15.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:263961f658ce2165bbd7b99fa5135195c3a12d9bef045345016b8b50c315cb82", size = 35547617, upload_time = "2025-05-08T16:04:43.546Z" }, - { url = "https://files.pythonhosted.org/packages/8e/6d/41991e503e51fc1134502694c5fa7a1671501a17ffa12716a4a9151af3df/scipy-1.15.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2abc762b0811e09a0d3258abee2d98e0c703eee49464ce0069590846f31d40", size = 37662964, upload_time = "2025-05-08T16:04:49.431Z" }, - { url = "https://files.pythonhosted.org/packages/25/e1/3df8f83cb15f3500478c889be8fb18700813b95e9e087328230b98d547ff/scipy-1.15.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed7284b21a7a0c8f1b6e5977ac05396c0d008b89e05498c8b7e8f4a1423bba0e", size = 37238749, upload_time = "2025-05-08T16:04:55.215Z" }, - { url = "https://files.pythonhosted.org/packages/93/3e/b3257cf446f2a3533ed7809757039016b74cd6f38271de91682aa844cfc5/scipy-1.15.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5380741e53df2c566f4d234b100a484b420af85deb39ea35a1cc1be84ff53a5c", size = 40022383, upload_time = "2025-05-08T16:05:01.914Z" }, - { url = "https://files.pythonhosted.org/packages/d1/84/55bc4881973d3f79b479a5a2e2df61c8c9a04fcb986a213ac9c02cfb659b/scipy-1.15.3-cp310-cp310-win_amd64.whl", hash = "sha256:9d61e97b186a57350f6d6fd72640f9e99d5a4a2b8fbf4b9ee9a841eab327dc13", size = 41259201, upload_time = "2025-05-08T16:05:08.166Z" }, - { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255, upload_time = "2025-05-08T16:05:14.596Z" }, - { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035, upload_time = "2025-05-08T16:05:20.152Z" }, - { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499, upload_time = "2025-05-08T16:05:24.494Z" }, - { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602, upload_time = "2025-05-08T16:05:29.313Z" }, - { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415, upload_time = "2025-05-08T16:05:34.699Z" }, - { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622, upload_time = "2025-05-08T16:05:40.762Z" }, - { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796, upload_time = "2025-05-08T16:05:48.119Z" }, - { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684, upload_time = "2025-05-08T16:05:54.22Z" }, - { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504, upload_time = "2025-05-08T16:06:00.437Z" }, - { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735, upload_time = "2025-05-08T16:06:06.471Z" }, - { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284, upload_time = "2025-05-08T16:06:11.686Z" }, - { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958, upload_time = "2025-05-08T16:06:15.97Z" }, - { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454, upload_time = "2025-05-08T16:06:20.394Z" }, - { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199, upload_time = "2025-05-08T16:06:26.159Z" }, - { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455, upload_time = "2025-05-08T16:06:32.778Z" }, - { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140, upload_time = "2025-05-08T16:06:39.249Z" }, - { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549, upload_time = "2025-05-08T16:06:45.729Z" }, - { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184, upload_time = "2025-05-08T16:06:52.623Z" }, - { url = "https://files.pythonhosted.org/packages/73/18/ec27848c9baae6e0d6573eda6e01a602e5649ee72c27c3a8aad673ebecfd/scipy-1.15.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c620736bcc334782e24d173c0fdbb7590a0a436d2fdf39310a8902505008759", size = 38728256, upload_time = "2025-05-08T16:06:58.696Z" }, - { url = "https://files.pythonhosted.org/packages/74/cd/1aef2184948728b4b6e21267d53b3339762c285a46a274ebb7863c9e4742/scipy-1.15.3-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:7e11270a000969409d37ed399585ee530b9ef6aa99d50c019de4cb01e8e54e62", size = 30109540, upload_time = "2025-05-08T16:07:04.209Z" }, - { url = "https://files.pythonhosted.org/packages/5b/d8/59e452c0a255ec352bd0a833537a3bc1bfb679944c4938ab375b0a6b3a3e/scipy-1.15.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8c9ed3ba2c8a2ce098163a9bdb26f891746d02136995df25227a20e71c396ebb", size = 22383115, upload_time = "2025-05-08T16:07:08.998Z" }, - { url = "https://files.pythonhosted.org/packages/08/f5/456f56bbbfccf696263b47095291040655e3cbaf05d063bdc7c7517f32ac/scipy-1.15.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:0bdd905264c0c9cfa74a4772cdb2070171790381a5c4d312c973382fc6eaf730", size = 25163884, upload_time = "2025-05-08T16:07:14.091Z" }, - { url = "https://files.pythonhosted.org/packages/a2/66/a9618b6a435a0f0c0b8a6d0a2efb32d4ec5a85f023c2b79d39512040355b/scipy-1.15.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79167bba085c31f38603e11a267d862957cbb3ce018d8b38f79ac043bc92d825", size = 35174018, upload_time = "2025-05-08T16:07:19.427Z" }, - { url = "https://files.pythonhosted.org/packages/b5/09/c5b6734a50ad4882432b6bb7c02baf757f5b2f256041da5df242e2d7e6b6/scipy-1.15.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9deabd6d547aee2c9a81dee6cc96c6d7e9a9b1953f74850c179f91fdc729cb7", size = 37269716, upload_time = "2025-05-08T16:07:25.712Z" }, - { url = "https://files.pythonhosted.org/packages/77/0a/eac00ff741f23bcabd352731ed9b8995a0a60ef57f5fd788d611d43d69a1/scipy-1.15.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dde4fc32993071ac0c7dd2d82569e544f0bdaff66269cb475e0f369adad13f11", size = 36872342, upload_time = "2025-05-08T16:07:31.468Z" }, - { url = "https://files.pythonhosted.org/packages/fe/54/4379be86dd74b6ad81551689107360d9a3e18f24d20767a2d5b9253a3f0a/scipy-1.15.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f77f853d584e72e874d87357ad70f44b437331507d1c311457bed8ed2b956126", size = 39670869, upload_time = "2025-05-08T16:07:38.002Z" }, - { url = "https://files.pythonhosted.org/packages/87/2e/892ad2862ba54f084ffe8cc4a22667eaf9c2bcec6d2bff1d15713c6c0703/scipy-1.15.3-cp313-cp313-win_amd64.whl", hash = "sha256:b90ab29d0c37ec9bf55424c064312930ca5f4bde15ee8619ee44e69319aab163", size = 40988851, upload_time = "2025-05-08T16:08:33.671Z" }, - { url = "https://files.pythonhosted.org/packages/1b/e9/7a879c137f7e55b30d75d90ce3eb468197646bc7b443ac036ae3fe109055/scipy-1.15.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3ac07623267feb3ae308487c260ac684b32ea35fd81e12845039952f558047b8", size = 38863011, upload_time = "2025-05-08T16:07:44.039Z" }, - { url = "https://files.pythonhosted.org/packages/51/d1/226a806bbd69f62ce5ef5f3ffadc35286e9fbc802f606a07eb83bf2359de/scipy-1.15.3-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6487aa99c2a3d509a5227d9a5e889ff05830a06b2ce08ec30df6d79db5fcd5c5", size = 30266407, upload_time = "2025-05-08T16:07:49.891Z" }, - { url = "https://files.pythonhosted.org/packages/e5/9b/f32d1d6093ab9eeabbd839b0f7619c62e46cc4b7b6dbf05b6e615bbd4400/scipy-1.15.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:50f9e62461c95d933d5c5ef4a1f2ebf9a2b4e83b0db374cb3f1de104d935922e", size = 22540030, upload_time = "2025-05-08T16:07:54.121Z" }, - { url = "https://files.pythonhosted.org/packages/e7/29/c278f699b095c1a884f29fda126340fcc201461ee8bfea5c8bdb1c7c958b/scipy-1.15.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:14ed70039d182f411ffc74789a16df3835e05dc469b898233a245cdfd7f162cb", size = 25218709, upload_time = "2025-05-08T16:07:58.506Z" }, - { url = "https://files.pythonhosted.org/packages/24/18/9e5374b617aba742a990581373cd6b68a2945d65cc588482749ef2e64467/scipy-1.15.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a769105537aa07a69468a0eefcd121be52006db61cdd8cac8a0e68980bbb723", size = 34809045, upload_time = "2025-05-08T16:08:03.929Z" }, - { url = "https://files.pythonhosted.org/packages/e1/fe/9c4361e7ba2927074360856db6135ef4904d505e9b3afbbcb073c4008328/scipy-1.15.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db984639887e3dffb3928d118145ffe40eff2fa40cb241a306ec57c219ebbbb", size = 36703062, upload_time = "2025-05-08T16:08:09.558Z" }, - { url = "https://files.pythonhosted.org/packages/b7/8e/038ccfe29d272b30086b25a4960f757f97122cb2ec42e62b460d02fe98e9/scipy-1.15.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:40e54d5c7e7ebf1aa596c374c49fa3135f04648a0caabcb66c52884b943f02b4", size = 36393132, upload_time = "2025-05-08T16:08:15.34Z" }, - { url = "https://files.pythonhosted.org/packages/10/7e/5c12285452970be5bdbe8352c619250b97ebf7917d7a9a9e96b8a8140f17/scipy-1.15.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5e721fed53187e71d0ccf382b6bf977644c533e506c4d33c3fb24de89f5c3ed5", size = 38979503, upload_time = "2025-05-08T16:08:21.513Z" }, - { url = "https://files.pythonhosted.org/packages/81/06/0a5e5349474e1cbc5757975b21bd4fad0e72ebf138c5592f191646154e06/scipy-1.15.3-cp313-cp313t-win_amd64.whl", hash = "sha256:76ad1fb5f8752eabf0fa02e4cc0336b4e8f021e2d5f061ed37d6d264db35e3ca", size = 40308097, upload_time = "2025-05-08T16:08:27.627Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/2f/4966032c5f8cc7e6a60f1b2e0ad686293b9474b65246b0c642e3ef3badd0/scipy-1.15.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:a345928c86d535060c9c2b25e71e87c39ab2f22fc96e9636bd74d1dbf9de448c", size = 38702770, upload-time = "2025-05-08T16:04:20.849Z" }, + { url = "https://files.pythonhosted.org/packages/a0/6e/0c3bf90fae0e910c274db43304ebe25a6b391327f3f10b5dcc638c090795/scipy-1.15.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:ad3432cb0f9ed87477a8d97f03b763fd1d57709f1bbde3c9369b1dff5503b253", size = 30094511, upload-time = "2025-05-08T16:04:27.103Z" }, + { url = "https://files.pythonhosted.org/packages/ea/b1/4deb37252311c1acff7f101f6453f0440794f51b6eacb1aad4459a134081/scipy-1.15.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:aef683a9ae6eb00728a542b796f52a5477b78252edede72b8327a886ab63293f", size = 22368151, upload-time = "2025-05-08T16:04:31.731Z" }, + { url = "https://files.pythonhosted.org/packages/38/7d/f457626e3cd3c29b3a49ca115a304cebb8cc6f31b04678f03b216899d3c6/scipy-1.15.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:1c832e1bd78dea67d5c16f786681b28dd695a8cb1fb90af2e27580d3d0967e92", size = 25121732, upload-time = "2025-05-08T16:04:36.596Z" }, + { url = "https://files.pythonhosted.org/packages/db/0a/92b1de4a7adc7a15dcf5bddc6e191f6f29ee663b30511ce20467ef9b82e4/scipy-1.15.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:263961f658ce2165bbd7b99fa5135195c3a12d9bef045345016b8b50c315cb82", size = 35547617, upload-time = "2025-05-08T16:04:43.546Z" }, + { url = "https://files.pythonhosted.org/packages/8e/6d/41991e503e51fc1134502694c5fa7a1671501a17ffa12716a4a9151af3df/scipy-1.15.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2abc762b0811e09a0d3258abee2d98e0c703eee49464ce0069590846f31d40", size = 37662964, upload-time = "2025-05-08T16:04:49.431Z" }, + { url = "https://files.pythonhosted.org/packages/25/e1/3df8f83cb15f3500478c889be8fb18700813b95e9e087328230b98d547ff/scipy-1.15.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed7284b21a7a0c8f1b6e5977ac05396c0d008b89e05498c8b7e8f4a1423bba0e", size = 37238749, upload-time = "2025-05-08T16:04:55.215Z" }, + { url = "https://files.pythonhosted.org/packages/93/3e/b3257cf446f2a3533ed7809757039016b74cd6f38271de91682aa844cfc5/scipy-1.15.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5380741e53df2c566f4d234b100a484b420af85deb39ea35a1cc1be84ff53a5c", size = 40022383, upload-time = "2025-05-08T16:05:01.914Z" }, + { url = "https://files.pythonhosted.org/packages/d1/84/55bc4881973d3f79b479a5a2e2df61c8c9a04fcb986a213ac9c02cfb659b/scipy-1.15.3-cp310-cp310-win_amd64.whl", hash = "sha256:9d61e97b186a57350f6d6fd72640f9e99d5a4a2b8fbf4b9ee9a841eab327dc13", size = 41259201, upload-time = "2025-05-08T16:05:08.166Z" }, + { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255, upload-time = "2025-05-08T16:05:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035, upload-time = "2025-05-08T16:05:20.152Z" }, + { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499, upload-time = "2025-05-08T16:05:24.494Z" }, + { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602, upload-time = "2025-05-08T16:05:29.313Z" }, + { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415, upload-time = "2025-05-08T16:05:34.699Z" }, + { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622, upload-time = "2025-05-08T16:05:40.762Z" }, + { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796, upload-time = "2025-05-08T16:05:48.119Z" }, + { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684, upload-time = "2025-05-08T16:05:54.22Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504, upload-time = "2025-05-08T16:06:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735, upload-time = "2025-05-08T16:06:06.471Z" }, + { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284, upload-time = "2025-05-08T16:06:11.686Z" }, + { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958, upload-time = "2025-05-08T16:06:15.97Z" }, + { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454, upload-time = "2025-05-08T16:06:20.394Z" }, + { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199, upload-time = "2025-05-08T16:06:26.159Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455, upload-time = "2025-05-08T16:06:32.778Z" }, + { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140, upload-time = "2025-05-08T16:06:39.249Z" }, + { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549, upload-time = "2025-05-08T16:06:45.729Z" }, + { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184, upload-time = "2025-05-08T16:06:52.623Z" }, + { url = "https://files.pythonhosted.org/packages/73/18/ec27848c9baae6e0d6573eda6e01a602e5649ee72c27c3a8aad673ebecfd/scipy-1.15.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c620736bcc334782e24d173c0fdbb7590a0a436d2fdf39310a8902505008759", size = 38728256, upload-time = "2025-05-08T16:06:58.696Z" }, + { url = "https://files.pythonhosted.org/packages/74/cd/1aef2184948728b4b6e21267d53b3339762c285a46a274ebb7863c9e4742/scipy-1.15.3-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:7e11270a000969409d37ed399585ee530b9ef6aa99d50c019de4cb01e8e54e62", size = 30109540, upload-time = "2025-05-08T16:07:04.209Z" }, + { url = "https://files.pythonhosted.org/packages/5b/d8/59e452c0a255ec352bd0a833537a3bc1bfb679944c4938ab375b0a6b3a3e/scipy-1.15.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8c9ed3ba2c8a2ce098163a9bdb26f891746d02136995df25227a20e71c396ebb", size = 22383115, upload-time = "2025-05-08T16:07:08.998Z" }, + { url = "https://files.pythonhosted.org/packages/08/f5/456f56bbbfccf696263b47095291040655e3cbaf05d063bdc7c7517f32ac/scipy-1.15.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:0bdd905264c0c9cfa74a4772cdb2070171790381a5c4d312c973382fc6eaf730", size = 25163884, upload-time = "2025-05-08T16:07:14.091Z" }, + { url = "https://files.pythonhosted.org/packages/a2/66/a9618b6a435a0f0c0b8a6d0a2efb32d4ec5a85f023c2b79d39512040355b/scipy-1.15.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79167bba085c31f38603e11a267d862957cbb3ce018d8b38f79ac043bc92d825", size = 35174018, upload-time = "2025-05-08T16:07:19.427Z" }, + { url = "https://files.pythonhosted.org/packages/b5/09/c5b6734a50ad4882432b6bb7c02baf757f5b2f256041da5df242e2d7e6b6/scipy-1.15.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9deabd6d547aee2c9a81dee6cc96c6d7e9a9b1953f74850c179f91fdc729cb7", size = 37269716, upload-time = "2025-05-08T16:07:25.712Z" }, + { url = "https://files.pythonhosted.org/packages/77/0a/eac00ff741f23bcabd352731ed9b8995a0a60ef57f5fd788d611d43d69a1/scipy-1.15.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dde4fc32993071ac0c7dd2d82569e544f0bdaff66269cb475e0f369adad13f11", size = 36872342, upload-time = "2025-05-08T16:07:31.468Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/4379be86dd74b6ad81551689107360d9a3e18f24d20767a2d5b9253a3f0a/scipy-1.15.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f77f853d584e72e874d87357ad70f44b437331507d1c311457bed8ed2b956126", size = 39670869, upload-time = "2025-05-08T16:07:38.002Z" }, + { url = "https://files.pythonhosted.org/packages/87/2e/892ad2862ba54f084ffe8cc4a22667eaf9c2bcec6d2bff1d15713c6c0703/scipy-1.15.3-cp313-cp313-win_amd64.whl", hash = "sha256:b90ab29d0c37ec9bf55424c064312930ca5f4bde15ee8619ee44e69319aab163", size = 40988851, upload-time = "2025-05-08T16:08:33.671Z" }, + { url = "https://files.pythonhosted.org/packages/1b/e9/7a879c137f7e55b30d75d90ce3eb468197646bc7b443ac036ae3fe109055/scipy-1.15.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3ac07623267feb3ae308487c260ac684b32ea35fd81e12845039952f558047b8", size = 38863011, upload-time = "2025-05-08T16:07:44.039Z" }, + { url = "https://files.pythonhosted.org/packages/51/d1/226a806bbd69f62ce5ef5f3ffadc35286e9fbc802f606a07eb83bf2359de/scipy-1.15.3-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6487aa99c2a3d509a5227d9a5e889ff05830a06b2ce08ec30df6d79db5fcd5c5", size = 30266407, upload-time = "2025-05-08T16:07:49.891Z" }, + { url = "https://files.pythonhosted.org/packages/e5/9b/f32d1d6093ab9eeabbd839b0f7619c62e46cc4b7b6dbf05b6e615bbd4400/scipy-1.15.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:50f9e62461c95d933d5c5ef4a1f2ebf9a2b4e83b0db374cb3f1de104d935922e", size = 22540030, upload-time = "2025-05-08T16:07:54.121Z" }, + { url = "https://files.pythonhosted.org/packages/e7/29/c278f699b095c1a884f29fda126340fcc201461ee8bfea5c8bdb1c7c958b/scipy-1.15.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:14ed70039d182f411ffc74789a16df3835e05dc469b898233a245cdfd7f162cb", size = 25218709, upload-time = "2025-05-08T16:07:58.506Z" }, + { url = "https://files.pythonhosted.org/packages/24/18/9e5374b617aba742a990581373cd6b68a2945d65cc588482749ef2e64467/scipy-1.15.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a769105537aa07a69468a0eefcd121be52006db61cdd8cac8a0e68980bbb723", size = 34809045, upload-time = "2025-05-08T16:08:03.929Z" }, + { url = "https://files.pythonhosted.org/packages/e1/fe/9c4361e7ba2927074360856db6135ef4904d505e9b3afbbcb073c4008328/scipy-1.15.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db984639887e3dffb3928d118145ffe40eff2fa40cb241a306ec57c219ebbbb", size = 36703062, upload-time = "2025-05-08T16:08:09.558Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8e/038ccfe29d272b30086b25a4960f757f97122cb2ec42e62b460d02fe98e9/scipy-1.15.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:40e54d5c7e7ebf1aa596c374c49fa3135f04648a0caabcb66c52884b943f02b4", size = 36393132, upload-time = "2025-05-08T16:08:15.34Z" }, + { url = "https://files.pythonhosted.org/packages/10/7e/5c12285452970be5bdbe8352c619250b97ebf7917d7a9a9e96b8a8140f17/scipy-1.15.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5e721fed53187e71d0ccf382b6bf977644c533e506c4d33c3fb24de89f5c3ed5", size = 38979503, upload-time = "2025-05-08T16:08:21.513Z" }, + { url = "https://files.pythonhosted.org/packages/81/06/0a5e5349474e1cbc5757975b21bd4fad0e72ebf138c5592f191646154e06/scipy-1.15.3-cp313-cp313t-win_amd64.whl", hash = "sha256:76ad1fb5f8752eabf0fa02e4cc0336b4e8f021e2d5f061ed37d6d264db35e3ca", size = 40308097, upload-time = "2025-05-08T16:08:27.627Z" }, ] [[package]] @@ -4096,57 +4146,57 @@ resolution-markers = [ dependencies = [ { name = "numpy", version = "2.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/56/3e/9cca699f3486ce6bc12ff46dc2031f1ec8eb9ccc9a320fdaf925f1417426/scipy-1.17.0.tar.gz", hash = "sha256:2591060c8e648d8b96439e111ac41fd8342fdeff1876be2e19dea3fe8930454e", size = 30396830, upload_time = "2026-01-10T21:34:23.009Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/4b/c89c131aa87cad2b77a54eb0fb94d633a842420fa7e919dc2f922037c3d8/scipy-1.17.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:2abd71643797bd8a106dff97894ff7869eeeb0af0f7a5ce02e4227c6a2e9d6fd", size = 31381316, upload_time = "2026-01-10T21:24:33.42Z" }, - { url = "https://files.pythonhosted.org/packages/5e/5f/a6b38f79a07d74989224d5f11b55267714707582908a5f1ae854cf9a9b84/scipy-1.17.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:ef28d815f4d2686503e5f4f00edc387ae58dfd7a2f42e348bb53359538f01558", size = 27966760, upload_time = "2026-01-10T21:24:38.911Z" }, - { url = "https://files.pythonhosted.org/packages/c1/20/095ad24e031ee8ed3c5975954d816b8e7e2abd731e04f8be573de8740885/scipy-1.17.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:272a9f16d6bb4667e8b50d25d71eddcc2158a214df1b566319298de0939d2ab7", size = 20138701, upload_time = "2026-01-10T21:24:43.249Z" }, - { url = "https://files.pythonhosted.org/packages/89/11/4aad2b3858d0337756f3323f8960755704e530b27eb2a94386c970c32cbe/scipy-1.17.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:7204fddcbec2fe6598f1c5fdf027e9f259106d05202a959a9f1aecf036adc9f6", size = 22480574, upload_time = "2026-01-10T21:24:47.266Z" }, - { url = "https://files.pythonhosted.org/packages/85/bd/f5af70c28c6da2227e510875cadf64879855193a687fb19951f0f44cfd6b/scipy-1.17.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fc02c37a5639ee67d8fb646ffded6d793c06c5622d36b35cfa8fe5ececb8f042", size = 32862414, upload_time = "2026-01-10T21:24:52.566Z" }, - { url = "https://files.pythonhosted.org/packages/ef/df/df1457c4df3826e908879fe3d76bc5b6e60aae45f4ee42539512438cfd5d/scipy-1.17.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dac97a27520d66c12a34fd90a4fe65f43766c18c0d6e1c0a80f114d2260080e4", size = 35112380, upload_time = "2026-01-10T21:24:58.433Z" }, - { url = "https://files.pythonhosted.org/packages/5f/bb/88e2c16bd1dd4de19d80d7c5e238387182993c2fb13b4b8111e3927ad422/scipy-1.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ebb7446a39b3ae0fe8f416a9a3fdc6fba3f11c634f680f16a239c5187bc487c0", size = 34922676, upload_time = "2026-01-10T21:25:04.287Z" }, - { url = "https://files.pythonhosted.org/packages/02/ba/5120242cc735f71fc002cff0303d536af4405eb265f7c60742851e7ccfe9/scipy-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:474da16199f6af66601a01546144922ce402cb17362e07d82f5a6cf8f963e449", size = 37507599, upload_time = "2026-01-10T21:25:09.851Z" }, - { url = "https://files.pythonhosted.org/packages/52/c8/08629657ac6c0da198487ce8cd3de78e02cfde42b7f34117d56a3fe249dc/scipy-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:255c0da161bd7b32a6c898e7891509e8a9289f0b1c6c7d96142ee0d2b114c2ea", size = 36380284, upload_time = "2026-01-10T21:25:15.632Z" }, - { url = "https://files.pythonhosted.org/packages/6c/4a/465f96d42c6f33ad324a40049dfd63269891db9324aa66c4a1c108c6f994/scipy-1.17.0-cp311-cp311-win_arm64.whl", hash = "sha256:85b0ac3ad17fa3be50abd7e69d583d98792d7edc08367e01445a1e2076005379", size = 24370427, upload_time = "2026-01-10T21:25:20.514Z" }, - { url = "https://files.pythonhosted.org/packages/0b/11/7241a63e73ba5a516f1930ac8d5b44cbbfabd35ac73a2d08ca206df007c4/scipy-1.17.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:0d5018a57c24cb1dd828bcf51d7b10e65986d549f52ef5adb6b4d1ded3e32a57", size = 31364580, upload_time = "2026-01-10T21:25:25.717Z" }, - { url = "https://files.pythonhosted.org/packages/ed/1d/5057f812d4f6adc91a20a2d6f2ebcdb517fdbc87ae3acc5633c9b97c8ba5/scipy-1.17.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:88c22af9e5d5a4f9e027e26772cc7b5922fab8bcc839edb3ae33de404feebd9e", size = 27969012, upload_time = "2026-01-10T21:25:30.921Z" }, - { url = "https://files.pythonhosted.org/packages/e3/21/f6ec556c1e3b6ec4e088da667d9987bb77cc3ab3026511f427dc8451187d/scipy-1.17.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f3cd947f20fe17013d401b64e857c6b2da83cae567adbb75b9dcba865abc66d8", size = 20140691, upload_time = "2026-01-10T21:25:34.802Z" }, - { url = "https://files.pythonhosted.org/packages/7a/fe/5e5ad04784964ba964a96f16c8d4676aa1b51357199014dce58ab7ec5670/scipy-1.17.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e8c0b331c2c1f531eb51f1b4fc9ba709521a712cce58f1aa627bc007421a5306", size = 22463015, upload_time = "2026-01-10T21:25:39.277Z" }, - { url = "https://files.pythonhosted.org/packages/4a/69/7c347e857224fcaf32a34a05183b9d8a7aca25f8f2d10b8a698b8388561a/scipy-1.17.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5194c445d0a1c7a6c1a4a4681b6b7c71baad98ff66d96b949097e7513c9d6742", size = 32724197, upload_time = "2026-01-10T21:25:44.084Z" }, - { url = "https://files.pythonhosted.org/packages/d1/fe/66d73b76d378ba8cc2fe605920c0c75092e3a65ae746e1e767d9d020a75a/scipy-1.17.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9eeb9b5f5997f75507814ed9d298ab23f62cf79f5a3ef90031b1ee2506abdb5b", size = 35009148, upload_time = "2026-01-10T21:25:50.591Z" }, - { url = "https://files.pythonhosted.org/packages/af/07/07dec27d9dc41c18d8c43c69e9e413431d20c53a0339c388bcf72f353c4b/scipy-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:40052543f7bbe921df4408f46003d6f01c6af109b9e2c8a66dd1cf6cf57f7d5d", size = 34798766, upload_time = "2026-01-10T21:25:59.41Z" }, - { url = "https://files.pythonhosted.org/packages/81/61/0470810c8a093cdacd4ba7504b8a218fd49ca070d79eca23a615f5d9a0b0/scipy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0cf46c8013fec9d3694dc572f0b54100c28405d55d3e2cb15e2895b25057996e", size = 37405953, upload_time = "2026-01-10T21:26:07.75Z" }, - { url = "https://files.pythonhosted.org/packages/92/ce/672ed546f96d5d41ae78c4b9b02006cedd0b3d6f2bf5bb76ea455c320c28/scipy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:0937a0b0d8d593a198cededd4c439a0ea216a3f36653901ea1f3e4be949056f8", size = 36328121, upload_time = "2026-01-10T21:26:16.509Z" }, - { url = "https://files.pythonhosted.org/packages/9d/21/38165845392cae67b61843a52c6455d47d0cc2a40dd495c89f4362944654/scipy-1.17.0-cp312-cp312-win_arm64.whl", hash = "sha256:f603d8a5518c7426414d1d8f82e253e454471de682ce5e39c29adb0df1efb86b", size = 24314368, upload_time = "2026-01-10T21:26:23.087Z" }, - { url = "https://files.pythonhosted.org/packages/0c/51/3468fdfd49387ddefee1636f5cf6d03ce603b75205bf439bbf0e62069bfd/scipy-1.17.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:65ec32f3d32dfc48c72df4291345dae4f048749bc8d5203ee0a3f347f96c5ce6", size = 31344101, upload_time = "2026-01-10T21:26:30.25Z" }, - { url = "https://files.pythonhosted.org/packages/b2/9a/9406aec58268d437636069419e6977af953d1e246df941d42d3720b7277b/scipy-1.17.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:1f9586a58039d7229ce77b52f8472c972448cded5736eaf102d5658bbac4c269", size = 27950385, upload_time = "2026-01-10T21:26:36.801Z" }, - { url = "https://files.pythonhosted.org/packages/4f/98/e7342709e17afdfd1b26b56ae499ef4939b45a23a00e471dfb5375eea205/scipy-1.17.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9fad7d3578c877d606b1150135c2639e9de9cecd3705caa37b66862977cc3e72", size = 20122115, upload_time = "2026-01-10T21:26:42.107Z" }, - { url = "https://files.pythonhosted.org/packages/fd/0e/9eeeb5357a64fd157cbe0302c213517c541cc16b8486d82de251f3c68ede/scipy-1.17.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:423ca1f6584fc03936972b5f7c06961670dbba9f234e71676a7c7ccf938a0d61", size = 22442402, upload_time = "2026-01-10T21:26:48.029Z" }, - { url = "https://files.pythonhosted.org/packages/c9/10/be13397a0e434f98e0c79552b2b584ae5bb1c8b2be95db421533bbca5369/scipy-1.17.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fe508b5690e9eaaa9467fc047f833af58f1152ae51a0d0aed67aa5801f4dd7d6", size = 32696338, upload_time = "2026-01-10T21:26:55.521Z" }, - { url = "https://files.pythonhosted.org/packages/63/1e/12fbf2a3bb240161651c94bb5cdd0eae5d4e8cc6eaeceb74ab07b12a753d/scipy-1.17.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6680f2dfd4f6182e7d6db161344537da644d1cf85cf293f015c60a17ecf08752", size = 34977201, upload_time = "2026-01-10T21:27:03.501Z" }, - { url = "https://files.pythonhosted.org/packages/19/5b/1a63923e23ccd20bd32156d7dd708af5bbde410daa993aa2500c847ab2d2/scipy-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eec3842ec9ac9de5917899b277428886042a93db0b227ebbe3a333b64ec7643d", size = 34777384, upload_time = "2026-01-10T21:27:11.423Z" }, - { url = "https://files.pythonhosted.org/packages/39/22/b5da95d74edcf81e540e467202a988c50fef41bd2011f46e05f72ba07df6/scipy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d7425fcafbc09a03731e1bc05581f5fad988e48c6a861f441b7ab729a49a55ea", size = 37379586, upload_time = "2026-01-10T21:27:20.171Z" }, - { url = "https://files.pythonhosted.org/packages/b9/b6/8ac583d6da79e7b9e520579f03007cb006f063642afd6b2eeb16b890bf93/scipy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:87b411e42b425b84777718cc41516b8a7e0795abfa8e8e1d573bf0ef014f0812", size = 36287211, upload_time = "2026-01-10T21:28:43.122Z" }, - { url = "https://files.pythonhosted.org/packages/55/fb/7db19e0b3e52f882b420417644ec81dd57eeef1bd1705b6f689d8ff93541/scipy-1.17.0-cp313-cp313-win_arm64.whl", hash = "sha256:357ca001c6e37601066092e7c89cca2f1ce74e2a520ca78d063a6d2201101df2", size = 24312646, upload_time = "2026-01-10T21:28:49.893Z" }, - { url = "https://files.pythonhosted.org/packages/20/b6/7feaa252c21cc7aff335c6c55e1b90ab3e3306da3f048109b8b639b94648/scipy-1.17.0-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:ec0827aa4d36cb79ff1b81de898e948a51ac0b9b1c43e4a372c0508c38c0f9a3", size = 31693194, upload_time = "2026-01-10T21:27:27.454Z" }, - { url = "https://files.pythonhosted.org/packages/76/bb/bbb392005abce039fb7e672cb78ac7d158700e826b0515cab6b5b60c26fb/scipy-1.17.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:819fc26862b4b3c73a60d486dbb919202f3d6d98c87cf20c223511429f2d1a97", size = 28365415, upload_time = "2026-01-10T21:27:34.26Z" }, - { url = "https://files.pythonhosted.org/packages/37/da/9d33196ecc99fba16a409c691ed464a3a283ac454a34a13a3a57c0d66f3a/scipy-1.17.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:363ad4ae2853d88ebcde3ae6ec46ccca903ea9835ee8ba543f12f575e7b07e4e", size = 20537232, upload_time = "2026-01-10T21:27:40.306Z" }, - { url = "https://files.pythonhosted.org/packages/56/9d/f4b184f6ddb28e9a5caea36a6f98e8ecd2a524f9127354087ce780885d83/scipy-1.17.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:979c3a0ff8e5ba254d45d59ebd38cde48fce4f10b5125c680c7a4bfe177aab07", size = 22791051, upload_time = "2026-01-10T21:27:46.539Z" }, - { url = "https://files.pythonhosted.org/packages/9b/9d/025cccdd738a72140efc582b1641d0dd4caf2e86c3fb127568dc80444e6e/scipy-1.17.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:130d12926ae34399d157de777472bf82e9061c60cc081372b3118edacafe1d00", size = 32815098, upload_time = "2026-01-10T21:27:54.389Z" }, - { url = "https://files.pythonhosted.org/packages/48/5f/09b879619f8bca15ce392bfc1894bd9c54377e01d1b3f2f3b595a1b4d945/scipy-1.17.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e886000eb4919eae3a44f035e63f0fd8b651234117e8f6f29bad1cd26e7bc45", size = 35031342, upload_time = "2026-01-10T21:28:03.012Z" }, - { url = "https://files.pythonhosted.org/packages/f2/9a/f0f0a9f0aa079d2f106555b984ff0fbb11a837df280f04f71f056ea9c6e4/scipy-1.17.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:13c4096ac6bc31d706018f06a49abe0485f96499deb82066b94d19b02f664209", size = 34893199, upload_time = "2026-01-10T21:28:10.832Z" }, - { url = "https://files.pythonhosted.org/packages/90/b8/4f0f5cf0c5ea4d7548424e6533e6b17d164f34a6e2fb2e43ffebb6697b06/scipy-1.17.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cacbaddd91fcffde703934897c5cd2c7cb0371fac195d383f4e1f1c5d3f3bd04", size = 37438061, upload_time = "2026-01-10T21:28:19.684Z" }, - { url = "https://files.pythonhosted.org/packages/f9/cc/2bd59140ed3b2fa2882fb15da0a9cb1b5a6443d67cfd0d98d4cec83a57ec/scipy-1.17.0-cp313-cp313t-win_amd64.whl", hash = "sha256:edce1a1cf66298cccdc48a1bdf8fb10a3bf58e8b58d6c3883dd1530e103f87c0", size = 36328593, upload_time = "2026-01-10T21:28:28.007Z" }, - { url = "https://files.pythonhosted.org/packages/13/1b/c87cc44a0d2c7aaf0f003aef2904c3d097b422a96c7e7c07f5efd9073c1b/scipy-1.17.0-cp313-cp313t-win_arm64.whl", hash = "sha256:30509da9dbec1c2ed8f168b8d8aa853bc6723fede1dbc23c7d43a56f5ab72a67", size = 24625083, upload_time = "2026-01-10T21:28:35.188Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/56/3e/9cca699f3486ce6bc12ff46dc2031f1ec8eb9ccc9a320fdaf925f1417426/scipy-1.17.0.tar.gz", hash = "sha256:2591060c8e648d8b96439e111ac41fd8342fdeff1876be2e19dea3fe8930454e", size = 30396830, upload-time = "2026-01-10T21:34:23.009Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/4b/c89c131aa87cad2b77a54eb0fb94d633a842420fa7e919dc2f922037c3d8/scipy-1.17.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:2abd71643797bd8a106dff97894ff7869eeeb0af0f7a5ce02e4227c6a2e9d6fd", size = 31381316, upload-time = "2026-01-10T21:24:33.42Z" }, + { url = "https://files.pythonhosted.org/packages/5e/5f/a6b38f79a07d74989224d5f11b55267714707582908a5f1ae854cf9a9b84/scipy-1.17.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:ef28d815f4d2686503e5f4f00edc387ae58dfd7a2f42e348bb53359538f01558", size = 27966760, upload-time = "2026-01-10T21:24:38.911Z" }, + { url = "https://files.pythonhosted.org/packages/c1/20/095ad24e031ee8ed3c5975954d816b8e7e2abd731e04f8be573de8740885/scipy-1.17.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:272a9f16d6bb4667e8b50d25d71eddcc2158a214df1b566319298de0939d2ab7", size = 20138701, upload-time = "2026-01-10T21:24:43.249Z" }, + { url = "https://files.pythonhosted.org/packages/89/11/4aad2b3858d0337756f3323f8960755704e530b27eb2a94386c970c32cbe/scipy-1.17.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:7204fddcbec2fe6598f1c5fdf027e9f259106d05202a959a9f1aecf036adc9f6", size = 22480574, upload-time = "2026-01-10T21:24:47.266Z" }, + { url = "https://files.pythonhosted.org/packages/85/bd/f5af70c28c6da2227e510875cadf64879855193a687fb19951f0f44cfd6b/scipy-1.17.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fc02c37a5639ee67d8fb646ffded6d793c06c5622d36b35cfa8fe5ececb8f042", size = 32862414, upload-time = "2026-01-10T21:24:52.566Z" }, + { url = "https://files.pythonhosted.org/packages/ef/df/df1457c4df3826e908879fe3d76bc5b6e60aae45f4ee42539512438cfd5d/scipy-1.17.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dac97a27520d66c12a34fd90a4fe65f43766c18c0d6e1c0a80f114d2260080e4", size = 35112380, upload-time = "2026-01-10T21:24:58.433Z" }, + { url = "https://files.pythonhosted.org/packages/5f/bb/88e2c16bd1dd4de19d80d7c5e238387182993c2fb13b4b8111e3927ad422/scipy-1.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ebb7446a39b3ae0fe8f416a9a3fdc6fba3f11c634f680f16a239c5187bc487c0", size = 34922676, upload-time = "2026-01-10T21:25:04.287Z" }, + { url = "https://files.pythonhosted.org/packages/02/ba/5120242cc735f71fc002cff0303d536af4405eb265f7c60742851e7ccfe9/scipy-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:474da16199f6af66601a01546144922ce402cb17362e07d82f5a6cf8f963e449", size = 37507599, upload-time = "2026-01-10T21:25:09.851Z" }, + { url = "https://files.pythonhosted.org/packages/52/c8/08629657ac6c0da198487ce8cd3de78e02cfde42b7f34117d56a3fe249dc/scipy-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:255c0da161bd7b32a6c898e7891509e8a9289f0b1c6c7d96142ee0d2b114c2ea", size = 36380284, upload-time = "2026-01-10T21:25:15.632Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4a/465f96d42c6f33ad324a40049dfd63269891db9324aa66c4a1c108c6f994/scipy-1.17.0-cp311-cp311-win_arm64.whl", hash = "sha256:85b0ac3ad17fa3be50abd7e69d583d98792d7edc08367e01445a1e2076005379", size = 24370427, upload-time = "2026-01-10T21:25:20.514Z" }, + { url = "https://files.pythonhosted.org/packages/0b/11/7241a63e73ba5a516f1930ac8d5b44cbbfabd35ac73a2d08ca206df007c4/scipy-1.17.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:0d5018a57c24cb1dd828bcf51d7b10e65986d549f52ef5adb6b4d1ded3e32a57", size = 31364580, upload-time = "2026-01-10T21:25:25.717Z" }, + { url = "https://files.pythonhosted.org/packages/ed/1d/5057f812d4f6adc91a20a2d6f2ebcdb517fdbc87ae3acc5633c9b97c8ba5/scipy-1.17.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:88c22af9e5d5a4f9e027e26772cc7b5922fab8bcc839edb3ae33de404feebd9e", size = 27969012, upload-time = "2026-01-10T21:25:30.921Z" }, + { url = "https://files.pythonhosted.org/packages/e3/21/f6ec556c1e3b6ec4e088da667d9987bb77cc3ab3026511f427dc8451187d/scipy-1.17.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f3cd947f20fe17013d401b64e857c6b2da83cae567adbb75b9dcba865abc66d8", size = 20140691, upload-time = "2026-01-10T21:25:34.802Z" }, + { url = "https://files.pythonhosted.org/packages/7a/fe/5e5ad04784964ba964a96f16c8d4676aa1b51357199014dce58ab7ec5670/scipy-1.17.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e8c0b331c2c1f531eb51f1b4fc9ba709521a712cce58f1aa627bc007421a5306", size = 22463015, upload-time = "2026-01-10T21:25:39.277Z" }, + { url = "https://files.pythonhosted.org/packages/4a/69/7c347e857224fcaf32a34a05183b9d8a7aca25f8f2d10b8a698b8388561a/scipy-1.17.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5194c445d0a1c7a6c1a4a4681b6b7c71baad98ff66d96b949097e7513c9d6742", size = 32724197, upload-time = "2026-01-10T21:25:44.084Z" }, + { url = "https://files.pythonhosted.org/packages/d1/fe/66d73b76d378ba8cc2fe605920c0c75092e3a65ae746e1e767d9d020a75a/scipy-1.17.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9eeb9b5f5997f75507814ed9d298ab23f62cf79f5a3ef90031b1ee2506abdb5b", size = 35009148, upload-time = "2026-01-10T21:25:50.591Z" }, + { url = "https://files.pythonhosted.org/packages/af/07/07dec27d9dc41c18d8c43c69e9e413431d20c53a0339c388bcf72f353c4b/scipy-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:40052543f7bbe921df4408f46003d6f01c6af109b9e2c8a66dd1cf6cf57f7d5d", size = 34798766, upload-time = "2026-01-10T21:25:59.41Z" }, + { url = "https://files.pythonhosted.org/packages/81/61/0470810c8a093cdacd4ba7504b8a218fd49ca070d79eca23a615f5d9a0b0/scipy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0cf46c8013fec9d3694dc572f0b54100c28405d55d3e2cb15e2895b25057996e", size = 37405953, upload-time = "2026-01-10T21:26:07.75Z" }, + { url = "https://files.pythonhosted.org/packages/92/ce/672ed546f96d5d41ae78c4b9b02006cedd0b3d6f2bf5bb76ea455c320c28/scipy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:0937a0b0d8d593a198cededd4c439a0ea216a3f36653901ea1f3e4be949056f8", size = 36328121, upload-time = "2026-01-10T21:26:16.509Z" }, + { url = "https://files.pythonhosted.org/packages/9d/21/38165845392cae67b61843a52c6455d47d0cc2a40dd495c89f4362944654/scipy-1.17.0-cp312-cp312-win_arm64.whl", hash = "sha256:f603d8a5518c7426414d1d8f82e253e454471de682ce5e39c29adb0df1efb86b", size = 24314368, upload-time = "2026-01-10T21:26:23.087Z" }, + { url = "https://files.pythonhosted.org/packages/0c/51/3468fdfd49387ddefee1636f5cf6d03ce603b75205bf439bbf0e62069bfd/scipy-1.17.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:65ec32f3d32dfc48c72df4291345dae4f048749bc8d5203ee0a3f347f96c5ce6", size = 31344101, upload-time = "2026-01-10T21:26:30.25Z" }, + { url = "https://files.pythonhosted.org/packages/b2/9a/9406aec58268d437636069419e6977af953d1e246df941d42d3720b7277b/scipy-1.17.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:1f9586a58039d7229ce77b52f8472c972448cded5736eaf102d5658bbac4c269", size = 27950385, upload-time = "2026-01-10T21:26:36.801Z" }, + { url = "https://files.pythonhosted.org/packages/4f/98/e7342709e17afdfd1b26b56ae499ef4939b45a23a00e471dfb5375eea205/scipy-1.17.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9fad7d3578c877d606b1150135c2639e9de9cecd3705caa37b66862977cc3e72", size = 20122115, upload-time = "2026-01-10T21:26:42.107Z" }, + { url = "https://files.pythonhosted.org/packages/fd/0e/9eeeb5357a64fd157cbe0302c213517c541cc16b8486d82de251f3c68ede/scipy-1.17.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:423ca1f6584fc03936972b5f7c06961670dbba9f234e71676a7c7ccf938a0d61", size = 22442402, upload-time = "2026-01-10T21:26:48.029Z" }, + { url = "https://files.pythonhosted.org/packages/c9/10/be13397a0e434f98e0c79552b2b584ae5bb1c8b2be95db421533bbca5369/scipy-1.17.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fe508b5690e9eaaa9467fc047f833af58f1152ae51a0d0aed67aa5801f4dd7d6", size = 32696338, upload-time = "2026-01-10T21:26:55.521Z" }, + { url = "https://files.pythonhosted.org/packages/63/1e/12fbf2a3bb240161651c94bb5cdd0eae5d4e8cc6eaeceb74ab07b12a753d/scipy-1.17.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6680f2dfd4f6182e7d6db161344537da644d1cf85cf293f015c60a17ecf08752", size = 34977201, upload-time = "2026-01-10T21:27:03.501Z" }, + { url = "https://files.pythonhosted.org/packages/19/5b/1a63923e23ccd20bd32156d7dd708af5bbde410daa993aa2500c847ab2d2/scipy-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eec3842ec9ac9de5917899b277428886042a93db0b227ebbe3a333b64ec7643d", size = 34777384, upload-time = "2026-01-10T21:27:11.423Z" }, + { url = "https://files.pythonhosted.org/packages/39/22/b5da95d74edcf81e540e467202a988c50fef41bd2011f46e05f72ba07df6/scipy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d7425fcafbc09a03731e1bc05581f5fad988e48c6a861f441b7ab729a49a55ea", size = 37379586, upload-time = "2026-01-10T21:27:20.171Z" }, + { url = "https://files.pythonhosted.org/packages/b9/b6/8ac583d6da79e7b9e520579f03007cb006f063642afd6b2eeb16b890bf93/scipy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:87b411e42b425b84777718cc41516b8a7e0795abfa8e8e1d573bf0ef014f0812", size = 36287211, upload-time = "2026-01-10T21:28:43.122Z" }, + { url = "https://files.pythonhosted.org/packages/55/fb/7db19e0b3e52f882b420417644ec81dd57eeef1bd1705b6f689d8ff93541/scipy-1.17.0-cp313-cp313-win_arm64.whl", hash = "sha256:357ca001c6e37601066092e7c89cca2f1ce74e2a520ca78d063a6d2201101df2", size = 24312646, upload-time = "2026-01-10T21:28:49.893Z" }, + { url = "https://files.pythonhosted.org/packages/20/b6/7feaa252c21cc7aff335c6c55e1b90ab3e3306da3f048109b8b639b94648/scipy-1.17.0-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:ec0827aa4d36cb79ff1b81de898e948a51ac0b9b1c43e4a372c0508c38c0f9a3", size = 31693194, upload-time = "2026-01-10T21:27:27.454Z" }, + { url = "https://files.pythonhosted.org/packages/76/bb/bbb392005abce039fb7e672cb78ac7d158700e826b0515cab6b5b60c26fb/scipy-1.17.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:819fc26862b4b3c73a60d486dbb919202f3d6d98c87cf20c223511429f2d1a97", size = 28365415, upload-time = "2026-01-10T21:27:34.26Z" }, + { url = "https://files.pythonhosted.org/packages/37/da/9d33196ecc99fba16a409c691ed464a3a283ac454a34a13a3a57c0d66f3a/scipy-1.17.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:363ad4ae2853d88ebcde3ae6ec46ccca903ea9835ee8ba543f12f575e7b07e4e", size = 20537232, upload-time = "2026-01-10T21:27:40.306Z" }, + { url = "https://files.pythonhosted.org/packages/56/9d/f4b184f6ddb28e9a5caea36a6f98e8ecd2a524f9127354087ce780885d83/scipy-1.17.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:979c3a0ff8e5ba254d45d59ebd38cde48fce4f10b5125c680c7a4bfe177aab07", size = 22791051, upload-time = "2026-01-10T21:27:46.539Z" }, + { url = "https://files.pythonhosted.org/packages/9b/9d/025cccdd738a72140efc582b1641d0dd4caf2e86c3fb127568dc80444e6e/scipy-1.17.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:130d12926ae34399d157de777472bf82e9061c60cc081372b3118edacafe1d00", size = 32815098, upload-time = "2026-01-10T21:27:54.389Z" }, + { url = "https://files.pythonhosted.org/packages/48/5f/09b879619f8bca15ce392bfc1894bd9c54377e01d1b3f2f3b595a1b4d945/scipy-1.17.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e886000eb4919eae3a44f035e63f0fd8b651234117e8f6f29bad1cd26e7bc45", size = 35031342, upload-time = "2026-01-10T21:28:03.012Z" }, + { url = "https://files.pythonhosted.org/packages/f2/9a/f0f0a9f0aa079d2f106555b984ff0fbb11a837df280f04f71f056ea9c6e4/scipy-1.17.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:13c4096ac6bc31d706018f06a49abe0485f96499deb82066b94d19b02f664209", size = 34893199, upload-time = "2026-01-10T21:28:10.832Z" }, + { url = "https://files.pythonhosted.org/packages/90/b8/4f0f5cf0c5ea4d7548424e6533e6b17d164f34a6e2fb2e43ffebb6697b06/scipy-1.17.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cacbaddd91fcffde703934897c5cd2c7cb0371fac195d383f4e1f1c5d3f3bd04", size = 37438061, upload-time = "2026-01-10T21:28:19.684Z" }, + { url = "https://files.pythonhosted.org/packages/f9/cc/2bd59140ed3b2fa2882fb15da0a9cb1b5a6443d67cfd0d98d4cec83a57ec/scipy-1.17.0-cp313-cp313t-win_amd64.whl", hash = "sha256:edce1a1cf66298cccdc48a1bdf8fb10a3bf58e8b58d6c3883dd1530e103f87c0", size = 36328593, upload-time = "2026-01-10T21:28:28.007Z" }, + { url = "https://files.pythonhosted.org/packages/13/1b/c87cc44a0d2c7aaf0f003aef2904c3d097b422a96c7e7c07f5efd9073c1b/scipy-1.17.0-cp313-cp313t-win_arm64.whl", hash = "sha256:30509da9dbec1c2ed8f168b8d8aa853bc6723fede1dbc23c7d43a56f5ab72a67", size = 24625083, upload-time = "2026-01-10T21:28:35.188Z" }, ] [[package]] name = "semver" version = "3.0.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/d1/d3159231aec234a59dd7d601e9dd9fe96f3afff15efd33c1070019b26132/semver-3.0.4.tar.gz", hash = "sha256:afc7d8c584a5ed0a11033af086e8af226a9c0b206f313e0301f8dd7b6b589602", size = 269730, upload_time = "2025-01-24T13:19:27.617Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/d1/d3159231aec234a59dd7d601e9dd9fe96f3afff15efd33c1070019b26132/semver-3.0.4.tar.gz", hash = "sha256:afc7d8c584a5ed0a11033af086e8af226a9c0b206f313e0301f8dd7b6b589602", size = 269730, upload-time = "2025-01-24T13:19:27.617Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/24/4d91e05817e92e3a61c8a21e08fd0f390f5301f1c448b137c57c4bc6e543/semver-3.0.4-py3-none-any.whl", hash = "sha256:9c824d87ba7f7ab4a1890799cec8596f15c1241cb473404ea1cb0c55e4b04746", size = 17912, upload_time = "2025-01-24T13:19:24.949Z" }, + { url = "https://files.pythonhosted.org/packages/a6/24/4d91e05817e92e3a61c8a21e08fd0f390f5301f1c448b137c57c4bc6e543/semver-3.0.4-py3-none-any.whl", hash = "sha256:9c824d87ba7f7ab4a1890799cec8596f15c1241cb473404ea1cb0c55e4b04746", size = 17912, upload-time = "2025-01-24T13:19:24.949Z" }, ] [[package]] @@ -4157,9 +4207,9 @@ dependencies = [ { name = "certifi" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c8/28/02c0cd9184f9108e3c52519f9628b215077a3854240e0b17ae845e664855/sentry_sdk-1.45.1.tar.gz", hash = "sha256:a16c997c0f4e3df63c0fc5e4207ccb1ab37900433e0f72fef88315d317829a26", size = 244774, upload_time = "2024-07-26T13:48:32.375Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c8/28/02c0cd9184f9108e3c52519f9628b215077a3854240e0b17ae845e664855/sentry_sdk-1.45.1.tar.gz", hash = "sha256:a16c997c0f4e3df63c0fc5e4207ccb1ab37900433e0f72fef88315d317829a26", size = 244774, upload-time = "2024-07-26T13:48:32.375Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/9f/105366a122efa93f0cb1914f841747d160788e4d022d0488d2d44c2ba26c/sentry_sdk-1.45.1-py2.py3-none-any.whl", hash = "sha256:608887855ccfe39032bfd03936e3a1c4f4fc99b3a4ac49ced54a4220de61c9c1", size = 267163, upload_time = "2024-07-26T13:48:29.38Z" }, + { url = "https://files.pythonhosted.org/packages/fe/9f/105366a122efa93f0cb1914f841747d160788e4d022d0488d2d44c2ba26c/sentry_sdk-1.45.1-py2.py3-none-any.whl", hash = "sha256:608887855ccfe39032bfd03936e3a1c4f4fc99b3a4ac49ced54a4220de61c9c1", size = 267163, upload-time = "2024-07-26T13:48:29.38Z" }, ] [package.optional-dependencies] @@ -4171,27 +4221,27 @@ fastapi = [ name = "setuptools" version = "81.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0d/1c/73e719955c59b8e424d015ab450f51c0af856ae46ea2da83eba51cc88de1/setuptools-81.0.0.tar.gz", hash = "sha256:487b53915f52501f0a79ccfd0c02c165ffe06631443a886740b91af4b7a5845a", size = 1198299, upload_time = "2026-02-06T21:10:39.601Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/1c/73e719955c59b8e424d015ab450f51c0af856ae46ea2da83eba51cc88de1/setuptools-81.0.0.tar.gz", hash = "sha256:487b53915f52501f0a79ccfd0c02c165ffe06631443a886740b91af4b7a5845a", size = 1198299, upload-time = "2026-02-06T21:10:39.601Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/e3/c164c88b2e5ce7b24d667b9bd83589cf4f3520d97cad01534cd3c4f55fdb/setuptools-81.0.0-py3-none-any.whl", hash = "sha256:fdd925d5c5d9f62e4b74b30d6dd7828ce236fd6ed998a08d81de62ce5a6310d6", size = 1062021, upload_time = "2026-02-06T21:10:37.175Z" }, + { url = "https://files.pythonhosted.org/packages/e1/e3/c164c88b2e5ce7b24d667b9bd83589cf4f3520d97cad01534cd3c4f55fdb/setuptools-81.0.0-py3-none-any.whl", hash = "sha256:fdd925d5c5d9f62e4b74b30d6dd7828ce236fd6ed998a08d81de62ce5a6310d6", size = 1062021, upload-time = "2026-02-06T21:10:37.175Z" }, ] [[package]] name = "shellingham" version = "1.5.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload_time = "2023-10-24T04:13:40.426Z" } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload-time = "2023-10-24T04:13:40.426Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload_time = "2023-10-24T04:13:38.866Z" }, + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" }, ] [[package]] name = "six" version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload_time = "2024-12-04T17:35:28.174Z" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload_time = "2024-12-04T17:35:26.475Z" }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] [[package]] @@ -4201,18 +4251,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/67/9a/0a7acb748b86e2922982366d780ca4b16c33f7246fa5860d26005c97e4f3/smart_open-7.5.0.tar.gz", hash = "sha256:f394b143851d8091011832ac8113ea4aba6b92e6c35f6e677ddaaccb169d7cb9", size = 53920, upload_time = "2025-11-08T21:38:40.698Z" } +sdist = { url = "https://files.pythonhosted.org/packages/67/9a/0a7acb748b86e2922982366d780ca4b16c33f7246fa5860d26005c97e4f3/smart_open-7.5.0.tar.gz", hash = "sha256:f394b143851d8091011832ac8113ea4aba6b92e6c35f6e677ddaaccb169d7cb9", size = 53920, upload-time = "2025-11-08T21:38:40.698Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ad/95/bc978be7ea0babf2fb48a414b6afaad414c6a9e8b1eafc5b8a53c030381a/smart_open-7.5.0-py3-none-any.whl", hash = "sha256:87e695c5148bbb988f15cec00971602765874163be85acb1c9fb8abc012e6599", size = 63940, upload_time = "2025-11-08T21:38:39.024Z" }, + { url = "https://files.pythonhosted.org/packages/ad/95/bc978be7ea0babf2fb48a414b6afaad414c6a9e8b1eafc5b8a53c030381a/smart_open-7.5.0-py3-none-any.whl", hash = "sha256:87e695c5148bbb988f15cec00971602765874163be85acb1c9fb8abc012e6599", size = 63940, upload-time = "2025-11-08T21:38:39.024Z" }, ] [[package]] name = "sniffio" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload_time = "2024-02-25T23:20:04.057Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload_time = "2024-02-25T23:20:01.196Z" }, + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, ] [[package]] @@ -4240,57 +4290,57 @@ dependencies = [ { name = "wasabi" }, { name = "weasel" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/59/9f/424244b0e2656afc9ff82fb7a96931a47397bfce5ba382213827b198312a/spacy-3.8.11.tar.gz", hash = "sha256:54e1e87b74a2f9ea807ffd606166bf29ac45e2bd81ff7f608eadc7b05787d90d", size = 1326804, upload_time = "2025-11-17T20:40:03.079Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/99/63/f23db7119e0bb7740d74eff4583543824be84e7c0aad1c87683b8f40a17e/spacy-3.8.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f9cc7f775cfc41ccb8be63bd6258a1ec4613d4ad3859f2ba2c079f34240b21f6", size = 6499016, upload_time = "2025-11-17T20:38:22.359Z" }, - { url = "https://files.pythonhosted.org/packages/5d/e4/e8c0f0561e8b29b4f38ba3d491fca427faa750765df3e27850036af28762/spacy-3.8.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:be9d665be8581926fba4303543ba189d34e8517803052551b000cf1a1af33b87", size = 6159121, upload_time = "2025-11-17T20:38:24.85Z" }, - { url = "https://files.pythonhosted.org/packages/15/7a/7ce7320f2a384023240fad0e6b7ffb2e3717ae4cc09ec0770706fd20c419/spacy-3.8.11-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:06e46ad776a1b20cc6296fe04890dea8a7b4e4653d7e8c143dd4a707f7ae2670", size = 30763429, upload_time = "2025-11-17T20:38:27.001Z" }, - { url = "https://files.pythonhosted.org/packages/db/36/b16df8f5ba8d5fc3d2b23f004eb55f3edf4f3345e743efdd560b6b20faf8/spacy-3.8.11-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e1b91199926eb9de507f7bfc63090b17ee9a12663bcfc76357560c2c7ef4750a", size = 31002535, upload_time = "2025-11-17T20:38:30.115Z" }, - { url = "https://files.pythonhosted.org/packages/6e/be/58183313f1401fff896d3dd8f8da977847fb1c205a2c2a8a7030e81da265/spacy-3.8.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a1d4c506adcbefd19ead59daca2e0e61ce669ff35372cc9c23aae1b292c57f94", size = 31033341, upload_time = "2025-11-17T20:38:33.06Z" }, - { url = "https://files.pythonhosted.org/packages/94/08/d490ed3a4ea070734c58cf1f2e3e6081a20630067bca2c58d5dbcfb36558/spacy-3.8.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d885a2bf427c854c5a5f1dda7451924a1f2c036aefaa2946c741201ff05a915a", size = 31882346, upload_time = "2025-11-17T20:38:35.596Z" }, - { url = "https://files.pythonhosted.org/packages/79/38/e64856b3f768754def0f5dc4c5fb3f692d96a193eec7e2eee03d37c233b6/spacy-3.8.11-cp310-cp310-win_amd64.whl", hash = "sha256:909d12ff2365c2e7ebf0258ddc566d2b361ef1fd2e7684ce1af5f7022111e366", size = 15346864, upload_time = "2025-11-17T20:38:37.95Z" }, - { url = "https://files.pythonhosted.org/packages/74/d3/0c795e6f31ee3535b6e70d08e89fc22247b95b61f94fc8334a01d39bf871/spacy-3.8.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a12d83e8bfba07563300ae5e0086548e41aa4bfe3734c97dda87e0eec813df0d", size = 6487958, upload_time = "2025-11-17T20:38:40.378Z" }, - { url = "https://files.pythonhosted.org/packages/4e/2a/83ca9b4d0a2b31adcf0ced49fa667212d12958f75d4e238618a60eb50b10/spacy-3.8.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e07a50b69500ef376326545353a470f00d1ed7203c76341b97242af976e3681a", size = 6148078, upload_time = "2025-11-17T20:38:42.524Z" }, - { url = "https://files.pythonhosted.org/packages/2c/f0/ff520df18a6152ba2dbf808c964014308e71a48feb4c7563f2a6cd6e668d/spacy-3.8.11-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:718b7bb5e83c76cb841ed6e407f7b40255d0b46af7101a426c20e04af3afd64e", size = 32056451, upload_time = "2025-11-17T20:38:44.92Z" }, - { url = "https://files.pythonhosted.org/packages/9d/3a/6c44c0b9b6a70595888b8d021514ded065548a5b10718ac253bd39f9fd73/spacy-3.8.11-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f860f9d51c1aeb2d61852442b232576e4ca4d239cb3d1b40ac452118b8eb2c68", size = 32302908, upload_time = "2025-11-17T20:38:47.672Z" }, - { url = "https://files.pythonhosted.org/packages/db/77/00e99e00efd4c2456772befc48400c2e19255140660d663e16b6924a0f2e/spacy-3.8.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ff8d928ce70d751b7bb27f60ee5e3a308216efd4ab4517291e6ff05d9b194840", size = 32280936, upload_time = "2025-11-17T20:38:50.893Z" }, - { url = "https://files.pythonhosted.org/packages/d8/da/692b51e9e5be2766d2d1fb9a7c8122cfd99c337570e621f09c40ce94ad17/spacy-3.8.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3f3cb91d7d42fafd92b8d5bf9f696571170d2f0747f85724a2c5b997753e33c9", size = 33117270, upload_time = "2025-11-17T20:38:53.596Z" }, - { url = "https://files.pythonhosted.org/packages/9b/13/a542ac9b61d071f3328fda1fd8087b523fb7a4f2c340010bc70b1f762485/spacy-3.8.11-cp311-cp311-win_amd64.whl", hash = "sha256:745c190923584935272188c604e0cc170f4179aace1025814a25d92ee90cf3de", size = 15348350, upload_time = "2025-11-17T20:38:56.833Z" }, - { url = "https://files.pythonhosted.org/packages/23/53/975c16514322f6385d6caa5929771613d69f5458fb24f03e189ba533f279/spacy-3.8.11-cp311-cp311-win_arm64.whl", hash = "sha256:27535d81d9dee0483b66660cadd93d14c1668f55e4faf4386aca4a11a41a8b97", size = 14701913, upload_time = "2025-11-17T20:38:59.507Z" }, - { url = "https://files.pythonhosted.org/packages/51/fb/01eadf4ba70606b3054702dc41fc2ccf7d70fb14514b3cd57f0ff78ebea8/spacy-3.8.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aa1ee8362074c30098feaaf2dd888c829a1a79c4311eec1b117a0a61f16fa6dd", size = 6073726, upload_time = "2025-11-17T20:39:01.679Z" }, - { url = "https://files.pythonhosted.org/packages/3a/f8/07b03a2997fc2621aaeafae00af50f55522304a7da6926b07027bb6d0709/spacy-3.8.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:75a036d04c2cf11d6cb566c0a689860cc5a7a75b439e8fea1b3a6b673dabf25d", size = 5724702, upload_time = "2025-11-17T20:39:03.486Z" }, - { url = "https://files.pythonhosted.org/packages/13/0c/c4fa0f379dbe3258c305d2e2df3760604a9fcd71b34f8f65c23e43f4cf55/spacy-3.8.11-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cb599d2747d4a59a5f90e8a453c149b13db382a8297925cf126333141dbc4f7", size = 32727774, upload_time = "2025-11-17T20:39:05.894Z" }, - { url = "https://files.pythonhosted.org/packages/ce/8e/6a4ba82bed480211ebdf5341b0f89e7271b454307525ac91b5e447825914/spacy-3.8.11-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:94632e302ad2fb79dc285bf1e9e4d4a178904d5c67049e0e02b7fb4a77af85c4", size = 33215053, upload_time = "2025-11-17T20:39:08.588Z" }, - { url = "https://files.pythonhosted.org/packages/a6/bc/44d863d248e9d7358c76a0aa8b3f196b8698df520650ed8de162e18fbffb/spacy-3.8.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aeca6cf34009d48cda9fb1bbfb532469e3d643817241a73e367b34ab99a5806f", size = 32074195, upload_time = "2025-11-17T20:39:11.601Z" }, - { url = "https://files.pythonhosted.org/packages/6f/7d/0b115f3f16e1dd2d3f99b0f89497867fc11c41aed94f4b7a4367b4b54136/spacy-3.8.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:368a79b8df925b15d89dccb5e502039446fb2ce93cf3020e092d5b962c3349b9", size = 32996143, upload_time = "2025-11-17T20:39:14.705Z" }, - { url = "https://files.pythonhosted.org/packages/7d/48/7e9581b476df76aaf9ee182888d15322e77c38b0bbbd5e80160ba0bddd4c/spacy-3.8.11-cp312-cp312-win_amd64.whl", hash = "sha256:88d65941a87f58d75afca1785bd64d01183a92f7269dcbcf28bd9d6f6a77d1a7", size = 14217511, upload_time = "2025-11-17T20:39:17.316Z" }, - { url = "https://files.pythonhosted.org/packages/7b/1f/307a16f32f90aa5ee7ad8d29ff8620a57132b80a4c8c536963d46d192e1a/spacy-3.8.11-cp312-cp312-win_arm64.whl", hash = "sha256:97b865d6d3658e2ab103a67d6c8a2d678e193e84a07f40d9938565b669ceee39", size = 13614446, upload_time = "2025-11-17T20:39:19.748Z" }, - { url = "https://files.pythonhosted.org/packages/ed/5c/3f07cff8bc478fcf48a915ca9fe8637486a1ec676587ed3e6fd775423301/spacy-3.8.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ea4adeb399636059925be085c5bb852c1f3a2ebe1c2060332cbad6257d223bbc", size = 6051355, upload_time = "2025-11-17T20:39:22.243Z" }, - { url = "https://files.pythonhosted.org/packages/6d/44/4671e8098b62befec69c7848538a0824086559f74065284bbd57a5747781/spacy-3.8.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dd785e6bd85a58fa037da0c18fcd7250e2daecdfc30464d3882912529d1ad588", size = 5700468, upload_time = "2025-11-17T20:39:23.87Z" }, - { url = "https://files.pythonhosted.org/packages/0c/98/5708bdfb39f94af0655568e14d953886117e18bd04c3aa3ab5ff1a60ea89/spacy-3.8.11-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:598c177054eb6196deed03cac6fb7a3229f4789719ad0c9f7483f9491e375749", size = 32521877, upload_time = "2025-11-17T20:39:26.291Z" }, - { url = "https://files.pythonhosted.org/packages/c6/1f/731beb48f2c7415a71e2f655876fea8a0b3a6798be3d4d51b794f939623d/spacy-3.8.11-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a5a449ed3f2d03399481870b776f3ec61f2b831812d63dc1acedf6da70e5ab03", size = 32848355, upload_time = "2025-11-17T20:39:28.971Z" }, - { url = "https://files.pythonhosted.org/packages/47/6b/f3d131d3f9bb1c7de4f355a12adcd0a5fa77f9f624711ddd0f19c517e88b/spacy-3.8.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a6c35c2cb93bade9b7360d1f9db608a066246a41301bb579309efb50764ba55b", size = 31764944, upload_time = "2025-11-17T20:39:31.788Z" }, - { url = "https://files.pythonhosted.org/packages/72/bf/37ea8134667a4f2787b5f0e0146f2e8df1fb36ab67d598ad06eb5ed2e7db/spacy-3.8.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0156ae575b20290021573faa1fed8a82b11314e9a1c28f034713359a5240a325", size = 32718517, upload_time = "2025-11-17T20:39:35.286Z" }, - { url = "https://files.pythonhosted.org/packages/79/fe/436435dfa93cc355ed511f21cf3cda5302b7aa29716457317eb07f1cf2da/spacy-3.8.11-cp313-cp313-win_amd64.whl", hash = "sha256:6f39cf36f86bd6a8882076f86ca80f246c73aa41d7ebc8679fbbe41b6f8ec045", size = 14211913, upload_time = "2025-11-17T20:39:37.906Z" }, - { url = "https://files.pythonhosted.org/packages/c8/23/f89cfa51f54aa5e9c6c7a37f8bf4952d678f0902a5e1d81dfda33a94bfb2/spacy-3.8.11-cp313-cp313-win_arm64.whl", hash = "sha256:9a7151eee0814a5ced36642b42b1ecc8f98ac7225f3e378fb9f862ffbe84b8bf", size = 13605169, upload_time = "2025-11-17T20:39:40.455Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/59/9f/424244b0e2656afc9ff82fb7a96931a47397bfce5ba382213827b198312a/spacy-3.8.11.tar.gz", hash = "sha256:54e1e87b74a2f9ea807ffd606166bf29ac45e2bd81ff7f608eadc7b05787d90d", size = 1326804, upload-time = "2025-11-17T20:40:03.079Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/63/f23db7119e0bb7740d74eff4583543824be84e7c0aad1c87683b8f40a17e/spacy-3.8.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f9cc7f775cfc41ccb8be63bd6258a1ec4613d4ad3859f2ba2c079f34240b21f6", size = 6499016, upload-time = "2025-11-17T20:38:22.359Z" }, + { url = "https://files.pythonhosted.org/packages/5d/e4/e8c0f0561e8b29b4f38ba3d491fca427faa750765df3e27850036af28762/spacy-3.8.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:be9d665be8581926fba4303543ba189d34e8517803052551b000cf1a1af33b87", size = 6159121, upload-time = "2025-11-17T20:38:24.85Z" }, + { url = "https://files.pythonhosted.org/packages/15/7a/7ce7320f2a384023240fad0e6b7ffb2e3717ae4cc09ec0770706fd20c419/spacy-3.8.11-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:06e46ad776a1b20cc6296fe04890dea8a7b4e4653d7e8c143dd4a707f7ae2670", size = 30763429, upload-time = "2025-11-17T20:38:27.001Z" }, + { url = "https://files.pythonhosted.org/packages/db/36/b16df8f5ba8d5fc3d2b23f004eb55f3edf4f3345e743efdd560b6b20faf8/spacy-3.8.11-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e1b91199926eb9de507f7bfc63090b17ee9a12663bcfc76357560c2c7ef4750a", size = 31002535, upload-time = "2025-11-17T20:38:30.115Z" }, + { url = "https://files.pythonhosted.org/packages/6e/be/58183313f1401fff896d3dd8f8da977847fb1c205a2c2a8a7030e81da265/spacy-3.8.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a1d4c506adcbefd19ead59daca2e0e61ce669ff35372cc9c23aae1b292c57f94", size = 31033341, upload-time = "2025-11-17T20:38:33.06Z" }, + { url = "https://files.pythonhosted.org/packages/94/08/d490ed3a4ea070734c58cf1f2e3e6081a20630067bca2c58d5dbcfb36558/spacy-3.8.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d885a2bf427c854c5a5f1dda7451924a1f2c036aefaa2946c741201ff05a915a", size = 31882346, upload-time = "2025-11-17T20:38:35.596Z" }, + { url = "https://files.pythonhosted.org/packages/79/38/e64856b3f768754def0f5dc4c5fb3f692d96a193eec7e2eee03d37c233b6/spacy-3.8.11-cp310-cp310-win_amd64.whl", hash = "sha256:909d12ff2365c2e7ebf0258ddc566d2b361ef1fd2e7684ce1af5f7022111e366", size = 15346864, upload-time = "2025-11-17T20:38:37.95Z" }, + { url = "https://files.pythonhosted.org/packages/74/d3/0c795e6f31ee3535b6e70d08e89fc22247b95b61f94fc8334a01d39bf871/spacy-3.8.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a12d83e8bfba07563300ae5e0086548e41aa4bfe3734c97dda87e0eec813df0d", size = 6487958, upload-time = "2025-11-17T20:38:40.378Z" }, + { url = "https://files.pythonhosted.org/packages/4e/2a/83ca9b4d0a2b31adcf0ced49fa667212d12958f75d4e238618a60eb50b10/spacy-3.8.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e07a50b69500ef376326545353a470f00d1ed7203c76341b97242af976e3681a", size = 6148078, upload-time = "2025-11-17T20:38:42.524Z" }, + { url = "https://files.pythonhosted.org/packages/2c/f0/ff520df18a6152ba2dbf808c964014308e71a48feb4c7563f2a6cd6e668d/spacy-3.8.11-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:718b7bb5e83c76cb841ed6e407f7b40255d0b46af7101a426c20e04af3afd64e", size = 32056451, upload-time = "2025-11-17T20:38:44.92Z" }, + { url = "https://files.pythonhosted.org/packages/9d/3a/6c44c0b9b6a70595888b8d021514ded065548a5b10718ac253bd39f9fd73/spacy-3.8.11-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f860f9d51c1aeb2d61852442b232576e4ca4d239cb3d1b40ac452118b8eb2c68", size = 32302908, upload-time = "2025-11-17T20:38:47.672Z" }, + { url = "https://files.pythonhosted.org/packages/db/77/00e99e00efd4c2456772befc48400c2e19255140660d663e16b6924a0f2e/spacy-3.8.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ff8d928ce70d751b7bb27f60ee5e3a308216efd4ab4517291e6ff05d9b194840", size = 32280936, upload-time = "2025-11-17T20:38:50.893Z" }, + { url = "https://files.pythonhosted.org/packages/d8/da/692b51e9e5be2766d2d1fb9a7c8122cfd99c337570e621f09c40ce94ad17/spacy-3.8.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3f3cb91d7d42fafd92b8d5bf9f696571170d2f0747f85724a2c5b997753e33c9", size = 33117270, upload-time = "2025-11-17T20:38:53.596Z" }, + { url = "https://files.pythonhosted.org/packages/9b/13/a542ac9b61d071f3328fda1fd8087b523fb7a4f2c340010bc70b1f762485/spacy-3.8.11-cp311-cp311-win_amd64.whl", hash = "sha256:745c190923584935272188c604e0cc170f4179aace1025814a25d92ee90cf3de", size = 15348350, upload-time = "2025-11-17T20:38:56.833Z" }, + { url = "https://files.pythonhosted.org/packages/23/53/975c16514322f6385d6caa5929771613d69f5458fb24f03e189ba533f279/spacy-3.8.11-cp311-cp311-win_arm64.whl", hash = "sha256:27535d81d9dee0483b66660cadd93d14c1668f55e4faf4386aca4a11a41a8b97", size = 14701913, upload-time = "2025-11-17T20:38:59.507Z" }, + { url = "https://files.pythonhosted.org/packages/51/fb/01eadf4ba70606b3054702dc41fc2ccf7d70fb14514b3cd57f0ff78ebea8/spacy-3.8.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aa1ee8362074c30098feaaf2dd888c829a1a79c4311eec1b117a0a61f16fa6dd", size = 6073726, upload-time = "2025-11-17T20:39:01.679Z" }, + { url = "https://files.pythonhosted.org/packages/3a/f8/07b03a2997fc2621aaeafae00af50f55522304a7da6926b07027bb6d0709/spacy-3.8.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:75a036d04c2cf11d6cb566c0a689860cc5a7a75b439e8fea1b3a6b673dabf25d", size = 5724702, upload-time = "2025-11-17T20:39:03.486Z" }, + { url = "https://files.pythonhosted.org/packages/13/0c/c4fa0f379dbe3258c305d2e2df3760604a9fcd71b34f8f65c23e43f4cf55/spacy-3.8.11-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cb599d2747d4a59a5f90e8a453c149b13db382a8297925cf126333141dbc4f7", size = 32727774, upload-time = "2025-11-17T20:39:05.894Z" }, + { url = "https://files.pythonhosted.org/packages/ce/8e/6a4ba82bed480211ebdf5341b0f89e7271b454307525ac91b5e447825914/spacy-3.8.11-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:94632e302ad2fb79dc285bf1e9e4d4a178904d5c67049e0e02b7fb4a77af85c4", size = 33215053, upload-time = "2025-11-17T20:39:08.588Z" }, + { url = "https://files.pythonhosted.org/packages/a6/bc/44d863d248e9d7358c76a0aa8b3f196b8698df520650ed8de162e18fbffb/spacy-3.8.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aeca6cf34009d48cda9fb1bbfb532469e3d643817241a73e367b34ab99a5806f", size = 32074195, upload-time = "2025-11-17T20:39:11.601Z" }, + { url = "https://files.pythonhosted.org/packages/6f/7d/0b115f3f16e1dd2d3f99b0f89497867fc11c41aed94f4b7a4367b4b54136/spacy-3.8.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:368a79b8df925b15d89dccb5e502039446fb2ce93cf3020e092d5b962c3349b9", size = 32996143, upload-time = "2025-11-17T20:39:14.705Z" }, + { url = "https://files.pythonhosted.org/packages/7d/48/7e9581b476df76aaf9ee182888d15322e77c38b0bbbd5e80160ba0bddd4c/spacy-3.8.11-cp312-cp312-win_amd64.whl", hash = "sha256:88d65941a87f58d75afca1785bd64d01183a92f7269dcbcf28bd9d6f6a77d1a7", size = 14217511, upload-time = "2025-11-17T20:39:17.316Z" }, + { url = "https://files.pythonhosted.org/packages/7b/1f/307a16f32f90aa5ee7ad8d29ff8620a57132b80a4c8c536963d46d192e1a/spacy-3.8.11-cp312-cp312-win_arm64.whl", hash = "sha256:97b865d6d3658e2ab103a67d6c8a2d678e193e84a07f40d9938565b669ceee39", size = 13614446, upload-time = "2025-11-17T20:39:19.748Z" }, + { url = "https://files.pythonhosted.org/packages/ed/5c/3f07cff8bc478fcf48a915ca9fe8637486a1ec676587ed3e6fd775423301/spacy-3.8.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ea4adeb399636059925be085c5bb852c1f3a2ebe1c2060332cbad6257d223bbc", size = 6051355, upload-time = "2025-11-17T20:39:22.243Z" }, + { url = "https://files.pythonhosted.org/packages/6d/44/4671e8098b62befec69c7848538a0824086559f74065284bbd57a5747781/spacy-3.8.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dd785e6bd85a58fa037da0c18fcd7250e2daecdfc30464d3882912529d1ad588", size = 5700468, upload-time = "2025-11-17T20:39:23.87Z" }, + { url = "https://files.pythonhosted.org/packages/0c/98/5708bdfb39f94af0655568e14d953886117e18bd04c3aa3ab5ff1a60ea89/spacy-3.8.11-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:598c177054eb6196deed03cac6fb7a3229f4789719ad0c9f7483f9491e375749", size = 32521877, upload-time = "2025-11-17T20:39:26.291Z" }, + { url = "https://files.pythonhosted.org/packages/c6/1f/731beb48f2c7415a71e2f655876fea8a0b3a6798be3d4d51b794f939623d/spacy-3.8.11-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a5a449ed3f2d03399481870b776f3ec61f2b831812d63dc1acedf6da70e5ab03", size = 32848355, upload-time = "2025-11-17T20:39:28.971Z" }, + { url = "https://files.pythonhosted.org/packages/47/6b/f3d131d3f9bb1c7de4f355a12adcd0a5fa77f9f624711ddd0f19c517e88b/spacy-3.8.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a6c35c2cb93bade9b7360d1f9db608a066246a41301bb579309efb50764ba55b", size = 31764944, upload-time = "2025-11-17T20:39:31.788Z" }, + { url = "https://files.pythonhosted.org/packages/72/bf/37ea8134667a4f2787b5f0e0146f2e8df1fb36ab67d598ad06eb5ed2e7db/spacy-3.8.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0156ae575b20290021573faa1fed8a82b11314e9a1c28f034713359a5240a325", size = 32718517, upload-time = "2025-11-17T20:39:35.286Z" }, + { url = "https://files.pythonhosted.org/packages/79/fe/436435dfa93cc355ed511f21cf3cda5302b7aa29716457317eb07f1cf2da/spacy-3.8.11-cp313-cp313-win_amd64.whl", hash = "sha256:6f39cf36f86bd6a8882076f86ca80f246c73aa41d7ebc8679fbbe41b6f8ec045", size = 14211913, upload-time = "2025-11-17T20:39:37.906Z" }, + { url = "https://files.pythonhosted.org/packages/c8/23/f89cfa51f54aa5e9c6c7a37f8bf4952d678f0902a5e1d81dfda33a94bfb2/spacy-3.8.11-cp313-cp313-win_arm64.whl", hash = "sha256:9a7151eee0814a5ced36642b42b1ecc8f98ac7225f3e378fb9f862ffbe84b8bf", size = 13605169, upload-time = "2025-11-17T20:39:40.455Z" }, ] [[package]] name = "spacy-legacy" version = "3.0.12" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d9/79/91f9d7cc8db5642acad830dcc4b49ba65a7790152832c4eceb305e46d681/spacy-legacy-3.0.12.tar.gz", hash = "sha256:b37d6e0c9b6e1d7ca1cf5bc7152ab64a4c4671f59c85adaf7a3fcb870357a774", size = 23806, upload_time = "2023-01-23T09:04:15.104Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d9/79/91f9d7cc8db5642acad830dcc4b49ba65a7790152832c4eceb305e46d681/spacy-legacy-3.0.12.tar.gz", hash = "sha256:b37d6e0c9b6e1d7ca1cf5bc7152ab64a4c4671f59c85adaf7a3fcb870357a774", size = 23806, upload-time = "2023-01-23T09:04:15.104Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c3/55/12e842c70ff8828e34e543a2c7176dac4da006ca6901c9e8b43efab8bc6b/spacy_legacy-3.0.12-py2.py3-none-any.whl", hash = "sha256:476e3bd0d05f8c339ed60f40986c07387c0a71479245d6d0f4298dbd52cda55f", size = 29971, upload_time = "2023-01-23T09:04:13.45Z" }, + { url = "https://files.pythonhosted.org/packages/c3/55/12e842c70ff8828e34e543a2c7176dac4da006ca6901c9e8b43efab8bc6b/spacy_legacy-3.0.12-py2.py3-none-any.whl", hash = "sha256:476e3bd0d05f8c339ed60f40986c07387c0a71479245d6d0f4298dbd52cda55f", size = 29971, upload-time = "2023-01-23T09:04:13.45Z" }, ] [[package]] name = "spacy-loggers" version = "1.0.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/67/3d/926db774c9c98acf66cb4ed7faf6c377746f3e00b84b700d0868b95d0712/spacy-loggers-1.0.5.tar.gz", hash = "sha256:d60b0bdbf915a60e516cc2e653baeff946f0cfc461b452d11a4d5458c6fe5f24", size = 20811, upload_time = "2023-09-11T12:26:52.323Z" } +sdist = { url = "https://files.pythonhosted.org/packages/67/3d/926db774c9c98acf66cb4ed7faf6c377746f3e00b84b700d0868b95d0712/spacy-loggers-1.0.5.tar.gz", hash = "sha256:d60b0bdbf915a60e516cc2e653baeff946f0cfc461b452d11a4d5458c6fe5f24", size = 20811, upload-time = "2023-09-11T12:26:52.323Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/33/78/d1a1a026ef3af911159398c939b1509d5c36fe524c7b644f34a5146c4e16/spacy_loggers-1.0.5-py3-none-any.whl", hash = "sha256:196284c9c446cc0cdb944005384270d775fdeaf4f494d8e269466cfa497ef645", size = 22343, upload_time = "2023-09-11T12:26:50.586Z" }, + { url = "https://files.pythonhosted.org/packages/33/78/d1a1a026ef3af911159398c939b1509d5c36fe524c7b644f34a5146c4e16/spacy_loggers-1.0.5-py3-none-any.whl", hash = "sha256:196284c9c446cc0cdb944005384270d775fdeaf4f494d8e269466cfa497ef645", size = 22343, upload-time = "2023-09-11T12:26:50.586Z" }, ] [[package]] @@ -4301,41 +4351,41 @@ dependencies = [ { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/06/aa/9ce0f3e7a9829ead5c8ce549392f33a12c4555a6c0609bb27d882e9c7ddf/sqlalchemy-2.0.46.tar.gz", hash = "sha256:cf36851ee7219c170bb0793dbc3da3e80c582e04a5437bc601bfe8c85c9216d7", size = 9865393, upload_time = "2026-01-21T18:03:45.119Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/26/66ba59328dc25e523bfcb0f8db48bdebe2035e0159d600e1f01c0fc93967/sqlalchemy-2.0.46-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:895296687ad06dc9b11a024cf68e8d9d3943aa0b4964278d2553b86f1b267735", size = 2155051, upload_time = "2026-01-21T18:27:28.965Z" }, - { url = "https://files.pythonhosted.org/packages/21/cd/9336732941df972fbbfa394db9caa8bb0cf9fe03656ec728d12e9cbd6edc/sqlalchemy-2.0.46-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab65cb2885a9f80f979b85aa4e9c9165a31381ca322cbde7c638fe6eefd1ec39", size = 3234666, upload_time = "2026-01-21T18:32:28.72Z" }, - { url = "https://files.pythonhosted.org/packages/38/62/865ae8b739930ec433cd4123760bee7f8dafdc10abefd725a025604fb0de/sqlalchemy-2.0.46-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:52fe29b3817bd191cc20bad564237c808967972c97fa683c04b28ec8979ae36f", size = 3232917, upload_time = "2026-01-21T18:44:54.064Z" }, - { url = "https://files.pythonhosted.org/packages/24/38/805904b911857f2b5e00fdea44e9570df62110f834378706939825579296/sqlalchemy-2.0.46-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:09168817d6c19954d3b7655da6ba87fcb3a62bb575fb396a81a8b6a9fadfe8b5", size = 3185790, upload_time = "2026-01-21T18:32:30.581Z" }, - { url = "https://files.pythonhosted.org/packages/69/4f/3260bb53aabd2d274856337456ea52f6a7eccf6cce208e558f870cec766b/sqlalchemy-2.0.46-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:be6c0466b4c25b44c5d82b0426b5501de3c424d7a3220e86cd32f319ba56798e", size = 3207206, upload_time = "2026-01-21T18:44:55.93Z" }, - { url = "https://files.pythonhosted.org/packages/ce/b3/67c432d7f9d88bb1a61909b67e29f6354d59186c168fb5d381cf438d3b73/sqlalchemy-2.0.46-cp310-cp310-win32.whl", hash = "sha256:1bc3f601f0a818d27bfe139f6766487d9c88502062a2cd3a7ee6c342e81d5047", size = 2115296, upload_time = "2026-01-21T18:33:12.498Z" }, - { url = "https://files.pythonhosted.org/packages/4a/8c/25fb284f570f9d48e6c240f0269a50cec9cf009a7e08be4c0aaaf0654972/sqlalchemy-2.0.46-cp310-cp310-win_amd64.whl", hash = "sha256:e0c05aff5c6b1bb5fb46a87e0f9d2f733f83ef6cbbbcd5c642b6c01678268061", size = 2138540, upload_time = "2026-01-21T18:33:14.22Z" }, - { url = "https://files.pythonhosted.org/packages/69/ac/b42ad16800d0885105b59380ad69aad0cce5a65276e269ce2729a2343b6a/sqlalchemy-2.0.46-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:261c4b1f101b4a411154f1da2b76497d73abbfc42740029205d4d01fa1052684", size = 2154851, upload_time = "2026-01-21T18:27:30.54Z" }, - { url = "https://files.pythonhosted.org/packages/a0/60/d8710068cb79f64d002ebed62a7263c00c8fd95f4ebd4b5be8f7ca93f2bc/sqlalchemy-2.0.46-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:181903fe8c1b9082995325f1b2e84ac078b1189e2819380c2303a5f90e114a62", size = 3311241, upload_time = "2026-01-21T18:32:33.45Z" }, - { url = "https://files.pythonhosted.org/packages/2b/0f/20c71487c7219ab3aa7421c7c62d93824c97c1460f2e8bb72404b0192d13/sqlalchemy-2.0.46-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:590be24e20e2424a4c3c1b0835e9405fa3d0af5823a1a9fc02e5dff56471515f", size = 3310741, upload_time = "2026-01-21T18:44:57.887Z" }, - { url = "https://files.pythonhosted.org/packages/65/80/d26d00b3b249ae000eee4db206fcfc564bf6ca5030e4747adf451f4b5108/sqlalchemy-2.0.46-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7568fe771f974abadce52669ef3a03150ff03186d8eb82613bc8adc435a03f01", size = 3263116, upload_time = "2026-01-21T18:32:35.044Z" }, - { url = "https://files.pythonhosted.org/packages/da/ee/74dda7506640923821340541e8e45bd3edd8df78664f1f2e0aae8077192b/sqlalchemy-2.0.46-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf7e1e78af38047e08836d33502c7a278915698b7c2145d045f780201679999", size = 3285327, upload_time = "2026-01-21T18:44:59.254Z" }, - { url = "https://files.pythonhosted.org/packages/9f/25/6dcf8abafff1389a21c7185364de145107b7394ecdcb05233815b236330d/sqlalchemy-2.0.46-cp311-cp311-win32.whl", hash = "sha256:9d80ea2ac519c364a7286e8d765d6cd08648f5b21ca855a8017d9871f075542d", size = 2114564, upload_time = "2026-01-21T18:33:15.85Z" }, - { url = "https://files.pythonhosted.org/packages/93/5f/e081490f8523adc0088f777e4ebad3cac21e498ec8a3d4067074e21447a1/sqlalchemy-2.0.46-cp311-cp311-win_amd64.whl", hash = "sha256:585af6afe518732d9ccd3aea33af2edaae4a7aa881af5d8f6f4fe3a368699597", size = 2139233, upload_time = "2026-01-21T18:33:17.528Z" }, - { url = "https://files.pythonhosted.org/packages/b6/35/d16bfa235c8b7caba3730bba43e20b1e376d2224f407c178fbf59559f23e/sqlalchemy-2.0.46-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3a9a72b0da8387f15d5810f1facca8f879de9b85af8c645138cba61ea147968c", size = 2153405, upload_time = "2026-01-21T19:05:54.143Z" }, - { url = "https://files.pythonhosted.org/packages/06/6c/3192e24486749862f495ddc6584ed730c0c994a67550ec395d872a2ad650/sqlalchemy-2.0.46-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2347c3f0efc4de367ba00218e0ae5c4ba2306e47216ef80d6e31761ac97cb0b9", size = 3334702, upload_time = "2026-01-21T18:46:45.384Z" }, - { url = "https://files.pythonhosted.org/packages/ea/a2/b9f33c8d68a3747d972a0bb758c6b63691f8fb8a49014bc3379ba15d4274/sqlalchemy-2.0.46-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9094c8b3197db12aa6f05c51c05daaad0a92b8c9af5388569847b03b1007fb1b", size = 3347664, upload_time = "2026-01-21T18:40:09.979Z" }, - { url = "https://files.pythonhosted.org/packages/aa/d2/3e59e2a91eaec9db7e8dc6b37b91489b5caeb054f670f32c95bcba98940f/sqlalchemy-2.0.46-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37fee2164cf21417478b6a906adc1a91d69ae9aba8f9533e67ce882f4bb1de53", size = 3277372, upload_time = "2026-01-21T18:46:47.168Z" }, - { url = "https://files.pythonhosted.org/packages/dd/dd/67bc2e368b524e2192c3927b423798deda72c003e73a1e94c21e74b20a85/sqlalchemy-2.0.46-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b1e14b2f6965a685c7128bd315e27387205429c2e339eeec55cb75ca4ab0ea2e", size = 3312425, upload_time = "2026-01-21T18:40:11.548Z" }, - { url = "https://files.pythonhosted.org/packages/43/82/0ecd68e172bfe62247e96cb47867c2d68752566811a4e8c9d8f6e7c38a65/sqlalchemy-2.0.46-cp312-cp312-win32.whl", hash = "sha256:412f26bb4ba942d52016edc8d12fb15d91d3cd46b0047ba46e424213ad407bcb", size = 2113155, upload_time = "2026-01-21T18:42:49.748Z" }, - { url = "https://files.pythonhosted.org/packages/bc/2a/2821a45742073fc0331dc132552b30de68ba9563230853437cac54b2b53e/sqlalchemy-2.0.46-cp312-cp312-win_amd64.whl", hash = "sha256:ea3cd46b6713a10216323cda3333514944e510aa691c945334713fca6b5279ff", size = 2140078, upload_time = "2026-01-21T18:42:51.197Z" }, - { url = "https://files.pythonhosted.org/packages/b3/4b/fa7838fe20bb752810feed60e45625a9a8b0102c0c09971e2d1d95362992/sqlalchemy-2.0.46-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:93a12da97cca70cea10d4b4fc602589c4511f96c1f8f6c11817620c021d21d00", size = 2150268, upload_time = "2026-01-21T19:05:56.621Z" }, - { url = "https://files.pythonhosted.org/packages/46/c1/b34dccd712e8ea846edf396e00973dda82d598cb93762e55e43e6835eba9/sqlalchemy-2.0.46-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:af865c18752d416798dae13f83f38927c52f085c52e2f32b8ab0fef46fdd02c2", size = 3276511, upload_time = "2026-01-21T18:46:49.022Z" }, - { url = "https://files.pythonhosted.org/packages/96/48/a04d9c94753e5d5d096c628c82a98c4793b9c08ca0e7155c3eb7d7db9f24/sqlalchemy-2.0.46-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8d679b5f318423eacb61f933a9a0f75535bfca7056daeadbf6bd5bcee6183aee", size = 3292881, upload_time = "2026-01-21T18:40:13.089Z" }, - { url = "https://files.pythonhosted.org/packages/be/f4/06eda6e91476f90a7d8058f74311cb65a2fb68d988171aced81707189131/sqlalchemy-2.0.46-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:64901e08c33462acc9ec3bad27fc7a5c2b6491665f2aa57564e57a4f5d7c52ad", size = 3224559, upload_time = "2026-01-21T18:46:50.974Z" }, - { url = "https://files.pythonhosted.org/packages/ab/a2/d2af04095412ca6345ac22b33b89fe8d6f32a481e613ffcb2377d931d8d0/sqlalchemy-2.0.46-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e8ac45e8f4eaac0f9f8043ea0e224158855c6a4329fd4ee37c45c61e3beb518e", size = 3262728, upload_time = "2026-01-21T18:40:14.883Z" }, - { url = "https://files.pythonhosted.org/packages/31/48/1980c7caa5978a3b8225b4d230e69a2a6538a3562b8b31cea679b6933c83/sqlalchemy-2.0.46-cp313-cp313-win32.whl", hash = "sha256:8d3b44b3d0ab2f1319d71d9863d76eeb46766f8cf9e921ac293511804d39813f", size = 2111295, upload_time = "2026-01-21T18:42:52.366Z" }, - { url = "https://files.pythonhosted.org/packages/2d/54/f8d65bbde3d877617c4720f3c9f60e99bb7266df0d5d78b6e25e7c149f35/sqlalchemy-2.0.46-cp313-cp313-win_amd64.whl", hash = "sha256:77f8071d8fbcbb2dd11b7fd40dedd04e8ebe2eb80497916efedba844298065ef", size = 2137076, upload_time = "2026-01-21T18:42:53.924Z" }, - { url = "https://files.pythonhosted.org/packages/56/ba/9be4f97c7eb2b9d5544f2624adfc2853e796ed51d2bb8aec90bc94b7137e/sqlalchemy-2.0.46-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a1e8cc6cc01da346dc92d9509a63033b9b1bda4fed7a7a7807ed385c7dccdc10", size = 3556533, upload_time = "2026-01-21T18:33:06.636Z" }, - { url = "https://files.pythonhosted.org/packages/20/a6/b1fc6634564dbb4415b7ed6419cdfeaadefd2c39cdab1e3aa07a5f2474c2/sqlalchemy-2.0.46-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:96c7cca1a4babaaf3bfff3e4e606e38578856917e52f0384635a95b226c87764", size = 3523208, upload_time = "2026-01-21T18:45:08.436Z" }, - { url = "https://files.pythonhosted.org/packages/a1/d8/41e0bdfc0f930ff236f86fccd12962d8fa03713f17ed57332d38af6a3782/sqlalchemy-2.0.46-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b2a9f9aee38039cf4755891a1e50e1effcc42ea6ba053743f452c372c3152b1b", size = 3464292, upload_time = "2026-01-21T18:33:08.208Z" }, - { url = "https://files.pythonhosted.org/packages/f0/8b/9dcbec62d95bea85f5ecad9b8d65b78cc30fb0ffceeb3597961f3712549b/sqlalchemy-2.0.46-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:db23b1bf8cfe1f7fda19018e7207b20cdb5168f83c437ff7e95d19e39289c447", size = 3473497, upload_time = "2026-01-21T18:45:10.552Z" }, - { url = "https://files.pythonhosted.org/packages/fc/a1/9c4efa03300926601c19c18582531b45aededfb961ab3c3585f1e24f120b/sqlalchemy-2.0.46-py3-none-any.whl", hash = "sha256:f9c11766e7e7c0a2767dda5acb006a118640c9fc0a4104214b96269bfb78399e", size = 1937882, upload_time = "2026-01-21T18:22:10.456Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/06/aa/9ce0f3e7a9829ead5c8ce549392f33a12c4555a6c0609bb27d882e9c7ddf/sqlalchemy-2.0.46.tar.gz", hash = "sha256:cf36851ee7219c170bb0793dbc3da3e80c582e04a5437bc601bfe8c85c9216d7", size = 9865393, upload-time = "2026-01-21T18:03:45.119Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/26/66ba59328dc25e523bfcb0f8db48bdebe2035e0159d600e1f01c0fc93967/sqlalchemy-2.0.46-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:895296687ad06dc9b11a024cf68e8d9d3943aa0b4964278d2553b86f1b267735", size = 2155051, upload-time = "2026-01-21T18:27:28.965Z" }, + { url = "https://files.pythonhosted.org/packages/21/cd/9336732941df972fbbfa394db9caa8bb0cf9fe03656ec728d12e9cbd6edc/sqlalchemy-2.0.46-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab65cb2885a9f80f979b85aa4e9c9165a31381ca322cbde7c638fe6eefd1ec39", size = 3234666, upload-time = "2026-01-21T18:32:28.72Z" }, + { url = "https://files.pythonhosted.org/packages/38/62/865ae8b739930ec433cd4123760bee7f8dafdc10abefd725a025604fb0de/sqlalchemy-2.0.46-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:52fe29b3817bd191cc20bad564237c808967972c97fa683c04b28ec8979ae36f", size = 3232917, upload-time = "2026-01-21T18:44:54.064Z" }, + { url = "https://files.pythonhosted.org/packages/24/38/805904b911857f2b5e00fdea44e9570df62110f834378706939825579296/sqlalchemy-2.0.46-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:09168817d6c19954d3b7655da6ba87fcb3a62bb575fb396a81a8b6a9fadfe8b5", size = 3185790, upload-time = "2026-01-21T18:32:30.581Z" }, + { url = "https://files.pythonhosted.org/packages/69/4f/3260bb53aabd2d274856337456ea52f6a7eccf6cce208e558f870cec766b/sqlalchemy-2.0.46-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:be6c0466b4c25b44c5d82b0426b5501de3c424d7a3220e86cd32f319ba56798e", size = 3207206, upload-time = "2026-01-21T18:44:55.93Z" }, + { url = "https://files.pythonhosted.org/packages/ce/b3/67c432d7f9d88bb1a61909b67e29f6354d59186c168fb5d381cf438d3b73/sqlalchemy-2.0.46-cp310-cp310-win32.whl", hash = "sha256:1bc3f601f0a818d27bfe139f6766487d9c88502062a2cd3a7ee6c342e81d5047", size = 2115296, upload-time = "2026-01-21T18:33:12.498Z" }, + { url = "https://files.pythonhosted.org/packages/4a/8c/25fb284f570f9d48e6c240f0269a50cec9cf009a7e08be4c0aaaf0654972/sqlalchemy-2.0.46-cp310-cp310-win_amd64.whl", hash = "sha256:e0c05aff5c6b1bb5fb46a87e0f9d2f733f83ef6cbbbcd5c642b6c01678268061", size = 2138540, upload-time = "2026-01-21T18:33:14.22Z" }, + { url = "https://files.pythonhosted.org/packages/69/ac/b42ad16800d0885105b59380ad69aad0cce5a65276e269ce2729a2343b6a/sqlalchemy-2.0.46-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:261c4b1f101b4a411154f1da2b76497d73abbfc42740029205d4d01fa1052684", size = 2154851, upload-time = "2026-01-21T18:27:30.54Z" }, + { url = "https://files.pythonhosted.org/packages/a0/60/d8710068cb79f64d002ebed62a7263c00c8fd95f4ebd4b5be8f7ca93f2bc/sqlalchemy-2.0.46-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:181903fe8c1b9082995325f1b2e84ac078b1189e2819380c2303a5f90e114a62", size = 3311241, upload-time = "2026-01-21T18:32:33.45Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0f/20c71487c7219ab3aa7421c7c62d93824c97c1460f2e8bb72404b0192d13/sqlalchemy-2.0.46-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:590be24e20e2424a4c3c1b0835e9405fa3d0af5823a1a9fc02e5dff56471515f", size = 3310741, upload-time = "2026-01-21T18:44:57.887Z" }, + { url = "https://files.pythonhosted.org/packages/65/80/d26d00b3b249ae000eee4db206fcfc564bf6ca5030e4747adf451f4b5108/sqlalchemy-2.0.46-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7568fe771f974abadce52669ef3a03150ff03186d8eb82613bc8adc435a03f01", size = 3263116, upload-time = "2026-01-21T18:32:35.044Z" }, + { url = "https://files.pythonhosted.org/packages/da/ee/74dda7506640923821340541e8e45bd3edd8df78664f1f2e0aae8077192b/sqlalchemy-2.0.46-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf7e1e78af38047e08836d33502c7a278915698b7c2145d045f780201679999", size = 3285327, upload-time = "2026-01-21T18:44:59.254Z" }, + { url = "https://files.pythonhosted.org/packages/9f/25/6dcf8abafff1389a21c7185364de145107b7394ecdcb05233815b236330d/sqlalchemy-2.0.46-cp311-cp311-win32.whl", hash = "sha256:9d80ea2ac519c364a7286e8d765d6cd08648f5b21ca855a8017d9871f075542d", size = 2114564, upload-time = "2026-01-21T18:33:15.85Z" }, + { url = "https://files.pythonhosted.org/packages/93/5f/e081490f8523adc0088f777e4ebad3cac21e498ec8a3d4067074e21447a1/sqlalchemy-2.0.46-cp311-cp311-win_amd64.whl", hash = "sha256:585af6afe518732d9ccd3aea33af2edaae4a7aa881af5d8f6f4fe3a368699597", size = 2139233, upload-time = "2026-01-21T18:33:17.528Z" }, + { url = "https://files.pythonhosted.org/packages/b6/35/d16bfa235c8b7caba3730bba43e20b1e376d2224f407c178fbf59559f23e/sqlalchemy-2.0.46-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3a9a72b0da8387f15d5810f1facca8f879de9b85af8c645138cba61ea147968c", size = 2153405, upload-time = "2026-01-21T19:05:54.143Z" }, + { url = "https://files.pythonhosted.org/packages/06/6c/3192e24486749862f495ddc6584ed730c0c994a67550ec395d872a2ad650/sqlalchemy-2.0.46-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2347c3f0efc4de367ba00218e0ae5c4ba2306e47216ef80d6e31761ac97cb0b9", size = 3334702, upload-time = "2026-01-21T18:46:45.384Z" }, + { url = "https://files.pythonhosted.org/packages/ea/a2/b9f33c8d68a3747d972a0bb758c6b63691f8fb8a49014bc3379ba15d4274/sqlalchemy-2.0.46-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9094c8b3197db12aa6f05c51c05daaad0a92b8c9af5388569847b03b1007fb1b", size = 3347664, upload-time = "2026-01-21T18:40:09.979Z" }, + { url = "https://files.pythonhosted.org/packages/aa/d2/3e59e2a91eaec9db7e8dc6b37b91489b5caeb054f670f32c95bcba98940f/sqlalchemy-2.0.46-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37fee2164cf21417478b6a906adc1a91d69ae9aba8f9533e67ce882f4bb1de53", size = 3277372, upload-time = "2026-01-21T18:46:47.168Z" }, + { url = "https://files.pythonhosted.org/packages/dd/dd/67bc2e368b524e2192c3927b423798deda72c003e73a1e94c21e74b20a85/sqlalchemy-2.0.46-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b1e14b2f6965a685c7128bd315e27387205429c2e339eeec55cb75ca4ab0ea2e", size = 3312425, upload-time = "2026-01-21T18:40:11.548Z" }, + { url = "https://files.pythonhosted.org/packages/43/82/0ecd68e172bfe62247e96cb47867c2d68752566811a4e8c9d8f6e7c38a65/sqlalchemy-2.0.46-cp312-cp312-win32.whl", hash = "sha256:412f26bb4ba942d52016edc8d12fb15d91d3cd46b0047ba46e424213ad407bcb", size = 2113155, upload-time = "2026-01-21T18:42:49.748Z" }, + { url = "https://files.pythonhosted.org/packages/bc/2a/2821a45742073fc0331dc132552b30de68ba9563230853437cac54b2b53e/sqlalchemy-2.0.46-cp312-cp312-win_amd64.whl", hash = "sha256:ea3cd46b6713a10216323cda3333514944e510aa691c945334713fca6b5279ff", size = 2140078, upload-time = "2026-01-21T18:42:51.197Z" }, + { url = "https://files.pythonhosted.org/packages/b3/4b/fa7838fe20bb752810feed60e45625a9a8b0102c0c09971e2d1d95362992/sqlalchemy-2.0.46-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:93a12da97cca70cea10d4b4fc602589c4511f96c1f8f6c11817620c021d21d00", size = 2150268, upload-time = "2026-01-21T19:05:56.621Z" }, + { url = "https://files.pythonhosted.org/packages/46/c1/b34dccd712e8ea846edf396e00973dda82d598cb93762e55e43e6835eba9/sqlalchemy-2.0.46-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:af865c18752d416798dae13f83f38927c52f085c52e2f32b8ab0fef46fdd02c2", size = 3276511, upload-time = "2026-01-21T18:46:49.022Z" }, + { url = "https://files.pythonhosted.org/packages/96/48/a04d9c94753e5d5d096c628c82a98c4793b9c08ca0e7155c3eb7d7db9f24/sqlalchemy-2.0.46-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8d679b5f318423eacb61f933a9a0f75535bfca7056daeadbf6bd5bcee6183aee", size = 3292881, upload-time = "2026-01-21T18:40:13.089Z" }, + { url = "https://files.pythonhosted.org/packages/be/f4/06eda6e91476f90a7d8058f74311cb65a2fb68d988171aced81707189131/sqlalchemy-2.0.46-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:64901e08c33462acc9ec3bad27fc7a5c2b6491665f2aa57564e57a4f5d7c52ad", size = 3224559, upload-time = "2026-01-21T18:46:50.974Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a2/d2af04095412ca6345ac22b33b89fe8d6f32a481e613ffcb2377d931d8d0/sqlalchemy-2.0.46-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e8ac45e8f4eaac0f9f8043ea0e224158855c6a4329fd4ee37c45c61e3beb518e", size = 3262728, upload-time = "2026-01-21T18:40:14.883Z" }, + { url = "https://files.pythonhosted.org/packages/31/48/1980c7caa5978a3b8225b4d230e69a2a6538a3562b8b31cea679b6933c83/sqlalchemy-2.0.46-cp313-cp313-win32.whl", hash = "sha256:8d3b44b3d0ab2f1319d71d9863d76eeb46766f8cf9e921ac293511804d39813f", size = 2111295, upload-time = "2026-01-21T18:42:52.366Z" }, + { url = "https://files.pythonhosted.org/packages/2d/54/f8d65bbde3d877617c4720f3c9f60e99bb7266df0d5d78b6e25e7c149f35/sqlalchemy-2.0.46-cp313-cp313-win_amd64.whl", hash = "sha256:77f8071d8fbcbb2dd11b7fd40dedd04e8ebe2eb80497916efedba844298065ef", size = 2137076, upload-time = "2026-01-21T18:42:53.924Z" }, + { url = "https://files.pythonhosted.org/packages/56/ba/9be4f97c7eb2b9d5544f2624adfc2853e796ed51d2bb8aec90bc94b7137e/sqlalchemy-2.0.46-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a1e8cc6cc01da346dc92d9509a63033b9b1bda4fed7a7a7807ed385c7dccdc10", size = 3556533, upload-time = "2026-01-21T18:33:06.636Z" }, + { url = "https://files.pythonhosted.org/packages/20/a6/b1fc6634564dbb4415b7ed6419cdfeaadefd2c39cdab1e3aa07a5f2474c2/sqlalchemy-2.0.46-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:96c7cca1a4babaaf3bfff3e4e606e38578856917e52f0384635a95b226c87764", size = 3523208, upload-time = "2026-01-21T18:45:08.436Z" }, + { url = "https://files.pythonhosted.org/packages/a1/d8/41e0bdfc0f930ff236f86fccd12962d8fa03713f17ed57332d38af6a3782/sqlalchemy-2.0.46-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b2a9f9aee38039cf4755891a1e50e1effcc42ea6ba053743f452c372c3152b1b", size = 3464292, upload-time = "2026-01-21T18:33:08.208Z" }, + { url = "https://files.pythonhosted.org/packages/f0/8b/9dcbec62d95bea85f5ecad9b8d65b78cc30fb0ffceeb3597961f3712549b/sqlalchemy-2.0.46-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:db23b1bf8cfe1f7fda19018e7207b20cdb5168f83c437ff7e95d19e39289c447", size = 3473497, upload-time = "2026-01-21T18:45:10.552Z" }, + { url = "https://files.pythonhosted.org/packages/fc/a1/9c4efa03300926601c19c18582531b45aededfb961ab3c3585f1e24f120b/sqlalchemy-2.0.46-py3-none-any.whl", hash = "sha256:f9c11766e7e7c0a2767dda5acb006a118640c9fc0a4104214b96269bfb78399e", size = 1937882, upload-time = "2026-01-21T18:22:10.456Z" }, ] [[package]] @@ -4346,9 +4396,9 @@ dependencies = [ { name = "pydantic" }, { name = "sqlalchemy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3b/6a/b1b26d589063e53a08c10a2d7bc624cba63dec045a312758d68f550a4ea1/sqlmodel-0.0.34.tar.gz", hash = "sha256:577e4aae1ba96ee5038e03d8b1404c642dad1a92e628988cdf4ce68d27abe982", size = 96236, upload_time = "2026-02-16T19:06:34.275Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3b/6a/b1b26d589063e53a08c10a2d7bc624cba63dec045a312758d68f550a4ea1/sqlmodel-0.0.34.tar.gz", hash = "sha256:577e4aae1ba96ee5038e03d8b1404c642dad1a92e628988cdf4ce68d27abe982", size = 96236, upload-time = "2026-02-16T19:06:34.275Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/ee/1910f4eee41af4268b0d8cd688a05fb8ea23e9e6c64b8710592df24a8c66/sqlmodel-0.0.34-py3-none-any.whl", hash = "sha256:aeabc8f0de32076a0ed9216e88568459d737fca1e7133bfc6d1c657920789a2d", size = 27445, upload_time = "2026-02-16T19:06:35.709Z" }, + { url = "https://files.pythonhosted.org/packages/eb/ee/1910f4eee41af4268b0d8cd688a05fb8ea23e9e6c64b8710592df24a8c66/sqlmodel-0.0.34-py3-none-any.whl", hash = "sha256:aeabc8f0de32076a0ed9216e88568459d737fca1e7133bfc6d1c657920789a2d", size = 27445, upload-time = "2026-02-16T19:06:35.709Z" }, ] [[package]] @@ -4358,36 +4408,36 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "catalogue" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cf/77/5633c4ba65e3421b72b5b4bd93aa328360b351b3a1e5bf3c90eb224668e5/srsly-2.5.2.tar.gz", hash = "sha256:4092bc843c71b7595c6c90a0302a197858c5b9fe43067f62ae6a45bc3baa1c19", size = 492055, upload_time = "2025-11-17T14:11:02.543Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/93/58/ff9fd981b6e0fae261c48a3a941aeca5735eace4a137de883c8d69029bc7/srsly-2.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5491fe0683da900cd0c563538510c70a007380e1f6b29ebbb5225e7590981e2a", size = 655635, upload_time = "2025-11-17T14:09:41.167Z" }, - { url = "https://files.pythonhosted.org/packages/fd/a6/5b03c2a3b407caec3e7a5df61523154de3c5d36dc2f9328be91d3df368d5/srsly-2.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7375c2955935b73a6cad3851fe819c2f4ec506504afe7ca92b917555e6850fae", size = 653395, upload_time = "2025-11-17T14:09:42.827Z" }, - { url = "https://files.pythonhosted.org/packages/62/5d/1829a208d6d291c1ab3b81acd6e7a9f11984afc674ba2778e57984eee1a7/srsly-2.5.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0709a97ca463c1e85b03432c7d8028c82439f0248816707bafc553ffe66ec6f9", size = 1121898, upload_time = "2025-11-17T14:09:44.461Z" }, - { url = "https://files.pythonhosted.org/packages/c6/ce/71766be1488ce4058dc5eded6f5c0ce7cbb18ff7263f3cc718fe8b1033ad/srsly-2.5.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea2ee0122312802ed531fee6de679d74ce99ce8addce49aff8d52ee670d810f8", size = 1122831, upload_time = "2025-11-17T14:09:46.011Z" }, - { url = "https://files.pythonhosted.org/packages/ab/5c/259e5b0e70c22c5bbd1327a79bb4b2d75efb38295475229e9310251c240e/srsly-2.5.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c2e9fc418585832c7ce01bfc7fe85b96afe11165eb9a31ff0ed52aa3e32ec08b", size = 1080719, upload_time = "2025-11-17T14:09:47.685Z" }, - { url = "https://files.pythonhosted.org/packages/32/c4/20face1113cfa436434c7c152b374edae1631177d0d44dd60103297ffe03/srsly-2.5.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3df0ef22d571e733b181ac488823b01f4dd13da23497f46956839c718e48f36b", size = 1092783, upload_time = "2025-11-17T14:09:49.295Z" }, - { url = "https://files.pythonhosted.org/packages/c1/aa/16c405cf830bf3d843a631d62681403eb44563e27a42648f417f40209045/srsly-2.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:a116b926dd24702f5474f6367d8083412f218ddf82d5c7b5831a7b2ba3d8bd55", size = 654041, upload_time = "2025-11-17T14:09:51.056Z" }, - { url = "https://files.pythonhosted.org/packages/59/6e/2e3d07b38c1c2e98487f0af92f93b392c6741062d85c65cdc18c7b77448a/srsly-2.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e7e07babdcece2405b32c9eea25ef415749f214c889545e38965622bb66837ce", size = 655286, upload_time = "2025-11-17T14:09:52.468Z" }, - { url = "https://files.pythonhosted.org/packages/a1/e7/587bcade6b72f919133e587edf60e06039d88049aef9015cd0bdea8df189/srsly-2.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1718fe40b73e5cc73b14625233f57e15fb23643d146f53193e8fe653a49e9a0f", size = 653094, upload_time = "2025-11-17T14:09:53.837Z" }, - { url = "https://files.pythonhosted.org/packages/8d/24/5c3aabe292cb4eb906c828f2866624e3a65603ef0a73e964e486ff146b84/srsly-2.5.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d7b07e6103db7dd3199c0321935b0c8b9297fd6e018a66de97dc836068440111", size = 1141286, upload_time = "2025-11-17T14:09:55.535Z" }, - { url = "https://files.pythonhosted.org/packages/2a/fe/2cbdcef2495e0c40dafb96da205d9ab3b9e59f64938277800bf65f923281/srsly-2.5.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f2dedf03b2ae143dd70039f097d128fb901deba2482c3a749ac0a985ac735aad", size = 1144667, upload_time = "2025-11-17T14:09:57.24Z" }, - { url = "https://files.pythonhosted.org/packages/91/7c/9a2c9d8141daf7b7a6f092c2be403421a0ab280e7c03cc62c223f37fdf47/srsly-2.5.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9d5be1d8b79a4c4180073461425cb49c8924a184ab49d976c9c81a7bf87731d9", size = 1103935, upload_time = "2025-11-17T14:09:58.576Z" }, - { url = "https://files.pythonhosted.org/packages/f1/ad/8ae727430368fedbb1a7fa41b62d7a86237558bc962c5c5a9aa8bfa82548/srsly-2.5.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c8e42d6bcddda2e6fc1a8438cc050c4a36d0e457a63bcc7117d23c5175dfedec", size = 1117985, upload_time = "2025-11-17T14:10:00.348Z" }, - { url = "https://files.pythonhosted.org/packages/60/69/d6afaef1a8d5192fd802752115c7c3cc104493a7d604b406112b8bc2b610/srsly-2.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:e7362981e687eead00248525c3ef3b8ddd95904c93362c481988d91b26b6aeef", size = 654148, upload_time = "2025-11-17T14:10:01.772Z" }, - { url = "https://files.pythonhosted.org/packages/8f/1c/21f658d98d602a559491b7886c7ca30245c2cd8987ff1b7709437c0f74b1/srsly-2.5.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6f92b4f883e6be4ca77f15980b45d394d310f24903e25e1b2c46df783c7edcce", size = 656161, upload_time = "2025-11-17T14:10:03.181Z" }, - { url = "https://files.pythonhosted.org/packages/2f/a2/bc6fd484ed703857043ae9abd6c9aea9152f9480a6961186ee6c1e0c49e8/srsly-2.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ac4790a54b00203f1af5495b6b8ac214131139427f30fcf05cf971dde81930eb", size = 653237, upload_time = "2025-11-17T14:10:04.636Z" }, - { url = "https://files.pythonhosted.org/packages/ab/ea/e3895da29a15c8d325e050ad68a0d1238eece1d2648305796adf98dcba66/srsly-2.5.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ce5c6b016050857a7dd365c9dcdd00d96e7ac26317cfcb175db387e403de05bf", size = 1174418, upload_time = "2025-11-17T14:10:05.945Z" }, - { url = "https://files.pythonhosted.org/packages/a6/a5/21996231f53ee97191d0746c3a672ba33a4d86a19ffad85a1c0096c91c5f/srsly-2.5.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:539c6d0016e91277b5e9be31ebed03f03c32580d49c960e4a92c9003baecf69e", size = 1183089, upload_time = "2025-11-17T14:10:07.335Z" }, - { url = "https://files.pythonhosted.org/packages/7b/df/eb17aa8e4a828e8df7aa7dc471295529d9126e6b710f1833ebe0d8568a8e/srsly-2.5.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9f24b2c4f4c29da04083f09158543eb3f8893ba0ac39818693b3b259ee8044f0", size = 1122594, upload_time = "2025-11-17T14:10:08.899Z" }, - { url = "https://files.pythonhosted.org/packages/80/74/1654a80e6c8ec3ee32370ea08a78d3651e0ba1c4d6e6be31c9efdb9a2d10/srsly-2.5.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d34675047460a3f6999e43478f40d9b43917ea1e93a75c41d05bf7648f3e872d", size = 1139594, upload_time = "2025-11-17T14:10:10.286Z" }, - { url = "https://files.pythonhosted.org/packages/73/aa/8393344ca7f0e81965febba07afc5cad68335ed0426408d480b861ab915b/srsly-2.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:81fd133ba3c66c07f0e3a889d2b4c852984d71ea833a665238a9d47d8e051ba5", size = 654750, upload_time = "2025-11-17T14:10:11.637Z" }, - { url = "https://files.pythonhosted.org/packages/c2/c5/dc29e65419692444253ea549106be156c5911041f16791f3b62fb90c14f2/srsly-2.5.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d976d6ae8e66006797b919e3d58533dce64cd48a5447a8ff7277f9b0505b0185", size = 654723, upload_time = "2025-11-17T14:10:13.305Z" }, - { url = "https://files.pythonhosted.org/packages/80/8c/8111e7e8c766b47b5a5f9864f27f532cf6bb92837a3e277eb297170bd6af/srsly-2.5.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:24f52ecd27409ea24ba116ee9f07a2bb1c4b9ba11284b32a0bf2ca364499d1c1", size = 651651, upload_time = "2025-11-17T14:10:14.907Z" }, - { url = "https://files.pythonhosted.org/packages/45/de/3f99d4e44af427ee09004df6586d0746640536b382c948f456be027c599b/srsly-2.5.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b0667ce1effb32a57522db10705db7c78d144547fcacc8a06df62c4bb7f96e", size = 1158012, upload_time = "2025-11-17T14:10:16.176Z" }, - { url = "https://files.pythonhosted.org/packages/c3/2f/66044ef5a10a487652913c1a7f32396cb0e9e32ecfc3fdc0a0bc0382e703/srsly-2.5.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:60782f6f79c340cdaf1ba7cbaa1d354a0f7c8f86b285f1e14e75edb51452895a", size = 1163258, upload_time = "2025-11-17T14:10:17.471Z" }, - { url = "https://files.pythonhosted.org/packages/74/6b/698834048672b52937e8cf09b554adb81b106c0492f9bc62e41e3b46a69b/srsly-2.5.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eec51abb1b58e1e6c689714104aeeba6290c40c0bfad0243b9b594df89f05881", size = 1112214, upload_time = "2025-11-17T14:10:18.679Z" }, - { url = "https://files.pythonhosted.org/packages/85/17/1efc70426be93d32a3c6c5c12d795eb266a9255d8b537fcb924a3de57fcb/srsly-2.5.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:76464e45f73afd20c2c34d2ef145bf788afc32e7d45f36f6393ed92a85189ed3", size = 1130687, upload_time = "2025-11-17T14:10:20.346Z" }, - { url = "https://files.pythonhosted.org/packages/e2/25/07f8c8a778bc0447ee15e37089b08af81b24fcc1d4a2c09eff4c3a79b241/srsly-2.5.2-cp313-cp313-win_amd64.whl", hash = "sha256:009424a96d763951e4872b36ba38823f973bef094a1adbc11102e23e8d1ef429", size = 653128, upload_time = "2025-11-17T14:10:21.552Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/cf/77/5633c4ba65e3421b72b5b4bd93aa328360b351b3a1e5bf3c90eb224668e5/srsly-2.5.2.tar.gz", hash = "sha256:4092bc843c71b7595c6c90a0302a197858c5b9fe43067f62ae6a45bc3baa1c19", size = 492055, upload-time = "2025-11-17T14:11:02.543Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/58/ff9fd981b6e0fae261c48a3a941aeca5735eace4a137de883c8d69029bc7/srsly-2.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5491fe0683da900cd0c563538510c70a007380e1f6b29ebbb5225e7590981e2a", size = 655635, upload-time = "2025-11-17T14:09:41.167Z" }, + { url = "https://files.pythonhosted.org/packages/fd/a6/5b03c2a3b407caec3e7a5df61523154de3c5d36dc2f9328be91d3df368d5/srsly-2.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7375c2955935b73a6cad3851fe819c2f4ec506504afe7ca92b917555e6850fae", size = 653395, upload-time = "2025-11-17T14:09:42.827Z" }, + { url = "https://files.pythonhosted.org/packages/62/5d/1829a208d6d291c1ab3b81acd6e7a9f11984afc674ba2778e57984eee1a7/srsly-2.5.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0709a97ca463c1e85b03432c7d8028c82439f0248816707bafc553ffe66ec6f9", size = 1121898, upload-time = "2025-11-17T14:09:44.461Z" }, + { url = "https://files.pythonhosted.org/packages/c6/ce/71766be1488ce4058dc5eded6f5c0ce7cbb18ff7263f3cc718fe8b1033ad/srsly-2.5.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea2ee0122312802ed531fee6de679d74ce99ce8addce49aff8d52ee670d810f8", size = 1122831, upload-time = "2025-11-17T14:09:46.011Z" }, + { url = "https://files.pythonhosted.org/packages/ab/5c/259e5b0e70c22c5bbd1327a79bb4b2d75efb38295475229e9310251c240e/srsly-2.5.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c2e9fc418585832c7ce01bfc7fe85b96afe11165eb9a31ff0ed52aa3e32ec08b", size = 1080719, upload-time = "2025-11-17T14:09:47.685Z" }, + { url = "https://files.pythonhosted.org/packages/32/c4/20face1113cfa436434c7c152b374edae1631177d0d44dd60103297ffe03/srsly-2.5.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3df0ef22d571e733b181ac488823b01f4dd13da23497f46956839c718e48f36b", size = 1092783, upload-time = "2025-11-17T14:09:49.295Z" }, + { url = "https://files.pythonhosted.org/packages/c1/aa/16c405cf830bf3d843a631d62681403eb44563e27a42648f417f40209045/srsly-2.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:a116b926dd24702f5474f6367d8083412f218ddf82d5c7b5831a7b2ba3d8bd55", size = 654041, upload-time = "2025-11-17T14:09:51.056Z" }, + { url = "https://files.pythonhosted.org/packages/59/6e/2e3d07b38c1c2e98487f0af92f93b392c6741062d85c65cdc18c7b77448a/srsly-2.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e7e07babdcece2405b32c9eea25ef415749f214c889545e38965622bb66837ce", size = 655286, upload-time = "2025-11-17T14:09:52.468Z" }, + { url = "https://files.pythonhosted.org/packages/a1/e7/587bcade6b72f919133e587edf60e06039d88049aef9015cd0bdea8df189/srsly-2.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1718fe40b73e5cc73b14625233f57e15fb23643d146f53193e8fe653a49e9a0f", size = 653094, upload-time = "2025-11-17T14:09:53.837Z" }, + { url = "https://files.pythonhosted.org/packages/8d/24/5c3aabe292cb4eb906c828f2866624e3a65603ef0a73e964e486ff146b84/srsly-2.5.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d7b07e6103db7dd3199c0321935b0c8b9297fd6e018a66de97dc836068440111", size = 1141286, upload-time = "2025-11-17T14:09:55.535Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fe/2cbdcef2495e0c40dafb96da205d9ab3b9e59f64938277800bf65f923281/srsly-2.5.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f2dedf03b2ae143dd70039f097d128fb901deba2482c3a749ac0a985ac735aad", size = 1144667, upload-time = "2025-11-17T14:09:57.24Z" }, + { url = "https://files.pythonhosted.org/packages/91/7c/9a2c9d8141daf7b7a6f092c2be403421a0ab280e7c03cc62c223f37fdf47/srsly-2.5.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9d5be1d8b79a4c4180073461425cb49c8924a184ab49d976c9c81a7bf87731d9", size = 1103935, upload-time = "2025-11-17T14:09:58.576Z" }, + { url = "https://files.pythonhosted.org/packages/f1/ad/8ae727430368fedbb1a7fa41b62d7a86237558bc962c5c5a9aa8bfa82548/srsly-2.5.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c8e42d6bcddda2e6fc1a8438cc050c4a36d0e457a63bcc7117d23c5175dfedec", size = 1117985, upload-time = "2025-11-17T14:10:00.348Z" }, + { url = "https://files.pythonhosted.org/packages/60/69/d6afaef1a8d5192fd802752115c7c3cc104493a7d604b406112b8bc2b610/srsly-2.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:e7362981e687eead00248525c3ef3b8ddd95904c93362c481988d91b26b6aeef", size = 654148, upload-time = "2025-11-17T14:10:01.772Z" }, + { url = "https://files.pythonhosted.org/packages/8f/1c/21f658d98d602a559491b7886c7ca30245c2cd8987ff1b7709437c0f74b1/srsly-2.5.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6f92b4f883e6be4ca77f15980b45d394d310f24903e25e1b2c46df783c7edcce", size = 656161, upload-time = "2025-11-17T14:10:03.181Z" }, + { url = "https://files.pythonhosted.org/packages/2f/a2/bc6fd484ed703857043ae9abd6c9aea9152f9480a6961186ee6c1e0c49e8/srsly-2.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ac4790a54b00203f1af5495b6b8ac214131139427f30fcf05cf971dde81930eb", size = 653237, upload-time = "2025-11-17T14:10:04.636Z" }, + { url = "https://files.pythonhosted.org/packages/ab/ea/e3895da29a15c8d325e050ad68a0d1238eece1d2648305796adf98dcba66/srsly-2.5.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ce5c6b016050857a7dd365c9dcdd00d96e7ac26317cfcb175db387e403de05bf", size = 1174418, upload-time = "2025-11-17T14:10:05.945Z" }, + { url = "https://files.pythonhosted.org/packages/a6/a5/21996231f53ee97191d0746c3a672ba33a4d86a19ffad85a1c0096c91c5f/srsly-2.5.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:539c6d0016e91277b5e9be31ebed03f03c32580d49c960e4a92c9003baecf69e", size = 1183089, upload-time = "2025-11-17T14:10:07.335Z" }, + { url = "https://files.pythonhosted.org/packages/7b/df/eb17aa8e4a828e8df7aa7dc471295529d9126e6b710f1833ebe0d8568a8e/srsly-2.5.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9f24b2c4f4c29da04083f09158543eb3f8893ba0ac39818693b3b259ee8044f0", size = 1122594, upload-time = "2025-11-17T14:10:08.899Z" }, + { url = "https://files.pythonhosted.org/packages/80/74/1654a80e6c8ec3ee32370ea08a78d3651e0ba1c4d6e6be31c9efdb9a2d10/srsly-2.5.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d34675047460a3f6999e43478f40d9b43917ea1e93a75c41d05bf7648f3e872d", size = 1139594, upload-time = "2025-11-17T14:10:10.286Z" }, + { url = "https://files.pythonhosted.org/packages/73/aa/8393344ca7f0e81965febba07afc5cad68335ed0426408d480b861ab915b/srsly-2.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:81fd133ba3c66c07f0e3a889d2b4c852984d71ea833a665238a9d47d8e051ba5", size = 654750, upload-time = "2025-11-17T14:10:11.637Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c5/dc29e65419692444253ea549106be156c5911041f16791f3b62fb90c14f2/srsly-2.5.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d976d6ae8e66006797b919e3d58533dce64cd48a5447a8ff7277f9b0505b0185", size = 654723, upload-time = "2025-11-17T14:10:13.305Z" }, + { url = "https://files.pythonhosted.org/packages/80/8c/8111e7e8c766b47b5a5f9864f27f532cf6bb92837a3e277eb297170bd6af/srsly-2.5.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:24f52ecd27409ea24ba116ee9f07a2bb1c4b9ba11284b32a0bf2ca364499d1c1", size = 651651, upload-time = "2025-11-17T14:10:14.907Z" }, + { url = "https://files.pythonhosted.org/packages/45/de/3f99d4e44af427ee09004df6586d0746640536b382c948f456be027c599b/srsly-2.5.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b0667ce1effb32a57522db10705db7c78d144547fcacc8a06df62c4bb7f96e", size = 1158012, upload-time = "2025-11-17T14:10:16.176Z" }, + { url = "https://files.pythonhosted.org/packages/c3/2f/66044ef5a10a487652913c1a7f32396cb0e9e32ecfc3fdc0a0bc0382e703/srsly-2.5.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:60782f6f79c340cdaf1ba7cbaa1d354a0f7c8f86b285f1e14e75edb51452895a", size = 1163258, upload-time = "2025-11-17T14:10:17.471Z" }, + { url = "https://files.pythonhosted.org/packages/74/6b/698834048672b52937e8cf09b554adb81b106c0492f9bc62e41e3b46a69b/srsly-2.5.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eec51abb1b58e1e6c689714104aeeba6290c40c0bfad0243b9b594df89f05881", size = 1112214, upload-time = "2025-11-17T14:10:18.679Z" }, + { url = "https://files.pythonhosted.org/packages/85/17/1efc70426be93d32a3c6c5c12d795eb266a9255d8b537fcb924a3de57fcb/srsly-2.5.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:76464e45f73afd20c2c34d2ef145bf788afc32e7d45f36f6393ed92a85189ed3", size = 1130687, upload-time = "2025-11-17T14:10:20.346Z" }, + { url = "https://files.pythonhosted.org/packages/e2/25/07f8c8a778bc0447ee15e37089b08af81b24fcc1d4a2c09eff4c3a79b241/srsly-2.5.2-cp313-cp313-win_amd64.whl", hash = "sha256:009424a96d763951e4872b36ba38823f973bef094a1adbc11102e23e8d1ef429", size = 653128, upload-time = "2025-11-17T14:10:21.552Z" }, ] [[package]] @@ -4397,9 +4447,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ce/20/08dfcd9c983f6a6f4a1000d934b9e6d626cff8d2eeb77a89a68eef20a2b7/starlette-0.46.2.tar.gz", hash = "sha256:7f7361f34eed179294600af672f565727419830b54b7b084efe44bb82d2fccd5", size = 2580846, upload_time = "2025-04-13T13:56:17.942Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ce/20/08dfcd9c983f6a6f4a1000d934b9e6d626cff8d2eeb77a89a68eef20a2b7/starlette-0.46.2.tar.gz", hash = "sha256:7f7361f34eed179294600af672f565727419830b54b7b084efe44bb82d2fccd5", size = 2580846, upload-time = "2025-04-13T13:56:17.942Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35", size = 72037, upload_time = "2025-04-13T13:56:16.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35", size = 72037, upload-time = "2025-04-13T13:56:16.21Z" }, ] [[package]] @@ -4409,18 +4459,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mpmath" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload_time = "2025-04-27T18:05:01.611Z" } +sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload_time = "2025-04-27T18:04:59.103Z" }, + { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, ] [[package]] name = "tenacity" version = "8.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a3/4d/6a19536c50b849338fcbe9290d562b52cbdcf30d8963d3588a68a4107df1/tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78", size = 47309, upload_time = "2024-07-05T07:25:31.836Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/4d/6a19536c50b849338fcbe9290d562b52cbdcf30d8963d3588a68a4107df1/tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78", size = 47309, upload-time = "2024-07-05T07:25:31.836Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/3f/8ba87d9e287b9d385a02a7114ddcef61b26f86411e121c9003eb509a1773/tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687", size = 28165, upload_time = "2024-07-05T07:25:29.591Z" }, + { url = "https://files.pythonhosted.org/packages/d2/3f/8ba87d9e287b9d385a02a7114ddcef61b26f86411e121c9003eb509a1773/tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687", size = 28165, upload-time = "2024-07-05T07:25:29.591Z" }, ] [[package]] @@ -4442,48 +4492,48 @@ dependencies = [ { name = "srsly" }, { name = "wasabi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2f/3a/2d0f0be132b9faaa6d56f04565ae122684273e4bf4eab8dee5f48dc00f68/thinc-8.3.10.tar.gz", hash = "sha256:5a75109f4ee1c968fc055ce651a17cb44b23b000d9e95f04a4d047ab3cb3e34e", size = 194196, upload_time = "2025-11-17T17:21:46.435Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/bc/d3c364c0278e420e0e3d328cbae7cd7aac8d2cfe4d9b8022a12e99f03755/thinc-8.3.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fbe0313cb3c898f4e6a3f13b704af51f4bf8f927078deb0fe2d6eaf3c6c5b31b", size = 821615, upload_time = "2025-11-17T17:20:31.257Z" }, - { url = "https://files.pythonhosted.org/packages/0e/97/70fe96d86fe5d024882fd96f054be94f87828da67862749aa439de33d452/thinc-8.3.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:892ac91cf7cc8d3ac9a4527c68ead37a96e87132c9f589de56b057b50358e895", size = 772280, upload_time = "2025-11-17T17:20:34.408Z" }, - { url = "https://files.pythonhosted.org/packages/08/a8/a6906490a756a4ad09781bcd02490e5427d942a918abed8424f639d317c3/thinc-8.3.10-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0fbf142050feb5490f6366e251d48e0429315abe487faa7d371fac4d043efd1e", size = 3881222, upload_time = "2025-11-17T17:20:36.525Z" }, - { url = "https://files.pythonhosted.org/packages/e6/bf/bebeddbab816c4d909455499f7e1b0a88cec9497fd737412e1189971d193/thinc-8.3.10-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:470b05fd1af4024cf183f387f71270943f652dd711304d1fa8b672d268052af8", size = 3905534, upload_time = "2025-11-17T17:20:38.901Z" }, - { url = "https://files.pythonhosted.org/packages/fd/c4/c78f1e1091b73dbeee8623f856e2dd25888aab600ded5fa9944dfbe38efb/thinc-8.3.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06ebf4aa642991b8dc5c2a6db4c0aedf6d5589a361c93531ec3721d76eabe859", size = 4888188, upload_time = "2025-11-17T17:20:41.394Z" }, - { url = "https://files.pythonhosted.org/packages/ca/bc/36297efade38e0f3e56795f49094d19fbe560bda60a42ce134bbfc1796da/thinc-8.3.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:026999d749075c890fbb1df47d75389a81b712afccea519a5c7bb86783d0cd73", size = 5033361, upload_time = "2025-11-17T17:20:45.332Z" }, - { url = "https://files.pythonhosted.org/packages/a8/bf/70d97758b5b1c7ee06afca8240b6e02bdf5b18d18eb59b873e319b3e01b2/thinc-8.3.10-cp310-cp310-win_amd64.whl", hash = "sha256:8d5ae7d96ff3ea2e4f23bd4005c773f4765f41b11dfb79598a81e5feb1437b91", size = 1792397, upload_time = "2025-11-17T17:20:47.014Z" }, - { url = "https://files.pythonhosted.org/packages/38/43/01b662540888140b5e9f76c957c7118c203cb91f17867ce78fc4f2d3800f/thinc-8.3.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72793e0bd3f0f391ca36ab0996b3c21db7045409bd3740840e7d6fcd9a044d81", size = 818632, upload_time = "2025-11-17T17:20:49.123Z" }, - { url = "https://files.pythonhosted.org/packages/f0/ba/e0edcc84014bdde1bc9a082408279616a061566a82b5e3b90b9e64f33c1b/thinc-8.3.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4b13311acb061e04e3a0c4bd677b85ec2971e3a3674558252443b5446e378256", size = 770622, upload_time = "2025-11-17T17:20:50.467Z" }, - { url = "https://files.pythonhosted.org/packages/f3/51/0558f8cb69c13e1114428726a3fb36fe1adc5821a62ccd3fa7b7c1a5bd9a/thinc-8.3.10-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9ffddcf311fb7c998eb8988d22c618dc0f33b26303853c0445edb8a69819ac60", size = 4094652, upload_time = "2025-11-17T17:20:52.104Z" }, - { url = "https://files.pythonhosted.org/packages/a0/c9/bb78601f74f9bcadb2d3d4d5b057c4dc3f2e52d9771bad3d93a4e38a9dc1/thinc-8.3.10-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9b1e0511e8421f20abe4f22d8c8073a0d7ce4a31597cc7a404fdbad72bf38058", size = 4124379, upload_time = "2025-11-17T17:20:53.781Z" }, - { url = "https://files.pythonhosted.org/packages/f6/3e/961e1b9794111c89f2ceadfef5692aba5097bec4aaaf89f1b8a04c5bc961/thinc-8.3.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e31e49441dfad8fd64b8ca5f5c9b8c33ee87a553bf79c830a15b4cd02efcc444", size = 5094221, upload_time = "2025-11-17T17:20:55.466Z" }, - { url = "https://files.pythonhosted.org/packages/e5/de/da163a1533faaef5b17dd11dfb9ffd9fd5627dbef56e1160da6edbe1b224/thinc-8.3.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9de5dd73ce7135dcf41d68625d35cd9f5cf8e5f55a3932001a188b45057c3379", size = 5262834, upload_time = "2025-11-17T17:20:57.459Z" }, - { url = "https://files.pythonhosted.org/packages/4c/4e/449d29e33f7ddda6ba1b9e06de3ea5155c2dc33c21f438f8faafebde4e13/thinc-8.3.10-cp311-cp311-win_amd64.whl", hash = "sha256:b6d64e390a1996d489872b9d99a584142542aba59ebdc60f941f473732582f6f", size = 1791864, upload_time = "2025-11-17T17:20:59.817Z" }, - { url = "https://files.pythonhosted.org/packages/4a/b3/68038d88d45d83a501c3f19bd654d275b7ac730c807f52bbb46f35f591bc/thinc-8.3.10-cp311-cp311-win_arm64.whl", hash = "sha256:3991b6ad72e611dfbfb58235de5b67bcc9f61426127cc023607f97e8c5f43e0e", size = 1717563, upload_time = "2025-11-17T17:21:01.634Z" }, - { url = "https://files.pythonhosted.org/packages/d3/34/ba3b386d92edf50784b60ee34318d47c7f49c198268746ef7851c5bbe8cf/thinc-8.3.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:51bc6ef735bdbcab75ab2916731b8f61f94c66add6f9db213d900d3c6a244f95", size = 794509, upload_time = "2025-11-17T17:21:03.21Z" }, - { url = "https://files.pythonhosted.org/packages/07/f3/9f52d18115cd9d8d7b2590d226cb2752d2a5ffec61576b19462b48410184/thinc-8.3.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4f48b4d346915f98e9722c0c50ef911cc16c6790a2b7afebc6e1a2c96a6ce6c6", size = 741084, upload_time = "2025-11-17T17:21:04.568Z" }, - { url = "https://files.pythonhosted.org/packages/ad/9c/129c2b740c4e3d3624b6fb3dec1577ef27cb804bc1647f9bc3e1801ea20c/thinc-8.3.10-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5003f4db2db22cc8d686db8db83509acc3c50f4c55ebdcb2bbfcc1095096f7d2", size = 3846337, upload_time = "2025-11-17T17:21:06.079Z" }, - { url = "https://files.pythonhosted.org/packages/22/d2/738cf188dea8240c2be081c83ea47270fea585eba446171757d2cdb9b675/thinc-8.3.10-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b12484c3ed0632331fada2c334680dd6bc35972d0717343432dfc701f04a9b4c", size = 3901216, upload_time = "2025-11-17T17:21:07.842Z" }, - { url = "https://files.pythonhosted.org/packages/22/92/32f66eb9b1a29b797bf378a0874615d810d79eefca1d6c736c5ca3f8b918/thinc-8.3.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8677c446d3f9b97a465472c58683b785b25dfcf26c683e3f4e8f8c7c188e4362", size = 4827286, upload_time = "2025-11-17T17:21:09.62Z" }, - { url = "https://files.pythonhosted.org/packages/c4/5f/7ceae1e1f2029efd67ed88e23cd6dc13a5ee647cdc2b35113101b2a62c10/thinc-8.3.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:759c385ac08dcf950238b60b96a28f9c04618861141766928dff4a51b1679b25", size = 5024421, upload_time = "2025-11-17T17:21:11.199Z" }, - { url = "https://files.pythonhosted.org/packages/0b/66/30f9d8d41049b78bc614213d492792fbcfeb1b28642adf661c42110a7ebd/thinc-8.3.10-cp312-cp312-win_amd64.whl", hash = "sha256:bf3f188c3fa1fdcefd547d1f90a1245c29025d6d0e3f71d7fdf21dad210b990c", size = 1718631, upload_time = "2025-11-17T17:21:12.965Z" }, - { url = "https://files.pythonhosted.org/packages/f8/44/32e2a5018a1165a304d25eb9b1c74e5310da19a533a35331e8d824dc6a88/thinc-8.3.10-cp312-cp312-win_arm64.whl", hash = "sha256:234b7e57a6ef4e0260d99f4e8fdc328ed12d0ba9bbd98fdaa567294a17700d1c", size = 1642224, upload_time = "2025-11-17T17:21:14.371Z" }, - { url = "https://files.pythonhosted.org/packages/53/fc/17a2818d1f460b8c4f33b8bd3f21b19d263a647bfd23b572768d175e6b64/thinc-8.3.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c7c3a50ddd423d1c49419899acef4ac80d800af3b423593acb9e40578384b543", size = 789771, upload_time = "2025-11-17T17:21:15.784Z" }, - { url = "https://files.pythonhosted.org/packages/8d/24/649f54774b1fbe791a1c2efd7d7f0a95cfd9244902553ca7dcf19daab1dd/thinc-8.3.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a1cb110398f51fc2b9a07a2a4daec6f91e166533a9c9f1c565225330f46569a", size = 737051, upload_time = "2025-11-17T17:21:17.933Z" }, - { url = "https://files.pythonhosted.org/packages/b2/8c/5840c6c504c1fa9718e1c74d6e04d77a474f594888867dbba53f9317285f/thinc-8.3.10-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:42318746a67403d04be57d862fe0c0015b58b6fb9bbbf7b6db01f3f103b73a99", size = 3839221, upload_time = "2025-11-17T17:21:20.003Z" }, - { url = "https://files.pythonhosted.org/packages/45/ef/e7fca88074cb0aa1c1a23195470b4549492c2797fe7dc9ff79a85500153a/thinc-8.3.10-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6b0e41e79973f8828adead770f885db8d0f199bfbaa9591d1d896c385842e993", size = 3885024, upload_time = "2025-11-17T17:21:21.735Z" }, - { url = "https://files.pythonhosted.org/packages/9a/eb/805e277aa019896009028d727460f071c6cf83843d70f6a69e58994d2203/thinc-8.3.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9ed982daa1eddbad813bfd079546483b849a68b98c01ad4a7e4efd125ddc5d7b", size = 4815939, upload_time = "2025-11-17T17:21:23.942Z" }, - { url = "https://files.pythonhosted.org/packages/4f/f5/6425f12a60e3782091c9ec16394b9239f0c18c52c70218f3c8c047ff985c/thinc-8.3.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d22bd381410749dec5f629b3162b7d1f1e2d9b7364fd49a7ea555b61c93772b9", size = 5020260, upload_time = "2025-11-17T17:21:25.507Z" }, - { url = "https://files.pythonhosted.org/packages/85/a2/ae98feffe0b161400e87b7bfc8859e6fa1e6023fa7bcfa0a8cacd83b39a1/thinc-8.3.10-cp313-cp313-win_amd64.whl", hash = "sha256:9c32830446a57da13b6856cacb0225bc2f2104f279d9928d40500081c13aa9ec", size = 1717562, upload_time = "2025-11-17T17:21:27.468Z" }, - { url = "https://files.pythonhosted.org/packages/b8/e0/faa1d04a6890ea33b9541727d2a3ca88bad794a89f73b9111af6f9aefe10/thinc-8.3.10-cp313-cp313-win_arm64.whl", hash = "sha256:aa43f9af76781d32f5f9fe29299204c8841d71e64cbb56e0e4f3d1e0387c2783", size = 1641536, upload_time = "2025-11-17T17:21:30.129Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/2f/3a/2d0f0be132b9faaa6d56f04565ae122684273e4bf4eab8dee5f48dc00f68/thinc-8.3.10.tar.gz", hash = "sha256:5a75109f4ee1c968fc055ce651a17cb44b23b000d9e95f04a4d047ab3cb3e34e", size = 194196, upload-time = "2025-11-17T17:21:46.435Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/bc/d3c364c0278e420e0e3d328cbae7cd7aac8d2cfe4d9b8022a12e99f03755/thinc-8.3.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fbe0313cb3c898f4e6a3f13b704af51f4bf8f927078deb0fe2d6eaf3c6c5b31b", size = 821615, upload-time = "2025-11-17T17:20:31.257Z" }, + { url = "https://files.pythonhosted.org/packages/0e/97/70fe96d86fe5d024882fd96f054be94f87828da67862749aa439de33d452/thinc-8.3.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:892ac91cf7cc8d3ac9a4527c68ead37a96e87132c9f589de56b057b50358e895", size = 772280, upload-time = "2025-11-17T17:20:34.408Z" }, + { url = "https://files.pythonhosted.org/packages/08/a8/a6906490a756a4ad09781bcd02490e5427d942a918abed8424f639d317c3/thinc-8.3.10-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0fbf142050feb5490f6366e251d48e0429315abe487faa7d371fac4d043efd1e", size = 3881222, upload-time = "2025-11-17T17:20:36.525Z" }, + { url = "https://files.pythonhosted.org/packages/e6/bf/bebeddbab816c4d909455499f7e1b0a88cec9497fd737412e1189971d193/thinc-8.3.10-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:470b05fd1af4024cf183f387f71270943f652dd711304d1fa8b672d268052af8", size = 3905534, upload-time = "2025-11-17T17:20:38.901Z" }, + { url = "https://files.pythonhosted.org/packages/fd/c4/c78f1e1091b73dbeee8623f856e2dd25888aab600ded5fa9944dfbe38efb/thinc-8.3.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06ebf4aa642991b8dc5c2a6db4c0aedf6d5589a361c93531ec3721d76eabe859", size = 4888188, upload-time = "2025-11-17T17:20:41.394Z" }, + { url = "https://files.pythonhosted.org/packages/ca/bc/36297efade38e0f3e56795f49094d19fbe560bda60a42ce134bbfc1796da/thinc-8.3.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:026999d749075c890fbb1df47d75389a81b712afccea519a5c7bb86783d0cd73", size = 5033361, upload-time = "2025-11-17T17:20:45.332Z" }, + { url = "https://files.pythonhosted.org/packages/a8/bf/70d97758b5b1c7ee06afca8240b6e02bdf5b18d18eb59b873e319b3e01b2/thinc-8.3.10-cp310-cp310-win_amd64.whl", hash = "sha256:8d5ae7d96ff3ea2e4f23bd4005c773f4765f41b11dfb79598a81e5feb1437b91", size = 1792397, upload-time = "2025-11-17T17:20:47.014Z" }, + { url = "https://files.pythonhosted.org/packages/38/43/01b662540888140b5e9f76c957c7118c203cb91f17867ce78fc4f2d3800f/thinc-8.3.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72793e0bd3f0f391ca36ab0996b3c21db7045409bd3740840e7d6fcd9a044d81", size = 818632, upload-time = "2025-11-17T17:20:49.123Z" }, + { url = "https://files.pythonhosted.org/packages/f0/ba/e0edcc84014bdde1bc9a082408279616a061566a82b5e3b90b9e64f33c1b/thinc-8.3.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4b13311acb061e04e3a0c4bd677b85ec2971e3a3674558252443b5446e378256", size = 770622, upload-time = "2025-11-17T17:20:50.467Z" }, + { url = "https://files.pythonhosted.org/packages/f3/51/0558f8cb69c13e1114428726a3fb36fe1adc5821a62ccd3fa7b7c1a5bd9a/thinc-8.3.10-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9ffddcf311fb7c998eb8988d22c618dc0f33b26303853c0445edb8a69819ac60", size = 4094652, upload-time = "2025-11-17T17:20:52.104Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c9/bb78601f74f9bcadb2d3d4d5b057c4dc3f2e52d9771bad3d93a4e38a9dc1/thinc-8.3.10-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9b1e0511e8421f20abe4f22d8c8073a0d7ce4a31597cc7a404fdbad72bf38058", size = 4124379, upload-time = "2025-11-17T17:20:53.781Z" }, + { url = "https://files.pythonhosted.org/packages/f6/3e/961e1b9794111c89f2ceadfef5692aba5097bec4aaaf89f1b8a04c5bc961/thinc-8.3.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e31e49441dfad8fd64b8ca5f5c9b8c33ee87a553bf79c830a15b4cd02efcc444", size = 5094221, upload-time = "2025-11-17T17:20:55.466Z" }, + { url = "https://files.pythonhosted.org/packages/e5/de/da163a1533faaef5b17dd11dfb9ffd9fd5627dbef56e1160da6edbe1b224/thinc-8.3.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9de5dd73ce7135dcf41d68625d35cd9f5cf8e5f55a3932001a188b45057c3379", size = 5262834, upload-time = "2025-11-17T17:20:57.459Z" }, + { url = "https://files.pythonhosted.org/packages/4c/4e/449d29e33f7ddda6ba1b9e06de3ea5155c2dc33c21f438f8faafebde4e13/thinc-8.3.10-cp311-cp311-win_amd64.whl", hash = "sha256:b6d64e390a1996d489872b9d99a584142542aba59ebdc60f941f473732582f6f", size = 1791864, upload-time = "2025-11-17T17:20:59.817Z" }, + { url = "https://files.pythonhosted.org/packages/4a/b3/68038d88d45d83a501c3f19bd654d275b7ac730c807f52bbb46f35f591bc/thinc-8.3.10-cp311-cp311-win_arm64.whl", hash = "sha256:3991b6ad72e611dfbfb58235de5b67bcc9f61426127cc023607f97e8c5f43e0e", size = 1717563, upload-time = "2025-11-17T17:21:01.634Z" }, + { url = "https://files.pythonhosted.org/packages/d3/34/ba3b386d92edf50784b60ee34318d47c7f49c198268746ef7851c5bbe8cf/thinc-8.3.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:51bc6ef735bdbcab75ab2916731b8f61f94c66add6f9db213d900d3c6a244f95", size = 794509, upload-time = "2025-11-17T17:21:03.21Z" }, + { url = "https://files.pythonhosted.org/packages/07/f3/9f52d18115cd9d8d7b2590d226cb2752d2a5ffec61576b19462b48410184/thinc-8.3.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4f48b4d346915f98e9722c0c50ef911cc16c6790a2b7afebc6e1a2c96a6ce6c6", size = 741084, upload-time = "2025-11-17T17:21:04.568Z" }, + { url = "https://files.pythonhosted.org/packages/ad/9c/129c2b740c4e3d3624b6fb3dec1577ef27cb804bc1647f9bc3e1801ea20c/thinc-8.3.10-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5003f4db2db22cc8d686db8db83509acc3c50f4c55ebdcb2bbfcc1095096f7d2", size = 3846337, upload-time = "2025-11-17T17:21:06.079Z" }, + { url = "https://files.pythonhosted.org/packages/22/d2/738cf188dea8240c2be081c83ea47270fea585eba446171757d2cdb9b675/thinc-8.3.10-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b12484c3ed0632331fada2c334680dd6bc35972d0717343432dfc701f04a9b4c", size = 3901216, upload-time = "2025-11-17T17:21:07.842Z" }, + { url = "https://files.pythonhosted.org/packages/22/92/32f66eb9b1a29b797bf378a0874615d810d79eefca1d6c736c5ca3f8b918/thinc-8.3.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8677c446d3f9b97a465472c58683b785b25dfcf26c683e3f4e8f8c7c188e4362", size = 4827286, upload-time = "2025-11-17T17:21:09.62Z" }, + { url = "https://files.pythonhosted.org/packages/c4/5f/7ceae1e1f2029efd67ed88e23cd6dc13a5ee647cdc2b35113101b2a62c10/thinc-8.3.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:759c385ac08dcf950238b60b96a28f9c04618861141766928dff4a51b1679b25", size = 5024421, upload-time = "2025-11-17T17:21:11.199Z" }, + { url = "https://files.pythonhosted.org/packages/0b/66/30f9d8d41049b78bc614213d492792fbcfeb1b28642adf661c42110a7ebd/thinc-8.3.10-cp312-cp312-win_amd64.whl", hash = "sha256:bf3f188c3fa1fdcefd547d1f90a1245c29025d6d0e3f71d7fdf21dad210b990c", size = 1718631, upload-time = "2025-11-17T17:21:12.965Z" }, + { url = "https://files.pythonhosted.org/packages/f8/44/32e2a5018a1165a304d25eb9b1c74e5310da19a533a35331e8d824dc6a88/thinc-8.3.10-cp312-cp312-win_arm64.whl", hash = "sha256:234b7e57a6ef4e0260d99f4e8fdc328ed12d0ba9bbd98fdaa567294a17700d1c", size = 1642224, upload-time = "2025-11-17T17:21:14.371Z" }, + { url = "https://files.pythonhosted.org/packages/53/fc/17a2818d1f460b8c4f33b8bd3f21b19d263a647bfd23b572768d175e6b64/thinc-8.3.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c7c3a50ddd423d1c49419899acef4ac80d800af3b423593acb9e40578384b543", size = 789771, upload-time = "2025-11-17T17:21:15.784Z" }, + { url = "https://files.pythonhosted.org/packages/8d/24/649f54774b1fbe791a1c2efd7d7f0a95cfd9244902553ca7dcf19daab1dd/thinc-8.3.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a1cb110398f51fc2b9a07a2a4daec6f91e166533a9c9f1c565225330f46569a", size = 737051, upload-time = "2025-11-17T17:21:17.933Z" }, + { url = "https://files.pythonhosted.org/packages/b2/8c/5840c6c504c1fa9718e1c74d6e04d77a474f594888867dbba53f9317285f/thinc-8.3.10-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:42318746a67403d04be57d862fe0c0015b58b6fb9bbbf7b6db01f3f103b73a99", size = 3839221, upload-time = "2025-11-17T17:21:20.003Z" }, + { url = "https://files.pythonhosted.org/packages/45/ef/e7fca88074cb0aa1c1a23195470b4549492c2797fe7dc9ff79a85500153a/thinc-8.3.10-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6b0e41e79973f8828adead770f885db8d0f199bfbaa9591d1d896c385842e993", size = 3885024, upload-time = "2025-11-17T17:21:21.735Z" }, + { url = "https://files.pythonhosted.org/packages/9a/eb/805e277aa019896009028d727460f071c6cf83843d70f6a69e58994d2203/thinc-8.3.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9ed982daa1eddbad813bfd079546483b849a68b98c01ad4a7e4efd125ddc5d7b", size = 4815939, upload-time = "2025-11-17T17:21:23.942Z" }, + { url = "https://files.pythonhosted.org/packages/4f/f5/6425f12a60e3782091c9ec16394b9239f0c18c52c70218f3c8c047ff985c/thinc-8.3.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d22bd381410749dec5f629b3162b7d1f1e2d9b7364fd49a7ea555b61c93772b9", size = 5020260, upload-time = "2025-11-17T17:21:25.507Z" }, + { url = "https://files.pythonhosted.org/packages/85/a2/ae98feffe0b161400e87b7bfc8859e6fa1e6023fa7bcfa0a8cacd83b39a1/thinc-8.3.10-cp313-cp313-win_amd64.whl", hash = "sha256:9c32830446a57da13b6856cacb0225bc2f2104f279d9928d40500081c13aa9ec", size = 1717562, upload-time = "2025-11-17T17:21:27.468Z" }, + { url = "https://files.pythonhosted.org/packages/b8/e0/faa1d04a6890ea33b9541727d2a3ca88bad794a89f73b9111af6f9aefe10/thinc-8.3.10-cp313-cp313-win_arm64.whl", hash = "sha256:aa43f9af76781d32f5f9fe29299204c8841d71e64cbb56e0e4f3d1e0387c2783", size = 1641536, upload-time = "2025-11-17T17:21:30.129Z" }, ] [[package]] name = "threadpoolctl" version = "3.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload_time = "2025-03-13T13:49:23.031Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload-time = "2025-03-13T13:49:23.031Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload_time = "2025-03-13T13:49:21.846Z" }, + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, ] [[package]] @@ -4494,43 +4544,43 @@ dependencies = [ { name = "regex" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7d/ab/4d017d0f76ec3171d469d80fc03dfbb4e48a4bcaddaa831b31d526f05edc/tiktoken-0.12.0.tar.gz", hash = "sha256:b18ba7ee2b093863978fcb14f74b3707cdc8d4d4d3836853ce7ec60772139931", size = 37806, upload_time = "2025-10-06T20:22:45.419Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/89/b3/2cb7c17b6c4cf8ca983204255d3f1d95eda7213e247e6947a0ee2c747a2c/tiktoken-0.12.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3de02f5a491cfd179aec916eddb70331814bd6bf764075d39e21d5862e533970", size = 1051991, upload_time = "2025-10-06T20:21:34.098Z" }, - { url = "https://files.pythonhosted.org/packages/27/0f/df139f1df5f6167194ee5ab24634582ba9a1b62c6b996472b0277ec80f66/tiktoken-0.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b6cfb6d9b7b54d20af21a912bfe63a2727d9cfa8fbda642fd8322c70340aad16", size = 995798, upload_time = "2025-10-06T20:21:35.579Z" }, - { url = "https://files.pythonhosted.org/packages/ef/5d/26a691f28ab220d5edc09b9b787399b130f24327ef824de15e5d85ef21aa/tiktoken-0.12.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:cde24cdb1b8a08368f709124f15b36ab5524aac5fa830cc3fdce9c03d4fb8030", size = 1129865, upload_time = "2025-10-06T20:21:36.675Z" }, - { url = "https://files.pythonhosted.org/packages/b2/94/443fab3d4e5ebecac895712abd3849b8da93b7b7dec61c7db5c9c7ebe40c/tiktoken-0.12.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:6de0da39f605992649b9cfa6f84071e3f9ef2cec458d08c5feb1b6f0ff62e134", size = 1152856, upload_time = "2025-10-06T20:21:37.873Z" }, - { url = "https://files.pythonhosted.org/packages/54/35/388f941251b2521c70dd4c5958e598ea6d2c88e28445d2fb8189eecc1dfc/tiktoken-0.12.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6faa0534e0eefbcafaccb75927a4a380463a2eaa7e26000f0173b920e98b720a", size = 1195308, upload_time = "2025-10-06T20:21:39.577Z" }, - { url = "https://files.pythonhosted.org/packages/f8/00/c6681c7f833dd410576183715a530437a9873fa910265817081f65f9105f/tiktoken-0.12.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:82991e04fc860afb933efb63957affc7ad54f83e2216fe7d319007dab1ba5892", size = 1255697, upload_time = "2025-10-06T20:21:41.154Z" }, - { url = "https://files.pythonhosted.org/packages/5f/d2/82e795a6a9bafa034bf26a58e68fe9a89eeaaa610d51dbeb22106ba04f0a/tiktoken-0.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:6fb2995b487c2e31acf0a9e17647e3b242235a20832642bb7a9d1a181c0c1bb1", size = 879375, upload_time = "2025-10-06T20:21:43.201Z" }, - { url = "https://files.pythonhosted.org/packages/de/46/21ea696b21f1d6d1efec8639c204bdf20fde8bafb351e1355c72c5d7de52/tiktoken-0.12.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6e227c7f96925003487c33b1b32265fad2fbcec2b7cf4817afb76d416f40f6bb", size = 1051565, upload_time = "2025-10-06T20:21:44.566Z" }, - { url = "https://files.pythonhosted.org/packages/c9/d9/35c5d2d9e22bb2a5f74ba48266fb56c63d76ae6f66e02feb628671c0283e/tiktoken-0.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c06cf0fcc24c2cb2adb5e185c7082a82cba29c17575e828518c2f11a01f445aa", size = 995284, upload_time = "2025-10-06T20:21:45.622Z" }, - { url = "https://files.pythonhosted.org/packages/01/84/961106c37b8e49b9fdcf33fe007bb3a8fdcc380c528b20cc7fbba80578b8/tiktoken-0.12.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:f18f249b041851954217e9fd8e5c00b024ab2315ffda5ed77665a05fa91f42dc", size = 1129201, upload_time = "2025-10-06T20:21:47.074Z" }, - { url = "https://files.pythonhosted.org/packages/6a/d0/3d9275198e067f8b65076a68894bb52fd253875f3644f0a321a720277b8a/tiktoken-0.12.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:47a5bc270b8c3db00bb46ece01ef34ad050e364b51d406b6f9730b64ac28eded", size = 1152444, upload_time = "2025-10-06T20:21:48.139Z" }, - { url = "https://files.pythonhosted.org/packages/78/db/a58e09687c1698a7c592e1038e01c206569b86a0377828d51635561f8ebf/tiktoken-0.12.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:508fa71810c0efdcd1b898fda574889ee62852989f7c1667414736bcb2b9a4bd", size = 1195080, upload_time = "2025-10-06T20:21:49.246Z" }, - { url = "https://files.pythonhosted.org/packages/9e/1b/a9e4d2bf91d515c0f74afc526fd773a812232dd6cda33ebea7f531202325/tiktoken-0.12.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1af81a6c44f008cba48494089dd98cccb8b313f55e961a52f5b222d1e507967", size = 1255240, upload_time = "2025-10-06T20:21:50.274Z" }, - { url = "https://files.pythonhosted.org/packages/9d/15/963819345f1b1fb0809070a79e9dd96938d4ca41297367d471733e79c76c/tiktoken-0.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:3e68e3e593637b53e56f7237be560f7a394451cb8c11079755e80ae64b9e6def", size = 879422, upload_time = "2025-10-06T20:21:51.734Z" }, - { url = "https://files.pythonhosted.org/packages/a4/85/be65d39d6b647c79800fd9d29241d081d4eeb06271f383bb87200d74cf76/tiktoken-0.12.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b97f74aca0d78a1ff21b8cd9e9925714c15a9236d6ceacf5c7327c117e6e21e8", size = 1050728, upload_time = "2025-10-06T20:21:52.756Z" }, - { url = "https://files.pythonhosted.org/packages/4a/42/6573e9129bc55c9bf7300b3a35bef2c6b9117018acca0dc760ac2d93dffe/tiktoken-0.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b90f5ad190a4bb7c3eb30c5fa32e1e182ca1ca79f05e49b448438c3e225a49b", size = 994049, upload_time = "2025-10-06T20:21:53.782Z" }, - { url = "https://files.pythonhosted.org/packages/66/c5/ed88504d2f4a5fd6856990b230b56d85a777feab84e6129af0822f5d0f70/tiktoken-0.12.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:65b26c7a780e2139e73acc193e5c63ac754021f160df919add909c1492c0fb37", size = 1129008, upload_time = "2025-10-06T20:21:54.832Z" }, - { url = "https://files.pythonhosted.org/packages/f4/90/3dae6cc5436137ebd38944d396b5849e167896fc2073da643a49f372dc4f/tiktoken-0.12.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:edde1ec917dfd21c1f2f8046b86348b0f54a2c0547f68149d8600859598769ad", size = 1152665, upload_time = "2025-10-06T20:21:56.129Z" }, - { url = "https://files.pythonhosted.org/packages/a3/fe/26df24ce53ffde419a42f5f53d755b995c9318908288c17ec3f3448313a3/tiktoken-0.12.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:35a2f8ddd3824608b3d650a000c1ef71f730d0c56486845705a8248da00f9fe5", size = 1194230, upload_time = "2025-10-06T20:21:57.546Z" }, - { url = "https://files.pythonhosted.org/packages/20/cc/b064cae1a0e9fac84b0d2c46b89f4e57051a5f41324e385d10225a984c24/tiktoken-0.12.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:83d16643edb7fa2c99eff2ab7733508aae1eebb03d5dfc46f5565862810f24e3", size = 1254688, upload_time = "2025-10-06T20:21:58.619Z" }, - { url = "https://files.pythonhosted.org/packages/81/10/b8523105c590c5b8349f2587e2fdfe51a69544bd5a76295fc20f2374f470/tiktoken-0.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:ffc5288f34a8bc02e1ea7047b8d041104791d2ddbf42d1e5fa07822cbffe16bd", size = 878694, upload_time = "2025-10-06T20:21:59.876Z" }, - { url = "https://files.pythonhosted.org/packages/00/61/441588ee21e6b5cdf59d6870f86beb9789e532ee9718c251b391b70c68d6/tiktoken-0.12.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:775c2c55de2310cc1bc9a3ad8826761cbdc87770e586fd7b6da7d4589e13dab3", size = 1050802, upload_time = "2025-10-06T20:22:00.96Z" }, - { url = "https://files.pythonhosted.org/packages/1f/05/dcf94486d5c5c8d34496abe271ac76c5b785507c8eae71b3708f1ad9b45a/tiktoken-0.12.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a01b12f69052fbe4b080a2cfb867c4de12c704b56178edf1d1d7b273561db160", size = 993995, upload_time = "2025-10-06T20:22:02.788Z" }, - { url = "https://files.pythonhosted.org/packages/a0/70/5163fe5359b943f8db9946b62f19be2305de8c3d78a16f629d4165e2f40e/tiktoken-0.12.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:01d99484dc93b129cd0964f9d34eee953f2737301f18b3c7257bf368d7615baa", size = 1128948, upload_time = "2025-10-06T20:22:03.814Z" }, - { url = "https://files.pythonhosted.org/packages/0c/da/c028aa0babf77315e1cef357d4d768800c5f8a6de04d0eac0f377cb619fa/tiktoken-0.12.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:4a1a4fcd021f022bfc81904a911d3df0f6543b9e7627b51411da75ff2fe7a1be", size = 1151986, upload_time = "2025-10-06T20:22:05.173Z" }, - { url = "https://files.pythonhosted.org/packages/a0/5a/886b108b766aa53e295f7216b509be95eb7d60b166049ce2c58416b25f2a/tiktoken-0.12.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:981a81e39812d57031efdc9ec59fa32b2a5a5524d20d4776574c4b4bd2e9014a", size = 1194222, upload_time = "2025-10-06T20:22:06.265Z" }, - { url = "https://files.pythonhosted.org/packages/f4/f8/4db272048397636ac7a078d22773dd2795b1becee7bc4922fe6207288d57/tiktoken-0.12.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9baf52f84a3f42eef3ff4e754a0db79a13a27921b457ca9832cf944c6be4f8f3", size = 1255097, upload_time = "2025-10-06T20:22:07.403Z" }, - { url = "https://files.pythonhosted.org/packages/8e/32/45d02e2e0ea2be3a9ed22afc47d93741247e75018aac967b713b2941f8ea/tiktoken-0.12.0-cp313-cp313-win_amd64.whl", hash = "sha256:b8a0cd0c789a61f31bf44851defbd609e8dd1e2c8589c614cc1060940ef1f697", size = 879117, upload_time = "2025-10-06T20:22:08.418Z" }, - { url = "https://files.pythonhosted.org/packages/ce/76/994fc868f88e016e6d05b0da5ac24582a14c47893f4474c3e9744283f1d5/tiktoken-0.12.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d5f89ea5680066b68bcb797ae85219c72916c922ef0fcdd3480c7d2315ffff16", size = 1050309, upload_time = "2025-10-06T20:22:10.939Z" }, - { url = "https://files.pythonhosted.org/packages/f6/b8/57ef1456504c43a849821920d582a738a461b76a047f352f18c0b26c6516/tiktoken-0.12.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b4e7ed1c6a7a8a60a3230965bdedba8cc58f68926b835e519341413370e0399a", size = 993712, upload_time = "2025-10-06T20:22:12.115Z" }, - { url = "https://files.pythonhosted.org/packages/72/90/13da56f664286ffbae9dbcfadcc625439142675845baa62715e49b87b68b/tiktoken-0.12.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:fc530a28591a2d74bce821d10b418b26a094bf33839e69042a6e86ddb7a7fb27", size = 1128725, upload_time = "2025-10-06T20:22:13.541Z" }, - { url = "https://files.pythonhosted.org/packages/05/df/4f80030d44682235bdaecd7346c90f67ae87ec8f3df4a3442cb53834f7e4/tiktoken-0.12.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:06a9f4f49884139013b138920a4c393aa6556b2f8f536345f11819389c703ebb", size = 1151875, upload_time = "2025-10-06T20:22:14.559Z" }, - { url = "https://files.pythonhosted.org/packages/22/1f/ae535223a8c4ef4c0c1192e3f9b82da660be9eb66b9279e95c99288e9dab/tiktoken-0.12.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:04f0e6a985d95913cabc96a741c5ffec525a2c72e9df086ff17ebe35985c800e", size = 1194451, upload_time = "2025-10-06T20:22:15.545Z" }, - { url = "https://files.pythonhosted.org/packages/78/a7/f8ead382fce0243cb625c4f266e66c27f65ae65ee9e77f59ea1653b6d730/tiktoken-0.12.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0ee8f9ae00c41770b5f9b0bb1235474768884ae157de3beb5439ca0fd70f3e25", size = 1253794, upload_time = "2025-10-06T20:22:16.624Z" }, - { url = "https://files.pythonhosted.org/packages/93/e0/6cc82a562bc6365785a3ff0af27a2a092d57c47d7a81d9e2295d8c36f011/tiktoken-0.12.0-cp313-cp313t-win_amd64.whl", hash = "sha256:dc2dd125a62cb2b3d858484d6c614d136b5b848976794edfb63688d539b8b93f", size = 878777, upload_time = "2025-10-06T20:22:18.036Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/7d/ab/4d017d0f76ec3171d469d80fc03dfbb4e48a4bcaddaa831b31d526f05edc/tiktoken-0.12.0.tar.gz", hash = "sha256:b18ba7ee2b093863978fcb14f74b3707cdc8d4d4d3836853ce7ec60772139931", size = 37806, upload-time = "2025-10-06T20:22:45.419Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/89/b3/2cb7c17b6c4cf8ca983204255d3f1d95eda7213e247e6947a0ee2c747a2c/tiktoken-0.12.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3de02f5a491cfd179aec916eddb70331814bd6bf764075d39e21d5862e533970", size = 1051991, upload-time = "2025-10-06T20:21:34.098Z" }, + { url = "https://files.pythonhosted.org/packages/27/0f/df139f1df5f6167194ee5ab24634582ba9a1b62c6b996472b0277ec80f66/tiktoken-0.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b6cfb6d9b7b54d20af21a912bfe63a2727d9cfa8fbda642fd8322c70340aad16", size = 995798, upload-time = "2025-10-06T20:21:35.579Z" }, + { url = "https://files.pythonhosted.org/packages/ef/5d/26a691f28ab220d5edc09b9b787399b130f24327ef824de15e5d85ef21aa/tiktoken-0.12.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:cde24cdb1b8a08368f709124f15b36ab5524aac5fa830cc3fdce9c03d4fb8030", size = 1129865, upload-time = "2025-10-06T20:21:36.675Z" }, + { url = "https://files.pythonhosted.org/packages/b2/94/443fab3d4e5ebecac895712abd3849b8da93b7b7dec61c7db5c9c7ebe40c/tiktoken-0.12.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:6de0da39f605992649b9cfa6f84071e3f9ef2cec458d08c5feb1b6f0ff62e134", size = 1152856, upload-time = "2025-10-06T20:21:37.873Z" }, + { url = "https://files.pythonhosted.org/packages/54/35/388f941251b2521c70dd4c5958e598ea6d2c88e28445d2fb8189eecc1dfc/tiktoken-0.12.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6faa0534e0eefbcafaccb75927a4a380463a2eaa7e26000f0173b920e98b720a", size = 1195308, upload-time = "2025-10-06T20:21:39.577Z" }, + { url = "https://files.pythonhosted.org/packages/f8/00/c6681c7f833dd410576183715a530437a9873fa910265817081f65f9105f/tiktoken-0.12.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:82991e04fc860afb933efb63957affc7ad54f83e2216fe7d319007dab1ba5892", size = 1255697, upload-time = "2025-10-06T20:21:41.154Z" }, + { url = "https://files.pythonhosted.org/packages/5f/d2/82e795a6a9bafa034bf26a58e68fe9a89eeaaa610d51dbeb22106ba04f0a/tiktoken-0.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:6fb2995b487c2e31acf0a9e17647e3b242235a20832642bb7a9d1a181c0c1bb1", size = 879375, upload-time = "2025-10-06T20:21:43.201Z" }, + { url = "https://files.pythonhosted.org/packages/de/46/21ea696b21f1d6d1efec8639c204bdf20fde8bafb351e1355c72c5d7de52/tiktoken-0.12.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6e227c7f96925003487c33b1b32265fad2fbcec2b7cf4817afb76d416f40f6bb", size = 1051565, upload-time = "2025-10-06T20:21:44.566Z" }, + { url = "https://files.pythonhosted.org/packages/c9/d9/35c5d2d9e22bb2a5f74ba48266fb56c63d76ae6f66e02feb628671c0283e/tiktoken-0.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c06cf0fcc24c2cb2adb5e185c7082a82cba29c17575e828518c2f11a01f445aa", size = 995284, upload-time = "2025-10-06T20:21:45.622Z" }, + { url = "https://files.pythonhosted.org/packages/01/84/961106c37b8e49b9fdcf33fe007bb3a8fdcc380c528b20cc7fbba80578b8/tiktoken-0.12.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:f18f249b041851954217e9fd8e5c00b024ab2315ffda5ed77665a05fa91f42dc", size = 1129201, upload-time = "2025-10-06T20:21:47.074Z" }, + { url = "https://files.pythonhosted.org/packages/6a/d0/3d9275198e067f8b65076a68894bb52fd253875f3644f0a321a720277b8a/tiktoken-0.12.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:47a5bc270b8c3db00bb46ece01ef34ad050e364b51d406b6f9730b64ac28eded", size = 1152444, upload-time = "2025-10-06T20:21:48.139Z" }, + { url = "https://files.pythonhosted.org/packages/78/db/a58e09687c1698a7c592e1038e01c206569b86a0377828d51635561f8ebf/tiktoken-0.12.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:508fa71810c0efdcd1b898fda574889ee62852989f7c1667414736bcb2b9a4bd", size = 1195080, upload-time = "2025-10-06T20:21:49.246Z" }, + { url = "https://files.pythonhosted.org/packages/9e/1b/a9e4d2bf91d515c0f74afc526fd773a812232dd6cda33ebea7f531202325/tiktoken-0.12.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1af81a6c44f008cba48494089dd98cccb8b313f55e961a52f5b222d1e507967", size = 1255240, upload-time = "2025-10-06T20:21:50.274Z" }, + { url = "https://files.pythonhosted.org/packages/9d/15/963819345f1b1fb0809070a79e9dd96938d4ca41297367d471733e79c76c/tiktoken-0.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:3e68e3e593637b53e56f7237be560f7a394451cb8c11079755e80ae64b9e6def", size = 879422, upload-time = "2025-10-06T20:21:51.734Z" }, + { url = "https://files.pythonhosted.org/packages/a4/85/be65d39d6b647c79800fd9d29241d081d4eeb06271f383bb87200d74cf76/tiktoken-0.12.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b97f74aca0d78a1ff21b8cd9e9925714c15a9236d6ceacf5c7327c117e6e21e8", size = 1050728, upload-time = "2025-10-06T20:21:52.756Z" }, + { url = "https://files.pythonhosted.org/packages/4a/42/6573e9129bc55c9bf7300b3a35bef2c6b9117018acca0dc760ac2d93dffe/tiktoken-0.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b90f5ad190a4bb7c3eb30c5fa32e1e182ca1ca79f05e49b448438c3e225a49b", size = 994049, upload-time = "2025-10-06T20:21:53.782Z" }, + { url = "https://files.pythonhosted.org/packages/66/c5/ed88504d2f4a5fd6856990b230b56d85a777feab84e6129af0822f5d0f70/tiktoken-0.12.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:65b26c7a780e2139e73acc193e5c63ac754021f160df919add909c1492c0fb37", size = 1129008, upload-time = "2025-10-06T20:21:54.832Z" }, + { url = "https://files.pythonhosted.org/packages/f4/90/3dae6cc5436137ebd38944d396b5849e167896fc2073da643a49f372dc4f/tiktoken-0.12.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:edde1ec917dfd21c1f2f8046b86348b0f54a2c0547f68149d8600859598769ad", size = 1152665, upload-time = "2025-10-06T20:21:56.129Z" }, + { url = "https://files.pythonhosted.org/packages/a3/fe/26df24ce53ffde419a42f5f53d755b995c9318908288c17ec3f3448313a3/tiktoken-0.12.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:35a2f8ddd3824608b3d650a000c1ef71f730d0c56486845705a8248da00f9fe5", size = 1194230, upload-time = "2025-10-06T20:21:57.546Z" }, + { url = "https://files.pythonhosted.org/packages/20/cc/b064cae1a0e9fac84b0d2c46b89f4e57051a5f41324e385d10225a984c24/tiktoken-0.12.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:83d16643edb7fa2c99eff2ab7733508aae1eebb03d5dfc46f5565862810f24e3", size = 1254688, upload-time = "2025-10-06T20:21:58.619Z" }, + { url = "https://files.pythonhosted.org/packages/81/10/b8523105c590c5b8349f2587e2fdfe51a69544bd5a76295fc20f2374f470/tiktoken-0.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:ffc5288f34a8bc02e1ea7047b8d041104791d2ddbf42d1e5fa07822cbffe16bd", size = 878694, upload-time = "2025-10-06T20:21:59.876Z" }, + { url = "https://files.pythonhosted.org/packages/00/61/441588ee21e6b5cdf59d6870f86beb9789e532ee9718c251b391b70c68d6/tiktoken-0.12.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:775c2c55de2310cc1bc9a3ad8826761cbdc87770e586fd7b6da7d4589e13dab3", size = 1050802, upload-time = "2025-10-06T20:22:00.96Z" }, + { url = "https://files.pythonhosted.org/packages/1f/05/dcf94486d5c5c8d34496abe271ac76c5b785507c8eae71b3708f1ad9b45a/tiktoken-0.12.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a01b12f69052fbe4b080a2cfb867c4de12c704b56178edf1d1d7b273561db160", size = 993995, upload-time = "2025-10-06T20:22:02.788Z" }, + { url = "https://files.pythonhosted.org/packages/a0/70/5163fe5359b943f8db9946b62f19be2305de8c3d78a16f629d4165e2f40e/tiktoken-0.12.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:01d99484dc93b129cd0964f9d34eee953f2737301f18b3c7257bf368d7615baa", size = 1128948, upload-time = "2025-10-06T20:22:03.814Z" }, + { url = "https://files.pythonhosted.org/packages/0c/da/c028aa0babf77315e1cef357d4d768800c5f8a6de04d0eac0f377cb619fa/tiktoken-0.12.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:4a1a4fcd021f022bfc81904a911d3df0f6543b9e7627b51411da75ff2fe7a1be", size = 1151986, upload-time = "2025-10-06T20:22:05.173Z" }, + { url = "https://files.pythonhosted.org/packages/a0/5a/886b108b766aa53e295f7216b509be95eb7d60b166049ce2c58416b25f2a/tiktoken-0.12.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:981a81e39812d57031efdc9ec59fa32b2a5a5524d20d4776574c4b4bd2e9014a", size = 1194222, upload-time = "2025-10-06T20:22:06.265Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f8/4db272048397636ac7a078d22773dd2795b1becee7bc4922fe6207288d57/tiktoken-0.12.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9baf52f84a3f42eef3ff4e754a0db79a13a27921b457ca9832cf944c6be4f8f3", size = 1255097, upload-time = "2025-10-06T20:22:07.403Z" }, + { url = "https://files.pythonhosted.org/packages/8e/32/45d02e2e0ea2be3a9ed22afc47d93741247e75018aac967b713b2941f8ea/tiktoken-0.12.0-cp313-cp313-win_amd64.whl", hash = "sha256:b8a0cd0c789a61f31bf44851defbd609e8dd1e2c8589c614cc1060940ef1f697", size = 879117, upload-time = "2025-10-06T20:22:08.418Z" }, + { url = "https://files.pythonhosted.org/packages/ce/76/994fc868f88e016e6d05b0da5ac24582a14c47893f4474c3e9744283f1d5/tiktoken-0.12.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d5f89ea5680066b68bcb797ae85219c72916c922ef0fcdd3480c7d2315ffff16", size = 1050309, upload-time = "2025-10-06T20:22:10.939Z" }, + { url = "https://files.pythonhosted.org/packages/f6/b8/57ef1456504c43a849821920d582a738a461b76a047f352f18c0b26c6516/tiktoken-0.12.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b4e7ed1c6a7a8a60a3230965bdedba8cc58f68926b835e519341413370e0399a", size = 993712, upload-time = "2025-10-06T20:22:12.115Z" }, + { url = "https://files.pythonhosted.org/packages/72/90/13da56f664286ffbae9dbcfadcc625439142675845baa62715e49b87b68b/tiktoken-0.12.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:fc530a28591a2d74bce821d10b418b26a094bf33839e69042a6e86ddb7a7fb27", size = 1128725, upload-time = "2025-10-06T20:22:13.541Z" }, + { url = "https://files.pythonhosted.org/packages/05/df/4f80030d44682235bdaecd7346c90f67ae87ec8f3df4a3442cb53834f7e4/tiktoken-0.12.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:06a9f4f49884139013b138920a4c393aa6556b2f8f536345f11819389c703ebb", size = 1151875, upload-time = "2025-10-06T20:22:14.559Z" }, + { url = "https://files.pythonhosted.org/packages/22/1f/ae535223a8c4ef4c0c1192e3f9b82da660be9eb66b9279e95c99288e9dab/tiktoken-0.12.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:04f0e6a985d95913cabc96a741c5ffec525a2c72e9df086ff17ebe35985c800e", size = 1194451, upload-time = "2025-10-06T20:22:15.545Z" }, + { url = "https://files.pythonhosted.org/packages/78/a7/f8ead382fce0243cb625c4f266e66c27f65ae65ee9e77f59ea1653b6d730/tiktoken-0.12.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0ee8f9ae00c41770b5f9b0bb1235474768884ae157de3beb5439ca0fd70f3e25", size = 1253794, upload-time = "2025-10-06T20:22:16.624Z" }, + { url = "https://files.pythonhosted.org/packages/93/e0/6cc82a562bc6365785a3ff0af27a2a092d57c47d7a81d9e2295d8c36f011/tiktoken-0.12.0-cp313-cp313t-win_amd64.whl", hash = "sha256:dc2dd125a62cb2b3d858484d6c614d136b5b848976794edfb63688d539b8b93f", size = 878777, upload-time = "2025-10-06T20:22:18.036Z" }, ] [[package]] @@ -4543,9 +4593,9 @@ dependencies = [ { name = "requests" }, { name = "requests-file" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/65/7b/644fbbb49564a6cb124a8582013315a41148dba2f72209bba14a84242bf0/tldextract-5.3.1.tar.gz", hash = "sha256:a72756ca170b2510315076383ea2993478f7da6f897eef1f4a5400735d5057fb", size = 126105, upload_time = "2025-12-28T23:58:05.532Z" } +sdist = { url = "https://files.pythonhosted.org/packages/65/7b/644fbbb49564a6cb124a8582013315a41148dba2f72209bba14a84242bf0/tldextract-5.3.1.tar.gz", hash = "sha256:a72756ca170b2510315076383ea2993478f7da6f897eef1f4a5400735d5057fb", size = 126105, upload-time = "2025-12-28T23:58:05.532Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/42/0e49d6d0aac449ca71952ec5bae764af009754fcb2e76a5cc097543747b3/tldextract-5.3.1-py3-none-any.whl", hash = "sha256:6bfe36d518de569c572062b788e16a659ccaceffc486d243af0484e8ecf432d9", size = 105886, upload_time = "2025-12-28T23:58:04.071Z" }, + { url = "https://files.pythonhosted.org/packages/6d/42/0e49d6d0aac449ca71952ec5bae764af009754fcb2e76a5cc097543747b3/tldextract-5.3.1-py3-none-any.whl", hash = "sha256:6bfe36d518de569c572062b788e16a659ccaceffc486d243af0484e8ecf432d9", size = 105886, upload-time = "2025-12-28T23:58:04.071Z" }, ] [[package]] @@ -4555,72 +4605,72 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "huggingface-hub" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/73/6f/f80cfef4a312e1fb34baf7d85c72d4411afde10978d4657f8cdd811d3ccc/tokenizers-0.22.2.tar.gz", hash = "sha256:473b83b915e547aa366d1eee11806deaf419e17be16310ac0a14077f1e28f917", size = 372115, upload_time = "2026-01-05T10:45:15.988Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/97/5dbfabf04c7e348e655e907ed27913e03db0923abb5dfdd120d7b25630e1/tokenizers-0.22.2-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:544dd704ae7238755d790de45ba8da072e9af3eea688f698b137915ae959281c", size = 3100275, upload_time = "2026-01-05T10:41:02.158Z" }, - { url = "https://files.pythonhosted.org/packages/2e/47/174dca0502ef88b28f1c9e06b73ce33500eedfac7a7692108aec220464e7/tokenizers-0.22.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:1e418a55456beedca4621dbab65a318981467a2b188e982a23e117f115ce5001", size = 2981472, upload_time = "2026-01-05T10:41:00.276Z" }, - { url = "https://files.pythonhosted.org/packages/d6/84/7990e799f1309a8b87af6b948f31edaa12a3ed22d11b352eaf4f4b2e5753/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2249487018adec45d6e3554c71d46eb39fa8ea67156c640f7513eb26f318cec7", size = 3290736, upload_time = "2026-01-05T10:40:32.165Z" }, - { url = "https://files.pythonhosted.org/packages/78/59/09d0d9ba94dcd5f4f1368d4858d24546b4bdc0231c2354aa31d6199f0399/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25b85325d0815e86e0bac263506dd114578953b7b53d7de09a6485e4a160a7dd", size = 3168835, upload_time = "2026-01-05T10:40:38.847Z" }, - { url = "https://files.pythonhosted.org/packages/47/50/b3ebb4243e7160bda8d34b731e54dd8ab8b133e50775872e7a434e524c28/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfb88f22a209ff7b40a576d5324bf8286b519d7358663db21d6246fb17eea2d5", size = 3521673, upload_time = "2026-01-05T10:40:56.614Z" }, - { url = "https://files.pythonhosted.org/packages/e0/fa/89f4cb9e08df770b57adb96f8cbb7e22695a4cb6c2bd5f0c4f0ebcf33b66/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c774b1276f71e1ef716e5486f21e76333464f47bece56bbd554485982a9e03e", size = 3724818, upload_time = "2026-01-05T10:40:44.507Z" }, - { url = "https://files.pythonhosted.org/packages/64/04/ca2363f0bfbe3b3d36e95bf67e56a4c88c8e3362b658e616d1ac185d47f2/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df6c4265b289083bf710dff49bc51ef252f9d5be33a45ee2bed151114a56207b", size = 3379195, upload_time = "2026-01-05T10:40:51.139Z" }, - { url = "https://files.pythonhosted.org/packages/2e/76/932be4b50ef6ccedf9d3c6639b056a967a86258c6d9200643f01269211ca/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:369cc9fc8cc10cb24143873a0d95438bb8ee257bb80c71989e3ee290e8d72c67", size = 3274982, upload_time = "2026-01-05T10:40:58.331Z" }, - { url = "https://files.pythonhosted.org/packages/1d/28/5f9f5a4cc211b69e89420980e483831bcc29dade307955cc9dc858a40f01/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:29c30b83d8dcd061078b05ae0cb94d3c710555fbb44861139f9f83dcca3dc3e4", size = 9478245, upload_time = "2026-01-05T10:41:04.053Z" }, - { url = "https://files.pythonhosted.org/packages/6c/fb/66e2da4704d6aadebf8cb39f1d6d1957df667ab24cff2326b77cda0dcb85/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:37ae80a28c1d3265bb1f22464c856bd23c02a05bb211e56d0c5301a435be6c1a", size = 9560069, upload_time = "2026-01-05T10:45:10.673Z" }, - { url = "https://files.pythonhosted.org/packages/16/04/fed398b05caa87ce9b1a1bb5166645e38196081b225059a6edaff6440fac/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:791135ee325f2336f498590eb2f11dc5c295232f288e75c99a36c5dbce63088a", size = 9899263, upload_time = "2026-01-05T10:45:12.559Z" }, - { url = "https://files.pythonhosted.org/packages/05/a1/d62dfe7376beaaf1394917e0f8e93ee5f67fea8fcf4107501db35996586b/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:38337540fbbddff8e999d59970f3c6f35a82de10053206a7562f1ea02d046fa5", size = 10033429, upload_time = "2026-01-05T10:45:14.333Z" }, - { url = "https://files.pythonhosted.org/packages/fd/18/a545c4ea42af3df6effd7d13d250ba77a0a86fb20393143bbb9a92e434d4/tokenizers-0.22.2-cp39-abi3-win32.whl", hash = "sha256:a6bf3f88c554a2b653af81f3204491c818ae2ac6fbc09e76ef4773351292bc92", size = 2502363, upload_time = "2026-01-05T10:45:20.593Z" }, - { url = "https://files.pythonhosted.org/packages/65/71/0670843133a43d43070abeb1949abfdef12a86d490bea9cd9e18e37c5ff7/tokenizers-0.22.2-cp39-abi3-win_amd64.whl", hash = "sha256:c9ea31edff2968b44a88f97d784c2f16dc0729b8b143ed004699ebca91f05c48", size = 2747786, upload_time = "2026-01-05T10:45:18.411Z" }, - { url = "https://files.pythonhosted.org/packages/72/f4/0de46cfa12cdcbcd464cc59fde36912af405696f687e53a091fb432f694c/tokenizers-0.22.2-cp39-abi3-win_arm64.whl", hash = "sha256:9ce725d22864a1e965217204946f830c37876eee3b2ba6fc6255e8e903d5fcbc", size = 2612133, upload_time = "2026-01-05T10:45:17.232Z" }, - { url = "https://files.pythonhosted.org/packages/84/04/655b79dbcc9b3ac5f1479f18e931a344af67e5b7d3b251d2dcdcd7558592/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:753d47ebd4542742ef9261d9da92cd545b2cacbb48349a1225466745bb866ec4", size = 3282301, upload_time = "2026-01-05T10:40:34.858Z" }, - { url = "https://files.pythonhosted.org/packages/46/cd/e4851401f3d8f6f45d8480262ab6a5c8cb9c4302a790a35aa14eeed6d2fd/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e10bf9113d209be7cd046d40fbabbaf3278ff6d18eb4da4c500443185dc1896c", size = 3161308, upload_time = "2026-01-05T10:40:40.737Z" }, - { url = "https://files.pythonhosted.org/packages/6f/6e/55553992a89982cd12d4a66dddb5e02126c58677ea3931efcbe601d419db/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64d94e84f6660764e64e7e0b22baa72f6cd942279fdbb21d46abd70d179f0195", size = 3718964, upload_time = "2026-01-05T10:40:46.56Z" }, - { url = "https://files.pythonhosted.org/packages/59/8c/b1c87148aa15e099243ec9f0cf9d0e970cc2234c3257d558c25a2c5304e6/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f01a9c019878532f98927d2bacb79bbb404b43d3437455522a00a30718cdedb5", size = 3373542, upload_time = "2026-01-05T10:40:52.803Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/73/6f/f80cfef4a312e1fb34baf7d85c72d4411afde10978d4657f8cdd811d3ccc/tokenizers-0.22.2.tar.gz", hash = "sha256:473b83b915e547aa366d1eee11806deaf419e17be16310ac0a14077f1e28f917", size = 372115, upload-time = "2026-01-05T10:45:15.988Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/97/5dbfabf04c7e348e655e907ed27913e03db0923abb5dfdd120d7b25630e1/tokenizers-0.22.2-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:544dd704ae7238755d790de45ba8da072e9af3eea688f698b137915ae959281c", size = 3100275, upload-time = "2026-01-05T10:41:02.158Z" }, + { url = "https://files.pythonhosted.org/packages/2e/47/174dca0502ef88b28f1c9e06b73ce33500eedfac7a7692108aec220464e7/tokenizers-0.22.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:1e418a55456beedca4621dbab65a318981467a2b188e982a23e117f115ce5001", size = 2981472, upload-time = "2026-01-05T10:41:00.276Z" }, + { url = "https://files.pythonhosted.org/packages/d6/84/7990e799f1309a8b87af6b948f31edaa12a3ed22d11b352eaf4f4b2e5753/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2249487018adec45d6e3554c71d46eb39fa8ea67156c640f7513eb26f318cec7", size = 3290736, upload-time = "2026-01-05T10:40:32.165Z" }, + { url = "https://files.pythonhosted.org/packages/78/59/09d0d9ba94dcd5f4f1368d4858d24546b4bdc0231c2354aa31d6199f0399/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25b85325d0815e86e0bac263506dd114578953b7b53d7de09a6485e4a160a7dd", size = 3168835, upload-time = "2026-01-05T10:40:38.847Z" }, + { url = "https://files.pythonhosted.org/packages/47/50/b3ebb4243e7160bda8d34b731e54dd8ab8b133e50775872e7a434e524c28/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfb88f22a209ff7b40a576d5324bf8286b519d7358663db21d6246fb17eea2d5", size = 3521673, upload-time = "2026-01-05T10:40:56.614Z" }, + { url = "https://files.pythonhosted.org/packages/e0/fa/89f4cb9e08df770b57adb96f8cbb7e22695a4cb6c2bd5f0c4f0ebcf33b66/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c774b1276f71e1ef716e5486f21e76333464f47bece56bbd554485982a9e03e", size = 3724818, upload-time = "2026-01-05T10:40:44.507Z" }, + { url = "https://files.pythonhosted.org/packages/64/04/ca2363f0bfbe3b3d36e95bf67e56a4c88c8e3362b658e616d1ac185d47f2/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df6c4265b289083bf710dff49bc51ef252f9d5be33a45ee2bed151114a56207b", size = 3379195, upload-time = "2026-01-05T10:40:51.139Z" }, + { url = "https://files.pythonhosted.org/packages/2e/76/932be4b50ef6ccedf9d3c6639b056a967a86258c6d9200643f01269211ca/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:369cc9fc8cc10cb24143873a0d95438bb8ee257bb80c71989e3ee290e8d72c67", size = 3274982, upload-time = "2026-01-05T10:40:58.331Z" }, + { url = "https://files.pythonhosted.org/packages/1d/28/5f9f5a4cc211b69e89420980e483831bcc29dade307955cc9dc858a40f01/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:29c30b83d8dcd061078b05ae0cb94d3c710555fbb44861139f9f83dcca3dc3e4", size = 9478245, upload-time = "2026-01-05T10:41:04.053Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fb/66e2da4704d6aadebf8cb39f1d6d1957df667ab24cff2326b77cda0dcb85/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:37ae80a28c1d3265bb1f22464c856bd23c02a05bb211e56d0c5301a435be6c1a", size = 9560069, upload-time = "2026-01-05T10:45:10.673Z" }, + { url = "https://files.pythonhosted.org/packages/16/04/fed398b05caa87ce9b1a1bb5166645e38196081b225059a6edaff6440fac/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:791135ee325f2336f498590eb2f11dc5c295232f288e75c99a36c5dbce63088a", size = 9899263, upload-time = "2026-01-05T10:45:12.559Z" }, + { url = "https://files.pythonhosted.org/packages/05/a1/d62dfe7376beaaf1394917e0f8e93ee5f67fea8fcf4107501db35996586b/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:38337540fbbddff8e999d59970f3c6f35a82de10053206a7562f1ea02d046fa5", size = 10033429, upload-time = "2026-01-05T10:45:14.333Z" }, + { url = "https://files.pythonhosted.org/packages/fd/18/a545c4ea42af3df6effd7d13d250ba77a0a86fb20393143bbb9a92e434d4/tokenizers-0.22.2-cp39-abi3-win32.whl", hash = "sha256:a6bf3f88c554a2b653af81f3204491c818ae2ac6fbc09e76ef4773351292bc92", size = 2502363, upload-time = "2026-01-05T10:45:20.593Z" }, + { url = "https://files.pythonhosted.org/packages/65/71/0670843133a43d43070abeb1949abfdef12a86d490bea9cd9e18e37c5ff7/tokenizers-0.22.2-cp39-abi3-win_amd64.whl", hash = "sha256:c9ea31edff2968b44a88f97d784c2f16dc0729b8b143ed004699ebca91f05c48", size = 2747786, upload-time = "2026-01-05T10:45:18.411Z" }, + { url = "https://files.pythonhosted.org/packages/72/f4/0de46cfa12cdcbcd464cc59fde36912af405696f687e53a091fb432f694c/tokenizers-0.22.2-cp39-abi3-win_arm64.whl", hash = "sha256:9ce725d22864a1e965217204946f830c37876eee3b2ba6fc6255e8e903d5fcbc", size = 2612133, upload-time = "2026-01-05T10:45:17.232Z" }, + { url = "https://files.pythonhosted.org/packages/84/04/655b79dbcc9b3ac5f1479f18e931a344af67e5b7d3b251d2dcdcd7558592/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:753d47ebd4542742ef9261d9da92cd545b2cacbb48349a1225466745bb866ec4", size = 3282301, upload-time = "2026-01-05T10:40:34.858Z" }, + { url = "https://files.pythonhosted.org/packages/46/cd/e4851401f3d8f6f45d8480262ab6a5c8cb9c4302a790a35aa14eeed6d2fd/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e10bf9113d209be7cd046d40fbabbaf3278ff6d18eb4da4c500443185dc1896c", size = 3161308, upload-time = "2026-01-05T10:40:40.737Z" }, + { url = "https://files.pythonhosted.org/packages/6f/6e/55553992a89982cd12d4a66dddb5e02126c58677ea3931efcbe601d419db/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64d94e84f6660764e64e7e0b22baa72f6cd942279fdbb21d46abd70d179f0195", size = 3718964, upload-time = "2026-01-05T10:40:46.56Z" }, + { url = "https://files.pythonhosted.org/packages/59/8c/b1c87148aa15e099243ec9f0cf9d0e970cc2234c3257d558c25a2c5304e6/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f01a9c019878532f98927d2bacb79bbb404b43d3437455522a00a30718cdedb5", size = 3373542, upload-time = "2026-01-05T10:40:52.803Z" }, ] [[package]] name = "tomli" version = "2.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/30/31573e9457673ab10aa432461bee537ce6cef177667deca369efb79df071/tomli-2.4.0.tar.gz", hash = "sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c", size = 17477, upload_time = "2026-01-11T11:22:38.165Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/d9/3dc2289e1f3b32eb19b9785b6a006b28ee99acb37d1d47f78d4c10e28bf8/tomli-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867", size = 153663, upload_time = "2026-01-11T11:21:45.27Z" }, - { url = "https://files.pythonhosted.org/packages/51/32/ef9f6845e6b9ca392cd3f64f9ec185cc6f09f0a2df3db08cbe8809d1d435/tomli-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9", size = 148469, upload_time = "2026-01-11T11:21:46.873Z" }, - { url = "https://files.pythonhosted.org/packages/d6/c2/506e44cce89a8b1b1e047d64bd495c22c9f71f21e05f380f1a950dd9c217/tomli-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95", size = 236039, upload_time = "2026-01-11T11:21:48.503Z" }, - { url = "https://files.pythonhosted.org/packages/b3/40/e1b65986dbc861b7e986e8ec394598187fa8aee85b1650b01dd925ca0be8/tomli-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76", size = 243007, upload_time = "2026-01-11T11:21:49.456Z" }, - { url = "https://files.pythonhosted.org/packages/9c/6f/6e39ce66b58a5b7ae572a0f4352ff40c71e8573633deda43f6a379d56b3e/tomli-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d", size = 240875, upload_time = "2026-01-11T11:21:50.755Z" }, - { url = "https://files.pythonhosted.org/packages/aa/ad/cb089cb190487caa80204d503c7fd0f4d443f90b95cf4ef5cf5aa0f439b0/tomli-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576", size = 246271, upload_time = "2026-01-11T11:21:51.81Z" }, - { url = "https://files.pythonhosted.org/packages/0b/63/69125220e47fd7a3a27fd0de0c6398c89432fec41bc739823bcc66506af6/tomli-2.4.0-cp311-cp311-win32.whl", hash = "sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a", size = 96770, upload_time = "2026-01-11T11:21:52.647Z" }, - { url = "https://files.pythonhosted.org/packages/1e/0d/a22bb6c83f83386b0008425a6cd1fa1c14b5f3dd4bad05e98cf3dbbf4a64/tomli-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa", size = 107626, upload_time = "2026-01-11T11:21:53.459Z" }, - { url = "https://files.pythonhosted.org/packages/2f/6d/77be674a3485e75cacbf2ddba2b146911477bd887dda9d8c9dfb2f15e871/tomli-2.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614", size = 94842, upload_time = "2026-01-11T11:21:54.831Z" }, - { url = "https://files.pythonhosted.org/packages/3c/43/7389a1869f2f26dba52404e1ef13b4784b6b37dac93bac53457e3ff24ca3/tomli-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1", size = 154894, upload_time = "2026-01-11T11:21:56.07Z" }, - { url = "https://files.pythonhosted.org/packages/e9/05/2f9bf110b5294132b2edf13fe6ca6ae456204f3d749f623307cbb7a946f2/tomli-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8", size = 149053, upload_time = "2026-01-11T11:21:57.467Z" }, - { url = "https://files.pythonhosted.org/packages/e8/41/1eda3ca1abc6f6154a8db4d714a4d35c4ad90adc0bcf700657291593fbf3/tomli-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a", size = 243481, upload_time = "2026-01-11T11:21:58.661Z" }, - { url = "https://files.pythonhosted.org/packages/d2/6d/02ff5ab6c8868b41e7d4b987ce2b5f6a51d3335a70aa144edd999e055a01/tomli-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1", size = 251720, upload_time = "2026-01-11T11:22:00.178Z" }, - { url = "https://files.pythonhosted.org/packages/7b/57/0405c59a909c45d5b6f146107c6d997825aa87568b042042f7a9c0afed34/tomli-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b", size = 247014, upload_time = "2026-01-11T11:22:01.238Z" }, - { url = "https://files.pythonhosted.org/packages/2c/0e/2e37568edd944b4165735687cbaf2fe3648129e440c26d02223672ee0630/tomli-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51", size = 251820, upload_time = "2026-01-11T11:22:02.727Z" }, - { url = "https://files.pythonhosted.org/packages/5a/1c/ee3b707fdac82aeeb92d1a113f803cf6d0f37bdca0849cb489553e1f417a/tomli-2.4.0-cp312-cp312-win32.whl", hash = "sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729", size = 97712, upload_time = "2026-01-11T11:22:03.777Z" }, - { url = "https://files.pythonhosted.org/packages/69/13/c07a9177d0b3bab7913299b9278845fc6eaaca14a02667c6be0b0a2270c8/tomli-2.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da", size = 108296, upload_time = "2026-01-11T11:22:04.86Z" }, - { url = "https://files.pythonhosted.org/packages/18/27/e267a60bbeeee343bcc279bb9e8fbed0cbe224bc7b2a3dc2975f22809a09/tomli-2.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3", size = 94553, upload_time = "2026-01-11T11:22:05.854Z" }, - { url = "https://files.pythonhosted.org/packages/34/91/7f65f9809f2936e1f4ce6268ae1903074563603b2a2bd969ebbda802744f/tomli-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0", size = 154915, upload_time = "2026-01-11T11:22:06.703Z" }, - { url = "https://files.pythonhosted.org/packages/20/aa/64dd73a5a849c2e8f216b755599c511badde80e91e9bc2271baa7b2cdbb1/tomli-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e", size = 149038, upload_time = "2026-01-11T11:22:07.56Z" }, - { url = "https://files.pythonhosted.org/packages/9e/8a/6d38870bd3d52c8d1505ce054469a73f73a0fe62c0eaf5dddf61447e32fa/tomli-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4", size = 242245, upload_time = "2026-01-11T11:22:08.344Z" }, - { url = "https://files.pythonhosted.org/packages/59/bb/8002fadefb64ab2669e5b977df3f5e444febea60e717e755b38bb7c41029/tomli-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e", size = 250335, upload_time = "2026-01-11T11:22:09.951Z" }, - { url = "https://files.pythonhosted.org/packages/a5/3d/4cdb6f791682b2ea916af2de96121b3cb1284d7c203d97d92d6003e91c8d/tomli-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c", size = 245962, upload_time = "2026-01-11T11:22:11.27Z" }, - { url = "https://files.pythonhosted.org/packages/f2/4a/5f25789f9a460bd858ba9756ff52d0830d825b458e13f754952dd15fb7bb/tomli-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f", size = 250396, upload_time = "2026-01-11T11:22:12.325Z" }, - { url = "https://files.pythonhosted.org/packages/aa/2f/b73a36fea58dfa08e8b3a268750e6853a6aac2a349241a905ebd86f3047a/tomli-2.4.0-cp313-cp313-win32.whl", hash = "sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86", size = 97530, upload_time = "2026-01-11T11:22:13.865Z" }, - { url = "https://files.pythonhosted.org/packages/3b/af/ca18c134b5d75de7e8dc551c5234eaba2e8e951f6b30139599b53de9c187/tomli-2.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87", size = 108227, upload_time = "2026-01-11T11:22:15.224Z" }, - { url = "https://files.pythonhosted.org/packages/22/c3/b386b832f209fee8073c8138ec50f27b4460db2fdae9ffe022df89a57f9b/tomli-2.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132", size = 94748, upload_time = "2026-01-11T11:22:16.009Z" }, - { url = "https://files.pythonhosted.org/packages/23/d1/136eb2cb77520a31e1f64cbae9d33ec6df0d78bdf4160398e86eec8a8754/tomli-2.4.0-py3-none-any.whl", hash = "sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a", size = 14477, upload_time = "2026-01-11T11:22:37.446Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/82/30/31573e9457673ab10aa432461bee537ce6cef177667deca369efb79df071/tomli-2.4.0.tar.gz", hash = "sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c", size = 17477, upload-time = "2026-01-11T11:22:38.165Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/d9/3dc2289e1f3b32eb19b9785b6a006b28ee99acb37d1d47f78d4c10e28bf8/tomli-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867", size = 153663, upload-time = "2026-01-11T11:21:45.27Z" }, + { url = "https://files.pythonhosted.org/packages/51/32/ef9f6845e6b9ca392cd3f64f9ec185cc6f09f0a2df3db08cbe8809d1d435/tomli-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9", size = 148469, upload-time = "2026-01-11T11:21:46.873Z" }, + { url = "https://files.pythonhosted.org/packages/d6/c2/506e44cce89a8b1b1e047d64bd495c22c9f71f21e05f380f1a950dd9c217/tomli-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95", size = 236039, upload-time = "2026-01-11T11:21:48.503Z" }, + { url = "https://files.pythonhosted.org/packages/b3/40/e1b65986dbc861b7e986e8ec394598187fa8aee85b1650b01dd925ca0be8/tomli-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76", size = 243007, upload-time = "2026-01-11T11:21:49.456Z" }, + { url = "https://files.pythonhosted.org/packages/9c/6f/6e39ce66b58a5b7ae572a0f4352ff40c71e8573633deda43f6a379d56b3e/tomli-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d", size = 240875, upload-time = "2026-01-11T11:21:50.755Z" }, + { url = "https://files.pythonhosted.org/packages/aa/ad/cb089cb190487caa80204d503c7fd0f4d443f90b95cf4ef5cf5aa0f439b0/tomli-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576", size = 246271, upload-time = "2026-01-11T11:21:51.81Z" }, + { url = "https://files.pythonhosted.org/packages/0b/63/69125220e47fd7a3a27fd0de0c6398c89432fec41bc739823bcc66506af6/tomli-2.4.0-cp311-cp311-win32.whl", hash = "sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a", size = 96770, upload-time = "2026-01-11T11:21:52.647Z" }, + { url = "https://files.pythonhosted.org/packages/1e/0d/a22bb6c83f83386b0008425a6cd1fa1c14b5f3dd4bad05e98cf3dbbf4a64/tomli-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa", size = 107626, upload-time = "2026-01-11T11:21:53.459Z" }, + { url = "https://files.pythonhosted.org/packages/2f/6d/77be674a3485e75cacbf2ddba2b146911477bd887dda9d8c9dfb2f15e871/tomli-2.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614", size = 94842, upload-time = "2026-01-11T11:21:54.831Z" }, + { url = "https://files.pythonhosted.org/packages/3c/43/7389a1869f2f26dba52404e1ef13b4784b6b37dac93bac53457e3ff24ca3/tomli-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1", size = 154894, upload-time = "2026-01-11T11:21:56.07Z" }, + { url = "https://files.pythonhosted.org/packages/e9/05/2f9bf110b5294132b2edf13fe6ca6ae456204f3d749f623307cbb7a946f2/tomli-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8", size = 149053, upload-time = "2026-01-11T11:21:57.467Z" }, + { url = "https://files.pythonhosted.org/packages/e8/41/1eda3ca1abc6f6154a8db4d714a4d35c4ad90adc0bcf700657291593fbf3/tomli-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a", size = 243481, upload-time = "2026-01-11T11:21:58.661Z" }, + { url = "https://files.pythonhosted.org/packages/d2/6d/02ff5ab6c8868b41e7d4b987ce2b5f6a51d3335a70aa144edd999e055a01/tomli-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1", size = 251720, upload-time = "2026-01-11T11:22:00.178Z" }, + { url = "https://files.pythonhosted.org/packages/7b/57/0405c59a909c45d5b6f146107c6d997825aa87568b042042f7a9c0afed34/tomli-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b", size = 247014, upload-time = "2026-01-11T11:22:01.238Z" }, + { url = "https://files.pythonhosted.org/packages/2c/0e/2e37568edd944b4165735687cbaf2fe3648129e440c26d02223672ee0630/tomli-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51", size = 251820, upload-time = "2026-01-11T11:22:02.727Z" }, + { url = "https://files.pythonhosted.org/packages/5a/1c/ee3b707fdac82aeeb92d1a113f803cf6d0f37bdca0849cb489553e1f417a/tomli-2.4.0-cp312-cp312-win32.whl", hash = "sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729", size = 97712, upload-time = "2026-01-11T11:22:03.777Z" }, + { url = "https://files.pythonhosted.org/packages/69/13/c07a9177d0b3bab7913299b9278845fc6eaaca14a02667c6be0b0a2270c8/tomli-2.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da", size = 108296, upload-time = "2026-01-11T11:22:04.86Z" }, + { url = "https://files.pythonhosted.org/packages/18/27/e267a60bbeeee343bcc279bb9e8fbed0cbe224bc7b2a3dc2975f22809a09/tomli-2.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3", size = 94553, upload-time = "2026-01-11T11:22:05.854Z" }, + { url = "https://files.pythonhosted.org/packages/34/91/7f65f9809f2936e1f4ce6268ae1903074563603b2a2bd969ebbda802744f/tomli-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0", size = 154915, upload-time = "2026-01-11T11:22:06.703Z" }, + { url = "https://files.pythonhosted.org/packages/20/aa/64dd73a5a849c2e8f216b755599c511badde80e91e9bc2271baa7b2cdbb1/tomli-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e", size = 149038, upload-time = "2026-01-11T11:22:07.56Z" }, + { url = "https://files.pythonhosted.org/packages/9e/8a/6d38870bd3d52c8d1505ce054469a73f73a0fe62c0eaf5dddf61447e32fa/tomli-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4", size = 242245, upload-time = "2026-01-11T11:22:08.344Z" }, + { url = "https://files.pythonhosted.org/packages/59/bb/8002fadefb64ab2669e5b977df3f5e444febea60e717e755b38bb7c41029/tomli-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e", size = 250335, upload-time = "2026-01-11T11:22:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/a5/3d/4cdb6f791682b2ea916af2de96121b3cb1284d7c203d97d92d6003e91c8d/tomli-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c", size = 245962, upload-time = "2026-01-11T11:22:11.27Z" }, + { url = "https://files.pythonhosted.org/packages/f2/4a/5f25789f9a460bd858ba9756ff52d0830d825b458e13f754952dd15fb7bb/tomli-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f", size = 250396, upload-time = "2026-01-11T11:22:12.325Z" }, + { url = "https://files.pythonhosted.org/packages/aa/2f/b73a36fea58dfa08e8b3a268750e6853a6aac2a349241a905ebd86f3047a/tomli-2.4.0-cp313-cp313-win32.whl", hash = "sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86", size = 97530, upload-time = "2026-01-11T11:22:13.865Z" }, + { url = "https://files.pythonhosted.org/packages/3b/af/ca18c134b5d75de7e8dc551c5234eaba2e8e951f6b30139599b53de9c187/tomli-2.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87", size = 108227, upload-time = "2026-01-11T11:22:15.224Z" }, + { url = "https://files.pythonhosted.org/packages/22/c3/b386b832f209fee8073c8138ec50f27b4460db2fdae9ffe022df89a57f9b/tomli-2.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132", size = 94748, upload-time = "2026-01-11T11:22:16.009Z" }, + { url = "https://files.pythonhosted.org/packages/23/d1/136eb2cb77520a31e1f64cbae9d33ec6df0d78bdf4160398e86eec8a8754/tomli-2.4.0-py3-none-any.whl", hash = "sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a", size = 14477, upload-time = "2026-01-11T11:22:37.446Z" }, ] [[package]] name = "tomlkit" version = "0.15.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/db/03eaf4331631ef6b27d6e3c9b68c54dc6f0d63d87201fed600cc409307fd/tomlkit-0.15.0.tar.gz", hash = "sha256:7d1a9ecba3086638211b13814ea79c90dd54dd11993564376f3aa92271f5c7a3", size = 161875, upload_time = "2026-05-10T07:38:22.245Z" } +sdist = { url = "https://files.pythonhosted.org/packages/51/db/03eaf4331631ef6b27d6e3c9b68c54dc6f0d63d87201fed600cc409307fd/tomlkit-0.15.0.tar.gz", hash = "sha256:7d1a9ecba3086638211b13814ea79c90dd54dd11993564376f3aa92271f5c7a3", size = 161875, upload-time = "2026-05-10T07:38:22.245Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/43/8bd850ee71a191bf072e31302c73a66be413fecdd98fdcd111ecbcce13ca/tomlkit-0.15.0-py3-none-any.whl", hash = "sha256:4dbc8f0fc024412b57ced8757ac7461305126a648ff8c2c807fcb8e133a78738", size = 41328, upload_time = "2026-05-10T07:38:23.517Z" }, + { url = "https://files.pythonhosted.org/packages/6a/43/8bd850ee71a191bf072e31302c73a66be413fecdd98fdcd111ecbcce13ca/tomlkit-0.15.0-py3-none-any.whl", hash = "sha256:4dbc8f0fc024412b57ced8757ac7461305126a648ff8c2c807fcb8e133a78738", size = 41328, upload-time = "2026-05-10T07:38:23.517Z" }, ] [[package]] @@ -4643,11 +4693,11 @@ dependencies = [ { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, ] wheels = [ - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:91209c7d8a2460b76e8ff5b28b7623da4ab1d27474b79e1de83e954871985afe", upload_time = "2026-03-23T15:16:50Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d75eadcd97fe0dc7cd0eedc4d72152484c19cb2cfe46ce55766c8e129116425f", upload_time = "2026-03-23T15:16:54Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:43b35116802c85fb88d99f4a396b8bd4472bfca1dd82e69499e5a4f9b8b4e252", upload_time = "2026-03-23T15:16:58Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:442ec9dc78592564fdad69cf0beaa9da2f82ab810ccb4f13903869a90bf3f15d", upload_time = "2026-03-23T15:17:02Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cc3a195701bba2239c313ee311487f80f8aaebe9e89b9073dddbcf2f93b5a0ba", upload_time = "2026-03-23T15:17:06Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:91209c7d8a2460b76e8ff5b28b7623da4ab1d27474b79e1de83e954871985afe", upload-time = "2026-03-23T15:16:50Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d75eadcd97fe0dc7cd0eedc4d72152484c19cb2cfe46ce55766c8e129116425f", upload-time = "2026-03-23T15:16:54Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:43b35116802c85fb88d99f4a396b8bd4472bfca1dd82e69499e5a4f9b8b4e252", upload-time = "2026-03-23T15:16:58Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:442ec9dc78592564fdad69cf0beaa9da2f82ab810ccb4f13903869a90bf3f15d", upload-time = "2026-03-23T15:17:02Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cc3a195701bba2239c313ee311487f80f8aaebe9e89b9073dddbcf2f93b5a0ba", upload-time = "2026-03-23T15:17:06Z" }, ] [[package]] @@ -4674,26 +4724,26 @@ dependencies = [ { name = "typing-extensions", marker = "sys_platform != 'darwin'" }, ] wheels = [ - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp310-cp310-linux_s390x.whl", hash = "sha256:3d8a7789e61dbf11f8922672c43354614b9b0debd40899c0a94f1ad9e0bd6bd9", upload_time = "2026-04-27T21:55:13Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c7dbae3a5cd0a4a3eab760742b9be3bd79282259488cf83176197cef31ce1610", upload_time = "2026-04-27T21:55:20Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:f378df648bf7fb94bbc820dfec37d3d346bd1703c692a2215edebf6edcef8b75", upload_time = "2026-04-27T21:55:27Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp310-cp310-win_amd64.whl", hash = "sha256:fe708aa0c1df5cce9962df806065534ae9af5eb29ee6145a705176266427c931", upload_time = "2026-04-27T21:55:35Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp311-cp311-linux_s390x.whl", hash = "sha256:5214b203ee187f8746c66f1378b72611b7c1e15c5cb325037541899e705ea24e", upload_time = "2026-04-27T21:55:40Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:46fbb0aa257bb781efbfad648f5b045c0e232573b661f1461593db61342e9096", upload_time = "2026-04-28T00:05:38Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8a56a8c95531ef0e454510ba8bbd9d11dc7a9000337265210b10f6bfeacdd485", upload_time = "2026-04-28T00:05:47Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp311-cp311-win_amd64.whl", hash = "sha256:51a221769d4a316f4b47a786c12e67c3f4807db8ed13c7b8817ebe73786acbbc", upload_time = "2026-04-28T00:06:00Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp312-cp312-linux_s390x.whl", hash = "sha256:2db3ae5404e32cb42b5fcbd94f13607761eaec0cf1687fde95095289d1e26cfb", upload_time = "2026-04-28T00:06:06Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:70ecb2659af6373b7c5336e692e665605b0201ea21ff51aaea47e1d75ea6b5aa", upload_time = "2026-04-28T00:06:14Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f82e2ae20c1545bb03997d1cc3143d94e14b800038669ee1aca45808a9acc338", upload_time = "2026-04-28T00:06:24Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:1abeaa46fa7532ed35ed79146f4de5d7a9d4b30462c98052ea4ddfe781ea3eca", upload_time = "2026-04-28T00:06:34Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313-linux_s390x.whl", hash = "sha256:d1eff25ccc454faf21c9666c81bfab8e405e87c12d300708d4559620bc191a36", upload_time = "2026-04-28T00:06:42Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:48b3e21a311445acdd0b27f13830e21d93adef70d4721e051e9f059baeb9b8f9", upload_time = "2026-04-28T00:06:51Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:45025d7752dbc6b4c784c03afaee9c5f19730ce084b2e43fc9a2fe1677d9ff86", upload_time = "2026-04-28T00:07:02Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:ed70d4a4fc9f8b826c02fa1a9800a83820fb2fa6ae607680b53390f9ef394d85", upload_time = "2026-04-28T00:07:12Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313t-linux_s390x.whl", hash = "sha256:65d427a196ab0abe359b93c5bffedd76ded02df2b1b1d2d9f11a2609b69f426a", upload_time = "2026-04-28T00:07:19Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8f13dc7075ae04ca5f876a9f40b4e47522a04c23e30824b4409f42a3f3e57aa4", upload_time = "2026-04-28T00:07:27Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:8713bb8679376ea0ec25742100b6cfb8447e0904c48bddefb9eb0ac1abbfa60a", upload_time = "2026-04-28T00:07:37Z" }, - { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:62ec1f1694c185f601eab74eb7fc0e8e10c64c06ae82f13c3592774c231c4877", upload_time = "2026-04-28T00:07:47Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp310-cp310-linux_s390x.whl", hash = "sha256:3d8a7789e61dbf11f8922672c43354614b9b0debd40899c0a94f1ad9e0bd6bd9", upload-time = "2026-04-27T21:55:13Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c7dbae3a5cd0a4a3eab760742b9be3bd79282259488cf83176197cef31ce1610", upload-time = "2026-04-27T21:55:20Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:f378df648bf7fb94bbc820dfec37d3d346bd1703c692a2215edebf6edcef8b75", upload-time = "2026-04-27T21:55:27Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp310-cp310-win_amd64.whl", hash = "sha256:fe708aa0c1df5cce9962df806065534ae9af5eb29ee6145a705176266427c931", upload-time = "2026-04-27T21:55:35Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp311-cp311-linux_s390x.whl", hash = "sha256:5214b203ee187f8746c66f1378b72611b7c1e15c5cb325037541899e705ea24e", upload-time = "2026-04-27T21:55:40Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:46fbb0aa257bb781efbfad648f5b045c0e232573b661f1461593db61342e9096", upload-time = "2026-04-28T00:05:38Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8a56a8c95531ef0e454510ba8bbd9d11dc7a9000337265210b10f6bfeacdd485", upload-time = "2026-04-28T00:05:47Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp311-cp311-win_amd64.whl", hash = "sha256:51a221769d4a316f4b47a786c12e67c3f4807db8ed13c7b8817ebe73786acbbc", upload-time = "2026-04-28T00:06:00Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp312-cp312-linux_s390x.whl", hash = "sha256:2db3ae5404e32cb42b5fcbd94f13607761eaec0cf1687fde95095289d1e26cfb", upload-time = "2026-04-28T00:06:06Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:70ecb2659af6373b7c5336e692e665605b0201ea21ff51aaea47e1d75ea6b5aa", upload-time = "2026-04-28T00:06:14Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f82e2ae20c1545bb03997d1cc3143d94e14b800038669ee1aca45808a9acc338", upload-time = "2026-04-28T00:06:24Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:1abeaa46fa7532ed35ed79146f4de5d7a9d4b30462c98052ea4ddfe781ea3eca", upload-time = "2026-04-28T00:06:34Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313-linux_s390x.whl", hash = "sha256:d1eff25ccc454faf21c9666c81bfab8e405e87c12d300708d4559620bc191a36", upload-time = "2026-04-28T00:06:42Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:48b3e21a311445acdd0b27f13830e21d93adef70d4721e051e9f059baeb9b8f9", upload-time = "2026-04-28T00:06:51Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:45025d7752dbc6b4c784c03afaee9c5f19730ce084b2e43fc9a2fe1677d9ff86", upload-time = "2026-04-28T00:07:02Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:ed70d4a4fc9f8b826c02fa1a9800a83820fb2fa6ae607680b53390f9ef394d85", upload-time = "2026-04-28T00:07:12Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313t-linux_s390x.whl", hash = "sha256:65d427a196ab0abe359b93c5bffedd76ded02df2b1b1d2d9f11a2609b69f426a", upload-time = "2026-04-28T00:07:19Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8f13dc7075ae04ca5f876a9f40b4e47522a04c23e30824b4409f42a3f3e57aa4", upload-time = "2026-04-28T00:07:27Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:8713bb8679376ea0ec25742100b6cfb8447e0904c48bddefb9eb0ac1abbfa60a", upload-time = "2026-04-28T00:07:37Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:62ec1f1694c185f601eab74eb7fc0e8e10c64c06ae82f13c3592774c231c4877", upload-time = "2026-04-28T00:07:47Z" }, ] [[package]] @@ -4703,9 +4753,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/09/a9/6ba95a270c6f1fbcd8dac228323f2777d886cb206987444e4bce66338dd4/tqdm-4.67.3.tar.gz", hash = "sha256:7d825f03f89244ef73f1d4ce193cb1774a8179fd96f31d7e1dcde62092b960bb", size = 169598, upload_time = "2026-02-03T17:35:53.048Z" } +sdist = { url = "https://files.pythonhosted.org/packages/09/a9/6ba95a270c6f1fbcd8dac228323f2777d886cb206987444e4bce66338dd4/tqdm-4.67.3.tar.gz", hash = "sha256:7d825f03f89244ef73f1d4ce193cb1774a8179fd96f31d7e1dcde62092b960bb", size = 169598, upload-time = "2026-02-03T17:35:53.048Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/16/e1/3079a9ff9b8e11b846c6ac5c8b5bfb7ff225eee721825310c91b3b50304f/tqdm-4.67.3-py3-none-any.whl", hash = "sha256:ee1e4c0e59148062281c49d80b25b67771a127c85fc9676d3be5f243206826bf", size = 78374, upload_time = "2026-02-03T17:35:50.982Z" }, + { url = "https://files.pythonhosted.org/packages/16/e1/3079a9ff9b8e11b846c6ac5c8b5bfb7ff225eee721825310c91b3b50304f/tqdm-4.67.3-py3-none-any.whl", hash = "sha256:ee1e4c0e59148062281c49d80b25b67771a127c85fc9676d3be5f243206826bf", size = 78374, upload-time = "2026-02-03T17:35:50.982Z" }, ] [[package]] @@ -4724,9 +4774,9 @@ dependencies = [ { name = "tqdm" }, { name = "typer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f2/36/390075693b76d4fb4a2bea360fb6080347763bd1f1147c49ed0ed938778c/transformers-5.8.0.tar.gz", hash = "sha256:6cc9a1f0291d16b1c1b735bad775e78ebefff7722701d4e28f98aaaa2bd6fb91", size = 8528141, upload_time = "2026-05-05T16:50:04.778Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/36/390075693b76d4fb4a2bea360fb6080347763bd1f1147c49ed0ed938778c/transformers-5.8.0.tar.gz", hash = "sha256:6cc9a1f0291d16b1c1b735bad775e78ebefff7722701d4e28f98aaaa2bd6fb91", size = 8528141, upload-time = "2026-05-05T16:50:04.778Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/97/7b/5621d08b34ac35deb9fa14b58d27d124d21ef125ee1c64bc724ca47dfb63/transformers-5.8.0-py3-none-any.whl", hash = "sha256:e9d2cae6d195a7e1e05164c5ebf26142a7044e4dc4267274f4809204f92827e4", size = 10630279, upload_time = "2026-05-05T16:50:01.026Z" }, + { url = "https://files.pythonhosted.org/packages/97/7b/5621d08b34ac35deb9fa14b58d27d124d21ef125ee1c64bc724ca47dfb63/transformers-5.8.0-py3-none-any.whl", hash = "sha256:e9d2cae6d195a7e1e05164c5ebf26142a7044e4dc4267274f4809204f92827e4", size = 10630279, upload-time = "2026-05-05T16:50:01.026Z" }, ] [[package]] @@ -4739,9 +4789,9 @@ dependencies = [ { name = "shellingham" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/21/ca/950278884e2ca20547ff3eb109478c6baf6b8cf219318e6bc4f666fad8e8/typer-0.19.2.tar.gz", hash = "sha256:9ad824308ded0ad06cc716434705f691d4ee0bfd0fb081839d2e426860e7fdca", size = 104755, upload_time = "2025-09-23T09:47:48.256Z" } +sdist = { url = "https://files.pythonhosted.org/packages/21/ca/950278884e2ca20547ff3eb109478c6baf6b8cf219318e6bc4f666fad8e8/typer-0.19.2.tar.gz", hash = "sha256:9ad824308ded0ad06cc716434705f691d4ee0bfd0fb081839d2e426860e7fdca", size = 104755, upload-time = "2025-09-23T09:47:48.256Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/22/35617eee79080a5d071d0f14ad698d325ee6b3bf824fc0467c03b30e7fa8/typer-0.19.2-py3-none-any.whl", hash = "sha256:755e7e19670ffad8283db353267cb81ef252f595aa6834a0d1ca9312d9326cb9", size = 46748, upload_time = "2025-09-23T09:47:46.777Z" }, + { url = "https://files.pythonhosted.org/packages/00/22/35617eee79080a5d071d0f14ad698d325ee6b3bf824fc0467c03b30e7fa8/typer-0.19.2-py3-none-any.whl", hash = "sha256:755e7e19670ffad8283db353267cb81ef252f595aa6834a0d1ca9312d9326cb9", size = 46748, upload-time = "2025-09-23T09:47:46.777Z" }, ] [[package]] @@ -4752,27 +4802,27 @@ dependencies = [ { name = "annotated-doc" }, { name = "click" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a5/ca/0d9d822fd8a4c7e830cba36a2557b070d4b4a9558a0460377a61f8fb315d/typer_slim-0.21.2.tar.gz", hash = "sha256:78f20d793036a62aaf9c3798306142b08261d4b2a941c6e463081239f062a2f9", size = 120497, upload_time = "2026-02-10T19:33:45.836Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/ca/0d9d822fd8a4c7e830cba36a2557b070d4b4a9558a0460377a61f8fb315d/typer_slim-0.21.2.tar.gz", hash = "sha256:78f20d793036a62aaf9c3798306142b08261d4b2a941c6e463081239f062a2f9", size = 120497, upload-time = "2026-02-10T19:33:45.836Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/03/e09325cfc40a33a82b31ba1a3f1d97e85246736856a45a43b19fcb48b1c2/typer_slim-0.21.2-py3-none-any.whl", hash = "sha256:4705082bb6c66c090f60e47c8be09a93158c139ce0aa98df7c6c47e723395e5f", size = 56790, upload_time = "2026-02-10T19:33:47.221Z" }, + { url = "https://files.pythonhosted.org/packages/54/03/e09325cfc40a33a82b31ba1a3f1d97e85246736856a45a43b19fcb48b1c2/typer_slim-0.21.2-py3-none-any.whl", hash = "sha256:4705082bb6c66c090f60e47c8be09a93158c139ce0aa98df7c6c47e723395e5f", size = 56790, upload-time = "2026-02-10T19:33:47.221Z" }, ] [[package]] name = "types-passlib" version = "1.7.7.20260211" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b5/f4/718ff8cbef9366e597aefd58929321702d3e183998cea89949ab5423281f/types_passlib-1.7.7.20260211.tar.gz", hash = "sha256:af73afffe1ce94c95c7f6072bd261572c29845de74fdffa3a265fc7634bca056", size = 25666, upload_time = "2026-02-10T15:11:59.517Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/f4/718ff8cbef9366e597aefd58929321702d3e183998cea89949ab5423281f/types_passlib-1.7.7.20260211.tar.gz", hash = "sha256:af73afffe1ce94c95c7f6072bd261572c29845de74fdffa3a265fc7634bca056", size = 25666, upload-time = "2026-02-10T15:11:59.517Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/14/6a/e9fc6a5b8f9a380a4a56b9f1e4dba5c6899561868017b17f6de382808b6f/types_passlib-1.7.7.20260211-py3-none-any.whl", hash = "sha256:c0f1ad440c513a6c07f333b28249530686056fd54a7b3ac6128ae31fd46305d3", size = 40457, upload_time = "2026-02-10T15:11:58.647Z" }, + { url = "https://files.pythonhosted.org/packages/14/6a/e9fc6a5b8f9a380a4a56b9f1e4dba5c6899561868017b17f6de382808b6f/types_passlib-1.7.7.20260211-py3-none-any.whl", hash = "sha256:c0f1ad440c513a6c07f333b28249530686056fd54a7b3ac6128ae31fd46305d3", size = 40457, upload-time = "2026-02-10T15:11:58.647Z" }, ] [[package]] name = "typing-extensions" version = "4.15.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload_time = "2025-08-25T13:49:26.313Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload_time = "2025-08-25T13:49:24.86Z" }, + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, ] [[package]] @@ -4782,65 +4832,65 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload_time = "2025-10-01T02:14:41.687Z" } +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload_time = "2025-10-01T02:14:40.154Z" }, + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, ] [[package]] name = "tzdata" version = "2025.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5e/a7/c202b344c5ca7daf398f3b8a477eeb205cf3b6f32e7ec3a6bac0629ca975/tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7", size = 196772, upload_time = "2025-12-13T17:45:35.667Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/a7/c202b344c5ca7daf398f3b8a477eeb205cf3b6f32e7ec3a6bac0629ca975/tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7", size = 196772, upload-time = "2025-12-13T17:45:35.667Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1", size = 348521, upload_time = "2025-12-13T17:45:33.889Z" }, + { url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1", size = 348521, upload-time = "2025-12-13T17:45:33.889Z" }, ] [[package]] name = "uri-template" version = "1.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678, upload_time = "2023-06-21T01:49:05.374Z" } +sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678, upload-time = "2023-06-21T01:49:05.374Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload_time = "2023-06-21T01:49:03.467Z" }, + { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload-time = "2023-06-21T01:49:03.467Z" }, ] [[package]] name = "urllib3" version = "2.6.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload_time = "2026-01-07T16:24:43.925Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload_time = "2026-01-07T16:24:42.685Z" }, + { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, ] [[package]] name = "uuid-utils" version = "0.14.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/57/7c/3a926e847516e67bc6838634f2e54e24381105b4e80f9338dc35cca0086b/uuid_utils-0.14.0.tar.gz", hash = "sha256:fc5bac21e9933ea6c590433c11aa54aaca599f690c08069e364eb13a12f670b4", size = 22072, upload_time = "2026-01-20T20:37:15.729Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/42/42d003f4a99ddc901eef2fd41acb3694163835e037fb6dde79ad68a72342/uuid_utils-0.14.0-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:f6695c0bed8b18a904321e115afe73b34444bc8451d0ce3244a1ec3b84deb0e5", size = 601786, upload_time = "2026-01-20T20:37:09.843Z" }, - { url = "https://files.pythonhosted.org/packages/96/e6/775dfb91f74b18f7207e3201eb31ee666d286579990dc69dd50db2d92813/uuid_utils-0.14.0-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:4f0a730bbf2d8bb2c11b93e1005e91769f2f533fa1125ed1f00fd15b6fcc732b", size = 303943, upload_time = "2026-01-20T20:37:18.767Z" }, - { url = "https://files.pythonhosted.org/packages/17/82/ea5f5e85560b08a1f30cdc65f75e76494dc7aba9773f679e7eaa27370229/uuid_utils-0.14.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40ce3fd1a4fdedae618fc3edc8faf91897012469169d600133470f49fd699ed3", size = 340467, upload_time = "2026-01-20T20:37:11.794Z" }, - { url = "https://files.pythonhosted.org/packages/ca/33/54b06415767f4569882e99b6470c6c8eeb97422686a6d432464f9967fd91/uuid_utils-0.14.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:09ae4a98416a440e78f7d9543d11b11cae4bab538b7ed94ec5da5221481748f2", size = 346333, upload_time = "2026-01-20T20:37:12.818Z" }, - { url = "https://files.pythonhosted.org/packages/cb/10/a6bce636b8f95e65dc84bf4a58ce8205b8e0a2a300a38cdbc83a3f763d27/uuid_utils-0.14.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:971e8c26b90d8ae727e7f2ac3ee23e265971d448b3672882f2eb44828b2b8c3e", size = 470859, upload_time = "2026-01-20T20:37:01.512Z" }, - { url = "https://files.pythonhosted.org/packages/8a/27/84121c51ea72f013f0e03d0886bcdfa96b31c9b83c98300a7bd5cc4fa191/uuid_utils-0.14.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5cde1fa82804a8f9d2907b7aec2009d440062c63f04abbdb825fce717a5e860", size = 341988, upload_time = "2026-01-20T20:37:22.881Z" }, - { url = "https://files.pythonhosted.org/packages/90/a4/01c1c7af5e6a44f20b40183e8dac37d6ed83e7dc9e8df85370a15959b804/uuid_utils-0.14.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c7343862a2359e0bd48a7f3dfb5105877a1728677818bb694d9f40703264a2db", size = 365784, upload_time = "2026-01-20T20:37:10.808Z" }, - { url = "https://files.pythonhosted.org/packages/04/f0/65ee43ec617b8b6b1bf2a5aecd56a069a08cca3d9340c1de86024331bde3/uuid_utils-0.14.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c51e4818fdb08ccec12dc7083a01f49507b4608770a0ab22368001685d59381b", size = 523750, upload_time = "2026-01-20T20:37:06.152Z" }, - { url = "https://files.pythonhosted.org/packages/95/d3/6bf503e3f135a5dfe705a65e6f89f19bccd55ac3fb16cb5d3ec5ba5388b8/uuid_utils-0.14.0-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:181bbcccb6f93d80a8504b5bd47b311a1c31395139596edbc47b154b0685b533", size = 615818, upload_time = "2026-01-20T20:37:21.816Z" }, - { url = "https://files.pythonhosted.org/packages/df/6c/99937dd78d07f73bba831c8dc9469dfe4696539eba2fc269ae1b92752f9e/uuid_utils-0.14.0-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:5c8ae96101c3524ba8dbf762b6f05e9e9d896544786c503a727c5bf5cb9af1a7", size = 580831, upload_time = "2026-01-20T20:37:19.691Z" }, - { url = "https://files.pythonhosted.org/packages/44/fa/bbc9e2c25abd09a293b9b097a0d8fc16acd6a92854f0ec080f1ea7ad8bb3/uuid_utils-0.14.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:00ac3c6edfdaff7e1eed041f4800ae09a3361287be780d7610a90fdcde9befdc", size = 546333, upload_time = "2026-01-20T20:37:03.117Z" }, - { url = "https://files.pythonhosted.org/packages/e7/9b/e5e99b324b1b5f0c62882230455786df0bc66f67eff3b452447e703f45d2/uuid_utils-0.14.0-cp39-abi3-win32.whl", hash = "sha256:ec2fd80adf8e0e6589d40699e6f6df94c93edcc16dd999be0438dd007c77b151", size = 177319, upload_time = "2026-01-20T20:37:04.208Z" }, - { url = "https://files.pythonhosted.org/packages/d3/28/2c7d417ea483b6ff7820c948678fdf2ac98899dc7e43bb15852faa95acaf/uuid_utils-0.14.0-cp39-abi3-win_amd64.whl", hash = "sha256:efe881eb43a5504fad922644cb93d725fd8a6a6d949bd5a4b4b7d1a1587c7fd1", size = 182566, upload_time = "2026-01-20T20:37:16.868Z" }, - { url = "https://files.pythonhosted.org/packages/b8/86/49e4bdda28e962fbd7266684171ee29b3d92019116971d58783e51770745/uuid_utils-0.14.0-cp39-abi3-win_arm64.whl", hash = "sha256:32b372b8fd4ebd44d3a219e093fe981af4afdeda2994ee7db208ab065cfcd080", size = 182809, upload_time = "2026-01-20T20:37:05.139Z" }, - { url = "https://files.pythonhosted.org/packages/f1/03/1f1146e32e94d1f260dfabc81e1649102083303fb4ad549775c943425d9a/uuid_utils-0.14.0-pp311-pypy311_pp73-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:762e8d67992ac4d2454e24a141a1c82142b5bde10409818c62adbe9924ebc86d", size = 587430, upload_time = "2026-01-20T20:37:24.998Z" }, - { url = "https://files.pythonhosted.org/packages/87/ba/d5a7469362594d885fd9219fe9e851efbe65101d3ef1ef25ea321d7ce841/uuid_utils-0.14.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:40be5bf0b13aa849d9062abc86c198be6a25ff35316ce0b89fc25f3bac6d525e", size = 298106, upload_time = "2026-01-20T20:37:23.896Z" }, - { url = "https://files.pythonhosted.org/packages/8a/11/3dafb2a5502586f59fd49e93f5802cd5face82921b3a0f3abb5f357cb879/uuid_utils-0.14.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:191a90a6f3940d1b7322b6e6cceff4dd533c943659e0a15f788674407856a515", size = 333423, upload_time = "2026-01-20T20:37:17.828Z" }, - { url = "https://files.pythonhosted.org/packages/7c/f2/c8987663f0cdcf4d717a36d85b5db2a5589df0a4e129aa10f16f4380ef48/uuid_utils-0.14.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4aa4525f4ad82f9d9c842f9a3703f1539c1808affbaec07bb1b842f6b8b96aa5", size = 338659, upload_time = "2026-01-20T20:37:14.286Z" }, - { url = "https://files.pythonhosted.org/packages/d1/c8/929d81665d83f0b2ffaecb8e66c3091a50f62c7cb5b65e678bd75a96684e/uuid_utils-0.14.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdbd82ff20147461caefc375551595ecf77ebb384e46267f128aca45a0f2cdfc", size = 467029, upload_time = "2026-01-20T20:37:08.277Z" }, - { url = "https://files.pythonhosted.org/packages/8e/a0/27d7daa1bfed7163f4ccaf52d7d2f4ad7bb1002a85b45077938b91ee584f/uuid_utils-0.14.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eff57e8a5d540006ce73cf0841a643d445afe78ba12e75ac53a95ca2924a56be", size = 333298, upload_time = "2026-01-20T20:37:07.271Z" }, - { url = "https://files.pythonhosted.org/packages/63/d4/acad86ce012b42ce18a12f31ee2aa3cbeeb98664f865f05f68c882945913/uuid_utils-0.14.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3fd9112ca96978361201e669729784f26c71fecc9c13a7f8a07162c31bd4d1e2", size = 359217, upload_time = "2026-01-20T20:36:59.687Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/57/7c/3a926e847516e67bc6838634f2e54e24381105b4e80f9338dc35cca0086b/uuid_utils-0.14.0.tar.gz", hash = "sha256:fc5bac21e9933ea6c590433c11aa54aaca599f690c08069e364eb13a12f670b4", size = 22072, upload-time = "2026-01-20T20:37:15.729Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/42/42d003f4a99ddc901eef2fd41acb3694163835e037fb6dde79ad68a72342/uuid_utils-0.14.0-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:f6695c0bed8b18a904321e115afe73b34444bc8451d0ce3244a1ec3b84deb0e5", size = 601786, upload-time = "2026-01-20T20:37:09.843Z" }, + { url = "https://files.pythonhosted.org/packages/96/e6/775dfb91f74b18f7207e3201eb31ee666d286579990dc69dd50db2d92813/uuid_utils-0.14.0-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:4f0a730bbf2d8bb2c11b93e1005e91769f2f533fa1125ed1f00fd15b6fcc732b", size = 303943, upload-time = "2026-01-20T20:37:18.767Z" }, + { url = "https://files.pythonhosted.org/packages/17/82/ea5f5e85560b08a1f30cdc65f75e76494dc7aba9773f679e7eaa27370229/uuid_utils-0.14.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40ce3fd1a4fdedae618fc3edc8faf91897012469169d600133470f49fd699ed3", size = 340467, upload-time = "2026-01-20T20:37:11.794Z" }, + { url = "https://files.pythonhosted.org/packages/ca/33/54b06415767f4569882e99b6470c6c8eeb97422686a6d432464f9967fd91/uuid_utils-0.14.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:09ae4a98416a440e78f7d9543d11b11cae4bab538b7ed94ec5da5221481748f2", size = 346333, upload-time = "2026-01-20T20:37:12.818Z" }, + { url = "https://files.pythonhosted.org/packages/cb/10/a6bce636b8f95e65dc84bf4a58ce8205b8e0a2a300a38cdbc83a3f763d27/uuid_utils-0.14.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:971e8c26b90d8ae727e7f2ac3ee23e265971d448b3672882f2eb44828b2b8c3e", size = 470859, upload-time = "2026-01-20T20:37:01.512Z" }, + { url = "https://files.pythonhosted.org/packages/8a/27/84121c51ea72f013f0e03d0886bcdfa96b31c9b83c98300a7bd5cc4fa191/uuid_utils-0.14.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5cde1fa82804a8f9d2907b7aec2009d440062c63f04abbdb825fce717a5e860", size = 341988, upload-time = "2026-01-20T20:37:22.881Z" }, + { url = "https://files.pythonhosted.org/packages/90/a4/01c1c7af5e6a44f20b40183e8dac37d6ed83e7dc9e8df85370a15959b804/uuid_utils-0.14.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c7343862a2359e0bd48a7f3dfb5105877a1728677818bb694d9f40703264a2db", size = 365784, upload-time = "2026-01-20T20:37:10.808Z" }, + { url = "https://files.pythonhosted.org/packages/04/f0/65ee43ec617b8b6b1bf2a5aecd56a069a08cca3d9340c1de86024331bde3/uuid_utils-0.14.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c51e4818fdb08ccec12dc7083a01f49507b4608770a0ab22368001685d59381b", size = 523750, upload-time = "2026-01-20T20:37:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/95/d3/6bf503e3f135a5dfe705a65e6f89f19bccd55ac3fb16cb5d3ec5ba5388b8/uuid_utils-0.14.0-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:181bbcccb6f93d80a8504b5bd47b311a1c31395139596edbc47b154b0685b533", size = 615818, upload-time = "2026-01-20T20:37:21.816Z" }, + { url = "https://files.pythonhosted.org/packages/df/6c/99937dd78d07f73bba831c8dc9469dfe4696539eba2fc269ae1b92752f9e/uuid_utils-0.14.0-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:5c8ae96101c3524ba8dbf762b6f05e9e9d896544786c503a727c5bf5cb9af1a7", size = 580831, upload-time = "2026-01-20T20:37:19.691Z" }, + { url = "https://files.pythonhosted.org/packages/44/fa/bbc9e2c25abd09a293b9b097a0d8fc16acd6a92854f0ec080f1ea7ad8bb3/uuid_utils-0.14.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:00ac3c6edfdaff7e1eed041f4800ae09a3361287be780d7610a90fdcde9befdc", size = 546333, upload-time = "2026-01-20T20:37:03.117Z" }, + { url = "https://files.pythonhosted.org/packages/e7/9b/e5e99b324b1b5f0c62882230455786df0bc66f67eff3b452447e703f45d2/uuid_utils-0.14.0-cp39-abi3-win32.whl", hash = "sha256:ec2fd80adf8e0e6589d40699e6f6df94c93edcc16dd999be0438dd007c77b151", size = 177319, upload-time = "2026-01-20T20:37:04.208Z" }, + { url = "https://files.pythonhosted.org/packages/d3/28/2c7d417ea483b6ff7820c948678fdf2ac98899dc7e43bb15852faa95acaf/uuid_utils-0.14.0-cp39-abi3-win_amd64.whl", hash = "sha256:efe881eb43a5504fad922644cb93d725fd8a6a6d949bd5a4b4b7d1a1587c7fd1", size = 182566, upload-time = "2026-01-20T20:37:16.868Z" }, + { url = "https://files.pythonhosted.org/packages/b8/86/49e4bdda28e962fbd7266684171ee29b3d92019116971d58783e51770745/uuid_utils-0.14.0-cp39-abi3-win_arm64.whl", hash = "sha256:32b372b8fd4ebd44d3a219e093fe981af4afdeda2994ee7db208ab065cfcd080", size = 182809, upload-time = "2026-01-20T20:37:05.139Z" }, + { url = "https://files.pythonhosted.org/packages/f1/03/1f1146e32e94d1f260dfabc81e1649102083303fb4ad549775c943425d9a/uuid_utils-0.14.0-pp311-pypy311_pp73-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:762e8d67992ac4d2454e24a141a1c82142b5bde10409818c62adbe9924ebc86d", size = 587430, upload-time = "2026-01-20T20:37:24.998Z" }, + { url = "https://files.pythonhosted.org/packages/87/ba/d5a7469362594d885fd9219fe9e851efbe65101d3ef1ef25ea321d7ce841/uuid_utils-0.14.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:40be5bf0b13aa849d9062abc86c198be6a25ff35316ce0b89fc25f3bac6d525e", size = 298106, upload-time = "2026-01-20T20:37:23.896Z" }, + { url = "https://files.pythonhosted.org/packages/8a/11/3dafb2a5502586f59fd49e93f5802cd5face82921b3a0f3abb5f357cb879/uuid_utils-0.14.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:191a90a6f3940d1b7322b6e6cceff4dd533c943659e0a15f788674407856a515", size = 333423, upload-time = "2026-01-20T20:37:17.828Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f2/c8987663f0cdcf4d717a36d85b5db2a5589df0a4e129aa10f16f4380ef48/uuid_utils-0.14.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4aa4525f4ad82f9d9c842f9a3703f1539c1808affbaec07bb1b842f6b8b96aa5", size = 338659, upload-time = "2026-01-20T20:37:14.286Z" }, + { url = "https://files.pythonhosted.org/packages/d1/c8/929d81665d83f0b2ffaecb8e66c3091a50f62c7cb5b65e678bd75a96684e/uuid_utils-0.14.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdbd82ff20147461caefc375551595ecf77ebb384e46267f128aca45a0f2cdfc", size = 467029, upload-time = "2026-01-20T20:37:08.277Z" }, + { url = "https://files.pythonhosted.org/packages/8e/a0/27d7daa1bfed7163f4ccaf52d7d2f4ad7bb1002a85b45077938b91ee584f/uuid_utils-0.14.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eff57e8a5d540006ce73cf0841a643d445afe78ba12e75ac53a95ca2924a56be", size = 333298, upload-time = "2026-01-20T20:37:07.271Z" }, + { url = "https://files.pythonhosted.org/packages/63/d4/acad86ce012b42ce18a12f31ee2aa3cbeeb98664f865f05f68c882945913/uuid_utils-0.14.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3fd9112ca96978361201e669729784f26c71fecc9c13a7f8a07162c31bd4d1e2", size = 359217, upload-time = "2026-01-20T20:36:59.687Z" }, ] [[package]] @@ -4852,9 +4902,9 @@ dependencies = [ { name = "h11" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/32/ce/eeb58ae4ac36fe09e3842eb02e0eb676bf2c53ae062b98f1b2531673efdd/uvicorn-0.41.0.tar.gz", hash = "sha256:09d11cf7008da33113824ee5a1c6422d89fbc2ff476540d69a34c87fab8b571a", size = 82633, upload_time = "2026-02-16T23:07:24.1Z" } +sdist = { url = "https://files.pythonhosted.org/packages/32/ce/eeb58ae4ac36fe09e3842eb02e0eb676bf2c53ae062b98f1b2531673efdd/uvicorn-0.41.0.tar.gz", hash = "sha256:09d11cf7008da33113824ee5a1c6422d89fbc2ff476540d69a34c87fab8b571a", size = 82633, upload-time = "2026-02-16T23:07:24.1Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/83/e4/d04a086285c20886c0daad0e026f250869201013d18f81d9ff5eada73a88/uvicorn-0.41.0-py3-none-any.whl", hash = "sha256:29e35b1d2c36a04b9e180d4007ede3bcb32a85fbdfd6c6aeb3f26839de088187", size = 68783, upload_time = "2026-02-16T23:07:22.357Z" }, + { url = "https://files.pythonhosted.org/packages/83/e4/d04a086285c20886c0daad0e026f250869201013d18f81d9ff5eada73a88/uvicorn-0.41.0-py3-none-any.whl", hash = "sha256:29e35b1d2c36a04b9e180d4007ede3bcb32a85fbdfd6c6aeb3f26839de088187", size = 68783, upload-time = "2026-02-16T23:07:22.357Z" }, ] [package.optional-dependencies] @@ -4872,32 +4922,32 @@ standard = [ name = "uvloop" version = "0.22.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/06/f0/18d39dbd1971d6d62c4629cc7fa67f74821b0dc1f5a77af43719de7936a7/uvloop-0.22.1.tar.gz", hash = "sha256:6c84bae345b9147082b17371e3dd5d42775bddce91f885499017f4607fdaf39f", size = 2443250, upload_time = "2025-10-16T22:17:19.342Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/14/ecceb239b65adaaf7fde510aa8bd534075695d1e5f8dadfa32b5723d9cfb/uvloop-0.22.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ef6f0d4cc8a9fa1f6a910230cd53545d9a14479311e87e3cb225495952eb672c", size = 1343335, upload_time = "2025-10-16T22:16:11.43Z" }, - { url = "https://files.pythonhosted.org/packages/ba/ae/6f6f9af7f590b319c94532b9567409ba11f4fa71af1148cab1bf48a07048/uvloop-0.22.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7cd375a12b71d33d46af85a3343b35d98e8116134ba404bd657b3b1d15988792", size = 742903, upload_time = "2025-10-16T22:16:12.979Z" }, - { url = "https://files.pythonhosted.org/packages/09/bd/3667151ad0702282a1f4d5d29288fce8a13c8b6858bf0978c219cd52b231/uvloop-0.22.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ac33ed96229b7790eb729702751c0e93ac5bc3bcf52ae9eccbff30da09194b86", size = 3648499, upload_time = "2025-10-16T22:16:14.451Z" }, - { url = "https://files.pythonhosted.org/packages/b3/f6/21657bb3beb5f8c57ce8be3b83f653dd7933c2fd00545ed1b092d464799a/uvloop-0.22.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:481c990a7abe2c6f4fc3d98781cc9426ebd7f03a9aaa7eb03d3bfc68ac2a46bd", size = 3700133, upload_time = "2025-10-16T22:16:16.272Z" }, - { url = "https://files.pythonhosted.org/packages/09/e0/604f61d004ded805f24974c87ddd8374ef675644f476f01f1df90e4cdf72/uvloop-0.22.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a592b043a47ad17911add5fbd087c76716d7c9ccc1d64ec9249ceafd735f03c2", size = 3512681, upload_time = "2025-10-16T22:16:18.07Z" }, - { url = "https://files.pythonhosted.org/packages/bb/ce/8491fd370b0230deb5eac69c7aae35b3be527e25a911c0acdffb922dc1cd/uvloop-0.22.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1489cf791aa7b6e8c8be1c5a080bae3a672791fcb4e9e12249b05862a2ca9cec", size = 3615261, upload_time = "2025-10-16T22:16:19.596Z" }, - { url = "https://files.pythonhosted.org/packages/c7/d5/69900f7883235562f1f50d8184bb7dd84a2fb61e9ec63f3782546fdbd057/uvloop-0.22.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c60ebcd36f7b240b30788554b6f0782454826a0ed765d8430652621b5de674b9", size = 1352420, upload_time = "2025-10-16T22:16:21.187Z" }, - { url = "https://files.pythonhosted.org/packages/a8/73/c4e271b3bce59724e291465cc936c37758886a4868787da0278b3b56b905/uvloop-0.22.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b7f102bf3cb1995cfeaee9321105e8f5da76fdb104cdad8986f85461a1b7b77", size = 748677, upload_time = "2025-10-16T22:16:22.558Z" }, - { url = "https://files.pythonhosted.org/packages/86/94/9fb7fad2f824d25f8ecac0d70b94d0d48107ad5ece03769a9c543444f78a/uvloop-0.22.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53c85520781d84a4b8b230e24a5af5b0778efdb39142b424990ff1ef7c48ba21", size = 3753819, upload_time = "2025-10-16T22:16:23.903Z" }, - { url = "https://files.pythonhosted.org/packages/74/4f/256aca690709e9b008b7108bc85fba619a2bc37c6d80743d18abad16ee09/uvloop-0.22.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:56a2d1fae65fd82197cb8c53c367310b3eabe1bbb9fb5a04d28e3e3520e4f702", size = 3804529, upload_time = "2025-10-16T22:16:25.246Z" }, - { url = "https://files.pythonhosted.org/packages/7f/74/03c05ae4737e871923d21a76fe28b6aad57f5c03b6e6bfcfa5ad616013e4/uvloop-0.22.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40631b049d5972c6755b06d0bfe8233b1bd9a8a6392d9d1c45c10b6f9e9b2733", size = 3621267, upload_time = "2025-10-16T22:16:26.819Z" }, - { url = "https://files.pythonhosted.org/packages/75/be/f8e590fe61d18b4a92070905497aec4c0e64ae1761498cad09023f3f4b3e/uvloop-0.22.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:535cc37b3a04f6cd2c1ef65fa1d370c9a35b6695df735fcff5427323f2cd5473", size = 3723105, upload_time = "2025-10-16T22:16:28.252Z" }, - { url = "https://files.pythonhosted.org/packages/3d/ff/7f72e8170be527b4977b033239a83a68d5c881cc4775fca255c677f7ac5d/uvloop-0.22.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:fe94b4564e865d968414598eea1a6de60adba0c040ba4ed05ac1300de402cd42", size = 1359936, upload_time = "2025-10-16T22:16:29.436Z" }, - { url = "https://files.pythonhosted.org/packages/c3/c6/e5d433f88fd54d81ef4be58b2b7b0cea13c442454a1db703a1eea0db1a59/uvloop-0.22.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:51eb9bd88391483410daad430813d982010f9c9c89512321f5b60e2cddbdddd6", size = 752769, upload_time = "2025-10-16T22:16:30.493Z" }, - { url = "https://files.pythonhosted.org/packages/24/68/a6ac446820273e71aa762fa21cdcc09861edd3536ff47c5cd3b7afb10eeb/uvloop-0.22.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:700e674a166ca5778255e0e1dc4e9d79ab2acc57b9171b79e65feba7184b3370", size = 4317413, upload_time = "2025-10-16T22:16:31.644Z" }, - { url = "https://files.pythonhosted.org/packages/5f/6f/e62b4dfc7ad6518e7eff2516f680d02a0f6eb62c0c212e152ca708a0085e/uvloop-0.22.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b5b1ac819a3f946d3b2ee07f09149578ae76066d70b44df3fa990add49a82e4", size = 4426307, upload_time = "2025-10-16T22:16:32.917Z" }, - { url = "https://files.pythonhosted.org/packages/90/60/97362554ac21e20e81bcef1150cb2a7e4ffdaf8ea1e5b2e8bf7a053caa18/uvloop-0.22.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e047cc068570bac9866237739607d1313b9253c3051ad84738cbb095be0537b2", size = 4131970, upload_time = "2025-10-16T22:16:34.015Z" }, - { url = "https://files.pythonhosted.org/packages/99/39/6b3f7d234ba3964c428a6e40006340f53ba37993f46ed6e111c6e9141d18/uvloop-0.22.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:512fec6815e2dd45161054592441ef76c830eddaad55c8aa30952e6fe1ed07c0", size = 4296343, upload_time = "2025-10-16T22:16:35.149Z" }, - { url = "https://files.pythonhosted.org/packages/89/8c/182a2a593195bfd39842ea68ebc084e20c850806117213f5a299dfc513d9/uvloop-0.22.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:561577354eb94200d75aca23fbde86ee11be36b00e52a4eaf8f50fb0c86b7705", size = 1358611, upload_time = "2025-10-16T22:16:36.833Z" }, - { url = "https://files.pythonhosted.org/packages/d2/14/e301ee96a6dc95224b6f1162cd3312f6d1217be3907b79173b06785f2fe7/uvloop-0.22.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cdf5192ab3e674ca26da2eada35b288d2fa49fdd0f357a19f0e7c4e7d5077c8", size = 751811, upload_time = "2025-10-16T22:16:38.275Z" }, - { url = "https://files.pythonhosted.org/packages/b7/02/654426ce265ac19e2980bfd9ea6590ca96a56f10c76e63801a2df01c0486/uvloop-0.22.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e2ea3d6190a2968f4a14a23019d3b16870dd2190cd69c8180f7c632d21de68d", size = 4288562, upload_time = "2025-10-16T22:16:39.375Z" }, - { url = "https://files.pythonhosted.org/packages/15/c0/0be24758891ef825f2065cd5db8741aaddabe3e248ee6acc5e8a80f04005/uvloop-0.22.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0530a5fbad9c9e4ee3f2b33b148c6a64d47bbad8000ea63704fa8260f4cf728e", size = 4366890, upload_time = "2025-10-16T22:16:40.547Z" }, - { url = "https://files.pythonhosted.org/packages/d2/53/8369e5219a5855869bcee5f4d317f6da0e2c669aecf0ef7d371e3d084449/uvloop-0.22.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bc5ef13bbc10b5335792360623cc378d52d7e62c2de64660616478c32cd0598e", size = 4119472, upload_time = "2025-10-16T22:16:41.694Z" }, - { url = "https://files.pythonhosted.org/packages/f8/ba/d69adbe699b768f6b29a5eec7b47dd610bd17a69de51b251126a801369ea/uvloop-0.22.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1f38ec5e3f18c8a10ded09742f7fb8de0108796eb673f30ce7762ce1b8550cad", size = 4239051, upload_time = "2025-10-16T22:16:43.224Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/06/f0/18d39dbd1971d6d62c4629cc7fa67f74821b0dc1f5a77af43719de7936a7/uvloop-0.22.1.tar.gz", hash = "sha256:6c84bae345b9147082b17371e3dd5d42775bddce91f885499017f4607fdaf39f", size = 2443250, upload-time = "2025-10-16T22:17:19.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/14/ecceb239b65adaaf7fde510aa8bd534075695d1e5f8dadfa32b5723d9cfb/uvloop-0.22.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ef6f0d4cc8a9fa1f6a910230cd53545d9a14479311e87e3cb225495952eb672c", size = 1343335, upload-time = "2025-10-16T22:16:11.43Z" }, + { url = "https://files.pythonhosted.org/packages/ba/ae/6f6f9af7f590b319c94532b9567409ba11f4fa71af1148cab1bf48a07048/uvloop-0.22.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7cd375a12b71d33d46af85a3343b35d98e8116134ba404bd657b3b1d15988792", size = 742903, upload-time = "2025-10-16T22:16:12.979Z" }, + { url = "https://files.pythonhosted.org/packages/09/bd/3667151ad0702282a1f4d5d29288fce8a13c8b6858bf0978c219cd52b231/uvloop-0.22.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ac33ed96229b7790eb729702751c0e93ac5bc3bcf52ae9eccbff30da09194b86", size = 3648499, upload-time = "2025-10-16T22:16:14.451Z" }, + { url = "https://files.pythonhosted.org/packages/b3/f6/21657bb3beb5f8c57ce8be3b83f653dd7933c2fd00545ed1b092d464799a/uvloop-0.22.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:481c990a7abe2c6f4fc3d98781cc9426ebd7f03a9aaa7eb03d3bfc68ac2a46bd", size = 3700133, upload-time = "2025-10-16T22:16:16.272Z" }, + { url = "https://files.pythonhosted.org/packages/09/e0/604f61d004ded805f24974c87ddd8374ef675644f476f01f1df90e4cdf72/uvloop-0.22.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a592b043a47ad17911add5fbd087c76716d7c9ccc1d64ec9249ceafd735f03c2", size = 3512681, upload-time = "2025-10-16T22:16:18.07Z" }, + { url = "https://files.pythonhosted.org/packages/bb/ce/8491fd370b0230deb5eac69c7aae35b3be527e25a911c0acdffb922dc1cd/uvloop-0.22.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1489cf791aa7b6e8c8be1c5a080bae3a672791fcb4e9e12249b05862a2ca9cec", size = 3615261, upload-time = "2025-10-16T22:16:19.596Z" }, + { url = "https://files.pythonhosted.org/packages/c7/d5/69900f7883235562f1f50d8184bb7dd84a2fb61e9ec63f3782546fdbd057/uvloop-0.22.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c60ebcd36f7b240b30788554b6f0782454826a0ed765d8430652621b5de674b9", size = 1352420, upload-time = "2025-10-16T22:16:21.187Z" }, + { url = "https://files.pythonhosted.org/packages/a8/73/c4e271b3bce59724e291465cc936c37758886a4868787da0278b3b56b905/uvloop-0.22.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b7f102bf3cb1995cfeaee9321105e8f5da76fdb104cdad8986f85461a1b7b77", size = 748677, upload-time = "2025-10-16T22:16:22.558Z" }, + { url = "https://files.pythonhosted.org/packages/86/94/9fb7fad2f824d25f8ecac0d70b94d0d48107ad5ece03769a9c543444f78a/uvloop-0.22.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53c85520781d84a4b8b230e24a5af5b0778efdb39142b424990ff1ef7c48ba21", size = 3753819, upload-time = "2025-10-16T22:16:23.903Z" }, + { url = "https://files.pythonhosted.org/packages/74/4f/256aca690709e9b008b7108bc85fba619a2bc37c6d80743d18abad16ee09/uvloop-0.22.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:56a2d1fae65fd82197cb8c53c367310b3eabe1bbb9fb5a04d28e3e3520e4f702", size = 3804529, upload-time = "2025-10-16T22:16:25.246Z" }, + { url = "https://files.pythonhosted.org/packages/7f/74/03c05ae4737e871923d21a76fe28b6aad57f5c03b6e6bfcfa5ad616013e4/uvloop-0.22.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40631b049d5972c6755b06d0bfe8233b1bd9a8a6392d9d1c45c10b6f9e9b2733", size = 3621267, upload-time = "2025-10-16T22:16:26.819Z" }, + { url = "https://files.pythonhosted.org/packages/75/be/f8e590fe61d18b4a92070905497aec4c0e64ae1761498cad09023f3f4b3e/uvloop-0.22.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:535cc37b3a04f6cd2c1ef65fa1d370c9a35b6695df735fcff5427323f2cd5473", size = 3723105, upload-time = "2025-10-16T22:16:28.252Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ff/7f72e8170be527b4977b033239a83a68d5c881cc4775fca255c677f7ac5d/uvloop-0.22.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:fe94b4564e865d968414598eea1a6de60adba0c040ba4ed05ac1300de402cd42", size = 1359936, upload-time = "2025-10-16T22:16:29.436Z" }, + { url = "https://files.pythonhosted.org/packages/c3/c6/e5d433f88fd54d81ef4be58b2b7b0cea13c442454a1db703a1eea0db1a59/uvloop-0.22.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:51eb9bd88391483410daad430813d982010f9c9c89512321f5b60e2cddbdddd6", size = 752769, upload-time = "2025-10-16T22:16:30.493Z" }, + { url = "https://files.pythonhosted.org/packages/24/68/a6ac446820273e71aa762fa21cdcc09861edd3536ff47c5cd3b7afb10eeb/uvloop-0.22.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:700e674a166ca5778255e0e1dc4e9d79ab2acc57b9171b79e65feba7184b3370", size = 4317413, upload-time = "2025-10-16T22:16:31.644Z" }, + { url = "https://files.pythonhosted.org/packages/5f/6f/e62b4dfc7ad6518e7eff2516f680d02a0f6eb62c0c212e152ca708a0085e/uvloop-0.22.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b5b1ac819a3f946d3b2ee07f09149578ae76066d70b44df3fa990add49a82e4", size = 4426307, upload-time = "2025-10-16T22:16:32.917Z" }, + { url = "https://files.pythonhosted.org/packages/90/60/97362554ac21e20e81bcef1150cb2a7e4ffdaf8ea1e5b2e8bf7a053caa18/uvloop-0.22.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e047cc068570bac9866237739607d1313b9253c3051ad84738cbb095be0537b2", size = 4131970, upload-time = "2025-10-16T22:16:34.015Z" }, + { url = "https://files.pythonhosted.org/packages/99/39/6b3f7d234ba3964c428a6e40006340f53ba37993f46ed6e111c6e9141d18/uvloop-0.22.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:512fec6815e2dd45161054592441ef76c830eddaad55c8aa30952e6fe1ed07c0", size = 4296343, upload-time = "2025-10-16T22:16:35.149Z" }, + { url = "https://files.pythonhosted.org/packages/89/8c/182a2a593195bfd39842ea68ebc084e20c850806117213f5a299dfc513d9/uvloop-0.22.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:561577354eb94200d75aca23fbde86ee11be36b00e52a4eaf8f50fb0c86b7705", size = 1358611, upload-time = "2025-10-16T22:16:36.833Z" }, + { url = "https://files.pythonhosted.org/packages/d2/14/e301ee96a6dc95224b6f1162cd3312f6d1217be3907b79173b06785f2fe7/uvloop-0.22.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cdf5192ab3e674ca26da2eada35b288d2fa49fdd0f357a19f0e7c4e7d5077c8", size = 751811, upload-time = "2025-10-16T22:16:38.275Z" }, + { url = "https://files.pythonhosted.org/packages/b7/02/654426ce265ac19e2980bfd9ea6590ca96a56f10c76e63801a2df01c0486/uvloop-0.22.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e2ea3d6190a2968f4a14a23019d3b16870dd2190cd69c8180f7c632d21de68d", size = 4288562, upload-time = "2025-10-16T22:16:39.375Z" }, + { url = "https://files.pythonhosted.org/packages/15/c0/0be24758891ef825f2065cd5db8741aaddabe3e248ee6acc5e8a80f04005/uvloop-0.22.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0530a5fbad9c9e4ee3f2b33b148c6a64d47bbad8000ea63704fa8260f4cf728e", size = 4366890, upload-time = "2025-10-16T22:16:40.547Z" }, + { url = "https://files.pythonhosted.org/packages/d2/53/8369e5219a5855869bcee5f4d317f6da0e2c669aecf0ef7d371e3d084449/uvloop-0.22.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bc5ef13bbc10b5335792360623cc378d52d7e62c2de64660616478c32cd0598e", size = 4119472, upload-time = "2025-10-16T22:16:41.694Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ba/d69adbe699b768f6b29a5eec7b47dd610bd17a69de51b251126a801369ea/uvloop-0.22.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1f38ec5e3f18c8a10ded09742f7fb8de0108796eb673f30ce7762ce1b8550cad", size = 4239051, upload-time = "2025-10-16T22:16:43.224Z" }, ] [[package]] @@ -4911,9 +4961,9 @@ dependencies = [ { name = "python-discovery" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ec/0d/915c02c94d207b85580eb09bffab54438a709e7288524094fe781da526c2/virtualenv-21.3.1.tar.gz", hash = "sha256:c2305bc1fddeec40699b8370d13f8d431b0701f00ce895061ce493aeded4426b", size = 7613791, upload_time = "2026-05-05T01:34:31.402Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/0d/915c02c94d207b85580eb09bffab54438a709e7288524094fe781da526c2/virtualenv-21.3.1.tar.gz", hash = "sha256:c2305bc1fddeec40699b8370d13f8d431b0701f00ce895061ce493aeded4426b", size = 7613791, upload-time = "2026-05-05T01:34:31.402Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/4f/f71e641e504111a5a74e3a20bc52d01bd86788b22699dd3fee1c63253cf6/virtualenv-21.3.1-py3-none-any.whl", hash = "sha256:d1a71cf58f2f9228fff23a1f6ec15d39785c6b32e03658d104974247145edd35", size = 7594539, upload_time = "2026-05-05T01:34:28.98Z" }, + { url = "https://files.pythonhosted.org/packages/b1/4f/f71e641e504111a5a74e3a20bc52d01bd86788b22699dd3fee1c63253cf6/virtualenv-21.3.1-py3-none-any.whl", hash = "sha256:d1a71cf58f2f9228fff23a1f6ec15d39785c6b32e03658d104974247145edd35", size = 7594539, upload-time = "2026-05-05T01:34:28.98Z" }, ] [[package]] @@ -4923,9 +4973,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ac/f9/054e6e2f1071e963b5e746b48d1e3727470b2a490834d18ad92364929db3/wasabi-1.1.3.tar.gz", hash = "sha256:4bb3008f003809db0c3e28b4daf20906ea871a2bb43f9914197d540f4f2e0878", size = 30391, upload_time = "2024-05-31T16:56:18.99Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ac/f9/054e6e2f1071e963b5e746b48d1e3727470b2a490834d18ad92364929db3/wasabi-1.1.3.tar.gz", hash = "sha256:4bb3008f003809db0c3e28b4daf20906ea871a2bb43f9914197d540f4f2e0878", size = 30391, upload-time = "2024-05-31T16:56:18.99Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/06/7c/34330a89da55610daa5f245ddce5aab81244321101614751e7537f125133/wasabi-1.1.3-py3-none-any.whl", hash = "sha256:f76e16e8f7e79f8c4c8be49b4024ac725713ab10cd7f19350ad18a8e3f71728c", size = 27880, upload_time = "2024-05-31T16:56:16.699Z" }, + { url = "https://files.pythonhosted.org/packages/06/7c/34330a89da55610daa5f245ddce5aab81244321101614751e7537f125133/wasabi-1.1.3-py3-none-any.whl", hash = "sha256:f76e16e8f7e79f8c4c8be49b4024ac725713ab10cd7f19350ad18a8e3f71728c", size = 27880, upload-time = "2024-05-31T16:56:16.699Z" }, ] [[package]] @@ -4935,86 +4985,86 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c2/c9/8869df9b2a2d6c59d79220a4db37679e74f807c559ffe5265e08b227a210/watchfiles-1.1.1.tar.gz", hash = "sha256:a173cb5c16c4f40ab19cecf48a534c409f7ea983ab8fed0741304a1c0a31b3f2", size = 94440, upload_time = "2025-10-14T15:06:21.08Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/1a/206e8cf2dd86fddf939165a57b4df61607a1e0add2785f170a3f616b7d9f/watchfiles-1.1.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:eef58232d32daf2ac67f42dea51a2c80f0d03379075d44a587051e63cc2e368c", size = 407318, upload_time = "2025-10-14T15:04:18.753Z" }, - { url = "https://files.pythonhosted.org/packages/b3/0f/abaf5262b9c496b5dad4ed3c0e799cbecb1f8ea512ecb6ddd46646a9fca3/watchfiles-1.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:03fa0f5237118a0c5e496185cafa92878568b652a2e9a9382a5151b1a0380a43", size = 394478, upload_time = "2025-10-14T15:04:20.297Z" }, - { url = "https://files.pythonhosted.org/packages/b1/04/9cc0ba88697b34b755371f5ace8d3a4d9a15719c07bdc7bd13d7d8c6a341/watchfiles-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ca65483439f9c791897f7db49202301deb6e15fe9f8fe2fed555bf986d10c31", size = 449894, upload_time = "2025-10-14T15:04:21.527Z" }, - { url = "https://files.pythonhosted.org/packages/d2/9c/eda4615863cd8621e89aed4df680d8c3ec3da6a4cf1da113c17decd87c7f/watchfiles-1.1.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f0ab1c1af0cb38e3f598244c17919fb1a84d1629cc08355b0074b6d7f53138ac", size = 459065, upload_time = "2025-10-14T15:04:22.795Z" }, - { url = "https://files.pythonhosted.org/packages/84/13/f28b3f340157d03cbc8197629bc109d1098764abe1e60874622a0be5c112/watchfiles-1.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bc570d6c01c206c46deb6e935a260be44f186a2f05179f52f7fcd2be086a94d", size = 488377, upload_time = "2025-10-14T15:04:24.138Z" }, - { url = "https://files.pythonhosted.org/packages/86/93/cfa597fa9389e122488f7ffdbd6db505b3b915ca7435ecd7542e855898c2/watchfiles-1.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e84087b432b6ac94778de547e08611266f1f8ffad28c0ee4c82e028b0fc5966d", size = 595837, upload_time = "2025-10-14T15:04:25.057Z" }, - { url = "https://files.pythonhosted.org/packages/57/1e/68c1ed5652b48d89fc24d6af905d88ee4f82fa8bc491e2666004e307ded1/watchfiles-1.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:620bae625f4cb18427b1bb1a2d9426dc0dd5a5ba74c7c2cdb9de405f7b129863", size = 473456, upload_time = "2025-10-14T15:04:26.497Z" }, - { url = "https://files.pythonhosted.org/packages/d5/dc/1a680b7458ffa3b14bb64878112aefc8f2e4f73c5af763cbf0bd43100658/watchfiles-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:544364b2b51a9b0c7000a4b4b02f90e9423d97fbbf7e06689236443ebcad81ab", size = 455614, upload_time = "2025-10-14T15:04:27.539Z" }, - { url = "https://files.pythonhosted.org/packages/61/a5/3d782a666512e01eaa6541a72ebac1d3aae191ff4a31274a66b8dd85760c/watchfiles-1.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bbe1ef33d45bc71cf21364df962af171f96ecaeca06bd9e3d0b583efb12aec82", size = 630690, upload_time = "2025-10-14T15:04:28.495Z" }, - { url = "https://files.pythonhosted.org/packages/9b/73/bb5f38590e34687b2a9c47a244aa4dd50c56a825969c92c9c5fc7387cea1/watchfiles-1.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1a0bb430adb19ef49389e1ad368450193a90038b5b752f4ac089ec6942c4dff4", size = 622459, upload_time = "2025-10-14T15:04:29.491Z" }, - { url = "https://files.pythonhosted.org/packages/f1/ac/c9bb0ec696e07a20bd58af5399aeadaef195fb2c73d26baf55180fe4a942/watchfiles-1.1.1-cp310-cp310-win32.whl", hash = "sha256:3f6d37644155fb5beca5378feb8c1708d5783145f2a0f1c4d5a061a210254844", size = 272663, upload_time = "2025-10-14T15:04:30.435Z" }, - { url = "https://files.pythonhosted.org/packages/11/a0/a60c5a7c2ec59fa062d9a9c61d02e3b6abd94d32aac2d8344c4bdd033326/watchfiles-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:a36d8efe0f290835fd0f33da35042a1bb5dc0e83cbc092dcf69bce442579e88e", size = 287453, upload_time = "2025-10-14T15:04:31.53Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f8/2c5f479fb531ce2f0564eda479faecf253d886b1ab3630a39b7bf7362d46/watchfiles-1.1.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f57b396167a2565a4e8b5e56a5a1c537571733992b226f4f1197d79e94cf0ae5", size = 406529, upload_time = "2025-10-14T15:04:32.899Z" }, - { url = "https://files.pythonhosted.org/packages/fe/cd/f515660b1f32f65df671ddf6f85bfaca621aee177712874dc30a97397977/watchfiles-1.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:421e29339983e1bebc281fab40d812742268ad057db4aee8c4d2bce0af43b741", size = 394384, upload_time = "2025-10-14T15:04:33.761Z" }, - { url = "https://files.pythonhosted.org/packages/7b/c3/28b7dc99733eab43fca2d10f55c86e03bd6ab11ca31b802abac26b23d161/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e43d39a741e972bab5d8100b5cdacf69db64e34eb19b6e9af162bccf63c5cc6", size = 448789, upload_time = "2025-10-14T15:04:34.679Z" }, - { url = "https://files.pythonhosted.org/packages/4a/24/33e71113b320030011c8e4316ccca04194bf0cbbaeee207f00cbc7d6b9f5/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f537afb3276d12814082a2e9b242bdcf416c2e8fd9f799a737990a1dbe906e5b", size = 460521, upload_time = "2025-10-14T15:04:35.963Z" }, - { url = "https://files.pythonhosted.org/packages/f4/c3/3c9a55f255aa57b91579ae9e98c88704955fa9dac3e5614fb378291155df/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2cd9e04277e756a2e2d2543d65d1e2166d6fd4c9b183f8808634fda23f17b14", size = 488722, upload_time = "2025-10-14T15:04:37.091Z" }, - { url = "https://files.pythonhosted.org/packages/49/36/506447b73eb46c120169dc1717fe2eff07c234bb3232a7200b5f5bd816e9/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5f3f58818dc0b07f7d9aa7fe9eb1037aecb9700e63e1f6acfed13e9fef648f5d", size = 596088, upload_time = "2025-10-14T15:04:38.39Z" }, - { url = "https://files.pythonhosted.org/packages/82/ab/5f39e752a9838ec4d52e9b87c1e80f1ee3ccdbe92e183c15b6577ab9de16/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bb9f66367023ae783551042d31b1d7fd422e8289eedd91f26754a66f44d5cff", size = 472923, upload_time = "2025-10-14T15:04:39.666Z" }, - { url = "https://files.pythonhosted.org/packages/af/b9/a419292f05e302dea372fa7e6fda5178a92998411f8581b9830d28fb9edb/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aebfd0861a83e6c3d1110b78ad54704486555246e542be3e2bb94195eabb2606", size = 456080, upload_time = "2025-10-14T15:04:40.643Z" }, - { url = "https://files.pythonhosted.org/packages/b0/c3/d5932fd62bde1a30c36e10c409dc5d54506726f08cb3e1d8d0ba5e2bc8db/watchfiles-1.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5fac835b4ab3c6487b5dbad78c4b3724e26bcc468e886f8ba8cc4306f68f6701", size = 629432, upload_time = "2025-10-14T15:04:41.789Z" }, - { url = "https://files.pythonhosted.org/packages/f7/77/16bddd9779fafb795f1a94319dc965209c5641db5bf1edbbccace6d1b3c0/watchfiles-1.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:399600947b170270e80134ac854e21b3ccdefa11a9529a3decc1327088180f10", size = 623046, upload_time = "2025-10-14T15:04:42.718Z" }, - { url = "https://files.pythonhosted.org/packages/46/ef/f2ecb9a0f342b4bfad13a2787155c6ee7ce792140eac63a34676a2feeef2/watchfiles-1.1.1-cp311-cp311-win32.whl", hash = "sha256:de6da501c883f58ad50db3a32ad397b09ad29865b5f26f64c24d3e3281685849", size = 271473, upload_time = "2025-10-14T15:04:43.624Z" }, - { url = "https://files.pythonhosted.org/packages/94/bc/f42d71125f19731ea435c3948cad148d31a64fccde3867e5ba4edee901f9/watchfiles-1.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:35c53bd62a0b885bf653ebf6b700d1bf05debb78ad9292cf2a942b23513dc4c4", size = 287598, upload_time = "2025-10-14T15:04:44.516Z" }, - { url = "https://files.pythonhosted.org/packages/57/c9/a30f897351f95bbbfb6abcadafbaca711ce1162f4db95fc908c98a9165f3/watchfiles-1.1.1-cp311-cp311-win_arm64.whl", hash = "sha256:57ca5281a8b5e27593cb7d82c2ac927ad88a96ed406aa446f6344e4328208e9e", size = 277210, upload_time = "2025-10-14T15:04:45.883Z" }, - { url = "https://files.pythonhosted.org/packages/74/d5/f039e7e3c639d9b1d09b07ea412a6806d38123f0508e5f9b48a87b0a76cc/watchfiles-1.1.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:8c89f9f2f740a6b7dcc753140dd5e1ab9215966f7a3530d0c0705c83b401bd7d", size = 404745, upload_time = "2025-10-14T15:04:46.731Z" }, - { url = "https://files.pythonhosted.org/packages/a5/96/a881a13aa1349827490dab2d363c8039527060cfcc2c92cc6d13d1b1049e/watchfiles-1.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd404be08018c37350f0d6e34676bd1e2889990117a2b90070b3007f172d0610", size = 391769, upload_time = "2025-10-14T15:04:48.003Z" }, - { url = "https://files.pythonhosted.org/packages/4b/5b/d3b460364aeb8da471c1989238ea0e56bec24b6042a68046adf3d9ddb01c/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8526e8f916bb5b9a0a777c8317c23ce65de259422bba5b31325a6fa6029d33af", size = 449374, upload_time = "2025-10-14T15:04:49.179Z" }, - { url = "https://files.pythonhosted.org/packages/b9/44/5769cb62d4ed055cb17417c0a109a92f007114a4e07f30812a73a4efdb11/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2edc3553362b1c38d9f06242416a5d8e9fe235c204a4072e988ce2e5bb1f69f6", size = 459485, upload_time = "2025-10-14T15:04:50.155Z" }, - { url = "https://files.pythonhosted.org/packages/19/0c/286b6301ded2eccd4ffd0041a1b726afda999926cf720aab63adb68a1e36/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30f7da3fb3f2844259cba4720c3fc7138eb0f7b659c38f3bfa65084c7fc7abce", size = 488813, upload_time = "2025-10-14T15:04:51.059Z" }, - { url = "https://files.pythonhosted.org/packages/c7/2b/8530ed41112dd4a22f4dcfdb5ccf6a1baad1ff6eed8dc5a5f09e7e8c41c7/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8979280bdafff686ba5e4d8f97840f929a87ed9cdf133cbbd42f7766774d2aa", size = 594816, upload_time = "2025-10-14T15:04:52.031Z" }, - { url = "https://files.pythonhosted.org/packages/ce/d2/f5f9fb49489f184f18470d4f99f4e862a4b3e9ac2865688eb2099e3d837a/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dcc5c24523771db3a294c77d94771abcfcb82a0e0ee8efd910c37c59ec1b31bb", size = 475186, upload_time = "2025-10-14T15:04:53.064Z" }, - { url = "https://files.pythonhosted.org/packages/cf/68/5707da262a119fb06fbe214d82dd1fe4a6f4af32d2d14de368d0349eb52a/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db5d7ae38ff20153d542460752ff397fcf5c96090c1230803713cf3147a6803", size = 456812, upload_time = "2025-10-14T15:04:55.174Z" }, - { url = "https://files.pythonhosted.org/packages/66/ab/3cbb8756323e8f9b6f9acb9ef4ec26d42b2109bce830cc1f3468df20511d/watchfiles-1.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:28475ddbde92df1874b6c5c8aaeb24ad5be47a11f87cde5a28ef3835932e3e94", size = 630196, upload_time = "2025-10-14T15:04:56.22Z" }, - { url = "https://files.pythonhosted.org/packages/78/46/7152ec29b8335f80167928944a94955015a345440f524d2dfe63fc2f437b/watchfiles-1.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:36193ed342f5b9842edd3532729a2ad55c4160ffcfa3700e0d54be496b70dd43", size = 622657, upload_time = "2025-10-14T15:04:57.521Z" }, - { url = "https://files.pythonhosted.org/packages/0a/bf/95895e78dd75efe9a7f31733607f384b42eb5feb54bd2eb6ed57cc2e94f4/watchfiles-1.1.1-cp312-cp312-win32.whl", hash = "sha256:859e43a1951717cc8de7f4c77674a6d389b106361585951d9e69572823f311d9", size = 272042, upload_time = "2025-10-14T15:04:59.046Z" }, - { url = "https://files.pythonhosted.org/packages/87/0a/90eb755f568de2688cb220171c4191df932232c20946966c27a59c400850/watchfiles-1.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:91d4c9a823a8c987cce8fa2690923b069966dabb196dd8d137ea2cede885fde9", size = 288410, upload_time = "2025-10-14T15:05:00.081Z" }, - { url = "https://files.pythonhosted.org/packages/36/76/f322701530586922fbd6723c4f91ace21364924822a8772c549483abed13/watchfiles-1.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:a625815d4a2bdca61953dbba5a39d60164451ef34c88d751f6c368c3ea73d404", size = 278209, upload_time = "2025-10-14T15:05:01.168Z" }, - { url = "https://files.pythonhosted.org/packages/bb/f4/f750b29225fe77139f7ae5de89d4949f5a99f934c65a1f1c0b248f26f747/watchfiles-1.1.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:130e4876309e8686a5e37dba7d5e9bc77e6ed908266996ca26572437a5271e18", size = 404321, upload_time = "2025-10-14T15:05:02.063Z" }, - { url = "https://files.pythonhosted.org/packages/2b/f9/f07a295cde762644aa4c4bb0f88921d2d141af45e735b965fb2e87858328/watchfiles-1.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5f3bde70f157f84ece3765b42b4a52c6ac1a50334903c6eaf765362f6ccca88a", size = 391783, upload_time = "2025-10-14T15:05:03.052Z" }, - { url = "https://files.pythonhosted.org/packages/bc/11/fc2502457e0bea39a5c958d86d2cb69e407a4d00b85735ca724bfa6e0d1a/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14e0b1fe858430fc0251737ef3824c54027bedb8c37c38114488b8e131cf8219", size = 449279, upload_time = "2025-10-14T15:05:04.004Z" }, - { url = "https://files.pythonhosted.org/packages/e3/1f/d66bc15ea0b728df3ed96a539c777acfcad0eb78555ad9efcaa1274688f0/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f27db948078f3823a6bb3b465180db8ebecf26dd5dae6f6180bd87383b6b4428", size = 459405, upload_time = "2025-10-14T15:05:04.942Z" }, - { url = "https://files.pythonhosted.org/packages/be/90/9f4a65c0aec3ccf032703e6db02d89a157462fbb2cf20dd415128251cac0/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:059098c3a429f62fc98e8ec62b982230ef2c8df68c79e826e37b895bc359a9c0", size = 488976, upload_time = "2025-10-14T15:05:05.905Z" }, - { url = "https://files.pythonhosted.org/packages/37/57/ee347af605d867f712be7029bb94c8c071732a4b44792e3176fa3c612d39/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfb5862016acc9b869bb57284e6cb35fdf8e22fe59f7548858e2f971d045f150", size = 595506, upload_time = "2025-10-14T15:05:06.906Z" }, - { url = "https://files.pythonhosted.org/packages/a8/78/cc5ab0b86c122047f75e8fc471c67a04dee395daf847d3e59381996c8707/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:319b27255aacd9923b8a276bb14d21a5f7ff82564c744235fc5eae58d95422ae", size = 474936, upload_time = "2025-10-14T15:05:07.906Z" }, - { url = "https://files.pythonhosted.org/packages/62/da/def65b170a3815af7bd40a3e7010bf6ab53089ef1b75d05dd5385b87cf08/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c755367e51db90e75b19454b680903631d41f9e3607fbd941d296a020c2d752d", size = 456147, upload_time = "2025-10-14T15:05:09.138Z" }, - { url = "https://files.pythonhosted.org/packages/57/99/da6573ba71166e82d288d4df0839128004c67d2778d3b566c138695f5c0b/watchfiles-1.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c22c776292a23bfc7237a98f791b9ad3144b02116ff10d820829ce62dff46d0b", size = 630007, upload_time = "2025-10-14T15:05:10.117Z" }, - { url = "https://files.pythonhosted.org/packages/a8/51/7439c4dd39511368849eb1e53279cd3454b4a4dbace80bab88feeb83c6b5/watchfiles-1.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:3a476189be23c3686bc2f4321dd501cb329c0a0469e77b7b534ee10129ae6374", size = 622280, upload_time = "2025-10-14T15:05:11.146Z" }, - { url = "https://files.pythonhosted.org/packages/95/9c/8ed97d4bba5db6fdcdb2b298d3898f2dd5c20f6b73aee04eabe56c59677e/watchfiles-1.1.1-cp313-cp313-win32.whl", hash = "sha256:bf0a91bfb5574a2f7fc223cf95eeea79abfefa404bf1ea5e339c0c1560ae99a0", size = 272056, upload_time = "2025-10-14T15:05:12.156Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f3/c14e28429f744a260d8ceae18bf58c1d5fa56b50d006a7a9f80e1882cb0d/watchfiles-1.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:52e06553899e11e8074503c8e716d574adeeb7e68913115c4b3653c53f9bae42", size = 288162, upload_time = "2025-10-14T15:05:13.208Z" }, - { url = "https://files.pythonhosted.org/packages/dc/61/fe0e56c40d5cd29523e398d31153218718c5786b5e636d9ae8ae79453d27/watchfiles-1.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:ac3cc5759570cd02662b15fbcd9d917f7ecd47efe0d6b40474eafd246f91ea18", size = 277909, upload_time = "2025-10-14T15:05:14.49Z" }, - { url = "https://files.pythonhosted.org/packages/79/42/e0a7d749626f1e28c7108a99fb9bf524b501bbbeb9b261ceecde644d5a07/watchfiles-1.1.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:563b116874a9a7ce6f96f87cd0b94f7faf92d08d0021e837796f0a14318ef8da", size = 403389, upload_time = "2025-10-14T15:05:15.777Z" }, - { url = "https://files.pythonhosted.org/packages/15/49/08732f90ce0fbbc13913f9f215c689cfc9ced345fb1bcd8829a50007cc8d/watchfiles-1.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3ad9fe1dae4ab4212d8c91e80b832425e24f421703b5a42ef2e4a1e215aff051", size = 389964, upload_time = "2025-10-14T15:05:16.85Z" }, - { url = "https://files.pythonhosted.org/packages/27/0d/7c315d4bd5f2538910491a0393c56bf70d333d51bc5b34bee8e68e8cea19/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce70f96a46b894b36eba678f153f052967a0d06d5b5a19b336ab0dbbd029f73e", size = 448114, upload_time = "2025-10-14T15:05:17.876Z" }, - { url = "https://files.pythonhosted.org/packages/c3/24/9e096de47a4d11bc4df41e9d1e61776393eac4cb6eb11b3e23315b78b2cc/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cb467c999c2eff23a6417e58d75e5828716f42ed8289fe6b77a7e5a91036ca70", size = 460264, upload_time = "2025-10-14T15:05:18.962Z" }, - { url = "https://files.pythonhosted.org/packages/cc/0f/e8dea6375f1d3ba5fcb0b3583e2b493e77379834c74fd5a22d66d85d6540/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:836398932192dae4146c8f6f737d74baeac8b70ce14831a239bdb1ca882fc261", size = 487877, upload_time = "2025-10-14T15:05:20.094Z" }, - { url = "https://files.pythonhosted.org/packages/ac/5b/df24cfc6424a12deb41503b64d42fbea6b8cb357ec62ca84a5a3476f654a/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:743185e7372b7bc7c389e1badcc606931a827112fbbd37f14c537320fca08620", size = 595176, upload_time = "2025-10-14T15:05:21.134Z" }, - { url = "https://files.pythonhosted.org/packages/8f/b5/853b6757f7347de4e9b37e8cc3289283fb983cba1ab4d2d7144694871d9c/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:afaeff7696e0ad9f02cbb8f56365ff4686ab205fcf9c4c5b6fdfaaa16549dd04", size = 473577, upload_time = "2025-10-14T15:05:22.306Z" }, - { url = "https://files.pythonhosted.org/packages/e1/f7/0a4467be0a56e80447c8529c9fce5b38eab4f513cb3d9bf82e7392a5696b/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7eb7da0eb23aa2ba036d4f616d46906013a68caf61b7fdbe42fc8b25132e77", size = 455425, upload_time = "2025-10-14T15:05:23.348Z" }, - { url = "https://files.pythonhosted.org/packages/8e/e0/82583485ea00137ddf69bc84a2db88bd92ab4a6e3c405e5fb878ead8d0e7/watchfiles-1.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:831a62658609f0e5c64178211c942ace999517f5770fe9436be4c2faeba0c0ef", size = 628826, upload_time = "2025-10-14T15:05:24.398Z" }, - { url = "https://files.pythonhosted.org/packages/28/9a/a785356fccf9fae84c0cc90570f11702ae9571036fb25932f1242c82191c/watchfiles-1.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:f9a2ae5c91cecc9edd47e041a930490c31c3afb1f5e6d71de3dc671bfaca02bf", size = 622208, upload_time = "2025-10-14T15:05:25.45Z" }, - { url = "https://files.pythonhosted.org/packages/ba/4c/a888c91e2e326872fa4705095d64acd8aa2fb9c1f7b9bd0588f33850516c/watchfiles-1.1.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:17ef139237dfced9da49fb7f2232c86ca9421f666d78c264c7ffca6601d154c3", size = 409611, upload_time = "2025-10-14T15:06:05.809Z" }, - { url = "https://files.pythonhosted.org/packages/1e/c7/5420d1943c8e3ce1a21c0a9330bcf7edafb6aa65d26b21dbb3267c9e8112/watchfiles-1.1.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:672b8adf25b1a0d35c96b5888b7b18699d27d4194bac8beeae75be4b7a3fc9b2", size = 396889, upload_time = "2025-10-14T15:06:07.035Z" }, - { url = "https://files.pythonhosted.org/packages/0c/e5/0072cef3804ce8d3aaddbfe7788aadff6b3d3f98a286fdbee9fd74ca59a7/watchfiles-1.1.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77a13aea58bc2b90173bc69f2a90de8e282648939a00a602e1dc4ee23e26b66d", size = 451616, upload_time = "2025-10-14T15:06:08.072Z" }, - { url = "https://files.pythonhosted.org/packages/83/4e/b87b71cbdfad81ad7e83358b3e447fedd281b880a03d64a760fe0a11fc2e/watchfiles-1.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b495de0bb386df6a12b18335a0285dda90260f51bdb505503c02bcd1ce27a8b", size = 458413, upload_time = "2025-10-14T15:06:09.209Z" }, - { url = "https://files.pythonhosted.org/packages/d3/8e/e500f8b0b77be4ff753ac94dc06b33d8f0d839377fee1b78e8c8d8f031bf/watchfiles-1.1.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:db476ab59b6765134de1d4fe96a1a9c96ddf091683599be0f26147ea1b2e4b88", size = 408250, upload_time = "2025-10-14T15:06:10.264Z" }, - { url = "https://files.pythonhosted.org/packages/bd/95/615e72cd27b85b61eec764a5ca51bd94d40b5adea5ff47567d9ebc4d275a/watchfiles-1.1.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89eef07eee5e9d1fda06e38822ad167a044153457e6fd997f8a858ab7564a336", size = 396117, upload_time = "2025-10-14T15:06:11.28Z" }, - { url = "https://files.pythonhosted.org/packages/c9/81/e7fe958ce8a7fb5c73cc9fb07f5aeaf755e6aa72498c57d760af760c91f8/watchfiles-1.1.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce19e06cbda693e9e7686358af9cd6f5d61312ab8b00488bc36f5aabbaf77e24", size = 450493, upload_time = "2025-10-14T15:06:12.321Z" }, - { url = "https://files.pythonhosted.org/packages/6e/d4/ed38dd3b1767193de971e694aa544356e63353c33a85d948166b5ff58b9e/watchfiles-1.1.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e6f39af2eab0118338902798b5aa6664f46ff66bc0280de76fca67a7f262a49", size = 457546, upload_time = "2025-10-14T15:06:13.372Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/c2/c9/8869df9b2a2d6c59d79220a4db37679e74f807c559ffe5265e08b227a210/watchfiles-1.1.1.tar.gz", hash = "sha256:a173cb5c16c4f40ab19cecf48a534c409f7ea983ab8fed0741304a1c0a31b3f2", size = 94440, upload-time = "2025-10-14T15:06:21.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/1a/206e8cf2dd86fddf939165a57b4df61607a1e0add2785f170a3f616b7d9f/watchfiles-1.1.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:eef58232d32daf2ac67f42dea51a2c80f0d03379075d44a587051e63cc2e368c", size = 407318, upload-time = "2025-10-14T15:04:18.753Z" }, + { url = "https://files.pythonhosted.org/packages/b3/0f/abaf5262b9c496b5dad4ed3c0e799cbecb1f8ea512ecb6ddd46646a9fca3/watchfiles-1.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:03fa0f5237118a0c5e496185cafa92878568b652a2e9a9382a5151b1a0380a43", size = 394478, upload-time = "2025-10-14T15:04:20.297Z" }, + { url = "https://files.pythonhosted.org/packages/b1/04/9cc0ba88697b34b755371f5ace8d3a4d9a15719c07bdc7bd13d7d8c6a341/watchfiles-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ca65483439f9c791897f7db49202301deb6e15fe9f8fe2fed555bf986d10c31", size = 449894, upload-time = "2025-10-14T15:04:21.527Z" }, + { url = "https://files.pythonhosted.org/packages/d2/9c/eda4615863cd8621e89aed4df680d8c3ec3da6a4cf1da113c17decd87c7f/watchfiles-1.1.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f0ab1c1af0cb38e3f598244c17919fb1a84d1629cc08355b0074b6d7f53138ac", size = 459065, upload-time = "2025-10-14T15:04:22.795Z" }, + { url = "https://files.pythonhosted.org/packages/84/13/f28b3f340157d03cbc8197629bc109d1098764abe1e60874622a0be5c112/watchfiles-1.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bc570d6c01c206c46deb6e935a260be44f186a2f05179f52f7fcd2be086a94d", size = 488377, upload-time = "2025-10-14T15:04:24.138Z" }, + { url = "https://files.pythonhosted.org/packages/86/93/cfa597fa9389e122488f7ffdbd6db505b3b915ca7435ecd7542e855898c2/watchfiles-1.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e84087b432b6ac94778de547e08611266f1f8ffad28c0ee4c82e028b0fc5966d", size = 595837, upload-time = "2025-10-14T15:04:25.057Z" }, + { url = "https://files.pythonhosted.org/packages/57/1e/68c1ed5652b48d89fc24d6af905d88ee4f82fa8bc491e2666004e307ded1/watchfiles-1.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:620bae625f4cb18427b1bb1a2d9426dc0dd5a5ba74c7c2cdb9de405f7b129863", size = 473456, upload-time = "2025-10-14T15:04:26.497Z" }, + { url = "https://files.pythonhosted.org/packages/d5/dc/1a680b7458ffa3b14bb64878112aefc8f2e4f73c5af763cbf0bd43100658/watchfiles-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:544364b2b51a9b0c7000a4b4b02f90e9423d97fbbf7e06689236443ebcad81ab", size = 455614, upload-time = "2025-10-14T15:04:27.539Z" }, + { url = "https://files.pythonhosted.org/packages/61/a5/3d782a666512e01eaa6541a72ebac1d3aae191ff4a31274a66b8dd85760c/watchfiles-1.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bbe1ef33d45bc71cf21364df962af171f96ecaeca06bd9e3d0b583efb12aec82", size = 630690, upload-time = "2025-10-14T15:04:28.495Z" }, + { url = "https://files.pythonhosted.org/packages/9b/73/bb5f38590e34687b2a9c47a244aa4dd50c56a825969c92c9c5fc7387cea1/watchfiles-1.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1a0bb430adb19ef49389e1ad368450193a90038b5b752f4ac089ec6942c4dff4", size = 622459, upload-time = "2025-10-14T15:04:29.491Z" }, + { url = "https://files.pythonhosted.org/packages/f1/ac/c9bb0ec696e07a20bd58af5399aeadaef195fb2c73d26baf55180fe4a942/watchfiles-1.1.1-cp310-cp310-win32.whl", hash = "sha256:3f6d37644155fb5beca5378feb8c1708d5783145f2a0f1c4d5a061a210254844", size = 272663, upload-time = "2025-10-14T15:04:30.435Z" }, + { url = "https://files.pythonhosted.org/packages/11/a0/a60c5a7c2ec59fa062d9a9c61d02e3b6abd94d32aac2d8344c4bdd033326/watchfiles-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:a36d8efe0f290835fd0f33da35042a1bb5dc0e83cbc092dcf69bce442579e88e", size = 287453, upload-time = "2025-10-14T15:04:31.53Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f8/2c5f479fb531ce2f0564eda479faecf253d886b1ab3630a39b7bf7362d46/watchfiles-1.1.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f57b396167a2565a4e8b5e56a5a1c537571733992b226f4f1197d79e94cf0ae5", size = 406529, upload-time = "2025-10-14T15:04:32.899Z" }, + { url = "https://files.pythonhosted.org/packages/fe/cd/f515660b1f32f65df671ddf6f85bfaca621aee177712874dc30a97397977/watchfiles-1.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:421e29339983e1bebc281fab40d812742268ad057db4aee8c4d2bce0af43b741", size = 394384, upload-time = "2025-10-14T15:04:33.761Z" }, + { url = "https://files.pythonhosted.org/packages/7b/c3/28b7dc99733eab43fca2d10f55c86e03bd6ab11ca31b802abac26b23d161/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e43d39a741e972bab5d8100b5cdacf69db64e34eb19b6e9af162bccf63c5cc6", size = 448789, upload-time = "2025-10-14T15:04:34.679Z" }, + { url = "https://files.pythonhosted.org/packages/4a/24/33e71113b320030011c8e4316ccca04194bf0cbbaeee207f00cbc7d6b9f5/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f537afb3276d12814082a2e9b242bdcf416c2e8fd9f799a737990a1dbe906e5b", size = 460521, upload-time = "2025-10-14T15:04:35.963Z" }, + { url = "https://files.pythonhosted.org/packages/f4/c3/3c9a55f255aa57b91579ae9e98c88704955fa9dac3e5614fb378291155df/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2cd9e04277e756a2e2d2543d65d1e2166d6fd4c9b183f8808634fda23f17b14", size = 488722, upload-time = "2025-10-14T15:04:37.091Z" }, + { url = "https://files.pythonhosted.org/packages/49/36/506447b73eb46c120169dc1717fe2eff07c234bb3232a7200b5f5bd816e9/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5f3f58818dc0b07f7d9aa7fe9eb1037aecb9700e63e1f6acfed13e9fef648f5d", size = 596088, upload-time = "2025-10-14T15:04:38.39Z" }, + { url = "https://files.pythonhosted.org/packages/82/ab/5f39e752a9838ec4d52e9b87c1e80f1ee3ccdbe92e183c15b6577ab9de16/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bb9f66367023ae783551042d31b1d7fd422e8289eedd91f26754a66f44d5cff", size = 472923, upload-time = "2025-10-14T15:04:39.666Z" }, + { url = "https://files.pythonhosted.org/packages/af/b9/a419292f05e302dea372fa7e6fda5178a92998411f8581b9830d28fb9edb/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aebfd0861a83e6c3d1110b78ad54704486555246e542be3e2bb94195eabb2606", size = 456080, upload-time = "2025-10-14T15:04:40.643Z" }, + { url = "https://files.pythonhosted.org/packages/b0/c3/d5932fd62bde1a30c36e10c409dc5d54506726f08cb3e1d8d0ba5e2bc8db/watchfiles-1.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5fac835b4ab3c6487b5dbad78c4b3724e26bcc468e886f8ba8cc4306f68f6701", size = 629432, upload-time = "2025-10-14T15:04:41.789Z" }, + { url = "https://files.pythonhosted.org/packages/f7/77/16bddd9779fafb795f1a94319dc965209c5641db5bf1edbbccace6d1b3c0/watchfiles-1.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:399600947b170270e80134ac854e21b3ccdefa11a9529a3decc1327088180f10", size = 623046, upload-time = "2025-10-14T15:04:42.718Z" }, + { url = "https://files.pythonhosted.org/packages/46/ef/f2ecb9a0f342b4bfad13a2787155c6ee7ce792140eac63a34676a2feeef2/watchfiles-1.1.1-cp311-cp311-win32.whl", hash = "sha256:de6da501c883f58ad50db3a32ad397b09ad29865b5f26f64c24d3e3281685849", size = 271473, upload-time = "2025-10-14T15:04:43.624Z" }, + { url = "https://files.pythonhosted.org/packages/94/bc/f42d71125f19731ea435c3948cad148d31a64fccde3867e5ba4edee901f9/watchfiles-1.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:35c53bd62a0b885bf653ebf6b700d1bf05debb78ad9292cf2a942b23513dc4c4", size = 287598, upload-time = "2025-10-14T15:04:44.516Z" }, + { url = "https://files.pythonhosted.org/packages/57/c9/a30f897351f95bbbfb6abcadafbaca711ce1162f4db95fc908c98a9165f3/watchfiles-1.1.1-cp311-cp311-win_arm64.whl", hash = "sha256:57ca5281a8b5e27593cb7d82c2ac927ad88a96ed406aa446f6344e4328208e9e", size = 277210, upload-time = "2025-10-14T15:04:45.883Z" }, + { url = "https://files.pythonhosted.org/packages/74/d5/f039e7e3c639d9b1d09b07ea412a6806d38123f0508e5f9b48a87b0a76cc/watchfiles-1.1.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:8c89f9f2f740a6b7dcc753140dd5e1ab9215966f7a3530d0c0705c83b401bd7d", size = 404745, upload-time = "2025-10-14T15:04:46.731Z" }, + { url = "https://files.pythonhosted.org/packages/a5/96/a881a13aa1349827490dab2d363c8039527060cfcc2c92cc6d13d1b1049e/watchfiles-1.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd404be08018c37350f0d6e34676bd1e2889990117a2b90070b3007f172d0610", size = 391769, upload-time = "2025-10-14T15:04:48.003Z" }, + { url = "https://files.pythonhosted.org/packages/4b/5b/d3b460364aeb8da471c1989238ea0e56bec24b6042a68046adf3d9ddb01c/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8526e8f916bb5b9a0a777c8317c23ce65de259422bba5b31325a6fa6029d33af", size = 449374, upload-time = "2025-10-14T15:04:49.179Z" }, + { url = "https://files.pythonhosted.org/packages/b9/44/5769cb62d4ed055cb17417c0a109a92f007114a4e07f30812a73a4efdb11/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2edc3553362b1c38d9f06242416a5d8e9fe235c204a4072e988ce2e5bb1f69f6", size = 459485, upload-time = "2025-10-14T15:04:50.155Z" }, + { url = "https://files.pythonhosted.org/packages/19/0c/286b6301ded2eccd4ffd0041a1b726afda999926cf720aab63adb68a1e36/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30f7da3fb3f2844259cba4720c3fc7138eb0f7b659c38f3bfa65084c7fc7abce", size = 488813, upload-time = "2025-10-14T15:04:51.059Z" }, + { url = "https://files.pythonhosted.org/packages/c7/2b/8530ed41112dd4a22f4dcfdb5ccf6a1baad1ff6eed8dc5a5f09e7e8c41c7/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8979280bdafff686ba5e4d8f97840f929a87ed9cdf133cbbd42f7766774d2aa", size = 594816, upload-time = "2025-10-14T15:04:52.031Z" }, + { url = "https://files.pythonhosted.org/packages/ce/d2/f5f9fb49489f184f18470d4f99f4e862a4b3e9ac2865688eb2099e3d837a/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dcc5c24523771db3a294c77d94771abcfcb82a0e0ee8efd910c37c59ec1b31bb", size = 475186, upload-time = "2025-10-14T15:04:53.064Z" }, + { url = "https://files.pythonhosted.org/packages/cf/68/5707da262a119fb06fbe214d82dd1fe4a6f4af32d2d14de368d0349eb52a/watchfiles-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db5d7ae38ff20153d542460752ff397fcf5c96090c1230803713cf3147a6803", size = 456812, upload-time = "2025-10-14T15:04:55.174Z" }, + { url = "https://files.pythonhosted.org/packages/66/ab/3cbb8756323e8f9b6f9acb9ef4ec26d42b2109bce830cc1f3468df20511d/watchfiles-1.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:28475ddbde92df1874b6c5c8aaeb24ad5be47a11f87cde5a28ef3835932e3e94", size = 630196, upload-time = "2025-10-14T15:04:56.22Z" }, + { url = "https://files.pythonhosted.org/packages/78/46/7152ec29b8335f80167928944a94955015a345440f524d2dfe63fc2f437b/watchfiles-1.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:36193ed342f5b9842edd3532729a2ad55c4160ffcfa3700e0d54be496b70dd43", size = 622657, upload-time = "2025-10-14T15:04:57.521Z" }, + { url = "https://files.pythonhosted.org/packages/0a/bf/95895e78dd75efe9a7f31733607f384b42eb5feb54bd2eb6ed57cc2e94f4/watchfiles-1.1.1-cp312-cp312-win32.whl", hash = "sha256:859e43a1951717cc8de7f4c77674a6d389b106361585951d9e69572823f311d9", size = 272042, upload-time = "2025-10-14T15:04:59.046Z" }, + { url = "https://files.pythonhosted.org/packages/87/0a/90eb755f568de2688cb220171c4191df932232c20946966c27a59c400850/watchfiles-1.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:91d4c9a823a8c987cce8fa2690923b069966dabb196dd8d137ea2cede885fde9", size = 288410, upload-time = "2025-10-14T15:05:00.081Z" }, + { url = "https://files.pythonhosted.org/packages/36/76/f322701530586922fbd6723c4f91ace21364924822a8772c549483abed13/watchfiles-1.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:a625815d4a2bdca61953dbba5a39d60164451ef34c88d751f6c368c3ea73d404", size = 278209, upload-time = "2025-10-14T15:05:01.168Z" }, + { url = "https://files.pythonhosted.org/packages/bb/f4/f750b29225fe77139f7ae5de89d4949f5a99f934c65a1f1c0b248f26f747/watchfiles-1.1.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:130e4876309e8686a5e37dba7d5e9bc77e6ed908266996ca26572437a5271e18", size = 404321, upload-time = "2025-10-14T15:05:02.063Z" }, + { url = "https://files.pythonhosted.org/packages/2b/f9/f07a295cde762644aa4c4bb0f88921d2d141af45e735b965fb2e87858328/watchfiles-1.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5f3bde70f157f84ece3765b42b4a52c6ac1a50334903c6eaf765362f6ccca88a", size = 391783, upload-time = "2025-10-14T15:05:03.052Z" }, + { url = "https://files.pythonhosted.org/packages/bc/11/fc2502457e0bea39a5c958d86d2cb69e407a4d00b85735ca724bfa6e0d1a/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14e0b1fe858430fc0251737ef3824c54027bedb8c37c38114488b8e131cf8219", size = 449279, upload-time = "2025-10-14T15:05:04.004Z" }, + { url = "https://files.pythonhosted.org/packages/e3/1f/d66bc15ea0b728df3ed96a539c777acfcad0eb78555ad9efcaa1274688f0/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f27db948078f3823a6bb3b465180db8ebecf26dd5dae6f6180bd87383b6b4428", size = 459405, upload-time = "2025-10-14T15:05:04.942Z" }, + { url = "https://files.pythonhosted.org/packages/be/90/9f4a65c0aec3ccf032703e6db02d89a157462fbb2cf20dd415128251cac0/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:059098c3a429f62fc98e8ec62b982230ef2c8df68c79e826e37b895bc359a9c0", size = 488976, upload-time = "2025-10-14T15:05:05.905Z" }, + { url = "https://files.pythonhosted.org/packages/37/57/ee347af605d867f712be7029bb94c8c071732a4b44792e3176fa3c612d39/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfb5862016acc9b869bb57284e6cb35fdf8e22fe59f7548858e2f971d045f150", size = 595506, upload-time = "2025-10-14T15:05:06.906Z" }, + { url = "https://files.pythonhosted.org/packages/a8/78/cc5ab0b86c122047f75e8fc471c67a04dee395daf847d3e59381996c8707/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:319b27255aacd9923b8a276bb14d21a5f7ff82564c744235fc5eae58d95422ae", size = 474936, upload-time = "2025-10-14T15:05:07.906Z" }, + { url = "https://files.pythonhosted.org/packages/62/da/def65b170a3815af7bd40a3e7010bf6ab53089ef1b75d05dd5385b87cf08/watchfiles-1.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c755367e51db90e75b19454b680903631d41f9e3607fbd941d296a020c2d752d", size = 456147, upload-time = "2025-10-14T15:05:09.138Z" }, + { url = "https://files.pythonhosted.org/packages/57/99/da6573ba71166e82d288d4df0839128004c67d2778d3b566c138695f5c0b/watchfiles-1.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c22c776292a23bfc7237a98f791b9ad3144b02116ff10d820829ce62dff46d0b", size = 630007, upload-time = "2025-10-14T15:05:10.117Z" }, + { url = "https://files.pythonhosted.org/packages/a8/51/7439c4dd39511368849eb1e53279cd3454b4a4dbace80bab88feeb83c6b5/watchfiles-1.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:3a476189be23c3686bc2f4321dd501cb329c0a0469e77b7b534ee10129ae6374", size = 622280, upload-time = "2025-10-14T15:05:11.146Z" }, + { url = "https://files.pythonhosted.org/packages/95/9c/8ed97d4bba5db6fdcdb2b298d3898f2dd5c20f6b73aee04eabe56c59677e/watchfiles-1.1.1-cp313-cp313-win32.whl", hash = "sha256:bf0a91bfb5574a2f7fc223cf95eeea79abfefa404bf1ea5e339c0c1560ae99a0", size = 272056, upload-time = "2025-10-14T15:05:12.156Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f3/c14e28429f744a260d8ceae18bf58c1d5fa56b50d006a7a9f80e1882cb0d/watchfiles-1.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:52e06553899e11e8074503c8e716d574adeeb7e68913115c4b3653c53f9bae42", size = 288162, upload-time = "2025-10-14T15:05:13.208Z" }, + { url = "https://files.pythonhosted.org/packages/dc/61/fe0e56c40d5cd29523e398d31153218718c5786b5e636d9ae8ae79453d27/watchfiles-1.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:ac3cc5759570cd02662b15fbcd9d917f7ecd47efe0d6b40474eafd246f91ea18", size = 277909, upload-time = "2025-10-14T15:05:14.49Z" }, + { url = "https://files.pythonhosted.org/packages/79/42/e0a7d749626f1e28c7108a99fb9bf524b501bbbeb9b261ceecde644d5a07/watchfiles-1.1.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:563b116874a9a7ce6f96f87cd0b94f7faf92d08d0021e837796f0a14318ef8da", size = 403389, upload-time = "2025-10-14T15:05:15.777Z" }, + { url = "https://files.pythonhosted.org/packages/15/49/08732f90ce0fbbc13913f9f215c689cfc9ced345fb1bcd8829a50007cc8d/watchfiles-1.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3ad9fe1dae4ab4212d8c91e80b832425e24f421703b5a42ef2e4a1e215aff051", size = 389964, upload-time = "2025-10-14T15:05:16.85Z" }, + { url = "https://files.pythonhosted.org/packages/27/0d/7c315d4bd5f2538910491a0393c56bf70d333d51bc5b34bee8e68e8cea19/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce70f96a46b894b36eba678f153f052967a0d06d5b5a19b336ab0dbbd029f73e", size = 448114, upload-time = "2025-10-14T15:05:17.876Z" }, + { url = "https://files.pythonhosted.org/packages/c3/24/9e096de47a4d11bc4df41e9d1e61776393eac4cb6eb11b3e23315b78b2cc/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cb467c999c2eff23a6417e58d75e5828716f42ed8289fe6b77a7e5a91036ca70", size = 460264, upload-time = "2025-10-14T15:05:18.962Z" }, + { url = "https://files.pythonhosted.org/packages/cc/0f/e8dea6375f1d3ba5fcb0b3583e2b493e77379834c74fd5a22d66d85d6540/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:836398932192dae4146c8f6f737d74baeac8b70ce14831a239bdb1ca882fc261", size = 487877, upload-time = "2025-10-14T15:05:20.094Z" }, + { url = "https://files.pythonhosted.org/packages/ac/5b/df24cfc6424a12deb41503b64d42fbea6b8cb357ec62ca84a5a3476f654a/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:743185e7372b7bc7c389e1badcc606931a827112fbbd37f14c537320fca08620", size = 595176, upload-time = "2025-10-14T15:05:21.134Z" }, + { url = "https://files.pythonhosted.org/packages/8f/b5/853b6757f7347de4e9b37e8cc3289283fb983cba1ab4d2d7144694871d9c/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:afaeff7696e0ad9f02cbb8f56365ff4686ab205fcf9c4c5b6fdfaaa16549dd04", size = 473577, upload-time = "2025-10-14T15:05:22.306Z" }, + { url = "https://files.pythonhosted.org/packages/e1/f7/0a4467be0a56e80447c8529c9fce5b38eab4f513cb3d9bf82e7392a5696b/watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7eb7da0eb23aa2ba036d4f616d46906013a68caf61b7fdbe42fc8b25132e77", size = 455425, upload-time = "2025-10-14T15:05:23.348Z" }, + { url = "https://files.pythonhosted.org/packages/8e/e0/82583485ea00137ddf69bc84a2db88bd92ab4a6e3c405e5fb878ead8d0e7/watchfiles-1.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:831a62658609f0e5c64178211c942ace999517f5770fe9436be4c2faeba0c0ef", size = 628826, upload-time = "2025-10-14T15:05:24.398Z" }, + { url = "https://files.pythonhosted.org/packages/28/9a/a785356fccf9fae84c0cc90570f11702ae9571036fb25932f1242c82191c/watchfiles-1.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:f9a2ae5c91cecc9edd47e041a930490c31c3afb1f5e6d71de3dc671bfaca02bf", size = 622208, upload-time = "2025-10-14T15:05:25.45Z" }, + { url = "https://files.pythonhosted.org/packages/ba/4c/a888c91e2e326872fa4705095d64acd8aa2fb9c1f7b9bd0588f33850516c/watchfiles-1.1.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:17ef139237dfced9da49fb7f2232c86ca9421f666d78c264c7ffca6601d154c3", size = 409611, upload-time = "2025-10-14T15:06:05.809Z" }, + { url = "https://files.pythonhosted.org/packages/1e/c7/5420d1943c8e3ce1a21c0a9330bcf7edafb6aa65d26b21dbb3267c9e8112/watchfiles-1.1.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:672b8adf25b1a0d35c96b5888b7b18699d27d4194bac8beeae75be4b7a3fc9b2", size = 396889, upload-time = "2025-10-14T15:06:07.035Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e5/0072cef3804ce8d3aaddbfe7788aadff6b3d3f98a286fdbee9fd74ca59a7/watchfiles-1.1.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77a13aea58bc2b90173bc69f2a90de8e282648939a00a602e1dc4ee23e26b66d", size = 451616, upload-time = "2025-10-14T15:06:08.072Z" }, + { url = "https://files.pythonhosted.org/packages/83/4e/b87b71cbdfad81ad7e83358b3e447fedd281b880a03d64a760fe0a11fc2e/watchfiles-1.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b495de0bb386df6a12b18335a0285dda90260f51bdb505503c02bcd1ce27a8b", size = 458413, upload-time = "2025-10-14T15:06:09.209Z" }, + { url = "https://files.pythonhosted.org/packages/d3/8e/e500f8b0b77be4ff753ac94dc06b33d8f0d839377fee1b78e8c8d8f031bf/watchfiles-1.1.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:db476ab59b6765134de1d4fe96a1a9c96ddf091683599be0f26147ea1b2e4b88", size = 408250, upload-time = "2025-10-14T15:06:10.264Z" }, + { url = "https://files.pythonhosted.org/packages/bd/95/615e72cd27b85b61eec764a5ca51bd94d40b5adea5ff47567d9ebc4d275a/watchfiles-1.1.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89eef07eee5e9d1fda06e38822ad167a044153457e6fd997f8a858ab7564a336", size = 396117, upload-time = "2025-10-14T15:06:11.28Z" }, + { url = "https://files.pythonhosted.org/packages/c9/81/e7fe958ce8a7fb5c73cc9fb07f5aeaf755e6aa72498c57d760af760c91f8/watchfiles-1.1.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce19e06cbda693e9e7686358af9cd6f5d61312ab8b00488bc36f5aabbaf77e24", size = 450493, upload-time = "2025-10-14T15:06:12.321Z" }, + { url = "https://files.pythonhosted.org/packages/6e/d4/ed38dd3b1767193de971e694aa544356e63353c33a85d948166b5ff58b9e/watchfiles-1.1.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e6f39af2eab0118338902798b5aa6664f46ff66bc0280de76fca67a7f262a49", size = 457546, upload-time = "2025-10-14T15:06:13.372Z" }, ] [[package]] name = "wcwidth" version = "0.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/35/a2/8e3becb46433538a38726c948d3399905a4c7cabd0df578ede5dc51f0ec2/wcwidth-0.6.0.tar.gz", hash = "sha256:cdc4e4262d6ef9a1a57e018384cbeb1208d8abbc64176027e2c2455c81313159", size = 159684, upload_time = "2026-02-06T19:19:40.919Z" } +sdist = { url = "https://files.pythonhosted.org/packages/35/a2/8e3becb46433538a38726c948d3399905a4c7cabd0df578ede5dc51f0ec2/wcwidth-0.6.0.tar.gz", hash = "sha256:cdc4e4262d6ef9a1a57e018384cbeb1208d8abbc64176027e2c2455c81313159", size = 159684, upload-time = "2026-02-06T19:19:40.919Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/68/5a/199c59e0a824a3db2b89c5d2dade7ab5f9624dbf6448dc291b46d5ec94d3/wcwidth-0.6.0-py3-none-any.whl", hash = "sha256:1a3a1e510b553315f8e146c54764f4fb6264ffad731b3d78088cdb1478ffbdad", size = 94189, upload_time = "2026-02-06T19:19:39.646Z" }, + { url = "https://files.pythonhosted.org/packages/68/5a/199c59e0a824a3db2b89c5d2dade7ab5f9624dbf6448dc291b46d5ec94d3/wcwidth-0.6.0-py3-none-any.whl", hash = "sha256:1a3a1e510b553315f8e146c54764f4fb6264ffad731b3d78088cdb1478ffbdad", size = 94189, upload-time = "2026-02-06T19:19:39.646Z" }, ] [[package]] @@ -5032,210 +5082,210 @@ dependencies = [ { name = "typer-slim" }, { name = "wasabi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/09/d7/edd9c24e60cf8e5de130aa2e8af3b01521f4d0216c371d01212f580d0d8e/weasel-0.4.3.tar.gz", hash = "sha256:f293d6174398e8f478c78481e00c503ee4b82ea7a3e6d0d6a01e46a6b1396845", size = 38733, upload_time = "2025-11-13T23:52:28.193Z" } +sdist = { url = "https://files.pythonhosted.org/packages/09/d7/edd9c24e60cf8e5de130aa2e8af3b01521f4d0216c371d01212f580d0d8e/weasel-0.4.3.tar.gz", hash = "sha256:f293d6174398e8f478c78481e00c503ee4b82ea7a3e6d0d6a01e46a6b1396845", size = 38733, upload-time = "2025-11-13T23:52:28.193Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/74/a148b41572656904a39dfcfed3f84dd1066014eed94e209223ae8e9d088d/weasel-0.4.3-py3-none-any.whl", hash = "sha256:08f65b5d0dbded4879e08a64882de9b9514753d9eaa4c4e2a576e33666ac12cf", size = 50757, upload_time = "2025-11-13T23:52:26.982Z" }, + { url = "https://files.pythonhosted.org/packages/a4/74/a148b41572656904a39dfcfed3f84dd1066014eed94e209223ae8e9d088d/weasel-0.4.3-py3-none-any.whl", hash = "sha256:08f65b5d0dbded4879e08a64882de9b9514753d9eaa4c4e2a576e33666ac12cf", size = 50757, upload-time = "2025-11-13T23:52:26.982Z" }, ] [[package]] name = "webcolors" version = "25.10.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/7a/eb316761ec35664ea5174709a68bbd3389de60d4a1ebab8808bfc264ed67/webcolors-25.10.0.tar.gz", hash = "sha256:62abae86504f66d0f6364c2a8520de4a0c47b80c03fc3a5f1815fedbef7c19bf", size = 53491, upload_time = "2025-10-31T07:51:03.977Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/7a/eb316761ec35664ea5174709a68bbd3389de60d4a1ebab8808bfc264ed67/webcolors-25.10.0.tar.gz", hash = "sha256:62abae86504f66d0f6364c2a8520de4a0c47b80c03fc3a5f1815fedbef7c19bf", size = 53491, upload-time = "2025-10-31T07:51:03.977Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl", hash = "sha256:032c727334856fc0b968f63daa252a1ac93d33db2f5267756623c210e57a4f1d", size = 14905, upload_time = "2025-10-31T07:51:01.778Z" }, + { url = "https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl", hash = "sha256:032c727334856fc0b968f63daa252a1ac93d33db2f5267756623c210e57a4f1d", size = 14905, upload-time = "2025-10-31T07:51:01.778Z" }, ] [[package]] name = "websockets" version = "16.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/04/24/4b2031d72e840ce4c1ccb255f693b15c334757fc50023e4db9537080b8c4/websockets-16.0.tar.gz", hash = "sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5", size = 179346, upload_time = "2026-01-10T09:23:47.181Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/20/74/221f58decd852f4b59cc3354cccaf87e8ef695fede361d03dc9a7396573b/websockets-16.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:04cdd5d2d1dacbad0a7bf36ccbcd3ccd5a30ee188f2560b7a62a30d14107b31a", size = 177343, upload_time = "2026-01-10T09:22:21.28Z" }, - { url = "https://files.pythonhosted.org/packages/19/0f/22ef6107ee52ab7f0b710d55d36f5a5d3ef19e8a205541a6d7ffa7994e5a/websockets-16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8ff32bb86522a9e5e31439a58addbb0166f0204d64066fb955265c4e214160f0", size = 175021, upload_time = "2026-01-10T09:22:22.696Z" }, - { url = "https://files.pythonhosted.org/packages/10/40/904a4cb30d9b61c0e278899bf36342e9b0208eb3c470324a9ecbaac2a30f/websockets-16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:583b7c42688636f930688d712885cf1531326ee05effd982028212ccc13e5957", size = 175320, upload_time = "2026-01-10T09:22:23.94Z" }, - { url = "https://files.pythonhosted.org/packages/9d/2f/4b3ca7e106bc608744b1cdae041e005e446124bebb037b18799c2d356864/websockets-16.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7d837379b647c0c4c2355c2499723f82f1635fd2c26510e1f587d89bc2199e72", size = 183815, upload_time = "2026-01-10T09:22:25.469Z" }, - { url = "https://files.pythonhosted.org/packages/86/26/d40eaa2a46d4302becec8d15b0fc5e45bdde05191e7628405a19cf491ccd/websockets-16.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df57afc692e517a85e65b72e165356ed1df12386ecb879ad5693be08fac65dde", size = 185054, upload_time = "2026-01-10T09:22:27.101Z" }, - { url = "https://files.pythonhosted.org/packages/b0/ba/6500a0efc94f7373ee8fefa8c271acdfd4dca8bd49a90d4be7ccabfc397e/websockets-16.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2b9f1e0d69bc60a4a87349d50c09a037a2607918746f07de04df9e43252c77a3", size = 184565, upload_time = "2026-01-10T09:22:28.293Z" }, - { url = "https://files.pythonhosted.org/packages/04/b4/96bf2cee7c8d8102389374a2616200574f5f01128d1082f44102140344cc/websockets-16.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:335c23addf3d5e6a8633f9f8eda77efad001671e80b95c491dd0924587ece0b3", size = 183848, upload_time = "2026-01-10T09:22:30.394Z" }, - { url = "https://files.pythonhosted.org/packages/02/8e/81f40fb00fd125357814e8c3025738fc4ffc3da4b6b4a4472a82ba304b41/websockets-16.0-cp310-cp310-win32.whl", hash = "sha256:37b31c1623c6605e4c00d466c9d633f9b812ea430c11c8a278774a1fde1acfa9", size = 178249, upload_time = "2026-01-10T09:22:32.083Z" }, - { url = "https://files.pythonhosted.org/packages/b4/5f/7e40efe8df57db9b91c88a43690ac66f7b7aa73a11aa6a66b927e44f26fa/websockets-16.0-cp310-cp310-win_amd64.whl", hash = "sha256:8e1dab317b6e77424356e11e99a432b7cb2f3ec8c5ab4dabbcee6add48f72b35", size = 178685, upload_time = "2026-01-10T09:22:33.345Z" }, - { url = "https://files.pythonhosted.org/packages/f2/db/de907251b4ff46ae804ad0409809504153b3f30984daf82a1d84a9875830/websockets-16.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:31a52addea25187bde0797a97d6fc3d2f92b6f72a9370792d65a6e84615ac8a8", size = 177340, upload_time = "2026-01-10T09:22:34.539Z" }, - { url = "https://files.pythonhosted.org/packages/f3/fa/abe89019d8d8815c8781e90d697dec52523fb8ebe308bf11664e8de1877e/websockets-16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:417b28978cdccab24f46400586d128366313e8a96312e4b9362a4af504f3bbad", size = 175022, upload_time = "2026-01-10T09:22:36.332Z" }, - { url = "https://files.pythonhosted.org/packages/58/5d/88ea17ed1ded2079358b40d31d48abe90a73c9e5819dbcde1606e991e2ad/websockets-16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:af80d74d4edfa3cb9ed973a0a5ba2b2a549371f8a741e0800cb07becdd20f23d", size = 175319, upload_time = "2026-01-10T09:22:37.602Z" }, - { url = "https://files.pythonhosted.org/packages/d2/ae/0ee92b33087a33632f37a635e11e1d99d429d3d323329675a6022312aac2/websockets-16.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:08d7af67b64d29823fed316505a89b86705f2b7981c07848fb5e3ea3020c1abe", size = 184631, upload_time = "2026-01-10T09:22:38.789Z" }, - { url = "https://files.pythonhosted.org/packages/c8/c5/27178df583b6c5b31b29f526ba2da5e2f864ecc79c99dae630a85d68c304/websockets-16.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7be95cfb0a4dae143eaed2bcba8ac23f4892d8971311f1b06f3c6b78952ee70b", size = 185870, upload_time = "2026-01-10T09:22:39.893Z" }, - { url = "https://files.pythonhosted.org/packages/87/05/536652aa84ddc1c018dbb7e2c4cbcd0db884580bf8e95aece7593fde526f/websockets-16.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d6297ce39ce5c2e6feb13c1a996a2ded3b6832155fcfc920265c76f24c7cceb5", size = 185361, upload_time = "2026-01-10T09:22:41.016Z" }, - { url = "https://files.pythonhosted.org/packages/6d/e2/d5332c90da12b1e01f06fb1b85c50cfc489783076547415bf9f0a659ec19/websockets-16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1c1b30e4f497b0b354057f3467f56244c603a79c0d1dafce1d16c283c25f6e64", size = 184615, upload_time = "2026-01-10T09:22:42.442Z" }, - { url = "https://files.pythonhosted.org/packages/77/fb/d3f9576691cae9253b51555f841bc6600bf0a983a461c79500ace5a5b364/websockets-16.0-cp311-cp311-win32.whl", hash = "sha256:5f451484aeb5cafee1ccf789b1b66f535409d038c56966d6101740c1614b86c6", size = 178246, upload_time = "2026-01-10T09:22:43.654Z" }, - { url = "https://files.pythonhosted.org/packages/54/67/eaff76b3dbaf18dcddabc3b8c1dba50b483761cccff67793897945b37408/websockets-16.0-cp311-cp311-win_amd64.whl", hash = "sha256:8d7f0659570eefb578dacde98e24fb60af35350193e4f56e11190787bee77dac", size = 178684, upload_time = "2026-01-10T09:22:44.941Z" }, - { url = "https://files.pythonhosted.org/packages/84/7b/bac442e6b96c9d25092695578dda82403c77936104b5682307bd4deb1ad4/websockets-16.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:71c989cbf3254fbd5e84d3bff31e4da39c43f884e64f2551d14bb3c186230f00", size = 177365, upload_time = "2026-01-10T09:22:46.787Z" }, - { url = "https://files.pythonhosted.org/packages/b0/fe/136ccece61bd690d9c1f715baaeefd953bb2360134de73519d5df19d29ca/websockets-16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8b6e209ffee39ff1b6d0fa7bfef6de950c60dfb91b8fcead17da4ee539121a79", size = 175038, upload_time = "2026-01-10T09:22:47.999Z" }, - { url = "https://files.pythonhosted.org/packages/40/1e/9771421ac2286eaab95b8575b0cb701ae3663abf8b5e1f64f1fd90d0a673/websockets-16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:86890e837d61574c92a97496d590968b23c2ef0aeb8a9bc9421d174cd378ae39", size = 175328, upload_time = "2026-01-10T09:22:49.809Z" }, - { url = "https://files.pythonhosted.org/packages/18/29/71729b4671f21e1eaa5d6573031ab810ad2936c8175f03f97f3ff164c802/websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9b5aca38b67492ef518a8ab76851862488a478602229112c4b0d58d63a7a4d5c", size = 184915, upload_time = "2026-01-10T09:22:51.071Z" }, - { url = "https://files.pythonhosted.org/packages/97/bb/21c36b7dbbafc85d2d480cd65df02a1dc93bf76d97147605a8e27ff9409d/websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e0334872c0a37b606418ac52f6ab9cfd17317ac26365f7f65e203e2d0d0d359f", size = 186152, upload_time = "2026-01-10T09:22:52.224Z" }, - { url = "https://files.pythonhosted.org/packages/4a/34/9bf8df0c0cf88fa7bfe36678dc7b02970c9a7d5e065a3099292db87b1be2/websockets-16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a0b31e0b424cc6b5a04b8838bbaec1688834b2383256688cf47eb97412531da1", size = 185583, upload_time = "2026-01-10T09:22:53.443Z" }, - { url = "https://files.pythonhosted.org/packages/47/88/4dd516068e1a3d6ab3c7c183288404cd424a9a02d585efbac226cb61ff2d/websockets-16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:485c49116d0af10ac698623c513c1cc01c9446c058a4e61e3bf6c19dff7335a2", size = 184880, upload_time = "2026-01-10T09:22:55.033Z" }, - { url = "https://files.pythonhosted.org/packages/91/d6/7d4553ad4bf1c0421e1ebd4b18de5d9098383b5caa1d937b63df8d04b565/websockets-16.0-cp312-cp312-win32.whl", hash = "sha256:eaded469f5e5b7294e2bdca0ab06becb6756ea86894a47806456089298813c89", size = 178261, upload_time = "2026-01-10T09:22:56.251Z" }, - { url = "https://files.pythonhosted.org/packages/c3/f0/f3a17365441ed1c27f850a80b2bc680a0fa9505d733fe152fdf5e98c1c0b/websockets-16.0-cp312-cp312-win_amd64.whl", hash = "sha256:5569417dc80977fc8c2d43a86f78e0a5a22fee17565d78621b6bb264a115d4ea", size = 178693, upload_time = "2026-01-10T09:22:57.478Z" }, - { url = "https://files.pythonhosted.org/packages/cc/9c/baa8456050d1c1b08dd0ec7346026668cbc6f145ab4e314d707bb845bf0d/websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:878b336ac47938b474c8f982ac2f7266a540adc3fa4ad74ae96fea9823a02cc9", size = 177364, upload_time = "2026-01-10T09:22:59.333Z" }, - { url = "https://files.pythonhosted.org/packages/7e/0c/8811fc53e9bcff68fe7de2bcbe75116a8d959ac699a3200f4847a8925210/websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:52a0fec0e6c8d9a784c2c78276a48a2bdf099e4ccc2a4cad53b27718dbfd0230", size = 175039, upload_time = "2026-01-10T09:23:01.171Z" }, - { url = "https://files.pythonhosted.org/packages/aa/82/39a5f910cb99ec0b59e482971238c845af9220d3ab9fa76dd9162cda9d62/websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e6578ed5b6981005df1860a56e3617f14a6c307e6a71b4fff8c48fdc50f3ed2c", size = 175323, upload_time = "2026-01-10T09:23:02.341Z" }, - { url = "https://files.pythonhosted.org/packages/bd/28/0a25ee5342eb5d5f297d992a77e56892ecb65e7854c7898fb7d35e9b33bd/websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:95724e638f0f9c350bb1c2b0a7ad0e83d9cc0c9259f3ea94e40d7b02a2179ae5", size = 184975, upload_time = "2026-01-10T09:23:03.756Z" }, - { url = "https://files.pythonhosted.org/packages/f9/66/27ea52741752f5107c2e41fda05e8395a682a1e11c4e592a809a90c6a506/websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0204dc62a89dc9d50d682412c10b3542d748260d743500a85c13cd1ee4bde82", size = 186203, upload_time = "2026-01-10T09:23:05.01Z" }, - { url = "https://files.pythonhosted.org/packages/37/e5/8e32857371406a757816a2b471939d51c463509be73fa538216ea52b792a/websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:52ac480f44d32970d66763115edea932f1c5b1312de36df06d6b219f6741eed8", size = 185653, upload_time = "2026-01-10T09:23:06.301Z" }, - { url = "https://files.pythonhosted.org/packages/9b/67/f926bac29882894669368dc73f4da900fcdf47955d0a0185d60103df5737/websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6e5a82b677f8f6f59e8dfc34ec06ca6b5b48bc4fcda346acd093694cc2c24d8f", size = 184920, upload_time = "2026-01-10T09:23:07.492Z" }, - { url = "https://files.pythonhosted.org/packages/3c/a1/3d6ccdcd125b0a42a311bcd15a7f705d688f73b2a22d8cf1c0875d35d34a/websockets-16.0-cp313-cp313-win32.whl", hash = "sha256:abf050a199613f64c886ea10f38b47770a65154dc37181bfaff70c160f45315a", size = 178255, upload_time = "2026-01-10T09:23:09.245Z" }, - { url = "https://files.pythonhosted.org/packages/6b/ae/90366304d7c2ce80f9b826096a9e9048b4bb760e44d3b873bb272cba696b/websockets-16.0-cp313-cp313-win_amd64.whl", hash = "sha256:3425ac5cf448801335d6fdc7ae1eb22072055417a96cc6b31b3861f455fbc156", size = 178689, upload_time = "2026-01-10T09:23:10.483Z" }, - { url = "https://files.pythonhosted.org/packages/72/07/c98a68571dcf256e74f1f816b8cc5eae6eb2d3d5cfa44d37f801619d9166/websockets-16.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:349f83cd6c9a415428ee1005cadb5c2c56f4389bc06a9af16103c3bc3dcc8b7d", size = 174947, upload_time = "2026-01-10T09:23:36.166Z" }, - { url = "https://files.pythonhosted.org/packages/7e/52/93e166a81e0305b33fe416338be92ae863563fe7bce446b0f687b9df5aea/websockets-16.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:4a1aba3340a8dca8db6eb5a7986157f52eb9e436b74813764241981ca4888f03", size = 175260, upload_time = "2026-01-10T09:23:37.409Z" }, - { url = "https://files.pythonhosted.org/packages/56/0c/2dbf513bafd24889d33de2ff0368190a0e69f37bcfa19009ef819fe4d507/websockets-16.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f4a32d1bd841d4bcbffdcb3d2ce50c09c3909fbead375ab28d0181af89fd04da", size = 176071, upload_time = "2026-01-10T09:23:39.158Z" }, - { url = "https://files.pythonhosted.org/packages/a5/8f/aea9c71cc92bf9b6cc0f7f70df8f0b420636b6c96ef4feee1e16f80f75dd/websockets-16.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0298d07ee155e2e9fda5be8a9042200dd2e3bb0b8a38482156576f863a9d457c", size = 176968, upload_time = "2026-01-10T09:23:41.031Z" }, - { url = "https://files.pythonhosted.org/packages/9a/3f/f70e03f40ffc9a30d817eef7da1be72ee4956ba8d7255c399a01b135902a/websockets-16.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a653aea902e0324b52f1613332ddf50b00c06fdaf7e92624fbf8c77c78fa5767", size = 178735, upload_time = "2026-01-10T09:23:42.259Z" }, - { url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size = 171598, upload_time = "2026-01-10T09:23:45.395Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/04/24/4b2031d72e840ce4c1ccb255f693b15c334757fc50023e4db9537080b8c4/websockets-16.0.tar.gz", hash = "sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5", size = 179346, upload-time = "2026-01-10T09:23:47.181Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/74/221f58decd852f4b59cc3354cccaf87e8ef695fede361d03dc9a7396573b/websockets-16.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:04cdd5d2d1dacbad0a7bf36ccbcd3ccd5a30ee188f2560b7a62a30d14107b31a", size = 177343, upload-time = "2026-01-10T09:22:21.28Z" }, + { url = "https://files.pythonhosted.org/packages/19/0f/22ef6107ee52ab7f0b710d55d36f5a5d3ef19e8a205541a6d7ffa7994e5a/websockets-16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8ff32bb86522a9e5e31439a58addbb0166f0204d64066fb955265c4e214160f0", size = 175021, upload-time = "2026-01-10T09:22:22.696Z" }, + { url = "https://files.pythonhosted.org/packages/10/40/904a4cb30d9b61c0e278899bf36342e9b0208eb3c470324a9ecbaac2a30f/websockets-16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:583b7c42688636f930688d712885cf1531326ee05effd982028212ccc13e5957", size = 175320, upload-time = "2026-01-10T09:22:23.94Z" }, + { url = "https://files.pythonhosted.org/packages/9d/2f/4b3ca7e106bc608744b1cdae041e005e446124bebb037b18799c2d356864/websockets-16.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7d837379b647c0c4c2355c2499723f82f1635fd2c26510e1f587d89bc2199e72", size = 183815, upload-time = "2026-01-10T09:22:25.469Z" }, + { url = "https://files.pythonhosted.org/packages/86/26/d40eaa2a46d4302becec8d15b0fc5e45bdde05191e7628405a19cf491ccd/websockets-16.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df57afc692e517a85e65b72e165356ed1df12386ecb879ad5693be08fac65dde", size = 185054, upload-time = "2026-01-10T09:22:27.101Z" }, + { url = "https://files.pythonhosted.org/packages/b0/ba/6500a0efc94f7373ee8fefa8c271acdfd4dca8bd49a90d4be7ccabfc397e/websockets-16.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2b9f1e0d69bc60a4a87349d50c09a037a2607918746f07de04df9e43252c77a3", size = 184565, upload-time = "2026-01-10T09:22:28.293Z" }, + { url = "https://files.pythonhosted.org/packages/04/b4/96bf2cee7c8d8102389374a2616200574f5f01128d1082f44102140344cc/websockets-16.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:335c23addf3d5e6a8633f9f8eda77efad001671e80b95c491dd0924587ece0b3", size = 183848, upload-time = "2026-01-10T09:22:30.394Z" }, + { url = "https://files.pythonhosted.org/packages/02/8e/81f40fb00fd125357814e8c3025738fc4ffc3da4b6b4a4472a82ba304b41/websockets-16.0-cp310-cp310-win32.whl", hash = "sha256:37b31c1623c6605e4c00d466c9d633f9b812ea430c11c8a278774a1fde1acfa9", size = 178249, upload-time = "2026-01-10T09:22:32.083Z" }, + { url = "https://files.pythonhosted.org/packages/b4/5f/7e40efe8df57db9b91c88a43690ac66f7b7aa73a11aa6a66b927e44f26fa/websockets-16.0-cp310-cp310-win_amd64.whl", hash = "sha256:8e1dab317b6e77424356e11e99a432b7cb2f3ec8c5ab4dabbcee6add48f72b35", size = 178685, upload-time = "2026-01-10T09:22:33.345Z" }, + { url = "https://files.pythonhosted.org/packages/f2/db/de907251b4ff46ae804ad0409809504153b3f30984daf82a1d84a9875830/websockets-16.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:31a52addea25187bde0797a97d6fc3d2f92b6f72a9370792d65a6e84615ac8a8", size = 177340, upload-time = "2026-01-10T09:22:34.539Z" }, + { url = "https://files.pythonhosted.org/packages/f3/fa/abe89019d8d8815c8781e90d697dec52523fb8ebe308bf11664e8de1877e/websockets-16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:417b28978cdccab24f46400586d128366313e8a96312e4b9362a4af504f3bbad", size = 175022, upload-time = "2026-01-10T09:22:36.332Z" }, + { url = "https://files.pythonhosted.org/packages/58/5d/88ea17ed1ded2079358b40d31d48abe90a73c9e5819dbcde1606e991e2ad/websockets-16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:af80d74d4edfa3cb9ed973a0a5ba2b2a549371f8a741e0800cb07becdd20f23d", size = 175319, upload-time = "2026-01-10T09:22:37.602Z" }, + { url = "https://files.pythonhosted.org/packages/d2/ae/0ee92b33087a33632f37a635e11e1d99d429d3d323329675a6022312aac2/websockets-16.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:08d7af67b64d29823fed316505a89b86705f2b7981c07848fb5e3ea3020c1abe", size = 184631, upload-time = "2026-01-10T09:22:38.789Z" }, + { url = "https://files.pythonhosted.org/packages/c8/c5/27178df583b6c5b31b29f526ba2da5e2f864ecc79c99dae630a85d68c304/websockets-16.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7be95cfb0a4dae143eaed2bcba8ac23f4892d8971311f1b06f3c6b78952ee70b", size = 185870, upload-time = "2026-01-10T09:22:39.893Z" }, + { url = "https://files.pythonhosted.org/packages/87/05/536652aa84ddc1c018dbb7e2c4cbcd0db884580bf8e95aece7593fde526f/websockets-16.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d6297ce39ce5c2e6feb13c1a996a2ded3b6832155fcfc920265c76f24c7cceb5", size = 185361, upload-time = "2026-01-10T09:22:41.016Z" }, + { url = "https://files.pythonhosted.org/packages/6d/e2/d5332c90da12b1e01f06fb1b85c50cfc489783076547415bf9f0a659ec19/websockets-16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1c1b30e4f497b0b354057f3467f56244c603a79c0d1dafce1d16c283c25f6e64", size = 184615, upload-time = "2026-01-10T09:22:42.442Z" }, + { url = "https://files.pythonhosted.org/packages/77/fb/d3f9576691cae9253b51555f841bc6600bf0a983a461c79500ace5a5b364/websockets-16.0-cp311-cp311-win32.whl", hash = "sha256:5f451484aeb5cafee1ccf789b1b66f535409d038c56966d6101740c1614b86c6", size = 178246, upload-time = "2026-01-10T09:22:43.654Z" }, + { url = "https://files.pythonhosted.org/packages/54/67/eaff76b3dbaf18dcddabc3b8c1dba50b483761cccff67793897945b37408/websockets-16.0-cp311-cp311-win_amd64.whl", hash = "sha256:8d7f0659570eefb578dacde98e24fb60af35350193e4f56e11190787bee77dac", size = 178684, upload-time = "2026-01-10T09:22:44.941Z" }, + { url = "https://files.pythonhosted.org/packages/84/7b/bac442e6b96c9d25092695578dda82403c77936104b5682307bd4deb1ad4/websockets-16.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:71c989cbf3254fbd5e84d3bff31e4da39c43f884e64f2551d14bb3c186230f00", size = 177365, upload-time = "2026-01-10T09:22:46.787Z" }, + { url = "https://files.pythonhosted.org/packages/b0/fe/136ccece61bd690d9c1f715baaeefd953bb2360134de73519d5df19d29ca/websockets-16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8b6e209ffee39ff1b6d0fa7bfef6de950c60dfb91b8fcead17da4ee539121a79", size = 175038, upload-time = "2026-01-10T09:22:47.999Z" }, + { url = "https://files.pythonhosted.org/packages/40/1e/9771421ac2286eaab95b8575b0cb701ae3663abf8b5e1f64f1fd90d0a673/websockets-16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:86890e837d61574c92a97496d590968b23c2ef0aeb8a9bc9421d174cd378ae39", size = 175328, upload-time = "2026-01-10T09:22:49.809Z" }, + { url = "https://files.pythonhosted.org/packages/18/29/71729b4671f21e1eaa5d6573031ab810ad2936c8175f03f97f3ff164c802/websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9b5aca38b67492ef518a8ab76851862488a478602229112c4b0d58d63a7a4d5c", size = 184915, upload-time = "2026-01-10T09:22:51.071Z" }, + { url = "https://files.pythonhosted.org/packages/97/bb/21c36b7dbbafc85d2d480cd65df02a1dc93bf76d97147605a8e27ff9409d/websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e0334872c0a37b606418ac52f6ab9cfd17317ac26365f7f65e203e2d0d0d359f", size = 186152, upload-time = "2026-01-10T09:22:52.224Z" }, + { url = "https://files.pythonhosted.org/packages/4a/34/9bf8df0c0cf88fa7bfe36678dc7b02970c9a7d5e065a3099292db87b1be2/websockets-16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a0b31e0b424cc6b5a04b8838bbaec1688834b2383256688cf47eb97412531da1", size = 185583, upload-time = "2026-01-10T09:22:53.443Z" }, + { url = "https://files.pythonhosted.org/packages/47/88/4dd516068e1a3d6ab3c7c183288404cd424a9a02d585efbac226cb61ff2d/websockets-16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:485c49116d0af10ac698623c513c1cc01c9446c058a4e61e3bf6c19dff7335a2", size = 184880, upload-time = "2026-01-10T09:22:55.033Z" }, + { url = "https://files.pythonhosted.org/packages/91/d6/7d4553ad4bf1c0421e1ebd4b18de5d9098383b5caa1d937b63df8d04b565/websockets-16.0-cp312-cp312-win32.whl", hash = "sha256:eaded469f5e5b7294e2bdca0ab06becb6756ea86894a47806456089298813c89", size = 178261, upload-time = "2026-01-10T09:22:56.251Z" }, + { url = "https://files.pythonhosted.org/packages/c3/f0/f3a17365441ed1c27f850a80b2bc680a0fa9505d733fe152fdf5e98c1c0b/websockets-16.0-cp312-cp312-win_amd64.whl", hash = "sha256:5569417dc80977fc8c2d43a86f78e0a5a22fee17565d78621b6bb264a115d4ea", size = 178693, upload-time = "2026-01-10T09:22:57.478Z" }, + { url = "https://files.pythonhosted.org/packages/cc/9c/baa8456050d1c1b08dd0ec7346026668cbc6f145ab4e314d707bb845bf0d/websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:878b336ac47938b474c8f982ac2f7266a540adc3fa4ad74ae96fea9823a02cc9", size = 177364, upload-time = "2026-01-10T09:22:59.333Z" }, + { url = "https://files.pythonhosted.org/packages/7e/0c/8811fc53e9bcff68fe7de2bcbe75116a8d959ac699a3200f4847a8925210/websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:52a0fec0e6c8d9a784c2c78276a48a2bdf099e4ccc2a4cad53b27718dbfd0230", size = 175039, upload-time = "2026-01-10T09:23:01.171Z" }, + { url = "https://files.pythonhosted.org/packages/aa/82/39a5f910cb99ec0b59e482971238c845af9220d3ab9fa76dd9162cda9d62/websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e6578ed5b6981005df1860a56e3617f14a6c307e6a71b4fff8c48fdc50f3ed2c", size = 175323, upload-time = "2026-01-10T09:23:02.341Z" }, + { url = "https://files.pythonhosted.org/packages/bd/28/0a25ee5342eb5d5f297d992a77e56892ecb65e7854c7898fb7d35e9b33bd/websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:95724e638f0f9c350bb1c2b0a7ad0e83d9cc0c9259f3ea94e40d7b02a2179ae5", size = 184975, upload-time = "2026-01-10T09:23:03.756Z" }, + { url = "https://files.pythonhosted.org/packages/f9/66/27ea52741752f5107c2e41fda05e8395a682a1e11c4e592a809a90c6a506/websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0204dc62a89dc9d50d682412c10b3542d748260d743500a85c13cd1ee4bde82", size = 186203, upload-time = "2026-01-10T09:23:05.01Z" }, + { url = "https://files.pythonhosted.org/packages/37/e5/8e32857371406a757816a2b471939d51c463509be73fa538216ea52b792a/websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:52ac480f44d32970d66763115edea932f1c5b1312de36df06d6b219f6741eed8", size = 185653, upload-time = "2026-01-10T09:23:06.301Z" }, + { url = "https://files.pythonhosted.org/packages/9b/67/f926bac29882894669368dc73f4da900fcdf47955d0a0185d60103df5737/websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6e5a82b677f8f6f59e8dfc34ec06ca6b5b48bc4fcda346acd093694cc2c24d8f", size = 184920, upload-time = "2026-01-10T09:23:07.492Z" }, + { url = "https://files.pythonhosted.org/packages/3c/a1/3d6ccdcd125b0a42a311bcd15a7f705d688f73b2a22d8cf1c0875d35d34a/websockets-16.0-cp313-cp313-win32.whl", hash = "sha256:abf050a199613f64c886ea10f38b47770a65154dc37181bfaff70c160f45315a", size = 178255, upload-time = "2026-01-10T09:23:09.245Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ae/90366304d7c2ce80f9b826096a9e9048b4bb760e44d3b873bb272cba696b/websockets-16.0-cp313-cp313-win_amd64.whl", hash = "sha256:3425ac5cf448801335d6fdc7ae1eb22072055417a96cc6b31b3861f455fbc156", size = 178689, upload-time = "2026-01-10T09:23:10.483Z" }, + { url = "https://files.pythonhosted.org/packages/72/07/c98a68571dcf256e74f1f816b8cc5eae6eb2d3d5cfa44d37f801619d9166/websockets-16.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:349f83cd6c9a415428ee1005cadb5c2c56f4389bc06a9af16103c3bc3dcc8b7d", size = 174947, upload-time = "2026-01-10T09:23:36.166Z" }, + { url = "https://files.pythonhosted.org/packages/7e/52/93e166a81e0305b33fe416338be92ae863563fe7bce446b0f687b9df5aea/websockets-16.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:4a1aba3340a8dca8db6eb5a7986157f52eb9e436b74813764241981ca4888f03", size = 175260, upload-time = "2026-01-10T09:23:37.409Z" }, + { url = "https://files.pythonhosted.org/packages/56/0c/2dbf513bafd24889d33de2ff0368190a0e69f37bcfa19009ef819fe4d507/websockets-16.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f4a32d1bd841d4bcbffdcb3d2ce50c09c3909fbead375ab28d0181af89fd04da", size = 176071, upload-time = "2026-01-10T09:23:39.158Z" }, + { url = "https://files.pythonhosted.org/packages/a5/8f/aea9c71cc92bf9b6cc0f7f70df8f0b420636b6c96ef4feee1e16f80f75dd/websockets-16.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0298d07ee155e2e9fda5be8a9042200dd2e3bb0b8a38482156576f863a9d457c", size = 176968, upload-time = "2026-01-10T09:23:41.031Z" }, + { url = "https://files.pythonhosted.org/packages/9a/3f/f70e03f40ffc9a30d817eef7da1be72ee4956ba8d7255c399a01b135902a/websockets-16.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a653aea902e0324b52f1613332ddf50b00c06fdaf7e92624fbf8c77c78fa5767", size = 178735, upload-time = "2026-01-10T09:23:42.259Z" }, + { url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size = 171598, upload-time = "2026-01-10T09:23:45.395Z" }, ] [[package]] name = "wrapt" version = "2.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f7/37/ae31f40bec90de2f88d9597d0b5281e23ffe85b893a47ca5d9c05c63a4f6/wrapt-2.1.1.tar.gz", hash = "sha256:5fdcb09bf6db023d88f312bd0767594b414655d58090fc1c46b3414415f67fac", size = 81329, upload_time = "2026-02-03T02:12:13.786Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ca/21/293b657a27accfbbbb6007ebd78af0efa2083dac83e8f523272ea09b4638/wrapt-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7e927375e43fd5a985b27a8992327c22541b6dede1362fc79df337d26e23604f", size = 60554, upload_time = "2026-02-03T02:11:17.362Z" }, - { url = "https://files.pythonhosted.org/packages/25/e9/96dd77728b54a899d4ce2798d7b1296989ce687ed3c0cb917d6b3154bf5d/wrapt-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c99544b6a7d40ca22195563b6d8bc3986ee8bb82f272f31f0670fe9440c869", size = 61496, upload_time = "2026-02-03T02:12:54.732Z" }, - { url = "https://files.pythonhosted.org/packages/44/79/4c755b45df6ef30c0dd628ecfaa0c808854be147ca438429da70a162833c/wrapt-2.1.1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b2be3fa5f4efaf16ee7c77d0556abca35f5a18ad4ac06f0ef3904c3399010ce9", size = 113528, upload_time = "2026-02-03T02:12:26.405Z" }, - { url = "https://files.pythonhosted.org/packages/9f/63/23ce28f7b841217d9a6337a340fbb8d4a7fbd67a89d47f377c8550fa34aa/wrapt-2.1.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:67c90c1ae6489a6cb1a82058902caa8006706f7b4e8ff766f943e9d2c8e608d0", size = 115536, upload_time = "2026-02-03T02:11:54.397Z" }, - { url = "https://files.pythonhosted.org/packages/23/7b/5ca8d3b12768670d16c8329e29960eedd56212770365a02a8de8bf73dc01/wrapt-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:05c0db35ccffd7480143e62df1e829d101c7b86944ae3be7e4869a7efa621f53", size = 114716, upload_time = "2026-02-03T02:12:20.771Z" }, - { url = "https://files.pythonhosted.org/packages/c7/3a/9789ccb14a096d30bb847bf3ee137bf682cc9750c2ce155f4c5ae1962abf/wrapt-2.1.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0c2ec9f616755b2e1e0bf4d0961f59bb5c2e7a77407e7e2c38ef4f7d2fdde12c", size = 113200, upload_time = "2026-02-03T02:12:07.688Z" }, - { url = "https://files.pythonhosted.org/packages/cf/e5/4ec3526ce6ce920b267c8d35d2c2f0874d3fad2744c8b7259353f1132baa/wrapt-2.1.1-cp310-cp310-win32.whl", hash = "sha256:203ba6b3f89e410e27dbd30ff7dccaf54dcf30fda0b22aa1b82d560c7f9fe9a1", size = 57876, upload_time = "2026-02-03T02:11:42.61Z" }, - { url = "https://files.pythonhosted.org/packages/d1/4e/661c7c76ecd85375b2bc03488941a3a1078642af481db24949e2b9de01f4/wrapt-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:6f9426d9cfc2f8732922fc96198052e55c09bb9db3ddaa4323a18e055807410e", size = 60224, upload_time = "2026-02-03T02:11:19.096Z" }, - { url = "https://files.pythonhosted.org/packages/5f/b7/53c7252d371efada4cb119e72e774fa2c6b3011fc33e3e552cdf48fb9488/wrapt-2.1.1-cp310-cp310-win_arm64.whl", hash = "sha256:69c26f51b67076b40714cff81bdd5826c0b10c077fb6b0678393a6a2f952a5fc", size = 58645, upload_time = "2026-02-03T02:12:10.396Z" }, - { url = "https://files.pythonhosted.org/packages/b8/a8/9254e4da74b30a105935197015b18b31b7a298bf046e67d8952ef74967bd/wrapt-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6c366434a7fb914c7a5de508ed735ef9c133367114e1a7cb91dfb5cd806a1549", size = 60554, upload_time = "2026-02-03T02:11:13.038Z" }, - { url = "https://files.pythonhosted.org/packages/9e/a1/378579880cc7af226354054a2c255f69615b379d8adad482bfe2f22a0dc2/wrapt-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5d6a2068bd2e1e19e5a317c8c0b288267eec4e7347c36bc68a6e378a39f19ee7", size = 61491, upload_time = "2026-02-03T02:12:56.077Z" }, - { url = "https://files.pythonhosted.org/packages/dc/72/957b51c56acca35701665878ad31626182199fc4afecfe67dea072210f95/wrapt-2.1.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:891ab4713419217b2aed7dd106c9200f64e6a82226775a0d2ebd6bef2ebd1747", size = 113949, upload_time = "2026-02-03T02:11:04.516Z" }, - { url = "https://files.pythonhosted.org/packages/cd/74/36bbebb4a3d2ae9c3e6929639721f8606cd0710a82a777c371aa69e36504/wrapt-2.1.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8ef36a0df38d2dc9d907f6617f89e113c5892e0a35f58f45f75901af0ce7d81", size = 115989, upload_time = "2026-02-03T02:12:19.398Z" }, - { url = "https://files.pythonhosted.org/packages/ae/0d/f1177245a083c7be284bc90bddfe5aece32cdd5b858049cb69ce001a0e8d/wrapt-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:76e9af3ebd86f19973143d4d592cbf3e970cf3f66ddee30b16278c26ae34b8ab", size = 115242, upload_time = "2026-02-03T02:11:08.111Z" }, - { url = "https://files.pythonhosted.org/packages/62/3e/3b7cf5da27e59df61b1eae2d07dd03ff5d6f75b5408d694873cca7a8e33c/wrapt-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ff562067485ebdeaef2fa3fe9b1876bc4e7b73762e0a01406ad81e2076edcebf", size = 113676, upload_time = "2026-02-03T02:12:41.026Z" }, - { url = "https://files.pythonhosted.org/packages/f7/65/8248d3912c705f2c66f81cb97c77436f37abcbedb16d633b5ab0d795d8cd/wrapt-2.1.1-cp311-cp311-win32.whl", hash = "sha256:9e60a30aa0909435ec4ea2a3c53e8e1b50ac9f640c0e9fe3f21fd248a22f06c5", size = 57863, upload_time = "2026-02-03T02:12:18.112Z" }, - { url = "https://files.pythonhosted.org/packages/6b/31/d29310ab335f71f00c50466153b3dc985aaf4a9fc03263e543e136859541/wrapt-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:7d79954f51fcf84e5ec4878ab4aea32610d70145c5bbc84b3370eabfb1e096c2", size = 60224, upload_time = "2026-02-03T02:12:29.289Z" }, - { url = "https://files.pythonhosted.org/packages/0c/90/a6ec319affa6e2894962a0cb9d73c67f88af1a726d15314bfb5c88b8a08d/wrapt-2.1.1-cp311-cp311-win_arm64.whl", hash = "sha256:d3ffc6b0efe79e08fd947605fd598515aebefe45e50432dc3b5cd437df8b1ada", size = 58643, upload_time = "2026-02-03T02:12:43.022Z" }, - { url = "https://files.pythonhosted.org/packages/df/cb/4d5255d19bbd12be7f8ee2c1fb4269dddec9cef777ef17174d357468efaa/wrapt-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ab8e3793b239db021a18782a5823fcdea63b9fe75d0e340957f5828ef55fcc02", size = 61143, upload_time = "2026-02-03T02:11:46.313Z" }, - { url = "https://files.pythonhosted.org/packages/6f/07/7ed02daa35542023464e3c8b7cb937fa61f6c61c0361ecf8f5fecf8ad8da/wrapt-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7c0300007836373d1c2df105b40777986accb738053a92fe09b615a7a4547e9f", size = 61740, upload_time = "2026-02-03T02:12:51.966Z" }, - { url = "https://files.pythonhosted.org/packages/c4/60/a237a4e4a36f6d966061ccc9b017627d448161b19e0a3ab80a7c7c97f859/wrapt-2.1.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2b27c070fd1132ab23957bcd4ee3ba707a91e653a9268dc1afbd39b77b2799f7", size = 121327, upload_time = "2026-02-03T02:11:06.796Z" }, - { url = "https://files.pythonhosted.org/packages/ae/fe/9139058a3daa8818fc67e6460a2340e8bbcf3aef8b15d0301338bbe181ca/wrapt-2.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b0e36d845e8b6f50949b6b65fc6cd279f47a1944582ed4ec8258cd136d89a64", size = 122903, upload_time = "2026-02-03T02:12:48.657Z" }, - { url = "https://files.pythonhosted.org/packages/91/10/b8479202b4164649675846a531763531f0a6608339558b5a0a718fc49a8d/wrapt-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4aeea04a9889370fcfb1ef828c4cc583f36a875061505cd6cd9ba24d8b43cc36", size = 121333, upload_time = "2026-02-03T02:11:32.148Z" }, - { url = "https://files.pythonhosted.org/packages/5f/75/75fc793b791d79444aca2c03ccde64e8b99eda321b003f267d570b7b0985/wrapt-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d88b46bb0dce9f74b6817bc1758ff2125e1ca9e1377d62ea35b6896142ab6825", size = 120458, upload_time = "2026-02-03T02:11:16.039Z" }, - { url = "https://files.pythonhosted.org/packages/d7/8f/c3f30d511082ca6d947c405f9d8f6c8eaf83cfde527c439ec2c9a30eb5ea/wrapt-2.1.1-cp312-cp312-win32.whl", hash = "sha256:63decff76ca685b5c557082dfbea865f3f5f6d45766a89bff8dc61d336348833", size = 58086, upload_time = "2026-02-03T02:12:35.041Z" }, - { url = "https://files.pythonhosted.org/packages/0a/c8/37625b643eea2849f10c3b90f69c7462faa4134448d4443234adaf122ae5/wrapt-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:b828235d26c1e35aca4107039802ae4b1411be0fe0367dd5b7e4d90e562fcbcd", size = 60328, upload_time = "2026-02-03T02:12:45.808Z" }, - { url = "https://files.pythonhosted.org/packages/ce/79/56242f07572d5682ba8065a9d4d9c2218313f576e3c3471873c2a5355ffd/wrapt-2.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:75128507413a9f1bcbe2db88fd18fbdbf80f264b82fa33a6996cdeaf01c52352", size = 58722, upload_time = "2026-02-03T02:12:27.949Z" }, - { url = "https://files.pythonhosted.org/packages/f7/ca/3cf290212855b19af9fcc41b725b5620b32f470d6aad970c2593500817eb/wrapt-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ce9646e17fa7c3e2e7a87e696c7de66512c2b4f789a8db95c613588985a2e139", size = 61150, upload_time = "2026-02-03T02:12:50.575Z" }, - { url = "https://files.pythonhosted.org/packages/9d/33/5b8f89a82a9859ce82da4870c799ad11ce15648b6e1c820fec3e23f4a19f/wrapt-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:428cfc801925454395aa468ba7ddb3ed63dc0d881df7b81626cdd433b4e2b11b", size = 61743, upload_time = "2026-02-03T02:11:55.733Z" }, - { url = "https://files.pythonhosted.org/packages/1e/2f/60c51304fbdf47ce992d9eefa61fbd2c0e64feee60aaa439baf42ea6f40b/wrapt-2.1.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5797f65e4d58065a49088c3b32af5410751cd485e83ba89e5a45e2aa8905af98", size = 121341, upload_time = "2026-02-03T02:11:20.461Z" }, - { url = "https://files.pythonhosted.org/packages/ad/03/ce5256e66dd94e521ad5e753c78185c01b6eddbed3147be541f4d38c0cb7/wrapt-2.1.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5a2db44a71202c5ae4bb5f27c6d3afbc5b23053f2e7e78aa29704541b5dad789", size = 122947, upload_time = "2026-02-03T02:11:33.596Z" }, - { url = "https://files.pythonhosted.org/packages/eb/ae/50ca8854b81b946a11a36fcd6ead32336e6db2c14b6e4a8b092b80741178/wrapt-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8d5350c3590af09c1703dd60ec78a7370c0186e11eaafb9dda025a30eee6492d", size = 121370, upload_time = "2026-02-03T02:11:09.886Z" }, - { url = "https://files.pythonhosted.org/packages/fb/d9/d6a7c654e0043319b4cc137a4caaf7aa16b46b51ee8df98d1060254705b7/wrapt-2.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2d9b076411bed964e752c01b49fd224cc385f3a96f520c797d38412d70d08359", size = 120465, upload_time = "2026-02-03T02:11:37.592Z" }, - { url = "https://files.pythonhosted.org/packages/55/90/65be41e40845d951f714b5a77e84f377a3787b1e8eee6555a680da6d0db5/wrapt-2.1.1-cp313-cp313-win32.whl", hash = "sha256:0bb7207130ce6486727baa85373503bf3334cc28016f6928a0fa7e19d7ecdc06", size = 58090, upload_time = "2026-02-03T02:12:53.342Z" }, - { url = "https://files.pythonhosted.org/packages/5f/66/6a09e0294c4fc8c26028a03a15191721c9271672467cc33e6617ee0d91d2/wrapt-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:cbfee35c711046b15147b0ae7db9b976f01c9520e6636d992cd9e69e5e2b03b1", size = 60341, upload_time = "2026-02-03T02:12:36.384Z" }, - { url = "https://files.pythonhosted.org/packages/7a/f0/20ceb8b701e9a71555c87a5ddecbed76ec16742cf1e4b87bbaf26735f998/wrapt-2.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:7d2756061022aebbf57ba14af9c16e8044e055c22d38de7bf40d92b565ecd2b0", size = 58731, upload_time = "2026-02-03T02:12:01.328Z" }, - { url = "https://files.pythonhosted.org/packages/80/b4/fe95beb8946700b3db371f6ce25115217e7075ca063663b8cca2888ba55c/wrapt-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4814a3e58bc6971e46baa910ecee69699110a2bf06c201e24277c65115a20c20", size = 62969, upload_time = "2026-02-03T02:11:51.245Z" }, - { url = "https://files.pythonhosted.org/packages/b8/89/477b0bdc784e3299edf69c279697372b8bd4c31d9c6966eae405442899df/wrapt-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:106c5123232ab9b9f4903692e1fa0bdc231510098f04c13c3081f8ad71c3d612", size = 63606, upload_time = "2026-02-03T02:12:02.64Z" }, - { url = "https://files.pythonhosted.org/packages/ed/55/9d0c1269ab76de87715b3b905df54dd25d55bbffd0b98696893eb613469f/wrapt-2.1.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:1a40b83ff2535e6e56f190aff123821eea89a24c589f7af33413b9c19eb2c738", size = 152536, upload_time = "2026-02-03T02:11:24.492Z" }, - { url = "https://files.pythonhosted.org/packages/44/18/2004766030462f79ad86efaa62000b5e39b1ff001dcce86650e1625f40ae/wrapt-2.1.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:789cea26e740d71cf1882e3a42bb29052bc4ada15770c90072cb47bf73fb3dbf", size = 158697, upload_time = "2026-02-03T02:12:32.214Z" }, - { url = "https://files.pythonhosted.org/packages/e1/bb/0a880fa0f35e94ee843df4ee4dd52a699c9263f36881311cfb412c09c3e5/wrapt-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:ba49c14222d5e5c0ee394495a8655e991dc06cbca5398153aefa5ac08cd6ccd7", size = 155563, upload_time = "2026-02-03T02:11:49.737Z" }, - { url = "https://files.pythonhosted.org/packages/42/ff/cd1b7c4846c8678fac359a6eb975dc7ab5bd606030adb22acc8b4a9f53f1/wrapt-2.1.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ac8cda531fe55be838a17c62c806824472bb962b3afa47ecbd59b27b78496f4e", size = 150161, upload_time = "2026-02-03T02:12:33.613Z" }, - { url = "https://files.pythonhosted.org/packages/38/ec/67c90a7082f452964b4621e4890e9a490f1add23cdeb7483cc1706743291/wrapt-2.1.1-cp313-cp313t-win32.whl", hash = "sha256:b8af75fe20d381dd5bcc9db2e86a86d7fcfbf615383a7147b85da97c1182225b", size = 59783, upload_time = "2026-02-03T02:11:39.863Z" }, - { url = "https://files.pythonhosted.org/packages/ec/08/466afe4855847d8febdfa2c57c87e991fc5820afbdef01a273683dfd15a0/wrapt-2.1.1-cp313-cp313t-win_amd64.whl", hash = "sha256:45c5631c9b6c792b78be2d7352129f776dd72c605be2c3a4e9be346be8376d83", size = 63082, upload_time = "2026-02-03T02:12:09.075Z" }, - { url = "https://files.pythonhosted.org/packages/9a/62/60b629463c28b15b1eeadb3a0691e17568622b12aa5bfa7ebe9b514bfbeb/wrapt-2.1.1-cp313-cp313t-win_arm64.whl", hash = "sha256:da815b9263947ac98d088b6414ac83507809a1d385e4632d9489867228d6d81c", size = 60251, upload_time = "2026-02-03T02:11:21.794Z" }, - { url = "https://files.pythonhosted.org/packages/c4/da/5a086bf4c22a41995312db104ec2ffeee2cf6accca9faaee5315c790377d/wrapt-2.1.1-py3-none-any.whl", hash = "sha256:3b0f4629eb954394a3d7c7a1c8cca25f0b07cefe6aa8545e862e9778152de5b7", size = 43886, upload_time = "2026-02-03T02:11:45.048Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/f7/37/ae31f40bec90de2f88d9597d0b5281e23ffe85b893a47ca5d9c05c63a4f6/wrapt-2.1.1.tar.gz", hash = "sha256:5fdcb09bf6db023d88f312bd0767594b414655d58090fc1c46b3414415f67fac", size = 81329, upload-time = "2026-02-03T02:12:13.786Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/21/293b657a27accfbbbb6007ebd78af0efa2083dac83e8f523272ea09b4638/wrapt-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7e927375e43fd5a985b27a8992327c22541b6dede1362fc79df337d26e23604f", size = 60554, upload-time = "2026-02-03T02:11:17.362Z" }, + { url = "https://files.pythonhosted.org/packages/25/e9/96dd77728b54a899d4ce2798d7b1296989ce687ed3c0cb917d6b3154bf5d/wrapt-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c99544b6a7d40ca22195563b6d8bc3986ee8bb82f272f31f0670fe9440c869", size = 61496, upload-time = "2026-02-03T02:12:54.732Z" }, + { url = "https://files.pythonhosted.org/packages/44/79/4c755b45df6ef30c0dd628ecfaa0c808854be147ca438429da70a162833c/wrapt-2.1.1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b2be3fa5f4efaf16ee7c77d0556abca35f5a18ad4ac06f0ef3904c3399010ce9", size = 113528, upload-time = "2026-02-03T02:12:26.405Z" }, + { url = "https://files.pythonhosted.org/packages/9f/63/23ce28f7b841217d9a6337a340fbb8d4a7fbd67a89d47f377c8550fa34aa/wrapt-2.1.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:67c90c1ae6489a6cb1a82058902caa8006706f7b4e8ff766f943e9d2c8e608d0", size = 115536, upload-time = "2026-02-03T02:11:54.397Z" }, + { url = "https://files.pythonhosted.org/packages/23/7b/5ca8d3b12768670d16c8329e29960eedd56212770365a02a8de8bf73dc01/wrapt-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:05c0db35ccffd7480143e62df1e829d101c7b86944ae3be7e4869a7efa621f53", size = 114716, upload-time = "2026-02-03T02:12:20.771Z" }, + { url = "https://files.pythonhosted.org/packages/c7/3a/9789ccb14a096d30bb847bf3ee137bf682cc9750c2ce155f4c5ae1962abf/wrapt-2.1.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0c2ec9f616755b2e1e0bf4d0961f59bb5c2e7a77407e7e2c38ef4f7d2fdde12c", size = 113200, upload-time = "2026-02-03T02:12:07.688Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e5/4ec3526ce6ce920b267c8d35d2c2f0874d3fad2744c8b7259353f1132baa/wrapt-2.1.1-cp310-cp310-win32.whl", hash = "sha256:203ba6b3f89e410e27dbd30ff7dccaf54dcf30fda0b22aa1b82d560c7f9fe9a1", size = 57876, upload-time = "2026-02-03T02:11:42.61Z" }, + { url = "https://files.pythonhosted.org/packages/d1/4e/661c7c76ecd85375b2bc03488941a3a1078642af481db24949e2b9de01f4/wrapt-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:6f9426d9cfc2f8732922fc96198052e55c09bb9db3ddaa4323a18e055807410e", size = 60224, upload-time = "2026-02-03T02:11:19.096Z" }, + { url = "https://files.pythonhosted.org/packages/5f/b7/53c7252d371efada4cb119e72e774fa2c6b3011fc33e3e552cdf48fb9488/wrapt-2.1.1-cp310-cp310-win_arm64.whl", hash = "sha256:69c26f51b67076b40714cff81bdd5826c0b10c077fb6b0678393a6a2f952a5fc", size = 58645, upload-time = "2026-02-03T02:12:10.396Z" }, + { url = "https://files.pythonhosted.org/packages/b8/a8/9254e4da74b30a105935197015b18b31b7a298bf046e67d8952ef74967bd/wrapt-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6c366434a7fb914c7a5de508ed735ef9c133367114e1a7cb91dfb5cd806a1549", size = 60554, upload-time = "2026-02-03T02:11:13.038Z" }, + { url = "https://files.pythonhosted.org/packages/9e/a1/378579880cc7af226354054a2c255f69615b379d8adad482bfe2f22a0dc2/wrapt-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5d6a2068bd2e1e19e5a317c8c0b288267eec4e7347c36bc68a6e378a39f19ee7", size = 61491, upload-time = "2026-02-03T02:12:56.077Z" }, + { url = "https://files.pythonhosted.org/packages/dc/72/957b51c56acca35701665878ad31626182199fc4afecfe67dea072210f95/wrapt-2.1.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:891ab4713419217b2aed7dd106c9200f64e6a82226775a0d2ebd6bef2ebd1747", size = 113949, upload-time = "2026-02-03T02:11:04.516Z" }, + { url = "https://files.pythonhosted.org/packages/cd/74/36bbebb4a3d2ae9c3e6929639721f8606cd0710a82a777c371aa69e36504/wrapt-2.1.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8ef36a0df38d2dc9d907f6617f89e113c5892e0a35f58f45f75901af0ce7d81", size = 115989, upload-time = "2026-02-03T02:12:19.398Z" }, + { url = "https://files.pythonhosted.org/packages/ae/0d/f1177245a083c7be284bc90bddfe5aece32cdd5b858049cb69ce001a0e8d/wrapt-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:76e9af3ebd86f19973143d4d592cbf3e970cf3f66ddee30b16278c26ae34b8ab", size = 115242, upload-time = "2026-02-03T02:11:08.111Z" }, + { url = "https://files.pythonhosted.org/packages/62/3e/3b7cf5da27e59df61b1eae2d07dd03ff5d6f75b5408d694873cca7a8e33c/wrapt-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ff562067485ebdeaef2fa3fe9b1876bc4e7b73762e0a01406ad81e2076edcebf", size = 113676, upload-time = "2026-02-03T02:12:41.026Z" }, + { url = "https://files.pythonhosted.org/packages/f7/65/8248d3912c705f2c66f81cb97c77436f37abcbedb16d633b5ab0d795d8cd/wrapt-2.1.1-cp311-cp311-win32.whl", hash = "sha256:9e60a30aa0909435ec4ea2a3c53e8e1b50ac9f640c0e9fe3f21fd248a22f06c5", size = 57863, upload-time = "2026-02-03T02:12:18.112Z" }, + { url = "https://files.pythonhosted.org/packages/6b/31/d29310ab335f71f00c50466153b3dc985aaf4a9fc03263e543e136859541/wrapt-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:7d79954f51fcf84e5ec4878ab4aea32610d70145c5bbc84b3370eabfb1e096c2", size = 60224, upload-time = "2026-02-03T02:12:29.289Z" }, + { url = "https://files.pythonhosted.org/packages/0c/90/a6ec319affa6e2894962a0cb9d73c67f88af1a726d15314bfb5c88b8a08d/wrapt-2.1.1-cp311-cp311-win_arm64.whl", hash = "sha256:d3ffc6b0efe79e08fd947605fd598515aebefe45e50432dc3b5cd437df8b1ada", size = 58643, upload-time = "2026-02-03T02:12:43.022Z" }, + { url = "https://files.pythonhosted.org/packages/df/cb/4d5255d19bbd12be7f8ee2c1fb4269dddec9cef777ef17174d357468efaa/wrapt-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ab8e3793b239db021a18782a5823fcdea63b9fe75d0e340957f5828ef55fcc02", size = 61143, upload-time = "2026-02-03T02:11:46.313Z" }, + { url = "https://files.pythonhosted.org/packages/6f/07/7ed02daa35542023464e3c8b7cb937fa61f6c61c0361ecf8f5fecf8ad8da/wrapt-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7c0300007836373d1c2df105b40777986accb738053a92fe09b615a7a4547e9f", size = 61740, upload-time = "2026-02-03T02:12:51.966Z" }, + { url = "https://files.pythonhosted.org/packages/c4/60/a237a4e4a36f6d966061ccc9b017627d448161b19e0a3ab80a7c7c97f859/wrapt-2.1.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2b27c070fd1132ab23957bcd4ee3ba707a91e653a9268dc1afbd39b77b2799f7", size = 121327, upload-time = "2026-02-03T02:11:06.796Z" }, + { url = "https://files.pythonhosted.org/packages/ae/fe/9139058a3daa8818fc67e6460a2340e8bbcf3aef8b15d0301338bbe181ca/wrapt-2.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b0e36d845e8b6f50949b6b65fc6cd279f47a1944582ed4ec8258cd136d89a64", size = 122903, upload-time = "2026-02-03T02:12:48.657Z" }, + { url = "https://files.pythonhosted.org/packages/91/10/b8479202b4164649675846a531763531f0a6608339558b5a0a718fc49a8d/wrapt-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4aeea04a9889370fcfb1ef828c4cc583f36a875061505cd6cd9ba24d8b43cc36", size = 121333, upload-time = "2026-02-03T02:11:32.148Z" }, + { url = "https://files.pythonhosted.org/packages/5f/75/75fc793b791d79444aca2c03ccde64e8b99eda321b003f267d570b7b0985/wrapt-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d88b46bb0dce9f74b6817bc1758ff2125e1ca9e1377d62ea35b6896142ab6825", size = 120458, upload-time = "2026-02-03T02:11:16.039Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8f/c3f30d511082ca6d947c405f9d8f6c8eaf83cfde527c439ec2c9a30eb5ea/wrapt-2.1.1-cp312-cp312-win32.whl", hash = "sha256:63decff76ca685b5c557082dfbea865f3f5f6d45766a89bff8dc61d336348833", size = 58086, upload-time = "2026-02-03T02:12:35.041Z" }, + { url = "https://files.pythonhosted.org/packages/0a/c8/37625b643eea2849f10c3b90f69c7462faa4134448d4443234adaf122ae5/wrapt-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:b828235d26c1e35aca4107039802ae4b1411be0fe0367dd5b7e4d90e562fcbcd", size = 60328, upload-time = "2026-02-03T02:12:45.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/79/56242f07572d5682ba8065a9d4d9c2218313f576e3c3471873c2a5355ffd/wrapt-2.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:75128507413a9f1bcbe2db88fd18fbdbf80f264b82fa33a6996cdeaf01c52352", size = 58722, upload-time = "2026-02-03T02:12:27.949Z" }, + { url = "https://files.pythonhosted.org/packages/f7/ca/3cf290212855b19af9fcc41b725b5620b32f470d6aad970c2593500817eb/wrapt-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ce9646e17fa7c3e2e7a87e696c7de66512c2b4f789a8db95c613588985a2e139", size = 61150, upload-time = "2026-02-03T02:12:50.575Z" }, + { url = "https://files.pythonhosted.org/packages/9d/33/5b8f89a82a9859ce82da4870c799ad11ce15648b6e1c820fec3e23f4a19f/wrapt-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:428cfc801925454395aa468ba7ddb3ed63dc0d881df7b81626cdd433b4e2b11b", size = 61743, upload-time = "2026-02-03T02:11:55.733Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2f/60c51304fbdf47ce992d9eefa61fbd2c0e64feee60aaa439baf42ea6f40b/wrapt-2.1.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5797f65e4d58065a49088c3b32af5410751cd485e83ba89e5a45e2aa8905af98", size = 121341, upload-time = "2026-02-03T02:11:20.461Z" }, + { url = "https://files.pythonhosted.org/packages/ad/03/ce5256e66dd94e521ad5e753c78185c01b6eddbed3147be541f4d38c0cb7/wrapt-2.1.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5a2db44a71202c5ae4bb5f27c6d3afbc5b23053f2e7e78aa29704541b5dad789", size = 122947, upload-time = "2026-02-03T02:11:33.596Z" }, + { url = "https://files.pythonhosted.org/packages/eb/ae/50ca8854b81b946a11a36fcd6ead32336e6db2c14b6e4a8b092b80741178/wrapt-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8d5350c3590af09c1703dd60ec78a7370c0186e11eaafb9dda025a30eee6492d", size = 121370, upload-time = "2026-02-03T02:11:09.886Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d9/d6a7c654e0043319b4cc137a4caaf7aa16b46b51ee8df98d1060254705b7/wrapt-2.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2d9b076411bed964e752c01b49fd224cc385f3a96f520c797d38412d70d08359", size = 120465, upload-time = "2026-02-03T02:11:37.592Z" }, + { url = "https://files.pythonhosted.org/packages/55/90/65be41e40845d951f714b5a77e84f377a3787b1e8eee6555a680da6d0db5/wrapt-2.1.1-cp313-cp313-win32.whl", hash = "sha256:0bb7207130ce6486727baa85373503bf3334cc28016f6928a0fa7e19d7ecdc06", size = 58090, upload-time = "2026-02-03T02:12:53.342Z" }, + { url = "https://files.pythonhosted.org/packages/5f/66/6a09e0294c4fc8c26028a03a15191721c9271672467cc33e6617ee0d91d2/wrapt-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:cbfee35c711046b15147b0ae7db9b976f01c9520e6636d992cd9e69e5e2b03b1", size = 60341, upload-time = "2026-02-03T02:12:36.384Z" }, + { url = "https://files.pythonhosted.org/packages/7a/f0/20ceb8b701e9a71555c87a5ddecbed76ec16742cf1e4b87bbaf26735f998/wrapt-2.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:7d2756061022aebbf57ba14af9c16e8044e055c22d38de7bf40d92b565ecd2b0", size = 58731, upload-time = "2026-02-03T02:12:01.328Z" }, + { url = "https://files.pythonhosted.org/packages/80/b4/fe95beb8946700b3db371f6ce25115217e7075ca063663b8cca2888ba55c/wrapt-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4814a3e58bc6971e46baa910ecee69699110a2bf06c201e24277c65115a20c20", size = 62969, upload-time = "2026-02-03T02:11:51.245Z" }, + { url = "https://files.pythonhosted.org/packages/b8/89/477b0bdc784e3299edf69c279697372b8bd4c31d9c6966eae405442899df/wrapt-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:106c5123232ab9b9f4903692e1fa0bdc231510098f04c13c3081f8ad71c3d612", size = 63606, upload-time = "2026-02-03T02:12:02.64Z" }, + { url = "https://files.pythonhosted.org/packages/ed/55/9d0c1269ab76de87715b3b905df54dd25d55bbffd0b98696893eb613469f/wrapt-2.1.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:1a40b83ff2535e6e56f190aff123821eea89a24c589f7af33413b9c19eb2c738", size = 152536, upload-time = "2026-02-03T02:11:24.492Z" }, + { url = "https://files.pythonhosted.org/packages/44/18/2004766030462f79ad86efaa62000b5e39b1ff001dcce86650e1625f40ae/wrapt-2.1.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:789cea26e740d71cf1882e3a42bb29052bc4ada15770c90072cb47bf73fb3dbf", size = 158697, upload-time = "2026-02-03T02:12:32.214Z" }, + { url = "https://files.pythonhosted.org/packages/e1/bb/0a880fa0f35e94ee843df4ee4dd52a699c9263f36881311cfb412c09c3e5/wrapt-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:ba49c14222d5e5c0ee394495a8655e991dc06cbca5398153aefa5ac08cd6ccd7", size = 155563, upload-time = "2026-02-03T02:11:49.737Z" }, + { url = "https://files.pythonhosted.org/packages/42/ff/cd1b7c4846c8678fac359a6eb975dc7ab5bd606030adb22acc8b4a9f53f1/wrapt-2.1.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ac8cda531fe55be838a17c62c806824472bb962b3afa47ecbd59b27b78496f4e", size = 150161, upload-time = "2026-02-03T02:12:33.613Z" }, + { url = "https://files.pythonhosted.org/packages/38/ec/67c90a7082f452964b4621e4890e9a490f1add23cdeb7483cc1706743291/wrapt-2.1.1-cp313-cp313t-win32.whl", hash = "sha256:b8af75fe20d381dd5bcc9db2e86a86d7fcfbf615383a7147b85da97c1182225b", size = 59783, upload-time = "2026-02-03T02:11:39.863Z" }, + { url = "https://files.pythonhosted.org/packages/ec/08/466afe4855847d8febdfa2c57c87e991fc5820afbdef01a273683dfd15a0/wrapt-2.1.1-cp313-cp313t-win_amd64.whl", hash = "sha256:45c5631c9b6c792b78be2d7352129f776dd72c605be2c3a4e9be346be8376d83", size = 63082, upload-time = "2026-02-03T02:12:09.075Z" }, + { url = "https://files.pythonhosted.org/packages/9a/62/60b629463c28b15b1eeadb3a0691e17568622b12aa5bfa7ebe9b514bfbeb/wrapt-2.1.1-cp313-cp313t-win_arm64.whl", hash = "sha256:da815b9263947ac98d088b6414ac83507809a1d385e4632d9489867228d6d81c", size = 60251, upload-time = "2026-02-03T02:11:21.794Z" }, + { url = "https://files.pythonhosted.org/packages/c4/da/5a086bf4c22a41995312db104ec2ffeee2cf6accca9faaee5315c790377d/wrapt-2.1.1-py3-none-any.whl", hash = "sha256:3b0f4629eb954394a3d7c7a1c8cca25f0b07cefe6aa8545e862e9778152de5b7", size = 43886, upload-time = "2026-02-03T02:11:45.048Z" }, ] [[package]] name = "xxhash" version = "3.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/02/84/30869e01909fb37a6cc7e18688ee8bf1e42d57e7e0777636bd47524c43c7/xxhash-3.6.0.tar.gz", hash = "sha256:f0162a78b13a0d7617b2845b90c763339d1f1d82bb04a4b07f4ab535cc5e05d6", size = 85160, upload_time = "2025-10-02T14:37:08.097Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/34/ee/f9f1d656ad168681bb0f6b092372c1e533c4416b8069b1896a175c46e484/xxhash-3.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:87ff03d7e35c61435976554477a7f4cd1704c3596a89a8300d5ce7fc83874a71", size = 32845, upload_time = "2025-10-02T14:33:51.573Z" }, - { url = "https://files.pythonhosted.org/packages/a3/b1/93508d9460b292c74a09b83d16750c52a0ead89c51eea9951cb97a60d959/xxhash-3.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f572dfd3d0e2eb1a57511831cf6341242f5a9f8298a45862d085f5b93394a27d", size = 30807, upload_time = "2025-10-02T14:33:52.964Z" }, - { url = "https://files.pythonhosted.org/packages/07/55/28c93a3662f2d200c70704efe74aab9640e824f8ce330d8d3943bf7c9b3c/xxhash-3.6.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:89952ea539566b9fed2bbd94e589672794b4286f342254fad28b149f9615fef8", size = 193786, upload_time = "2025-10-02T14:33:54.272Z" }, - { url = "https://files.pythonhosted.org/packages/c1/96/fec0be9bb4b8f5d9c57d76380a366f31a1781fb802f76fc7cda6c84893c7/xxhash-3.6.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:48e6f2ffb07a50b52465a1032c3cf1f4a5683f944acaca8a134a2f23674c2058", size = 212830, upload_time = "2025-10-02T14:33:55.706Z" }, - { url = "https://files.pythonhosted.org/packages/c4/a0/c706845ba77b9611f81fd2e93fad9859346b026e8445e76f8c6fd057cc6d/xxhash-3.6.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b5b848ad6c16d308c3ac7ad4ba6bede80ed5df2ba8ed382f8932df63158dd4b2", size = 211606, upload_time = "2025-10-02T14:33:57.133Z" }, - { url = "https://files.pythonhosted.org/packages/67/1e/164126a2999e5045f04a69257eea946c0dc3e86541b400d4385d646b53d7/xxhash-3.6.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a034590a727b44dd8ac5914236a7b8504144447a9682586c3327e935f33ec8cc", size = 444872, upload_time = "2025-10-02T14:33:58.446Z" }, - { url = "https://files.pythonhosted.org/packages/2d/4b/55ab404c56cd70a2cf5ecfe484838865d0fea5627365c6c8ca156bd09c8f/xxhash-3.6.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8a8f1972e75ebdd161d7896743122834fe87378160c20e97f8b09166213bf8cc", size = 193217, upload_time = "2025-10-02T14:33:59.724Z" }, - { url = "https://files.pythonhosted.org/packages/45/e6/52abf06bac316db33aa269091ae7311bd53cfc6f4b120ae77bac1b348091/xxhash-3.6.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ee34327b187f002a596d7b167ebc59a1b729e963ce645964bbc050d2f1b73d07", size = 210139, upload_time = "2025-10-02T14:34:02.041Z" }, - { url = "https://files.pythonhosted.org/packages/34/37/db94d490b8691236d356bc249c08819cbcef9273a1a30acf1254ff9ce157/xxhash-3.6.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:339f518c3c7a850dd033ab416ea25a692759dc7478a71131fe8869010d2b75e4", size = 197669, upload_time = "2025-10-02T14:34:03.664Z" }, - { url = "https://files.pythonhosted.org/packages/b7/36/c4f219ef4a17a4f7a64ed3569bc2b5a9c8311abdb22249ac96093625b1a4/xxhash-3.6.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:bf48889c9630542d4709192578aebbd836177c9f7a4a2778a7d6340107c65f06", size = 210018, upload_time = "2025-10-02T14:34:05.325Z" }, - { url = "https://files.pythonhosted.org/packages/fd/06/bfac889a374fc2fc439a69223d1750eed2e18a7db8514737ab630534fa08/xxhash-3.6.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:5576b002a56207f640636056b4160a378fe36a58db73ae5c27a7ec8db35f71d4", size = 413058, upload_time = "2025-10-02T14:34:06.925Z" }, - { url = "https://files.pythonhosted.org/packages/c9/d1/555d8447e0dd32ad0930a249a522bb2e289f0d08b6b16204cfa42c1f5a0c/xxhash-3.6.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:af1f3278bd02814d6dedc5dec397993b549d6f16c19379721e5a1d31e132c49b", size = 190628, upload_time = "2025-10-02T14:34:08.669Z" }, - { url = "https://files.pythonhosted.org/packages/d1/15/8751330b5186cedc4ed4b597989882ea05e0408b53fa47bcb46a6125bfc6/xxhash-3.6.0-cp310-cp310-win32.whl", hash = "sha256:aed058764db109dc9052720da65fafe84873b05eb8b07e5e653597951af57c3b", size = 30577, upload_time = "2025-10-02T14:34:10.234Z" }, - { url = "https://files.pythonhosted.org/packages/bb/cc/53f87e8b5871a6eb2ff7e89c48c66093bda2be52315a8161ddc54ea550c4/xxhash-3.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:e82da5670f2d0d98950317f82a0e4a0197150ff19a6df2ba40399c2a3b9ae5fb", size = 31487, upload_time = "2025-10-02T14:34:11.618Z" }, - { url = "https://files.pythonhosted.org/packages/9f/00/60f9ea3bb697667a14314d7269956f58bf56bb73864f8f8d52a3c2535e9a/xxhash-3.6.0-cp310-cp310-win_arm64.whl", hash = "sha256:4a082ffff8c6ac07707fb6b671caf7c6e020c75226c561830b73d862060f281d", size = 27863, upload_time = "2025-10-02T14:34:12.619Z" }, - { url = "https://files.pythonhosted.org/packages/17/d4/cc2f0400e9154df4b9964249da78ebd72f318e35ccc425e9f403c392f22a/xxhash-3.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b47bbd8cf2d72797f3c2772eaaac0ded3d3af26481a26d7d7d41dc2d3c46b04a", size = 32844, upload_time = "2025-10-02T14:34:14.037Z" }, - { url = "https://files.pythonhosted.org/packages/5e/ec/1cc11cd13e26ea8bc3cb4af4eaadd8d46d5014aebb67be3f71fb0b68802a/xxhash-3.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2b6821e94346f96db75abaa6e255706fb06ebd530899ed76d32cd99f20dc52fa", size = 30809, upload_time = "2025-10-02T14:34:15.484Z" }, - { url = "https://files.pythonhosted.org/packages/04/5f/19fe357ea348d98ca22f456f75a30ac0916b51c753e1f8b2e0e6fb884cce/xxhash-3.6.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d0a9751f71a1a65ce3584e9cae4467651c7e70c9d31017fa57574583a4540248", size = 194665, upload_time = "2025-10-02T14:34:16.541Z" }, - { url = "https://files.pythonhosted.org/packages/90/3b/d1f1a8f5442a5fd8beedae110c5af7604dc37349a8e16519c13c19a9a2de/xxhash-3.6.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b29ee68625ab37b04c0b40c3fafdf24d2f75ccd778333cfb698f65f6c463f62", size = 213550, upload_time = "2025-10-02T14:34:17.878Z" }, - { url = "https://files.pythonhosted.org/packages/c4/ef/3a9b05eb527457d5db13a135a2ae1a26c80fecd624d20f3e8dcc4cb170f3/xxhash-3.6.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6812c25fe0d6c36a46ccb002f40f27ac903bf18af9f6dd8f9669cb4d176ab18f", size = 212384, upload_time = "2025-10-02T14:34:19.182Z" }, - { url = "https://files.pythonhosted.org/packages/0f/18/ccc194ee698c6c623acbf0f8c2969811a8a4b6185af5e824cd27b9e4fd3e/xxhash-3.6.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4ccbff013972390b51a18ef1255ef5ac125c92dc9143b2d1909f59abc765540e", size = 445749, upload_time = "2025-10-02T14:34:20.659Z" }, - { url = "https://files.pythonhosted.org/packages/a5/86/cf2c0321dc3940a7aa73076f4fd677a0fb3e405cb297ead7d864fd90847e/xxhash-3.6.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:297b7fbf86c82c550e12e8fb71968b3f033d27b874276ba3624ea868c11165a8", size = 193880, upload_time = "2025-10-02T14:34:22.431Z" }, - { url = "https://files.pythonhosted.org/packages/82/fb/96213c8560e6f948a1ecc9a7613f8032b19ee45f747f4fca4eb31bb6d6ed/xxhash-3.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dea26ae1eb293db089798d3973a5fc928a18fdd97cc8801226fae705b02b14b0", size = 210912, upload_time = "2025-10-02T14:34:23.937Z" }, - { url = "https://files.pythonhosted.org/packages/40/aa/4395e669b0606a096d6788f40dbdf2b819d6773aa290c19e6e83cbfc312f/xxhash-3.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7a0b169aafb98f4284f73635a8e93f0735f9cbde17bd5ec332480484241aaa77", size = 198654, upload_time = "2025-10-02T14:34:25.644Z" }, - { url = "https://files.pythonhosted.org/packages/67/74/b044fcd6b3d89e9b1b665924d85d3f400636c23590226feb1eb09e1176ce/xxhash-3.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:08d45aef063a4531b785cd72de4887766d01dc8f362a515693df349fdb825e0c", size = 210867, upload_time = "2025-10-02T14:34:27.203Z" }, - { url = "https://files.pythonhosted.org/packages/bc/fd/3ce73bf753b08cb19daee1eb14aa0d7fe331f8da9c02dd95316ddfe5275e/xxhash-3.6.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:929142361a48ee07f09121fe9e96a84950e8d4df3bb298ca5d88061969f34d7b", size = 414012, upload_time = "2025-10-02T14:34:28.409Z" }, - { url = "https://files.pythonhosted.org/packages/ba/b3/5a4241309217c5c876f156b10778f3ab3af7ba7e3259e6d5f5c7d0129eb2/xxhash-3.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:51312c768403d8540487dbbfb557454cfc55589bbde6424456951f7fcd4facb3", size = 191409, upload_time = "2025-10-02T14:34:29.696Z" }, - { url = "https://files.pythonhosted.org/packages/c0/01/99bfbc15fb9abb9a72b088c1d95219fc4782b7d01fc835bd5744d66dd0b8/xxhash-3.6.0-cp311-cp311-win32.whl", hash = "sha256:d1927a69feddc24c987b337ce81ac15c4720955b667fe9b588e02254b80446fd", size = 30574, upload_time = "2025-10-02T14:34:31.028Z" }, - { url = "https://files.pythonhosted.org/packages/65/79/9d24d7f53819fe301b231044ea362ce64e86c74f6e8c8e51320de248b3e5/xxhash-3.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:26734cdc2d4ffe449b41d186bbeac416f704a482ed835d375a5c0cb02bc63fef", size = 31481, upload_time = "2025-10-02T14:34:32.062Z" }, - { url = "https://files.pythonhosted.org/packages/30/4e/15cd0e3e8772071344eab2961ce83f6e485111fed8beb491a3f1ce100270/xxhash-3.6.0-cp311-cp311-win_arm64.whl", hash = "sha256:d72f67ef8bf36e05f5b6c65e8524f265bd61071471cd4cf1d36743ebeeeb06b7", size = 27861, upload_time = "2025-10-02T14:34:33.555Z" }, - { url = "https://files.pythonhosted.org/packages/9a/07/d9412f3d7d462347e4511181dea65e47e0d0e16e26fbee2ea86a2aefb657/xxhash-3.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:01362c4331775398e7bb34e3ab403bc9ee9f7c497bc7dee6272114055277dd3c", size = 32744, upload_time = "2025-10-02T14:34:34.622Z" }, - { url = "https://files.pythonhosted.org/packages/79/35/0429ee11d035fc33abe32dca1b2b69e8c18d236547b9a9b72c1929189b9a/xxhash-3.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b7b2df81a23f8cb99656378e72501b2cb41b1827c0f5a86f87d6b06b69f9f204", size = 30816, upload_time = "2025-10-02T14:34:36.043Z" }, - { url = "https://files.pythonhosted.org/packages/b7/f2/57eb99aa0f7d98624c0932c5b9a170e1806406cdbcdb510546634a1359e0/xxhash-3.6.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:dc94790144e66b14f67b10ac8ed75b39ca47536bf8800eb7c24b50271ea0c490", size = 194035, upload_time = "2025-10-02T14:34:37.354Z" }, - { url = "https://files.pythonhosted.org/packages/4c/ed/6224ba353690d73af7a3f1c7cdb1fc1b002e38f783cb991ae338e1eb3d79/xxhash-3.6.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:93f107c673bccf0d592cdba077dedaf52fe7f42dcd7676eba1f6d6f0c3efffd2", size = 212914, upload_time = "2025-10-02T14:34:38.6Z" }, - { url = "https://files.pythonhosted.org/packages/38/86/fb6b6130d8dd6b8942cc17ab4d90e223653a89aa32ad2776f8af7064ed13/xxhash-3.6.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2aa5ee3444c25b69813663c9f8067dcfaa2e126dc55e8dddf40f4d1c25d7effa", size = 212163, upload_time = "2025-10-02T14:34:39.872Z" }, - { url = "https://files.pythonhosted.org/packages/ee/dc/e84875682b0593e884ad73b2d40767b5790d417bde603cceb6878901d647/xxhash-3.6.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f7f99123f0e1194fa59cc69ad46dbae2e07becec5df50a0509a808f90a0f03f0", size = 445411, upload_time = "2025-10-02T14:34:41.569Z" }, - { url = "https://files.pythonhosted.org/packages/11/4f/426f91b96701ec2f37bb2b8cec664eff4f658a11f3fa9d94f0a887ea6d2b/xxhash-3.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:49e03e6fe2cac4a1bc64952dd250cf0dbc5ef4ebb7b8d96bce82e2de163c82a2", size = 193883, upload_time = "2025-10-02T14:34:43.249Z" }, - { url = "https://files.pythonhosted.org/packages/53/5a/ddbb83eee8e28b778eacfc5a85c969673e4023cdeedcfcef61f36731610b/xxhash-3.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bd17fede52a17a4f9a7bc4472a5867cb0b160deeb431795c0e4abe158bc784e9", size = 210392, upload_time = "2025-10-02T14:34:45.042Z" }, - { url = "https://files.pythonhosted.org/packages/1e/c2/ff69efd07c8c074ccdf0a4f36fcdd3d27363665bcdf4ba399abebe643465/xxhash-3.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:6fb5f5476bef678f69db04f2bd1efbed3030d2aba305b0fc1773645f187d6a4e", size = 197898, upload_time = "2025-10-02T14:34:46.302Z" }, - { url = "https://files.pythonhosted.org/packages/58/ca/faa05ac19b3b622c7c9317ac3e23954187516298a091eb02c976d0d3dd45/xxhash-3.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:843b52f6d88071f87eba1631b684fcb4b2068cd2180a0224122fe4ef011a9374", size = 210655, upload_time = "2025-10-02T14:34:47.571Z" }, - { url = "https://files.pythonhosted.org/packages/d4/7a/06aa7482345480cc0cb597f5c875b11a82c3953f534394f620b0be2f700c/xxhash-3.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7d14a6cfaf03b1b6f5f9790f76880601ccc7896aff7ab9cd8978a939c1eb7e0d", size = 414001, upload_time = "2025-10-02T14:34:49.273Z" }, - { url = "https://files.pythonhosted.org/packages/23/07/63ffb386cd47029aa2916b3d2f454e6cc5b9f5c5ada3790377d5430084e7/xxhash-3.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:418daf3db71e1413cfe211c2f9a528456936645c17f46b5204705581a45390ae", size = 191431, upload_time = "2025-10-02T14:34:50.798Z" }, - { url = "https://files.pythonhosted.org/packages/0f/93/14fde614cadb4ddf5e7cebf8918b7e8fac5ae7861c1875964f17e678205c/xxhash-3.6.0-cp312-cp312-win32.whl", hash = "sha256:50fc255f39428a27299c20e280d6193d8b63b8ef8028995323bf834a026b4fbb", size = 30617, upload_time = "2025-10-02T14:34:51.954Z" }, - { url = "https://files.pythonhosted.org/packages/13/5d/0d125536cbe7565a83d06e43783389ecae0c0f2ed037b48ede185de477c0/xxhash-3.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:c0f2ab8c715630565ab8991b536ecded9416d615538be8ecddce43ccf26cbc7c", size = 31534, upload_time = "2025-10-02T14:34:53.276Z" }, - { url = "https://files.pythonhosted.org/packages/54/85/6ec269b0952ec7e36ba019125982cf11d91256a778c7c3f98a4c5043d283/xxhash-3.6.0-cp312-cp312-win_arm64.whl", hash = "sha256:eae5c13f3bc455a3bbb68bdc513912dc7356de7e2280363ea235f71f54064829", size = 27876, upload_time = "2025-10-02T14:34:54.371Z" }, - { url = "https://files.pythonhosted.org/packages/33/76/35d05267ac82f53ae9b0e554da7c5e281ee61f3cad44c743f0fcd354f211/xxhash-3.6.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:599e64ba7f67472481ceb6ee80fa3bd828fd61ba59fb11475572cc5ee52b89ec", size = 32738, upload_time = "2025-10-02T14:34:55.839Z" }, - { url = "https://files.pythonhosted.org/packages/31/a8/3fbce1cd96534a95e35d5120637bf29b0d7f5d8fa2f6374e31b4156dd419/xxhash-3.6.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7d8b8aaa30fca4f16f0c84a5c8d7ddee0e25250ec2796c973775373257dde8f1", size = 30821, upload_time = "2025-10-02T14:34:57.219Z" }, - { url = "https://files.pythonhosted.org/packages/0c/ea/d387530ca7ecfa183cb358027f1833297c6ac6098223fd14f9782cd0015c/xxhash-3.6.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d597acf8506d6e7101a4a44a5e428977a51c0fadbbfd3c39650cca9253f6e5a6", size = 194127, upload_time = "2025-10-02T14:34:59.21Z" }, - { url = "https://files.pythonhosted.org/packages/ba/0c/71435dcb99874b09a43b8d7c54071e600a7481e42b3e3ce1eb5226a5711a/xxhash-3.6.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:858dc935963a33bc33490128edc1c12b0c14d9c7ebaa4e387a7869ecc4f3e263", size = 212975, upload_time = "2025-10-02T14:35:00.816Z" }, - { url = "https://files.pythonhosted.org/packages/84/7a/c2b3d071e4bb4a90b7057228a99b10d51744878f4a8a6dd643c8bd897620/xxhash-3.6.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ba284920194615cb8edf73bf52236ce2e1664ccd4a38fdb543506413529cc546", size = 212241, upload_time = "2025-10-02T14:35:02.207Z" }, - { url = "https://files.pythonhosted.org/packages/81/5f/640b6eac0128e215f177df99eadcd0f1b7c42c274ab6a394a05059694c5a/xxhash-3.6.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4b54219177f6c6674d5378bd862c6aedf64725f70dd29c472eaae154df1a2e89", size = 445471, upload_time = "2025-10-02T14:35:03.61Z" }, - { url = "https://files.pythonhosted.org/packages/5e/1e/3c3d3ef071b051cc3abbe3721ffb8365033a172613c04af2da89d5548a87/xxhash-3.6.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:42c36dd7dbad2f5238950c377fcbf6811b1cdb1c444fab447960030cea60504d", size = 193936, upload_time = "2025-10-02T14:35:05.013Z" }, - { url = "https://files.pythonhosted.org/packages/2c/bd/4a5f68381939219abfe1c22a9e3a5854a4f6f6f3c4983a87d255f21f2e5d/xxhash-3.6.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f22927652cba98c44639ffdc7aaf35828dccf679b10b31c4ad72a5b530a18eb7", size = 210440, upload_time = "2025-10-02T14:35:06.239Z" }, - { url = "https://files.pythonhosted.org/packages/eb/37/b80fe3d5cfb9faff01a02121a0f4d565eb7237e9e5fc66e73017e74dcd36/xxhash-3.6.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b45fad44d9c5c119e9c6fbf2e1c656a46dc68e280275007bbfd3d572b21426db", size = 197990, upload_time = "2025-10-02T14:35:07.735Z" }, - { url = "https://files.pythonhosted.org/packages/d7/fd/2c0a00c97b9e18f72e1f240ad4e8f8a90fd9d408289ba9c7c495ed7dc05c/xxhash-3.6.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:6f2580ffab1a8b68ef2b901cde7e55fa8da5e4be0977c68f78fc80f3c143de42", size = 210689, upload_time = "2025-10-02T14:35:09.438Z" }, - { url = "https://files.pythonhosted.org/packages/93/86/5dd8076a926b9a95db3206aba20d89a7fc14dd5aac16e5c4de4b56033140/xxhash-3.6.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:40c391dd3cd041ebc3ffe6f2c862f402e306eb571422e0aa918d8070ba31da11", size = 414068, upload_time = "2025-10-02T14:35:11.162Z" }, - { url = "https://files.pythonhosted.org/packages/af/3c/0bb129170ee8f3650f08e993baee550a09593462a5cddd8e44d0011102b1/xxhash-3.6.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f205badabde7aafd1a31e8ca2a3e5a763107a71c397c4481d6a804eb5063d8bd", size = 191495, upload_time = "2025-10-02T14:35:12.971Z" }, - { url = "https://files.pythonhosted.org/packages/e9/3a/6797e0114c21d1725e2577508e24006fd7ff1d8c0c502d3b52e45c1771d8/xxhash-3.6.0-cp313-cp313-win32.whl", hash = "sha256:2577b276e060b73b73a53042ea5bd5203d3e6347ce0d09f98500f418a9fcf799", size = 30620, upload_time = "2025-10-02T14:35:14.129Z" }, - { url = "https://files.pythonhosted.org/packages/86/15/9bc32671e9a38b413a76d24722a2bf8784a132c043063a8f5152d390b0f9/xxhash-3.6.0-cp313-cp313-win_amd64.whl", hash = "sha256:757320d45d2fbcce8f30c42a6b2f47862967aea7bf458b9625b4bbe7ee390392", size = 31542, upload_time = "2025-10-02T14:35:15.21Z" }, - { url = "https://files.pythonhosted.org/packages/39/c5/cc01e4f6188656e56112d6a8e0dfe298a16934b8c47a247236549a3f7695/xxhash-3.6.0-cp313-cp313-win_arm64.whl", hash = "sha256:457b8f85dec5825eed7b69c11ae86834a018b8e3df5e77783c999663da2f96d6", size = 27880, upload_time = "2025-10-02T14:35:16.315Z" }, - { url = "https://files.pythonhosted.org/packages/f3/30/25e5321c8732759e930c555176d37e24ab84365482d257c3b16362235212/xxhash-3.6.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a42e633d75cdad6d625434e3468126c73f13f7584545a9cf34e883aa1710e702", size = 32956, upload_time = "2025-10-02T14:35:17.413Z" }, - { url = "https://files.pythonhosted.org/packages/9f/3c/0573299560d7d9f8ab1838f1efc021a280b5ae5ae2e849034ef3dee18810/xxhash-3.6.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:568a6d743219e717b07b4e03b0a828ce593833e498c3b64752e0f5df6bfe84db", size = 31072, upload_time = "2025-10-02T14:35:18.844Z" }, - { url = "https://files.pythonhosted.org/packages/7a/1c/52d83a06e417cd9d4137722693424885cc9878249beb3a7c829e74bf7ce9/xxhash-3.6.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:bec91b562d8012dae276af8025a55811b875baace6af510412a5e58e3121bc54", size = 196409, upload_time = "2025-10-02T14:35:20.31Z" }, - { url = "https://files.pythonhosted.org/packages/e3/8e/c6d158d12a79bbd0b878f8355432075fc82759e356ab5a111463422a239b/xxhash-3.6.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:78e7f2f4c521c30ad5e786fdd6bae89d47a32672a80195467b5de0480aa97b1f", size = 215736, upload_time = "2025-10-02T14:35:21.616Z" }, - { url = "https://files.pythonhosted.org/packages/bc/68/c4c80614716345d55071a396cf03d06e34b5f4917a467faf43083c995155/xxhash-3.6.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3ed0df1b11a79856df5ffcab572cbd6b9627034c1c748c5566fa79df9048a7c5", size = 214833, upload_time = "2025-10-02T14:35:23.32Z" }, - { url = "https://files.pythonhosted.org/packages/7e/e9/ae27c8ffec8b953efa84c7c4a6c6802c263d587b9fc0d6e7cea64e08c3af/xxhash-3.6.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0e4edbfc7d420925b0dd5e792478ed393d6e75ff8fc219a6546fb446b6a417b1", size = 448348, upload_time = "2025-10-02T14:35:25.111Z" }, - { url = "https://files.pythonhosted.org/packages/d7/6b/33e21afb1b5b3f46b74b6bd1913639066af218d704cc0941404ca717fc57/xxhash-3.6.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fba27a198363a7ef87f8c0f6b171ec36b674fe9053742c58dd7e3201c1ab30ee", size = 196070, upload_time = "2025-10-02T14:35:26.586Z" }, - { url = "https://files.pythonhosted.org/packages/96/b6/fcabd337bc5fa624e7203aa0fa7d0c49eed22f72e93229431752bddc83d9/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:794fe9145fe60191c6532fa95063765529770edcdd67b3d537793e8004cabbfd", size = 212907, upload_time = "2025-10-02T14:35:28.087Z" }, - { url = "https://files.pythonhosted.org/packages/4b/d3/9ee6160e644d660fcf176c5825e61411c7f62648728f69c79ba237250143/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:6105ef7e62b5ac73a837778efc331a591d8442f8ef5c7e102376506cb4ae2729", size = 200839, upload_time = "2025-10-02T14:35:29.857Z" }, - { url = "https://files.pythonhosted.org/packages/0d/98/e8de5baa5109394baf5118f5e72ab21a86387c4f89b0e77ef3e2f6b0327b/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:f01375c0e55395b814a679b3eea205db7919ac2af213f4a6682e01220e5fe292", size = 213304, upload_time = "2025-10-02T14:35:31.222Z" }, - { url = "https://files.pythonhosted.org/packages/7b/1d/71056535dec5c3177eeb53e38e3d367dd1d16e024e63b1cee208d572a033/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:d706dca2d24d834a4661619dcacf51a75c16d65985718d6a7d73c1eeeb903ddf", size = 416930, upload_time = "2025-10-02T14:35:32.517Z" }, - { url = "https://files.pythonhosted.org/packages/dc/6c/5cbde9de2cd967c322e651c65c543700b19e7ae3e0aae8ece3469bf9683d/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5f059d9faeacd49c0215d66f4056e1326c80503f51a1532ca336a385edadd033", size = 193787, upload_time = "2025-10-02T14:35:33.827Z" }, - { url = "https://files.pythonhosted.org/packages/19/fa/0172e350361d61febcea941b0cc541d6e6c8d65d153e85f850a7b256ff8a/xxhash-3.6.0-cp313-cp313t-win32.whl", hash = "sha256:1244460adc3a9be84731d72b8e80625788e5815b68da3da8b83f78115a40a7ec", size = 30916, upload_time = "2025-10-02T14:35:35.107Z" }, - { url = "https://files.pythonhosted.org/packages/ad/e6/e8cf858a2b19d6d45820f072eff1bea413910592ff17157cabc5f1227a16/xxhash-3.6.0-cp313-cp313t-win_amd64.whl", hash = "sha256:b1e420ef35c503869c4064f4a2f2b08ad6431ab7b229a05cce39d74268bca6b8", size = 31799, upload_time = "2025-10-02T14:35:36.165Z" }, - { url = "https://files.pythonhosted.org/packages/56/15/064b197e855bfb7b343210e82490ae672f8bc7cdf3ddb02e92f64304ee8a/xxhash-3.6.0-cp313-cp313t-win_arm64.whl", hash = "sha256:ec44b73a4220623235f67a996c862049f375df3b1052d9899f40a6382c32d746", size = 28044, upload_time = "2025-10-02T14:35:37.195Z" }, - { url = "https://files.pythonhosted.org/packages/93/1e/8aec23647a34a249f62e2398c42955acd9b4c6ed5cf08cbea94dc46f78d2/xxhash-3.6.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0f7b7e2ec26c1666ad5fc9dbfa426a6a3367ceaf79db5dd76264659d509d73b0", size = 30662, upload_time = "2025-10-02T14:37:01.743Z" }, - { url = "https://files.pythonhosted.org/packages/b8/0b/b14510b38ba91caf43006209db846a696ceea6a847a0c9ba0a5b1adc53d6/xxhash-3.6.0-pp311-pypy311_pp73-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5dc1e14d14fa0f5789ec29a7062004b5933964bb9b02aae6622b8f530dc40296", size = 41056, upload_time = "2025-10-02T14:37:02.879Z" }, - { url = "https://files.pythonhosted.org/packages/50/55/15a7b8a56590e66ccd374bbfa3f9ffc45b810886c8c3b614e3f90bd2367c/xxhash-3.6.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:881b47fc47e051b37d94d13e7455131054b56749b91b508b0907eb07900d1c13", size = 36251, upload_time = "2025-10-02T14:37:04.44Z" }, - { url = "https://files.pythonhosted.org/packages/62/b2/5ac99a041a29e58e95f907876b04f7067a0242cb85b5f39e726153981503/xxhash-3.6.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c6dc31591899f5e5666f04cc2e529e69b4072827085c1ef15294d91a004bc1bd", size = 32481, upload_time = "2025-10-02T14:37:05.869Z" }, - { url = "https://files.pythonhosted.org/packages/7b/d9/8d95e906764a386a3d3b596f3c68bb63687dfca806373509f51ce8eea81f/xxhash-3.6.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:15e0dac10eb9309508bfc41f7f9deaa7755c69e35af835db9cb10751adebc35d", size = 31565, upload_time = "2025-10-02T14:37:06.966Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/02/84/30869e01909fb37a6cc7e18688ee8bf1e42d57e7e0777636bd47524c43c7/xxhash-3.6.0.tar.gz", hash = "sha256:f0162a78b13a0d7617b2845b90c763339d1f1d82bb04a4b07f4ab535cc5e05d6", size = 85160, upload-time = "2025-10-02T14:37:08.097Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/ee/f9f1d656ad168681bb0f6b092372c1e533c4416b8069b1896a175c46e484/xxhash-3.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:87ff03d7e35c61435976554477a7f4cd1704c3596a89a8300d5ce7fc83874a71", size = 32845, upload-time = "2025-10-02T14:33:51.573Z" }, + { url = "https://files.pythonhosted.org/packages/a3/b1/93508d9460b292c74a09b83d16750c52a0ead89c51eea9951cb97a60d959/xxhash-3.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f572dfd3d0e2eb1a57511831cf6341242f5a9f8298a45862d085f5b93394a27d", size = 30807, upload-time = "2025-10-02T14:33:52.964Z" }, + { url = "https://files.pythonhosted.org/packages/07/55/28c93a3662f2d200c70704efe74aab9640e824f8ce330d8d3943bf7c9b3c/xxhash-3.6.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:89952ea539566b9fed2bbd94e589672794b4286f342254fad28b149f9615fef8", size = 193786, upload-time = "2025-10-02T14:33:54.272Z" }, + { url = "https://files.pythonhosted.org/packages/c1/96/fec0be9bb4b8f5d9c57d76380a366f31a1781fb802f76fc7cda6c84893c7/xxhash-3.6.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:48e6f2ffb07a50b52465a1032c3cf1f4a5683f944acaca8a134a2f23674c2058", size = 212830, upload-time = "2025-10-02T14:33:55.706Z" }, + { url = "https://files.pythonhosted.org/packages/c4/a0/c706845ba77b9611f81fd2e93fad9859346b026e8445e76f8c6fd057cc6d/xxhash-3.6.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b5b848ad6c16d308c3ac7ad4ba6bede80ed5df2ba8ed382f8932df63158dd4b2", size = 211606, upload-time = "2025-10-02T14:33:57.133Z" }, + { url = "https://files.pythonhosted.org/packages/67/1e/164126a2999e5045f04a69257eea946c0dc3e86541b400d4385d646b53d7/xxhash-3.6.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a034590a727b44dd8ac5914236a7b8504144447a9682586c3327e935f33ec8cc", size = 444872, upload-time = "2025-10-02T14:33:58.446Z" }, + { url = "https://files.pythonhosted.org/packages/2d/4b/55ab404c56cd70a2cf5ecfe484838865d0fea5627365c6c8ca156bd09c8f/xxhash-3.6.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8a8f1972e75ebdd161d7896743122834fe87378160c20e97f8b09166213bf8cc", size = 193217, upload-time = "2025-10-02T14:33:59.724Z" }, + { url = "https://files.pythonhosted.org/packages/45/e6/52abf06bac316db33aa269091ae7311bd53cfc6f4b120ae77bac1b348091/xxhash-3.6.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ee34327b187f002a596d7b167ebc59a1b729e963ce645964bbc050d2f1b73d07", size = 210139, upload-time = "2025-10-02T14:34:02.041Z" }, + { url = "https://files.pythonhosted.org/packages/34/37/db94d490b8691236d356bc249c08819cbcef9273a1a30acf1254ff9ce157/xxhash-3.6.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:339f518c3c7a850dd033ab416ea25a692759dc7478a71131fe8869010d2b75e4", size = 197669, upload-time = "2025-10-02T14:34:03.664Z" }, + { url = "https://files.pythonhosted.org/packages/b7/36/c4f219ef4a17a4f7a64ed3569bc2b5a9c8311abdb22249ac96093625b1a4/xxhash-3.6.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:bf48889c9630542d4709192578aebbd836177c9f7a4a2778a7d6340107c65f06", size = 210018, upload-time = "2025-10-02T14:34:05.325Z" }, + { url = "https://files.pythonhosted.org/packages/fd/06/bfac889a374fc2fc439a69223d1750eed2e18a7db8514737ab630534fa08/xxhash-3.6.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:5576b002a56207f640636056b4160a378fe36a58db73ae5c27a7ec8db35f71d4", size = 413058, upload-time = "2025-10-02T14:34:06.925Z" }, + { url = "https://files.pythonhosted.org/packages/c9/d1/555d8447e0dd32ad0930a249a522bb2e289f0d08b6b16204cfa42c1f5a0c/xxhash-3.6.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:af1f3278bd02814d6dedc5dec397993b549d6f16c19379721e5a1d31e132c49b", size = 190628, upload-time = "2025-10-02T14:34:08.669Z" }, + { url = "https://files.pythonhosted.org/packages/d1/15/8751330b5186cedc4ed4b597989882ea05e0408b53fa47bcb46a6125bfc6/xxhash-3.6.0-cp310-cp310-win32.whl", hash = "sha256:aed058764db109dc9052720da65fafe84873b05eb8b07e5e653597951af57c3b", size = 30577, upload-time = "2025-10-02T14:34:10.234Z" }, + { url = "https://files.pythonhosted.org/packages/bb/cc/53f87e8b5871a6eb2ff7e89c48c66093bda2be52315a8161ddc54ea550c4/xxhash-3.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:e82da5670f2d0d98950317f82a0e4a0197150ff19a6df2ba40399c2a3b9ae5fb", size = 31487, upload-time = "2025-10-02T14:34:11.618Z" }, + { url = "https://files.pythonhosted.org/packages/9f/00/60f9ea3bb697667a14314d7269956f58bf56bb73864f8f8d52a3c2535e9a/xxhash-3.6.0-cp310-cp310-win_arm64.whl", hash = "sha256:4a082ffff8c6ac07707fb6b671caf7c6e020c75226c561830b73d862060f281d", size = 27863, upload-time = "2025-10-02T14:34:12.619Z" }, + { url = "https://files.pythonhosted.org/packages/17/d4/cc2f0400e9154df4b9964249da78ebd72f318e35ccc425e9f403c392f22a/xxhash-3.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b47bbd8cf2d72797f3c2772eaaac0ded3d3af26481a26d7d7d41dc2d3c46b04a", size = 32844, upload-time = "2025-10-02T14:34:14.037Z" }, + { url = "https://files.pythonhosted.org/packages/5e/ec/1cc11cd13e26ea8bc3cb4af4eaadd8d46d5014aebb67be3f71fb0b68802a/xxhash-3.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2b6821e94346f96db75abaa6e255706fb06ebd530899ed76d32cd99f20dc52fa", size = 30809, upload-time = "2025-10-02T14:34:15.484Z" }, + { url = "https://files.pythonhosted.org/packages/04/5f/19fe357ea348d98ca22f456f75a30ac0916b51c753e1f8b2e0e6fb884cce/xxhash-3.6.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d0a9751f71a1a65ce3584e9cae4467651c7e70c9d31017fa57574583a4540248", size = 194665, upload-time = "2025-10-02T14:34:16.541Z" }, + { url = "https://files.pythonhosted.org/packages/90/3b/d1f1a8f5442a5fd8beedae110c5af7604dc37349a8e16519c13c19a9a2de/xxhash-3.6.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b29ee68625ab37b04c0b40c3fafdf24d2f75ccd778333cfb698f65f6c463f62", size = 213550, upload-time = "2025-10-02T14:34:17.878Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ef/3a9b05eb527457d5db13a135a2ae1a26c80fecd624d20f3e8dcc4cb170f3/xxhash-3.6.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6812c25fe0d6c36a46ccb002f40f27ac903bf18af9f6dd8f9669cb4d176ab18f", size = 212384, upload-time = "2025-10-02T14:34:19.182Z" }, + { url = "https://files.pythonhosted.org/packages/0f/18/ccc194ee698c6c623acbf0f8c2969811a8a4b6185af5e824cd27b9e4fd3e/xxhash-3.6.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4ccbff013972390b51a18ef1255ef5ac125c92dc9143b2d1909f59abc765540e", size = 445749, upload-time = "2025-10-02T14:34:20.659Z" }, + { url = "https://files.pythonhosted.org/packages/a5/86/cf2c0321dc3940a7aa73076f4fd677a0fb3e405cb297ead7d864fd90847e/xxhash-3.6.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:297b7fbf86c82c550e12e8fb71968b3f033d27b874276ba3624ea868c11165a8", size = 193880, upload-time = "2025-10-02T14:34:22.431Z" }, + { url = "https://files.pythonhosted.org/packages/82/fb/96213c8560e6f948a1ecc9a7613f8032b19ee45f747f4fca4eb31bb6d6ed/xxhash-3.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dea26ae1eb293db089798d3973a5fc928a18fdd97cc8801226fae705b02b14b0", size = 210912, upload-time = "2025-10-02T14:34:23.937Z" }, + { url = "https://files.pythonhosted.org/packages/40/aa/4395e669b0606a096d6788f40dbdf2b819d6773aa290c19e6e83cbfc312f/xxhash-3.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7a0b169aafb98f4284f73635a8e93f0735f9cbde17bd5ec332480484241aaa77", size = 198654, upload-time = "2025-10-02T14:34:25.644Z" }, + { url = "https://files.pythonhosted.org/packages/67/74/b044fcd6b3d89e9b1b665924d85d3f400636c23590226feb1eb09e1176ce/xxhash-3.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:08d45aef063a4531b785cd72de4887766d01dc8f362a515693df349fdb825e0c", size = 210867, upload-time = "2025-10-02T14:34:27.203Z" }, + { url = "https://files.pythonhosted.org/packages/bc/fd/3ce73bf753b08cb19daee1eb14aa0d7fe331f8da9c02dd95316ddfe5275e/xxhash-3.6.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:929142361a48ee07f09121fe9e96a84950e8d4df3bb298ca5d88061969f34d7b", size = 414012, upload-time = "2025-10-02T14:34:28.409Z" }, + { url = "https://files.pythonhosted.org/packages/ba/b3/5a4241309217c5c876f156b10778f3ab3af7ba7e3259e6d5f5c7d0129eb2/xxhash-3.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:51312c768403d8540487dbbfb557454cfc55589bbde6424456951f7fcd4facb3", size = 191409, upload-time = "2025-10-02T14:34:29.696Z" }, + { url = "https://files.pythonhosted.org/packages/c0/01/99bfbc15fb9abb9a72b088c1d95219fc4782b7d01fc835bd5744d66dd0b8/xxhash-3.6.0-cp311-cp311-win32.whl", hash = "sha256:d1927a69feddc24c987b337ce81ac15c4720955b667fe9b588e02254b80446fd", size = 30574, upload-time = "2025-10-02T14:34:31.028Z" }, + { url = "https://files.pythonhosted.org/packages/65/79/9d24d7f53819fe301b231044ea362ce64e86c74f6e8c8e51320de248b3e5/xxhash-3.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:26734cdc2d4ffe449b41d186bbeac416f704a482ed835d375a5c0cb02bc63fef", size = 31481, upload-time = "2025-10-02T14:34:32.062Z" }, + { url = "https://files.pythonhosted.org/packages/30/4e/15cd0e3e8772071344eab2961ce83f6e485111fed8beb491a3f1ce100270/xxhash-3.6.0-cp311-cp311-win_arm64.whl", hash = "sha256:d72f67ef8bf36e05f5b6c65e8524f265bd61071471cd4cf1d36743ebeeeb06b7", size = 27861, upload-time = "2025-10-02T14:34:33.555Z" }, + { url = "https://files.pythonhosted.org/packages/9a/07/d9412f3d7d462347e4511181dea65e47e0d0e16e26fbee2ea86a2aefb657/xxhash-3.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:01362c4331775398e7bb34e3ab403bc9ee9f7c497bc7dee6272114055277dd3c", size = 32744, upload-time = "2025-10-02T14:34:34.622Z" }, + { url = "https://files.pythonhosted.org/packages/79/35/0429ee11d035fc33abe32dca1b2b69e8c18d236547b9a9b72c1929189b9a/xxhash-3.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b7b2df81a23f8cb99656378e72501b2cb41b1827c0f5a86f87d6b06b69f9f204", size = 30816, upload-time = "2025-10-02T14:34:36.043Z" }, + { url = "https://files.pythonhosted.org/packages/b7/f2/57eb99aa0f7d98624c0932c5b9a170e1806406cdbcdb510546634a1359e0/xxhash-3.6.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:dc94790144e66b14f67b10ac8ed75b39ca47536bf8800eb7c24b50271ea0c490", size = 194035, upload-time = "2025-10-02T14:34:37.354Z" }, + { url = "https://files.pythonhosted.org/packages/4c/ed/6224ba353690d73af7a3f1c7cdb1fc1b002e38f783cb991ae338e1eb3d79/xxhash-3.6.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:93f107c673bccf0d592cdba077dedaf52fe7f42dcd7676eba1f6d6f0c3efffd2", size = 212914, upload-time = "2025-10-02T14:34:38.6Z" }, + { url = "https://files.pythonhosted.org/packages/38/86/fb6b6130d8dd6b8942cc17ab4d90e223653a89aa32ad2776f8af7064ed13/xxhash-3.6.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2aa5ee3444c25b69813663c9f8067dcfaa2e126dc55e8dddf40f4d1c25d7effa", size = 212163, upload-time = "2025-10-02T14:34:39.872Z" }, + { url = "https://files.pythonhosted.org/packages/ee/dc/e84875682b0593e884ad73b2d40767b5790d417bde603cceb6878901d647/xxhash-3.6.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f7f99123f0e1194fa59cc69ad46dbae2e07becec5df50a0509a808f90a0f03f0", size = 445411, upload-time = "2025-10-02T14:34:41.569Z" }, + { url = "https://files.pythonhosted.org/packages/11/4f/426f91b96701ec2f37bb2b8cec664eff4f658a11f3fa9d94f0a887ea6d2b/xxhash-3.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:49e03e6fe2cac4a1bc64952dd250cf0dbc5ef4ebb7b8d96bce82e2de163c82a2", size = 193883, upload-time = "2025-10-02T14:34:43.249Z" }, + { url = "https://files.pythonhosted.org/packages/53/5a/ddbb83eee8e28b778eacfc5a85c969673e4023cdeedcfcef61f36731610b/xxhash-3.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bd17fede52a17a4f9a7bc4472a5867cb0b160deeb431795c0e4abe158bc784e9", size = 210392, upload-time = "2025-10-02T14:34:45.042Z" }, + { url = "https://files.pythonhosted.org/packages/1e/c2/ff69efd07c8c074ccdf0a4f36fcdd3d27363665bcdf4ba399abebe643465/xxhash-3.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:6fb5f5476bef678f69db04f2bd1efbed3030d2aba305b0fc1773645f187d6a4e", size = 197898, upload-time = "2025-10-02T14:34:46.302Z" }, + { url = "https://files.pythonhosted.org/packages/58/ca/faa05ac19b3b622c7c9317ac3e23954187516298a091eb02c976d0d3dd45/xxhash-3.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:843b52f6d88071f87eba1631b684fcb4b2068cd2180a0224122fe4ef011a9374", size = 210655, upload-time = "2025-10-02T14:34:47.571Z" }, + { url = "https://files.pythonhosted.org/packages/d4/7a/06aa7482345480cc0cb597f5c875b11a82c3953f534394f620b0be2f700c/xxhash-3.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7d14a6cfaf03b1b6f5f9790f76880601ccc7896aff7ab9cd8978a939c1eb7e0d", size = 414001, upload-time = "2025-10-02T14:34:49.273Z" }, + { url = "https://files.pythonhosted.org/packages/23/07/63ffb386cd47029aa2916b3d2f454e6cc5b9f5c5ada3790377d5430084e7/xxhash-3.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:418daf3db71e1413cfe211c2f9a528456936645c17f46b5204705581a45390ae", size = 191431, upload-time = "2025-10-02T14:34:50.798Z" }, + { url = "https://files.pythonhosted.org/packages/0f/93/14fde614cadb4ddf5e7cebf8918b7e8fac5ae7861c1875964f17e678205c/xxhash-3.6.0-cp312-cp312-win32.whl", hash = "sha256:50fc255f39428a27299c20e280d6193d8b63b8ef8028995323bf834a026b4fbb", size = 30617, upload-time = "2025-10-02T14:34:51.954Z" }, + { url = "https://files.pythonhosted.org/packages/13/5d/0d125536cbe7565a83d06e43783389ecae0c0f2ed037b48ede185de477c0/xxhash-3.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:c0f2ab8c715630565ab8991b536ecded9416d615538be8ecddce43ccf26cbc7c", size = 31534, upload-time = "2025-10-02T14:34:53.276Z" }, + { url = "https://files.pythonhosted.org/packages/54/85/6ec269b0952ec7e36ba019125982cf11d91256a778c7c3f98a4c5043d283/xxhash-3.6.0-cp312-cp312-win_arm64.whl", hash = "sha256:eae5c13f3bc455a3bbb68bdc513912dc7356de7e2280363ea235f71f54064829", size = 27876, upload-time = "2025-10-02T14:34:54.371Z" }, + { url = "https://files.pythonhosted.org/packages/33/76/35d05267ac82f53ae9b0e554da7c5e281ee61f3cad44c743f0fcd354f211/xxhash-3.6.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:599e64ba7f67472481ceb6ee80fa3bd828fd61ba59fb11475572cc5ee52b89ec", size = 32738, upload-time = "2025-10-02T14:34:55.839Z" }, + { url = "https://files.pythonhosted.org/packages/31/a8/3fbce1cd96534a95e35d5120637bf29b0d7f5d8fa2f6374e31b4156dd419/xxhash-3.6.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7d8b8aaa30fca4f16f0c84a5c8d7ddee0e25250ec2796c973775373257dde8f1", size = 30821, upload-time = "2025-10-02T14:34:57.219Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ea/d387530ca7ecfa183cb358027f1833297c6ac6098223fd14f9782cd0015c/xxhash-3.6.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d597acf8506d6e7101a4a44a5e428977a51c0fadbbfd3c39650cca9253f6e5a6", size = 194127, upload-time = "2025-10-02T14:34:59.21Z" }, + { url = "https://files.pythonhosted.org/packages/ba/0c/71435dcb99874b09a43b8d7c54071e600a7481e42b3e3ce1eb5226a5711a/xxhash-3.6.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:858dc935963a33bc33490128edc1c12b0c14d9c7ebaa4e387a7869ecc4f3e263", size = 212975, upload-time = "2025-10-02T14:35:00.816Z" }, + { url = "https://files.pythonhosted.org/packages/84/7a/c2b3d071e4bb4a90b7057228a99b10d51744878f4a8a6dd643c8bd897620/xxhash-3.6.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ba284920194615cb8edf73bf52236ce2e1664ccd4a38fdb543506413529cc546", size = 212241, upload-time = "2025-10-02T14:35:02.207Z" }, + { url = "https://files.pythonhosted.org/packages/81/5f/640b6eac0128e215f177df99eadcd0f1b7c42c274ab6a394a05059694c5a/xxhash-3.6.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4b54219177f6c6674d5378bd862c6aedf64725f70dd29c472eaae154df1a2e89", size = 445471, upload-time = "2025-10-02T14:35:03.61Z" }, + { url = "https://files.pythonhosted.org/packages/5e/1e/3c3d3ef071b051cc3abbe3721ffb8365033a172613c04af2da89d5548a87/xxhash-3.6.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:42c36dd7dbad2f5238950c377fcbf6811b1cdb1c444fab447960030cea60504d", size = 193936, upload-time = "2025-10-02T14:35:05.013Z" }, + { url = "https://files.pythonhosted.org/packages/2c/bd/4a5f68381939219abfe1c22a9e3a5854a4f6f6f3c4983a87d255f21f2e5d/xxhash-3.6.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f22927652cba98c44639ffdc7aaf35828dccf679b10b31c4ad72a5b530a18eb7", size = 210440, upload-time = "2025-10-02T14:35:06.239Z" }, + { url = "https://files.pythonhosted.org/packages/eb/37/b80fe3d5cfb9faff01a02121a0f4d565eb7237e9e5fc66e73017e74dcd36/xxhash-3.6.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b45fad44d9c5c119e9c6fbf2e1c656a46dc68e280275007bbfd3d572b21426db", size = 197990, upload-time = "2025-10-02T14:35:07.735Z" }, + { url = "https://files.pythonhosted.org/packages/d7/fd/2c0a00c97b9e18f72e1f240ad4e8f8a90fd9d408289ba9c7c495ed7dc05c/xxhash-3.6.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:6f2580ffab1a8b68ef2b901cde7e55fa8da5e4be0977c68f78fc80f3c143de42", size = 210689, upload-time = "2025-10-02T14:35:09.438Z" }, + { url = "https://files.pythonhosted.org/packages/93/86/5dd8076a926b9a95db3206aba20d89a7fc14dd5aac16e5c4de4b56033140/xxhash-3.6.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:40c391dd3cd041ebc3ffe6f2c862f402e306eb571422e0aa918d8070ba31da11", size = 414068, upload-time = "2025-10-02T14:35:11.162Z" }, + { url = "https://files.pythonhosted.org/packages/af/3c/0bb129170ee8f3650f08e993baee550a09593462a5cddd8e44d0011102b1/xxhash-3.6.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f205badabde7aafd1a31e8ca2a3e5a763107a71c397c4481d6a804eb5063d8bd", size = 191495, upload-time = "2025-10-02T14:35:12.971Z" }, + { url = "https://files.pythonhosted.org/packages/e9/3a/6797e0114c21d1725e2577508e24006fd7ff1d8c0c502d3b52e45c1771d8/xxhash-3.6.0-cp313-cp313-win32.whl", hash = "sha256:2577b276e060b73b73a53042ea5bd5203d3e6347ce0d09f98500f418a9fcf799", size = 30620, upload-time = "2025-10-02T14:35:14.129Z" }, + { url = "https://files.pythonhosted.org/packages/86/15/9bc32671e9a38b413a76d24722a2bf8784a132c043063a8f5152d390b0f9/xxhash-3.6.0-cp313-cp313-win_amd64.whl", hash = "sha256:757320d45d2fbcce8f30c42a6b2f47862967aea7bf458b9625b4bbe7ee390392", size = 31542, upload-time = "2025-10-02T14:35:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/39/c5/cc01e4f6188656e56112d6a8e0dfe298a16934b8c47a247236549a3f7695/xxhash-3.6.0-cp313-cp313-win_arm64.whl", hash = "sha256:457b8f85dec5825eed7b69c11ae86834a018b8e3df5e77783c999663da2f96d6", size = 27880, upload-time = "2025-10-02T14:35:16.315Z" }, + { url = "https://files.pythonhosted.org/packages/f3/30/25e5321c8732759e930c555176d37e24ab84365482d257c3b16362235212/xxhash-3.6.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a42e633d75cdad6d625434e3468126c73f13f7584545a9cf34e883aa1710e702", size = 32956, upload-time = "2025-10-02T14:35:17.413Z" }, + { url = "https://files.pythonhosted.org/packages/9f/3c/0573299560d7d9f8ab1838f1efc021a280b5ae5ae2e849034ef3dee18810/xxhash-3.6.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:568a6d743219e717b07b4e03b0a828ce593833e498c3b64752e0f5df6bfe84db", size = 31072, upload-time = "2025-10-02T14:35:18.844Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1c/52d83a06e417cd9d4137722693424885cc9878249beb3a7c829e74bf7ce9/xxhash-3.6.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:bec91b562d8012dae276af8025a55811b875baace6af510412a5e58e3121bc54", size = 196409, upload-time = "2025-10-02T14:35:20.31Z" }, + { url = "https://files.pythonhosted.org/packages/e3/8e/c6d158d12a79bbd0b878f8355432075fc82759e356ab5a111463422a239b/xxhash-3.6.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:78e7f2f4c521c30ad5e786fdd6bae89d47a32672a80195467b5de0480aa97b1f", size = 215736, upload-time = "2025-10-02T14:35:21.616Z" }, + { url = "https://files.pythonhosted.org/packages/bc/68/c4c80614716345d55071a396cf03d06e34b5f4917a467faf43083c995155/xxhash-3.6.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3ed0df1b11a79856df5ffcab572cbd6b9627034c1c748c5566fa79df9048a7c5", size = 214833, upload-time = "2025-10-02T14:35:23.32Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e9/ae27c8ffec8b953efa84c7c4a6c6802c263d587b9fc0d6e7cea64e08c3af/xxhash-3.6.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0e4edbfc7d420925b0dd5e792478ed393d6e75ff8fc219a6546fb446b6a417b1", size = 448348, upload-time = "2025-10-02T14:35:25.111Z" }, + { url = "https://files.pythonhosted.org/packages/d7/6b/33e21afb1b5b3f46b74b6bd1913639066af218d704cc0941404ca717fc57/xxhash-3.6.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fba27a198363a7ef87f8c0f6b171ec36b674fe9053742c58dd7e3201c1ab30ee", size = 196070, upload-time = "2025-10-02T14:35:26.586Z" }, + { url = "https://files.pythonhosted.org/packages/96/b6/fcabd337bc5fa624e7203aa0fa7d0c49eed22f72e93229431752bddc83d9/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:794fe9145fe60191c6532fa95063765529770edcdd67b3d537793e8004cabbfd", size = 212907, upload-time = "2025-10-02T14:35:28.087Z" }, + { url = "https://files.pythonhosted.org/packages/4b/d3/9ee6160e644d660fcf176c5825e61411c7f62648728f69c79ba237250143/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:6105ef7e62b5ac73a837778efc331a591d8442f8ef5c7e102376506cb4ae2729", size = 200839, upload-time = "2025-10-02T14:35:29.857Z" }, + { url = "https://files.pythonhosted.org/packages/0d/98/e8de5baa5109394baf5118f5e72ab21a86387c4f89b0e77ef3e2f6b0327b/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:f01375c0e55395b814a679b3eea205db7919ac2af213f4a6682e01220e5fe292", size = 213304, upload-time = "2025-10-02T14:35:31.222Z" }, + { url = "https://files.pythonhosted.org/packages/7b/1d/71056535dec5c3177eeb53e38e3d367dd1d16e024e63b1cee208d572a033/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:d706dca2d24d834a4661619dcacf51a75c16d65985718d6a7d73c1eeeb903ddf", size = 416930, upload-time = "2025-10-02T14:35:32.517Z" }, + { url = "https://files.pythonhosted.org/packages/dc/6c/5cbde9de2cd967c322e651c65c543700b19e7ae3e0aae8ece3469bf9683d/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5f059d9faeacd49c0215d66f4056e1326c80503f51a1532ca336a385edadd033", size = 193787, upload-time = "2025-10-02T14:35:33.827Z" }, + { url = "https://files.pythonhosted.org/packages/19/fa/0172e350361d61febcea941b0cc541d6e6c8d65d153e85f850a7b256ff8a/xxhash-3.6.0-cp313-cp313t-win32.whl", hash = "sha256:1244460adc3a9be84731d72b8e80625788e5815b68da3da8b83f78115a40a7ec", size = 30916, upload-time = "2025-10-02T14:35:35.107Z" }, + { url = "https://files.pythonhosted.org/packages/ad/e6/e8cf858a2b19d6d45820f072eff1bea413910592ff17157cabc5f1227a16/xxhash-3.6.0-cp313-cp313t-win_amd64.whl", hash = "sha256:b1e420ef35c503869c4064f4a2f2b08ad6431ab7b229a05cce39d74268bca6b8", size = 31799, upload-time = "2025-10-02T14:35:36.165Z" }, + { url = "https://files.pythonhosted.org/packages/56/15/064b197e855bfb7b343210e82490ae672f8bc7cdf3ddb02e92f64304ee8a/xxhash-3.6.0-cp313-cp313t-win_arm64.whl", hash = "sha256:ec44b73a4220623235f67a996c862049f375df3b1052d9899f40a6382c32d746", size = 28044, upload-time = "2025-10-02T14:35:37.195Z" }, + { url = "https://files.pythonhosted.org/packages/93/1e/8aec23647a34a249f62e2398c42955acd9b4c6ed5cf08cbea94dc46f78d2/xxhash-3.6.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0f7b7e2ec26c1666ad5fc9dbfa426a6a3367ceaf79db5dd76264659d509d73b0", size = 30662, upload-time = "2025-10-02T14:37:01.743Z" }, + { url = "https://files.pythonhosted.org/packages/b8/0b/b14510b38ba91caf43006209db846a696ceea6a847a0c9ba0a5b1adc53d6/xxhash-3.6.0-pp311-pypy311_pp73-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5dc1e14d14fa0f5789ec29a7062004b5933964bb9b02aae6622b8f530dc40296", size = 41056, upload-time = "2025-10-02T14:37:02.879Z" }, + { url = "https://files.pythonhosted.org/packages/50/55/15a7b8a56590e66ccd374bbfa3f9ffc45b810886c8c3b614e3f90bd2367c/xxhash-3.6.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:881b47fc47e051b37d94d13e7455131054b56749b91b508b0907eb07900d1c13", size = 36251, upload-time = "2025-10-02T14:37:04.44Z" }, + { url = "https://files.pythonhosted.org/packages/62/b2/5ac99a041a29e58e95f907876b04f7067a0242cb85b5f39e726153981503/xxhash-3.6.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c6dc31591899f5e5666f04cc2e529e69b4072827085c1ef15294d91a004bc1bd", size = 32481, upload-time = "2025-10-02T14:37:05.869Z" }, + { url = "https://files.pythonhosted.org/packages/7b/d9/8d95e906764a386a3d3b596f3c68bb63687dfca806373509f51ce8eea81f/xxhash-3.6.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:15e0dac10eb9309508bfc41f7f9deaa7755c69e35af835db9cb10751adebc35d", size = 31565, upload-time = "2025-10-02T14:37:06.966Z" }, ] [[package]] @@ -5247,171 +5297,171 @@ dependencies = [ { name = "multidict" }, { name = "propcache" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/57/63/0c6ebca57330cd313f6102b16dd57ffaf3ec4c83403dcb45dbd15c6f3ea1/yarl-1.22.0.tar.gz", hash = "sha256:bebf8557577d4401ba8bd9ff33906f1376c877aa78d1fe216ad01b4d6745af71", size = 187169, upload_time = "2025-10-06T14:12:55.963Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/43/a2204825342f37c337f5edb6637040fa14e365b2fcc2346960201d457579/yarl-1.22.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c7bd6683587567e5a49ee6e336e0612bec8329be1b7d4c8af5687dcdeb67ee1e", size = 140517, upload_time = "2025-10-06T14:08:42.494Z" }, - { url = "https://files.pythonhosted.org/packages/44/6f/674f3e6f02266428c56f704cd2501c22f78e8b2eeb23f153117cc86fb28a/yarl-1.22.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5cdac20da754f3a723cceea5b3448e1a2074866406adeb4ef35b469d089adb8f", size = 93495, upload_time = "2025-10-06T14:08:46.2Z" }, - { url = "https://files.pythonhosted.org/packages/b8/12/5b274d8a0f30c07b91b2f02cba69152600b47830fcfb465c108880fcee9c/yarl-1.22.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07a524d84df0c10f41e3ee918846e1974aba4ec017f990dc735aad487a0bdfdf", size = 94400, upload_time = "2025-10-06T14:08:47.855Z" }, - { url = "https://files.pythonhosted.org/packages/e2/7f/df1b6949b1fa1aa9ff6de6e2631876ad4b73c4437822026e85d8acb56bb1/yarl-1.22.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1b329cb8146d7b736677a2440e422eadd775d1806a81db2d4cded80a48efc1a", size = 347545, upload_time = "2025-10-06T14:08:49.683Z" }, - { url = "https://files.pythonhosted.org/packages/84/09/f92ed93bd6cd77872ab6c3462df45ca45cd058d8f1d0c9b4f54c1704429f/yarl-1.22.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:75976c6945d85dbb9ee6308cd7ff7b1fb9409380c82d6119bd778d8fcfe2931c", size = 319598, upload_time = "2025-10-06T14:08:51.215Z" }, - { url = "https://files.pythonhosted.org/packages/c3/97/ac3f3feae7d522cf7ccec3d340bb0b2b61c56cb9767923df62a135092c6b/yarl-1.22.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:80ddf7a5f8c86cb3eb4bc9028b07bbbf1f08a96c5c0bc1244be5e8fefcb94147", size = 363893, upload_time = "2025-10-06T14:08:53.144Z" }, - { url = "https://files.pythonhosted.org/packages/06/49/f3219097403b9c84a4d079b1d7bda62dd9b86d0d6e4428c02d46ab2c77fc/yarl-1.22.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d332fc2e3c94dad927f2112395772a4e4fedbcf8f80efc21ed7cdfae4d574fdb", size = 371240, upload_time = "2025-10-06T14:08:55.036Z" }, - { url = "https://files.pythonhosted.org/packages/35/9f/06b765d45c0e44e8ecf0fe15c9eacbbde342bb5b7561c46944f107bfb6c3/yarl-1.22.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0cf71bf877efeac18b38d3930594c0948c82b64547c1cf420ba48722fe5509f6", size = 346965, upload_time = "2025-10-06T14:08:56.722Z" }, - { url = "https://files.pythonhosted.org/packages/c5/69/599e7cea8d0fcb1694323b0db0dda317fa3162f7b90166faddecf532166f/yarl-1.22.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:663e1cadaddae26be034a6ab6072449a8426ddb03d500f43daf952b74553bba0", size = 342026, upload_time = "2025-10-06T14:08:58.563Z" }, - { url = "https://files.pythonhosted.org/packages/95/6f/9dfd12c8bc90fea9eab39832ee32ea48f8e53d1256252a77b710c065c89f/yarl-1.22.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:6dcbb0829c671f305be48a7227918cfcd11276c2d637a8033a99a02b67bf9eda", size = 335637, upload_time = "2025-10-06T14:09:00.506Z" }, - { url = "https://files.pythonhosted.org/packages/57/2e/34c5b4eb9b07e16e873db5b182c71e5f06f9b5af388cdaa97736d79dd9a6/yarl-1.22.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f0d97c18dfd9a9af4490631905a3f131a8e4c9e80a39353919e2cfed8f00aedc", size = 359082, upload_time = "2025-10-06T14:09:01.936Z" }, - { url = "https://files.pythonhosted.org/packages/31/71/fa7e10fb772d273aa1f096ecb8ab8594117822f683bab7d2c5a89914c92a/yarl-1.22.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:437840083abe022c978470b942ff832c3940b2ad3734d424b7eaffcd07f76737", size = 357811, upload_time = "2025-10-06T14:09:03.445Z" }, - { url = "https://files.pythonhosted.org/packages/26/da/11374c04e8e1184a6a03cf9c8f5688d3e5cec83ed6f31ad3481b3207f709/yarl-1.22.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a899cbd98dce6f5d8de1aad31cb712ec0a530abc0a86bd6edaa47c1090138467", size = 351223, upload_time = "2025-10-06T14:09:05.401Z" }, - { url = "https://files.pythonhosted.org/packages/82/8f/e2d01f161b0c034a30410e375e191a5d27608c1f8693bab1a08b089ca096/yarl-1.22.0-cp310-cp310-win32.whl", hash = "sha256:595697f68bd1f0c1c159fcb97b661fc9c3f5db46498043555d04805430e79bea", size = 82118, upload_time = "2025-10-06T14:09:11.148Z" }, - { url = "https://files.pythonhosted.org/packages/62/46/94c76196642dbeae634c7a61ba3da88cd77bed875bf6e4a8bed037505aa6/yarl-1.22.0-cp310-cp310-win_amd64.whl", hash = "sha256:cb95a9b1adaa48e41815a55ae740cfda005758104049a640a398120bf02515ca", size = 86852, upload_time = "2025-10-06T14:09:12.958Z" }, - { url = "https://files.pythonhosted.org/packages/af/af/7df4f179d3b1a6dcb9a4bd2ffbc67642746fcafdb62580e66876ce83fff4/yarl-1.22.0-cp310-cp310-win_arm64.whl", hash = "sha256:b85b982afde6df99ecc996990d4ad7ccbdbb70e2a4ba4de0aecde5922ba98a0b", size = 82012, upload_time = "2025-10-06T14:09:14.664Z" }, - { url = "https://files.pythonhosted.org/packages/4d/27/5ab13fc84c76a0250afd3d26d5936349a35be56ce5785447d6c423b26d92/yarl-1.22.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ab72135b1f2db3fed3997d7e7dc1b80573c67138023852b6efb336a5eae6511", size = 141607, upload_time = "2025-10-06T14:09:16.298Z" }, - { url = "https://files.pythonhosted.org/packages/6a/a1/d065d51d02dc02ce81501d476b9ed2229d9a990818332242a882d5d60340/yarl-1.22.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:669930400e375570189492dc8d8341301578e8493aec04aebc20d4717f899dd6", size = 94027, upload_time = "2025-10-06T14:09:17.786Z" }, - { url = "https://files.pythonhosted.org/packages/c1/da/8da9f6a53f67b5106ffe902c6fa0164e10398d4e150d85838b82f424072a/yarl-1.22.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:792a2af6d58177ef7c19cbf0097aba92ca1b9cb3ffdd9c7470e156c8f9b5e028", size = 94963, upload_time = "2025-10-06T14:09:19.662Z" }, - { url = "https://files.pythonhosted.org/packages/68/fe/2c1f674960c376e29cb0bec1249b117d11738db92a6ccc4a530b972648db/yarl-1.22.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ea66b1c11c9150f1372f69afb6b8116f2dd7286f38e14ea71a44eee9ec51b9d", size = 368406, upload_time = "2025-10-06T14:09:21.402Z" }, - { url = "https://files.pythonhosted.org/packages/95/26/812a540e1c3c6418fec60e9bbd38e871eaba9545e94fa5eff8f4a8e28e1e/yarl-1.22.0-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3e2daa88dc91870215961e96a039ec73e4937da13cf77ce17f9cad0c18df3503", size = 336581, upload_time = "2025-10-06T14:09:22.98Z" }, - { url = "https://files.pythonhosted.org/packages/0b/f5/5777b19e26fdf98563985e481f8be3d8a39f8734147a6ebf459d0dab5a6b/yarl-1.22.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ba440ae430c00eee41509353628600212112cd5018d5def7e9b05ea7ac34eb65", size = 388924, upload_time = "2025-10-06T14:09:24.655Z" }, - { url = "https://files.pythonhosted.org/packages/86/08/24bd2477bd59c0bbd994fe1d93b126e0472e4e3df5a96a277b0a55309e89/yarl-1.22.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e6438cc8f23a9c1478633d216b16104a586b9761db62bfacb6425bac0a36679e", size = 392890, upload_time = "2025-10-06T14:09:26.617Z" }, - { url = "https://files.pythonhosted.org/packages/46/00/71b90ed48e895667ecfb1eaab27c1523ee2fa217433ed77a73b13205ca4b/yarl-1.22.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c52a6e78aef5cf47a98ef8e934755abf53953379b7d53e68b15ff4420e6683d", size = 365819, upload_time = "2025-10-06T14:09:28.544Z" }, - { url = "https://files.pythonhosted.org/packages/30/2d/f715501cae832651d3282387c6a9236cd26bd00d0ff1e404b3dc52447884/yarl-1.22.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3b06bcadaac49c70f4c88af4ffcfbe3dc155aab3163e75777818092478bcbbe7", size = 363601, upload_time = "2025-10-06T14:09:30.568Z" }, - { url = "https://files.pythonhosted.org/packages/f8/f9/a678c992d78e394e7126ee0b0e4e71bd2775e4334d00a9278c06a6cce96a/yarl-1.22.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:6944b2dc72c4d7f7052683487e3677456050ff77fcf5e6204e98caf785ad1967", size = 358072, upload_time = "2025-10-06T14:09:32.528Z" }, - { url = "https://files.pythonhosted.org/packages/2c/d1/b49454411a60edb6fefdcad4f8e6dbba7d8019e3a508a1c5836cba6d0781/yarl-1.22.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d5372ca1df0f91a86b047d1277c2aaf1edb32d78bbcefffc81b40ffd18f027ed", size = 385311, upload_time = "2025-10-06T14:09:34.634Z" }, - { url = "https://files.pythonhosted.org/packages/87/e5/40d7a94debb8448c7771a916d1861d6609dddf7958dc381117e7ba36d9e8/yarl-1.22.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:51af598701f5299012b8416486b40fceef8c26fc87dc6d7d1f6fc30609ea0aa6", size = 381094, upload_time = "2025-10-06T14:09:36.268Z" }, - { url = "https://files.pythonhosted.org/packages/35/d8/611cc282502381ad855448643e1ad0538957fc82ae83dfe7762c14069e14/yarl-1.22.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b266bd01fedeffeeac01a79ae181719ff848a5a13ce10075adbefc8f1daee70e", size = 370944, upload_time = "2025-10-06T14:09:37.872Z" }, - { url = "https://files.pythonhosted.org/packages/2d/df/fadd00fb1c90e1a5a8bd731fa3d3de2e165e5a3666a095b04e31b04d9cb6/yarl-1.22.0-cp311-cp311-win32.whl", hash = "sha256:a9b1ba5610a4e20f655258d5a1fdc7ebe3d837bb0e45b581398b99eb98b1f5ca", size = 81804, upload_time = "2025-10-06T14:09:39.359Z" }, - { url = "https://files.pythonhosted.org/packages/b5/f7/149bb6f45f267cb5c074ac40c01c6b3ea6d8a620d34b337f6321928a1b4d/yarl-1.22.0-cp311-cp311-win_amd64.whl", hash = "sha256:078278b9b0b11568937d9509b589ee83ef98ed6d561dfe2020e24a9fd08eaa2b", size = 86858, upload_time = "2025-10-06T14:09:41.068Z" }, - { url = "https://files.pythonhosted.org/packages/2b/13/88b78b93ad3f2f0b78e13bfaaa24d11cbc746e93fe76d8c06bf139615646/yarl-1.22.0-cp311-cp311-win_arm64.whl", hash = "sha256:b6a6f620cfe13ccec221fa312139135166e47ae169f8253f72a0abc0dae94376", size = 81637, upload_time = "2025-10-06T14:09:42.712Z" }, - { url = "https://files.pythonhosted.org/packages/75/ff/46736024fee3429b80a165a732e38e5d5a238721e634ab41b040d49f8738/yarl-1.22.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e340382d1afa5d32b892b3ff062436d592ec3d692aeea3bef3a5cfe11bbf8c6f", size = 142000, upload_time = "2025-10-06T14:09:44.631Z" }, - { url = "https://files.pythonhosted.org/packages/5a/9a/b312ed670df903145598914770eb12de1bac44599549b3360acc96878df8/yarl-1.22.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f1e09112a2c31ffe8d80be1b0988fa6a18c5d5cad92a9ffbb1c04c91bfe52ad2", size = 94338, upload_time = "2025-10-06T14:09:46.372Z" }, - { url = "https://files.pythonhosted.org/packages/ba/f5/0601483296f09c3c65e303d60c070a5c19fcdbc72daa061e96170785bc7d/yarl-1.22.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:939fe60db294c786f6b7c2d2e121576628468f65453d86b0fe36cb52f987bd74", size = 94909, upload_time = "2025-10-06T14:09:48.648Z" }, - { url = "https://files.pythonhosted.org/packages/60/41/9a1fe0b73dbcefce72e46cf149b0e0a67612d60bfc90fb59c2b2efdfbd86/yarl-1.22.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1651bf8e0398574646744c1885a41198eba53dc8a9312b954073f845c90a8df", size = 372940, upload_time = "2025-10-06T14:09:50.089Z" }, - { url = "https://files.pythonhosted.org/packages/17/7a/795cb6dfee561961c30b800f0ed616b923a2ec6258b5def2a00bf8231334/yarl-1.22.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b8a0588521a26bf92a57a1705b77b8b59044cdceccac7151bd8d229e66b8dedb", size = 345825, upload_time = "2025-10-06T14:09:52.142Z" }, - { url = "https://files.pythonhosted.org/packages/d7/93/a58f4d596d2be2ae7bab1a5846c4d270b894958845753b2c606d666744d3/yarl-1.22.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:42188e6a615c1a75bcaa6e150c3fe8f3e8680471a6b10150c5f7e83f47cc34d2", size = 386705, upload_time = "2025-10-06T14:09:54.128Z" }, - { url = "https://files.pythonhosted.org/packages/61/92/682279d0e099d0e14d7fd2e176bd04f48de1484f56546a3e1313cd6c8e7c/yarl-1.22.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f6d2cb59377d99718913ad9a151030d6f83ef420a2b8f521d94609ecc106ee82", size = 396518, upload_time = "2025-10-06T14:09:55.762Z" }, - { url = "https://files.pythonhosted.org/packages/db/0f/0d52c98b8a885aeda831224b78f3be7ec2e1aa4a62091f9f9188c3c65b56/yarl-1.22.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50678a3b71c751d58d7908edc96d332af328839eea883bb554a43f539101277a", size = 377267, upload_time = "2025-10-06T14:09:57.958Z" }, - { url = "https://files.pythonhosted.org/packages/22/42/d2685e35908cbeaa6532c1fc73e89e7f2efb5d8a7df3959ea8e37177c5a3/yarl-1.22.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e8fbaa7cec507aa24ea27a01456e8dd4b6fab829059b69844bd348f2d467124", size = 365797, upload_time = "2025-10-06T14:09:59.527Z" }, - { url = "https://files.pythonhosted.org/packages/a2/83/cf8c7bcc6355631762f7d8bdab920ad09b82efa6b722999dfb05afa6cfac/yarl-1.22.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:433885ab5431bc3d3d4f2f9bd15bfa1614c522b0f1405d62c4f926ccd69d04fa", size = 365535, upload_time = "2025-10-06T14:10:01.139Z" }, - { url = "https://files.pythonhosted.org/packages/25/e1/5302ff9b28f0c59cac913b91fe3f16c59a033887e57ce9ca5d41a3a94737/yarl-1.22.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b790b39c7e9a4192dc2e201a282109ed2985a1ddbd5ac08dc56d0e121400a8f7", size = 382324, upload_time = "2025-10-06T14:10:02.756Z" }, - { url = "https://files.pythonhosted.org/packages/bf/cd/4617eb60f032f19ae3a688dc990d8f0d89ee0ea378b61cac81ede3e52fae/yarl-1.22.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:31f0b53913220599446872d757257be5898019c85e7971599065bc55065dc99d", size = 383803, upload_time = "2025-10-06T14:10:04.552Z" }, - { url = "https://files.pythonhosted.org/packages/59/65/afc6e62bb506a319ea67b694551dab4a7e6fb7bf604e9bd9f3e11d575fec/yarl-1.22.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a49370e8f711daec68d09b821a34e1167792ee2d24d405cbc2387be4f158b520", size = 374220, upload_time = "2025-10-06T14:10:06.489Z" }, - { url = "https://files.pythonhosted.org/packages/e7/3d/68bf18d50dc674b942daec86a9ba922d3113d8399b0e52b9897530442da2/yarl-1.22.0-cp312-cp312-win32.whl", hash = "sha256:70dfd4f241c04bd9239d53b17f11e6ab672b9f1420364af63e8531198e3f5fe8", size = 81589, upload_time = "2025-10-06T14:10:09.254Z" }, - { url = "https://files.pythonhosted.org/packages/c8/9a/6ad1a9b37c2f72874f93e691b2e7ecb6137fb2b899983125db4204e47575/yarl-1.22.0-cp312-cp312-win_amd64.whl", hash = "sha256:8884d8b332a5e9b88e23f60bb166890009429391864c685e17bd73a9eda9105c", size = 87213, upload_time = "2025-10-06T14:10:11.369Z" }, - { url = "https://files.pythonhosted.org/packages/44/c5/c21b562d1680a77634d748e30c653c3ca918beb35555cff24986fff54598/yarl-1.22.0-cp312-cp312-win_arm64.whl", hash = "sha256:ea70f61a47f3cc93bdf8b2f368ed359ef02a01ca6393916bc8ff877427181e74", size = 81330, upload_time = "2025-10-06T14:10:13.112Z" }, - { url = "https://files.pythonhosted.org/packages/ea/f3/d67de7260456ee105dc1d162d43a019ecad6b91e2f51809d6cddaa56690e/yarl-1.22.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8dee9c25c74997f6a750cd317b8ca63545169c098faee42c84aa5e506c819b53", size = 139980, upload_time = "2025-10-06T14:10:14.601Z" }, - { url = "https://files.pythonhosted.org/packages/01/88/04d98af0b47e0ef42597b9b28863b9060bb515524da0a65d5f4db160b2d5/yarl-1.22.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01e73b85a5434f89fc4fe27dcda2aff08ddf35e4d47bbbea3bdcd25321af538a", size = 93424, upload_time = "2025-10-06T14:10:16.115Z" }, - { url = "https://files.pythonhosted.org/packages/18/91/3274b215fd8442a03975ce6bee5fe6aa57a8326b29b9d3d56234a1dca244/yarl-1.22.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:22965c2af250d20c873cdbee8ff958fb809940aeb2e74ba5f20aaf6b7ac8c70c", size = 93821, upload_time = "2025-10-06T14:10:17.993Z" }, - { url = "https://files.pythonhosted.org/packages/61/3a/caf4e25036db0f2da4ca22a353dfeb3c9d3c95d2761ebe9b14df8fc16eb0/yarl-1.22.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4f15793aa49793ec8d1c708ab7f9eded1aa72edc5174cae703651555ed1b601", size = 373243, upload_time = "2025-10-06T14:10:19.44Z" }, - { url = "https://files.pythonhosted.org/packages/6e/9e/51a77ac7516e8e7803b06e01f74e78649c24ee1021eca3d6a739cb6ea49c/yarl-1.22.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5542339dcf2747135c5c85f68680353d5cb9ffd741c0f2e8d832d054d41f35a", size = 342361, upload_time = "2025-10-06T14:10:21.124Z" }, - { url = "https://files.pythonhosted.org/packages/d4/f8/33b92454789dde8407f156c00303e9a891f1f51a0330b0fad7c909f87692/yarl-1.22.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5c401e05ad47a75869c3ab3e35137f8468b846770587e70d71e11de797d113df", size = 387036, upload_time = "2025-10-06T14:10:22.902Z" }, - { url = "https://files.pythonhosted.org/packages/d9/9a/c5db84ea024f76838220280f732970aa4ee154015d7f5c1bfb60a267af6f/yarl-1.22.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:243dda95d901c733f5b59214d28b0120893d91777cb8aa043e6ef059d3cddfe2", size = 397671, upload_time = "2025-10-06T14:10:24.523Z" }, - { url = "https://files.pythonhosted.org/packages/11/c9/cd8538dc2e7727095e0c1d867bad1e40c98f37763e6d995c1939f5fdc7b1/yarl-1.22.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bec03d0d388060058f5d291a813f21c011041938a441c593374da6077fe21b1b", size = 377059, upload_time = "2025-10-06T14:10:26.406Z" }, - { url = "https://files.pythonhosted.org/packages/a1/b9/ab437b261702ced75122ed78a876a6dec0a1b0f5e17a4ac7a9a2482d8abe/yarl-1.22.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0748275abb8c1e1e09301ee3cf90c8a99678a4e92e4373705f2a2570d581273", size = 365356, upload_time = "2025-10-06T14:10:28.461Z" }, - { url = "https://files.pythonhosted.org/packages/b2/9d/8e1ae6d1d008a9567877b08f0ce4077a29974c04c062dabdb923ed98e6fe/yarl-1.22.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:47fdb18187e2a4e18fda2c25c05d8251a9e4a521edaed757fef033e7d8498d9a", size = 361331, upload_time = "2025-10-06T14:10:30.541Z" }, - { url = "https://files.pythonhosted.org/packages/ca/5a/09b7be3905962f145b73beb468cdd53db8aa171cf18c80400a54c5b82846/yarl-1.22.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c7044802eec4524fde550afc28edda0dd5784c4c45f0be151a2d3ba017daca7d", size = 382590, upload_time = "2025-10-06T14:10:33.352Z" }, - { url = "https://files.pythonhosted.org/packages/aa/7f/59ec509abf90eda5048b0bc3e2d7b5099dffdb3e6b127019895ab9d5ef44/yarl-1.22.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:139718f35149ff544caba20fce6e8a2f71f1e39b92c700d8438a0b1d2a631a02", size = 385316, upload_time = "2025-10-06T14:10:35.034Z" }, - { url = "https://files.pythonhosted.org/packages/e5/84/891158426bc8036bfdfd862fabd0e0fa25df4176ec793e447f4b85cf1be4/yarl-1.22.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e1b51bebd221006d3d2f95fbe124b22b247136647ae5dcc8c7acafba66e5ee67", size = 374431, upload_time = "2025-10-06T14:10:37.76Z" }, - { url = "https://files.pythonhosted.org/packages/bb/49/03da1580665baa8bef5e8ed34c6df2c2aca0a2f28bf397ed238cc1bbc6f2/yarl-1.22.0-cp313-cp313-win32.whl", hash = "sha256:d3e32536234a95f513bd374e93d717cf6b2231a791758de6c509e3653f234c95", size = 81555, upload_time = "2025-10-06T14:10:39.649Z" }, - { url = "https://files.pythonhosted.org/packages/9a/ee/450914ae11b419eadd067c6183ae08381cfdfcb9798b90b2b713bbebddda/yarl-1.22.0-cp313-cp313-win_amd64.whl", hash = "sha256:47743b82b76d89a1d20b83e60d5c20314cbd5ba2befc9cda8f28300c4a08ed4d", size = 86965, upload_time = "2025-10-06T14:10:41.313Z" }, - { url = "https://files.pythonhosted.org/packages/98/4d/264a01eae03b6cf629ad69bae94e3b0e5344741e929073678e84bf7a3e3b/yarl-1.22.0-cp313-cp313-win_arm64.whl", hash = "sha256:5d0fcda9608875f7d052eff120c7a5da474a6796fe4d83e152e0e4d42f6d1a9b", size = 81205, upload_time = "2025-10-06T14:10:43.167Z" }, - { url = "https://files.pythonhosted.org/packages/88/fc/6908f062a2f77b5f9f6d69cecb1747260831ff206adcbc5b510aff88df91/yarl-1.22.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:719ae08b6972befcba4310e49edb1161a88cdd331e3a694b84466bd938a6ab10", size = 146209, upload_time = "2025-10-06T14:10:44.643Z" }, - { url = "https://files.pythonhosted.org/packages/65/47/76594ae8eab26210b4867be6f49129861ad33da1f1ebdf7051e98492bf62/yarl-1.22.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:47d8a5c446df1c4db9d21b49619ffdba90e77c89ec6e283f453856c74b50b9e3", size = 95966, upload_time = "2025-10-06T14:10:46.554Z" }, - { url = "https://files.pythonhosted.org/packages/ab/ce/05e9828a49271ba6b5b038b15b3934e996980dd78abdfeb52a04cfb9467e/yarl-1.22.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cfebc0ac8333520d2d0423cbbe43ae43c8838862ddb898f5ca68565e395516e9", size = 97312, upload_time = "2025-10-06T14:10:48.007Z" }, - { url = "https://files.pythonhosted.org/packages/d1/c5/7dffad5e4f2265b29c9d7ec869c369e4223166e4f9206fc2243ee9eea727/yarl-1.22.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4398557cbf484207df000309235979c79c4356518fd5c99158c7d38203c4da4f", size = 361967, upload_time = "2025-10-06T14:10:49.997Z" }, - { url = "https://files.pythonhosted.org/packages/50/b2/375b933c93a54bff7fc041e1a6ad2c0f6f733ffb0c6e642ce56ee3b39970/yarl-1.22.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2ca6fd72a8cd803be290d42f2dec5cdcd5299eeb93c2d929bf060ad9efaf5de0", size = 323949, upload_time = "2025-10-06T14:10:52.004Z" }, - { url = "https://files.pythonhosted.org/packages/66/50/bfc2a29a1d78644c5a7220ce2f304f38248dc94124a326794e677634b6cf/yarl-1.22.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca1f59c4e1ab6e72f0a23c13fca5430f889634166be85dbf1013683e49e3278e", size = 361818, upload_time = "2025-10-06T14:10:54.078Z" }, - { url = "https://files.pythonhosted.org/packages/46/96/f3941a46af7d5d0f0498f86d71275696800ddcdd20426298e572b19b91ff/yarl-1.22.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c5010a52015e7c70f86eb967db0f37f3c8bd503a695a49f8d45700144667708", size = 372626, upload_time = "2025-10-06T14:10:55.767Z" }, - { url = "https://files.pythonhosted.org/packages/c1/42/8b27c83bb875cd89448e42cd627e0fb971fa1675c9ec546393d18826cb50/yarl-1.22.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d7672ecf7557476642c88497c2f8d8542f8e36596e928e9bcba0e42e1e7d71f", size = 341129, upload_time = "2025-10-06T14:10:57.985Z" }, - { url = "https://files.pythonhosted.org/packages/49/36/99ca3122201b382a3cf7cc937b95235b0ac944f7e9f2d5331d50821ed352/yarl-1.22.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3b7c88eeef021579d600e50363e0b6ee4f7f6f728cd3486b9d0f3ee7b946398d", size = 346776, upload_time = "2025-10-06T14:10:59.633Z" }, - { url = "https://files.pythonhosted.org/packages/85/b4/47328bf996acd01a4c16ef9dcd2f59c969f495073616586f78cd5f2efb99/yarl-1.22.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:f4afb5c34f2c6fecdcc182dfcfc6af6cccf1aa923eed4d6a12e9d96904e1a0d8", size = 334879, upload_time = "2025-10-06T14:11:01.454Z" }, - { url = "https://files.pythonhosted.org/packages/c2/ad/b77d7b3f14a4283bffb8e92c6026496f6de49751c2f97d4352242bba3990/yarl-1.22.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:59c189e3e99a59cf8d83cbb31d4db02d66cda5a1a4374e8a012b51255341abf5", size = 350996, upload_time = "2025-10-06T14:11:03.452Z" }, - { url = "https://files.pythonhosted.org/packages/81/c8/06e1d69295792ba54d556f06686cbd6a7ce39c22307100e3fb4a2c0b0a1d/yarl-1.22.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:5a3bf7f62a289fa90f1990422dc8dff5a458469ea71d1624585ec3a4c8d6960f", size = 356047, upload_time = "2025-10-06T14:11:05.115Z" }, - { url = "https://files.pythonhosted.org/packages/4b/b8/4c0e9e9f597074b208d18cef227d83aac36184bfbc6eab204ea55783dbc5/yarl-1.22.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:de6b9a04c606978fdfe72666fa216ffcf2d1a9f6a381058d4378f8d7b1e5de62", size = 342947, upload_time = "2025-10-06T14:11:08.137Z" }, - { url = "https://files.pythonhosted.org/packages/e0/e5/11f140a58bf4c6ad7aca69a892bff0ee638c31bea4206748fc0df4ebcb3a/yarl-1.22.0-cp313-cp313t-win32.whl", hash = "sha256:1834bb90991cc2999f10f97f5f01317f99b143284766d197e43cd5b45eb18d03", size = 86943, upload_time = "2025-10-06T14:11:10.284Z" }, - { url = "https://files.pythonhosted.org/packages/31/74/8b74bae38ed7fe6793d0c15a0c8207bbb819cf287788459e5ed230996cdd/yarl-1.22.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff86011bd159a9d2dfc89c34cfd8aff12875980e3bd6a39ff097887520e60249", size = 93715, upload_time = "2025-10-06T14:11:11.739Z" }, - { url = "https://files.pythonhosted.org/packages/69/66/991858aa4b5892d57aef7ee1ba6b4d01ec3b7eb3060795d34090a3ca3278/yarl-1.22.0-cp313-cp313t-win_arm64.whl", hash = "sha256:7861058d0582b847bc4e3a4a4c46828a410bca738673f35a29ba3ca5db0b473b", size = 83857, upload_time = "2025-10-06T14:11:13.586Z" }, - { url = "https://files.pythonhosted.org/packages/73/ae/b48f95715333080afb75a4504487cbe142cae1268afc482d06692d605ae6/yarl-1.22.0-py3-none-any.whl", hash = "sha256:1380560bdba02b6b6c90de54133c81c9f2a453dee9912fe58c1dcced1edb7cff", size = 46814, upload_time = "2025-10-06T14:12:53.872Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/57/63/0c6ebca57330cd313f6102b16dd57ffaf3ec4c83403dcb45dbd15c6f3ea1/yarl-1.22.0.tar.gz", hash = "sha256:bebf8557577d4401ba8bd9ff33906f1376c877aa78d1fe216ad01b4d6745af71", size = 187169, upload-time = "2025-10-06T14:12:55.963Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/43/a2204825342f37c337f5edb6637040fa14e365b2fcc2346960201d457579/yarl-1.22.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c7bd6683587567e5a49ee6e336e0612bec8329be1b7d4c8af5687dcdeb67ee1e", size = 140517, upload-time = "2025-10-06T14:08:42.494Z" }, + { url = "https://files.pythonhosted.org/packages/44/6f/674f3e6f02266428c56f704cd2501c22f78e8b2eeb23f153117cc86fb28a/yarl-1.22.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5cdac20da754f3a723cceea5b3448e1a2074866406adeb4ef35b469d089adb8f", size = 93495, upload-time = "2025-10-06T14:08:46.2Z" }, + { url = "https://files.pythonhosted.org/packages/b8/12/5b274d8a0f30c07b91b2f02cba69152600b47830fcfb465c108880fcee9c/yarl-1.22.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07a524d84df0c10f41e3ee918846e1974aba4ec017f990dc735aad487a0bdfdf", size = 94400, upload-time = "2025-10-06T14:08:47.855Z" }, + { url = "https://files.pythonhosted.org/packages/e2/7f/df1b6949b1fa1aa9ff6de6e2631876ad4b73c4437822026e85d8acb56bb1/yarl-1.22.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1b329cb8146d7b736677a2440e422eadd775d1806a81db2d4cded80a48efc1a", size = 347545, upload-time = "2025-10-06T14:08:49.683Z" }, + { url = "https://files.pythonhosted.org/packages/84/09/f92ed93bd6cd77872ab6c3462df45ca45cd058d8f1d0c9b4f54c1704429f/yarl-1.22.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:75976c6945d85dbb9ee6308cd7ff7b1fb9409380c82d6119bd778d8fcfe2931c", size = 319598, upload-time = "2025-10-06T14:08:51.215Z" }, + { url = "https://files.pythonhosted.org/packages/c3/97/ac3f3feae7d522cf7ccec3d340bb0b2b61c56cb9767923df62a135092c6b/yarl-1.22.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:80ddf7a5f8c86cb3eb4bc9028b07bbbf1f08a96c5c0bc1244be5e8fefcb94147", size = 363893, upload-time = "2025-10-06T14:08:53.144Z" }, + { url = "https://files.pythonhosted.org/packages/06/49/f3219097403b9c84a4d079b1d7bda62dd9b86d0d6e4428c02d46ab2c77fc/yarl-1.22.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d332fc2e3c94dad927f2112395772a4e4fedbcf8f80efc21ed7cdfae4d574fdb", size = 371240, upload-time = "2025-10-06T14:08:55.036Z" }, + { url = "https://files.pythonhosted.org/packages/35/9f/06b765d45c0e44e8ecf0fe15c9eacbbde342bb5b7561c46944f107bfb6c3/yarl-1.22.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0cf71bf877efeac18b38d3930594c0948c82b64547c1cf420ba48722fe5509f6", size = 346965, upload-time = "2025-10-06T14:08:56.722Z" }, + { url = "https://files.pythonhosted.org/packages/c5/69/599e7cea8d0fcb1694323b0db0dda317fa3162f7b90166faddecf532166f/yarl-1.22.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:663e1cadaddae26be034a6ab6072449a8426ddb03d500f43daf952b74553bba0", size = 342026, upload-time = "2025-10-06T14:08:58.563Z" }, + { url = "https://files.pythonhosted.org/packages/95/6f/9dfd12c8bc90fea9eab39832ee32ea48f8e53d1256252a77b710c065c89f/yarl-1.22.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:6dcbb0829c671f305be48a7227918cfcd11276c2d637a8033a99a02b67bf9eda", size = 335637, upload-time = "2025-10-06T14:09:00.506Z" }, + { url = "https://files.pythonhosted.org/packages/57/2e/34c5b4eb9b07e16e873db5b182c71e5f06f9b5af388cdaa97736d79dd9a6/yarl-1.22.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f0d97c18dfd9a9af4490631905a3f131a8e4c9e80a39353919e2cfed8f00aedc", size = 359082, upload-time = "2025-10-06T14:09:01.936Z" }, + { url = "https://files.pythonhosted.org/packages/31/71/fa7e10fb772d273aa1f096ecb8ab8594117822f683bab7d2c5a89914c92a/yarl-1.22.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:437840083abe022c978470b942ff832c3940b2ad3734d424b7eaffcd07f76737", size = 357811, upload-time = "2025-10-06T14:09:03.445Z" }, + { url = "https://files.pythonhosted.org/packages/26/da/11374c04e8e1184a6a03cf9c8f5688d3e5cec83ed6f31ad3481b3207f709/yarl-1.22.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a899cbd98dce6f5d8de1aad31cb712ec0a530abc0a86bd6edaa47c1090138467", size = 351223, upload-time = "2025-10-06T14:09:05.401Z" }, + { url = "https://files.pythonhosted.org/packages/82/8f/e2d01f161b0c034a30410e375e191a5d27608c1f8693bab1a08b089ca096/yarl-1.22.0-cp310-cp310-win32.whl", hash = "sha256:595697f68bd1f0c1c159fcb97b661fc9c3f5db46498043555d04805430e79bea", size = 82118, upload-time = "2025-10-06T14:09:11.148Z" }, + { url = "https://files.pythonhosted.org/packages/62/46/94c76196642dbeae634c7a61ba3da88cd77bed875bf6e4a8bed037505aa6/yarl-1.22.0-cp310-cp310-win_amd64.whl", hash = "sha256:cb95a9b1adaa48e41815a55ae740cfda005758104049a640a398120bf02515ca", size = 86852, upload-time = "2025-10-06T14:09:12.958Z" }, + { url = "https://files.pythonhosted.org/packages/af/af/7df4f179d3b1a6dcb9a4bd2ffbc67642746fcafdb62580e66876ce83fff4/yarl-1.22.0-cp310-cp310-win_arm64.whl", hash = "sha256:b85b982afde6df99ecc996990d4ad7ccbdbb70e2a4ba4de0aecde5922ba98a0b", size = 82012, upload-time = "2025-10-06T14:09:14.664Z" }, + { url = "https://files.pythonhosted.org/packages/4d/27/5ab13fc84c76a0250afd3d26d5936349a35be56ce5785447d6c423b26d92/yarl-1.22.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ab72135b1f2db3fed3997d7e7dc1b80573c67138023852b6efb336a5eae6511", size = 141607, upload-time = "2025-10-06T14:09:16.298Z" }, + { url = "https://files.pythonhosted.org/packages/6a/a1/d065d51d02dc02ce81501d476b9ed2229d9a990818332242a882d5d60340/yarl-1.22.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:669930400e375570189492dc8d8341301578e8493aec04aebc20d4717f899dd6", size = 94027, upload-time = "2025-10-06T14:09:17.786Z" }, + { url = "https://files.pythonhosted.org/packages/c1/da/8da9f6a53f67b5106ffe902c6fa0164e10398d4e150d85838b82f424072a/yarl-1.22.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:792a2af6d58177ef7c19cbf0097aba92ca1b9cb3ffdd9c7470e156c8f9b5e028", size = 94963, upload-time = "2025-10-06T14:09:19.662Z" }, + { url = "https://files.pythonhosted.org/packages/68/fe/2c1f674960c376e29cb0bec1249b117d11738db92a6ccc4a530b972648db/yarl-1.22.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ea66b1c11c9150f1372f69afb6b8116f2dd7286f38e14ea71a44eee9ec51b9d", size = 368406, upload-time = "2025-10-06T14:09:21.402Z" }, + { url = "https://files.pythonhosted.org/packages/95/26/812a540e1c3c6418fec60e9bbd38e871eaba9545e94fa5eff8f4a8e28e1e/yarl-1.22.0-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3e2daa88dc91870215961e96a039ec73e4937da13cf77ce17f9cad0c18df3503", size = 336581, upload-time = "2025-10-06T14:09:22.98Z" }, + { url = "https://files.pythonhosted.org/packages/0b/f5/5777b19e26fdf98563985e481f8be3d8a39f8734147a6ebf459d0dab5a6b/yarl-1.22.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ba440ae430c00eee41509353628600212112cd5018d5def7e9b05ea7ac34eb65", size = 388924, upload-time = "2025-10-06T14:09:24.655Z" }, + { url = "https://files.pythonhosted.org/packages/86/08/24bd2477bd59c0bbd994fe1d93b126e0472e4e3df5a96a277b0a55309e89/yarl-1.22.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e6438cc8f23a9c1478633d216b16104a586b9761db62bfacb6425bac0a36679e", size = 392890, upload-time = "2025-10-06T14:09:26.617Z" }, + { url = "https://files.pythonhosted.org/packages/46/00/71b90ed48e895667ecfb1eaab27c1523ee2fa217433ed77a73b13205ca4b/yarl-1.22.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c52a6e78aef5cf47a98ef8e934755abf53953379b7d53e68b15ff4420e6683d", size = 365819, upload-time = "2025-10-06T14:09:28.544Z" }, + { url = "https://files.pythonhosted.org/packages/30/2d/f715501cae832651d3282387c6a9236cd26bd00d0ff1e404b3dc52447884/yarl-1.22.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3b06bcadaac49c70f4c88af4ffcfbe3dc155aab3163e75777818092478bcbbe7", size = 363601, upload-time = "2025-10-06T14:09:30.568Z" }, + { url = "https://files.pythonhosted.org/packages/f8/f9/a678c992d78e394e7126ee0b0e4e71bd2775e4334d00a9278c06a6cce96a/yarl-1.22.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:6944b2dc72c4d7f7052683487e3677456050ff77fcf5e6204e98caf785ad1967", size = 358072, upload-time = "2025-10-06T14:09:32.528Z" }, + { url = "https://files.pythonhosted.org/packages/2c/d1/b49454411a60edb6fefdcad4f8e6dbba7d8019e3a508a1c5836cba6d0781/yarl-1.22.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d5372ca1df0f91a86b047d1277c2aaf1edb32d78bbcefffc81b40ffd18f027ed", size = 385311, upload-time = "2025-10-06T14:09:34.634Z" }, + { url = "https://files.pythonhosted.org/packages/87/e5/40d7a94debb8448c7771a916d1861d6609dddf7958dc381117e7ba36d9e8/yarl-1.22.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:51af598701f5299012b8416486b40fceef8c26fc87dc6d7d1f6fc30609ea0aa6", size = 381094, upload-time = "2025-10-06T14:09:36.268Z" }, + { url = "https://files.pythonhosted.org/packages/35/d8/611cc282502381ad855448643e1ad0538957fc82ae83dfe7762c14069e14/yarl-1.22.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b266bd01fedeffeeac01a79ae181719ff848a5a13ce10075adbefc8f1daee70e", size = 370944, upload-time = "2025-10-06T14:09:37.872Z" }, + { url = "https://files.pythonhosted.org/packages/2d/df/fadd00fb1c90e1a5a8bd731fa3d3de2e165e5a3666a095b04e31b04d9cb6/yarl-1.22.0-cp311-cp311-win32.whl", hash = "sha256:a9b1ba5610a4e20f655258d5a1fdc7ebe3d837bb0e45b581398b99eb98b1f5ca", size = 81804, upload-time = "2025-10-06T14:09:39.359Z" }, + { url = "https://files.pythonhosted.org/packages/b5/f7/149bb6f45f267cb5c074ac40c01c6b3ea6d8a620d34b337f6321928a1b4d/yarl-1.22.0-cp311-cp311-win_amd64.whl", hash = "sha256:078278b9b0b11568937d9509b589ee83ef98ed6d561dfe2020e24a9fd08eaa2b", size = 86858, upload-time = "2025-10-06T14:09:41.068Z" }, + { url = "https://files.pythonhosted.org/packages/2b/13/88b78b93ad3f2f0b78e13bfaaa24d11cbc746e93fe76d8c06bf139615646/yarl-1.22.0-cp311-cp311-win_arm64.whl", hash = "sha256:b6a6f620cfe13ccec221fa312139135166e47ae169f8253f72a0abc0dae94376", size = 81637, upload-time = "2025-10-06T14:09:42.712Z" }, + { url = "https://files.pythonhosted.org/packages/75/ff/46736024fee3429b80a165a732e38e5d5a238721e634ab41b040d49f8738/yarl-1.22.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e340382d1afa5d32b892b3ff062436d592ec3d692aeea3bef3a5cfe11bbf8c6f", size = 142000, upload-time = "2025-10-06T14:09:44.631Z" }, + { url = "https://files.pythonhosted.org/packages/5a/9a/b312ed670df903145598914770eb12de1bac44599549b3360acc96878df8/yarl-1.22.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f1e09112a2c31ffe8d80be1b0988fa6a18c5d5cad92a9ffbb1c04c91bfe52ad2", size = 94338, upload-time = "2025-10-06T14:09:46.372Z" }, + { url = "https://files.pythonhosted.org/packages/ba/f5/0601483296f09c3c65e303d60c070a5c19fcdbc72daa061e96170785bc7d/yarl-1.22.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:939fe60db294c786f6b7c2d2e121576628468f65453d86b0fe36cb52f987bd74", size = 94909, upload-time = "2025-10-06T14:09:48.648Z" }, + { url = "https://files.pythonhosted.org/packages/60/41/9a1fe0b73dbcefce72e46cf149b0e0a67612d60bfc90fb59c2b2efdfbd86/yarl-1.22.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1651bf8e0398574646744c1885a41198eba53dc8a9312b954073f845c90a8df", size = 372940, upload-time = "2025-10-06T14:09:50.089Z" }, + { url = "https://files.pythonhosted.org/packages/17/7a/795cb6dfee561961c30b800f0ed616b923a2ec6258b5def2a00bf8231334/yarl-1.22.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b8a0588521a26bf92a57a1705b77b8b59044cdceccac7151bd8d229e66b8dedb", size = 345825, upload-time = "2025-10-06T14:09:52.142Z" }, + { url = "https://files.pythonhosted.org/packages/d7/93/a58f4d596d2be2ae7bab1a5846c4d270b894958845753b2c606d666744d3/yarl-1.22.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:42188e6a615c1a75bcaa6e150c3fe8f3e8680471a6b10150c5f7e83f47cc34d2", size = 386705, upload-time = "2025-10-06T14:09:54.128Z" }, + { url = "https://files.pythonhosted.org/packages/61/92/682279d0e099d0e14d7fd2e176bd04f48de1484f56546a3e1313cd6c8e7c/yarl-1.22.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f6d2cb59377d99718913ad9a151030d6f83ef420a2b8f521d94609ecc106ee82", size = 396518, upload-time = "2025-10-06T14:09:55.762Z" }, + { url = "https://files.pythonhosted.org/packages/db/0f/0d52c98b8a885aeda831224b78f3be7ec2e1aa4a62091f9f9188c3c65b56/yarl-1.22.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50678a3b71c751d58d7908edc96d332af328839eea883bb554a43f539101277a", size = 377267, upload-time = "2025-10-06T14:09:57.958Z" }, + { url = "https://files.pythonhosted.org/packages/22/42/d2685e35908cbeaa6532c1fc73e89e7f2efb5d8a7df3959ea8e37177c5a3/yarl-1.22.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e8fbaa7cec507aa24ea27a01456e8dd4b6fab829059b69844bd348f2d467124", size = 365797, upload-time = "2025-10-06T14:09:59.527Z" }, + { url = "https://files.pythonhosted.org/packages/a2/83/cf8c7bcc6355631762f7d8bdab920ad09b82efa6b722999dfb05afa6cfac/yarl-1.22.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:433885ab5431bc3d3d4f2f9bd15bfa1614c522b0f1405d62c4f926ccd69d04fa", size = 365535, upload-time = "2025-10-06T14:10:01.139Z" }, + { url = "https://files.pythonhosted.org/packages/25/e1/5302ff9b28f0c59cac913b91fe3f16c59a033887e57ce9ca5d41a3a94737/yarl-1.22.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b790b39c7e9a4192dc2e201a282109ed2985a1ddbd5ac08dc56d0e121400a8f7", size = 382324, upload-time = "2025-10-06T14:10:02.756Z" }, + { url = "https://files.pythonhosted.org/packages/bf/cd/4617eb60f032f19ae3a688dc990d8f0d89ee0ea378b61cac81ede3e52fae/yarl-1.22.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:31f0b53913220599446872d757257be5898019c85e7971599065bc55065dc99d", size = 383803, upload-time = "2025-10-06T14:10:04.552Z" }, + { url = "https://files.pythonhosted.org/packages/59/65/afc6e62bb506a319ea67b694551dab4a7e6fb7bf604e9bd9f3e11d575fec/yarl-1.22.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a49370e8f711daec68d09b821a34e1167792ee2d24d405cbc2387be4f158b520", size = 374220, upload-time = "2025-10-06T14:10:06.489Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3d/68bf18d50dc674b942daec86a9ba922d3113d8399b0e52b9897530442da2/yarl-1.22.0-cp312-cp312-win32.whl", hash = "sha256:70dfd4f241c04bd9239d53b17f11e6ab672b9f1420364af63e8531198e3f5fe8", size = 81589, upload-time = "2025-10-06T14:10:09.254Z" }, + { url = "https://files.pythonhosted.org/packages/c8/9a/6ad1a9b37c2f72874f93e691b2e7ecb6137fb2b899983125db4204e47575/yarl-1.22.0-cp312-cp312-win_amd64.whl", hash = "sha256:8884d8b332a5e9b88e23f60bb166890009429391864c685e17bd73a9eda9105c", size = 87213, upload-time = "2025-10-06T14:10:11.369Z" }, + { url = "https://files.pythonhosted.org/packages/44/c5/c21b562d1680a77634d748e30c653c3ca918beb35555cff24986fff54598/yarl-1.22.0-cp312-cp312-win_arm64.whl", hash = "sha256:ea70f61a47f3cc93bdf8b2f368ed359ef02a01ca6393916bc8ff877427181e74", size = 81330, upload-time = "2025-10-06T14:10:13.112Z" }, + { url = "https://files.pythonhosted.org/packages/ea/f3/d67de7260456ee105dc1d162d43a019ecad6b91e2f51809d6cddaa56690e/yarl-1.22.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8dee9c25c74997f6a750cd317b8ca63545169c098faee42c84aa5e506c819b53", size = 139980, upload-time = "2025-10-06T14:10:14.601Z" }, + { url = "https://files.pythonhosted.org/packages/01/88/04d98af0b47e0ef42597b9b28863b9060bb515524da0a65d5f4db160b2d5/yarl-1.22.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01e73b85a5434f89fc4fe27dcda2aff08ddf35e4d47bbbea3bdcd25321af538a", size = 93424, upload-time = "2025-10-06T14:10:16.115Z" }, + { url = "https://files.pythonhosted.org/packages/18/91/3274b215fd8442a03975ce6bee5fe6aa57a8326b29b9d3d56234a1dca244/yarl-1.22.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:22965c2af250d20c873cdbee8ff958fb809940aeb2e74ba5f20aaf6b7ac8c70c", size = 93821, upload-time = "2025-10-06T14:10:17.993Z" }, + { url = "https://files.pythonhosted.org/packages/61/3a/caf4e25036db0f2da4ca22a353dfeb3c9d3c95d2761ebe9b14df8fc16eb0/yarl-1.22.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4f15793aa49793ec8d1c708ab7f9eded1aa72edc5174cae703651555ed1b601", size = 373243, upload-time = "2025-10-06T14:10:19.44Z" }, + { url = "https://files.pythonhosted.org/packages/6e/9e/51a77ac7516e8e7803b06e01f74e78649c24ee1021eca3d6a739cb6ea49c/yarl-1.22.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5542339dcf2747135c5c85f68680353d5cb9ffd741c0f2e8d832d054d41f35a", size = 342361, upload-time = "2025-10-06T14:10:21.124Z" }, + { url = "https://files.pythonhosted.org/packages/d4/f8/33b92454789dde8407f156c00303e9a891f1f51a0330b0fad7c909f87692/yarl-1.22.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5c401e05ad47a75869c3ab3e35137f8468b846770587e70d71e11de797d113df", size = 387036, upload-time = "2025-10-06T14:10:22.902Z" }, + { url = "https://files.pythonhosted.org/packages/d9/9a/c5db84ea024f76838220280f732970aa4ee154015d7f5c1bfb60a267af6f/yarl-1.22.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:243dda95d901c733f5b59214d28b0120893d91777cb8aa043e6ef059d3cddfe2", size = 397671, upload-time = "2025-10-06T14:10:24.523Z" }, + { url = "https://files.pythonhosted.org/packages/11/c9/cd8538dc2e7727095e0c1d867bad1e40c98f37763e6d995c1939f5fdc7b1/yarl-1.22.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bec03d0d388060058f5d291a813f21c011041938a441c593374da6077fe21b1b", size = 377059, upload-time = "2025-10-06T14:10:26.406Z" }, + { url = "https://files.pythonhosted.org/packages/a1/b9/ab437b261702ced75122ed78a876a6dec0a1b0f5e17a4ac7a9a2482d8abe/yarl-1.22.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0748275abb8c1e1e09301ee3cf90c8a99678a4e92e4373705f2a2570d581273", size = 365356, upload-time = "2025-10-06T14:10:28.461Z" }, + { url = "https://files.pythonhosted.org/packages/b2/9d/8e1ae6d1d008a9567877b08f0ce4077a29974c04c062dabdb923ed98e6fe/yarl-1.22.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:47fdb18187e2a4e18fda2c25c05d8251a9e4a521edaed757fef033e7d8498d9a", size = 361331, upload-time = "2025-10-06T14:10:30.541Z" }, + { url = "https://files.pythonhosted.org/packages/ca/5a/09b7be3905962f145b73beb468cdd53db8aa171cf18c80400a54c5b82846/yarl-1.22.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c7044802eec4524fde550afc28edda0dd5784c4c45f0be151a2d3ba017daca7d", size = 382590, upload-time = "2025-10-06T14:10:33.352Z" }, + { url = "https://files.pythonhosted.org/packages/aa/7f/59ec509abf90eda5048b0bc3e2d7b5099dffdb3e6b127019895ab9d5ef44/yarl-1.22.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:139718f35149ff544caba20fce6e8a2f71f1e39b92c700d8438a0b1d2a631a02", size = 385316, upload-time = "2025-10-06T14:10:35.034Z" }, + { url = "https://files.pythonhosted.org/packages/e5/84/891158426bc8036bfdfd862fabd0e0fa25df4176ec793e447f4b85cf1be4/yarl-1.22.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e1b51bebd221006d3d2f95fbe124b22b247136647ae5dcc8c7acafba66e5ee67", size = 374431, upload-time = "2025-10-06T14:10:37.76Z" }, + { url = "https://files.pythonhosted.org/packages/bb/49/03da1580665baa8bef5e8ed34c6df2c2aca0a2f28bf397ed238cc1bbc6f2/yarl-1.22.0-cp313-cp313-win32.whl", hash = "sha256:d3e32536234a95f513bd374e93d717cf6b2231a791758de6c509e3653f234c95", size = 81555, upload-time = "2025-10-06T14:10:39.649Z" }, + { url = "https://files.pythonhosted.org/packages/9a/ee/450914ae11b419eadd067c6183ae08381cfdfcb9798b90b2b713bbebddda/yarl-1.22.0-cp313-cp313-win_amd64.whl", hash = "sha256:47743b82b76d89a1d20b83e60d5c20314cbd5ba2befc9cda8f28300c4a08ed4d", size = 86965, upload-time = "2025-10-06T14:10:41.313Z" }, + { url = "https://files.pythonhosted.org/packages/98/4d/264a01eae03b6cf629ad69bae94e3b0e5344741e929073678e84bf7a3e3b/yarl-1.22.0-cp313-cp313-win_arm64.whl", hash = "sha256:5d0fcda9608875f7d052eff120c7a5da474a6796fe4d83e152e0e4d42f6d1a9b", size = 81205, upload-time = "2025-10-06T14:10:43.167Z" }, + { url = "https://files.pythonhosted.org/packages/88/fc/6908f062a2f77b5f9f6d69cecb1747260831ff206adcbc5b510aff88df91/yarl-1.22.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:719ae08b6972befcba4310e49edb1161a88cdd331e3a694b84466bd938a6ab10", size = 146209, upload-time = "2025-10-06T14:10:44.643Z" }, + { url = "https://files.pythonhosted.org/packages/65/47/76594ae8eab26210b4867be6f49129861ad33da1f1ebdf7051e98492bf62/yarl-1.22.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:47d8a5c446df1c4db9d21b49619ffdba90e77c89ec6e283f453856c74b50b9e3", size = 95966, upload-time = "2025-10-06T14:10:46.554Z" }, + { url = "https://files.pythonhosted.org/packages/ab/ce/05e9828a49271ba6b5b038b15b3934e996980dd78abdfeb52a04cfb9467e/yarl-1.22.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cfebc0ac8333520d2d0423cbbe43ae43c8838862ddb898f5ca68565e395516e9", size = 97312, upload-time = "2025-10-06T14:10:48.007Z" }, + { url = "https://files.pythonhosted.org/packages/d1/c5/7dffad5e4f2265b29c9d7ec869c369e4223166e4f9206fc2243ee9eea727/yarl-1.22.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4398557cbf484207df000309235979c79c4356518fd5c99158c7d38203c4da4f", size = 361967, upload-time = "2025-10-06T14:10:49.997Z" }, + { url = "https://files.pythonhosted.org/packages/50/b2/375b933c93a54bff7fc041e1a6ad2c0f6f733ffb0c6e642ce56ee3b39970/yarl-1.22.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2ca6fd72a8cd803be290d42f2dec5cdcd5299eeb93c2d929bf060ad9efaf5de0", size = 323949, upload-time = "2025-10-06T14:10:52.004Z" }, + { url = "https://files.pythonhosted.org/packages/66/50/bfc2a29a1d78644c5a7220ce2f304f38248dc94124a326794e677634b6cf/yarl-1.22.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca1f59c4e1ab6e72f0a23c13fca5430f889634166be85dbf1013683e49e3278e", size = 361818, upload-time = "2025-10-06T14:10:54.078Z" }, + { url = "https://files.pythonhosted.org/packages/46/96/f3941a46af7d5d0f0498f86d71275696800ddcdd20426298e572b19b91ff/yarl-1.22.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c5010a52015e7c70f86eb967db0f37f3c8bd503a695a49f8d45700144667708", size = 372626, upload-time = "2025-10-06T14:10:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/c1/42/8b27c83bb875cd89448e42cd627e0fb971fa1675c9ec546393d18826cb50/yarl-1.22.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d7672ecf7557476642c88497c2f8d8542f8e36596e928e9bcba0e42e1e7d71f", size = 341129, upload-time = "2025-10-06T14:10:57.985Z" }, + { url = "https://files.pythonhosted.org/packages/49/36/99ca3122201b382a3cf7cc937b95235b0ac944f7e9f2d5331d50821ed352/yarl-1.22.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3b7c88eeef021579d600e50363e0b6ee4f7f6f728cd3486b9d0f3ee7b946398d", size = 346776, upload-time = "2025-10-06T14:10:59.633Z" }, + { url = "https://files.pythonhosted.org/packages/85/b4/47328bf996acd01a4c16ef9dcd2f59c969f495073616586f78cd5f2efb99/yarl-1.22.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:f4afb5c34f2c6fecdcc182dfcfc6af6cccf1aa923eed4d6a12e9d96904e1a0d8", size = 334879, upload-time = "2025-10-06T14:11:01.454Z" }, + { url = "https://files.pythonhosted.org/packages/c2/ad/b77d7b3f14a4283bffb8e92c6026496f6de49751c2f97d4352242bba3990/yarl-1.22.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:59c189e3e99a59cf8d83cbb31d4db02d66cda5a1a4374e8a012b51255341abf5", size = 350996, upload-time = "2025-10-06T14:11:03.452Z" }, + { url = "https://files.pythonhosted.org/packages/81/c8/06e1d69295792ba54d556f06686cbd6a7ce39c22307100e3fb4a2c0b0a1d/yarl-1.22.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:5a3bf7f62a289fa90f1990422dc8dff5a458469ea71d1624585ec3a4c8d6960f", size = 356047, upload-time = "2025-10-06T14:11:05.115Z" }, + { url = "https://files.pythonhosted.org/packages/4b/b8/4c0e9e9f597074b208d18cef227d83aac36184bfbc6eab204ea55783dbc5/yarl-1.22.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:de6b9a04c606978fdfe72666fa216ffcf2d1a9f6a381058d4378f8d7b1e5de62", size = 342947, upload-time = "2025-10-06T14:11:08.137Z" }, + { url = "https://files.pythonhosted.org/packages/e0/e5/11f140a58bf4c6ad7aca69a892bff0ee638c31bea4206748fc0df4ebcb3a/yarl-1.22.0-cp313-cp313t-win32.whl", hash = "sha256:1834bb90991cc2999f10f97f5f01317f99b143284766d197e43cd5b45eb18d03", size = 86943, upload-time = "2025-10-06T14:11:10.284Z" }, + { url = "https://files.pythonhosted.org/packages/31/74/8b74bae38ed7fe6793d0c15a0c8207bbb819cf287788459e5ed230996cdd/yarl-1.22.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff86011bd159a9d2dfc89c34cfd8aff12875980e3bd6a39ff097887520e60249", size = 93715, upload-time = "2025-10-06T14:11:11.739Z" }, + { url = "https://files.pythonhosted.org/packages/69/66/991858aa4b5892d57aef7ee1ba6b4d01ec3b7eb3060795d34090a3ca3278/yarl-1.22.0-cp313-cp313t-win_arm64.whl", hash = "sha256:7861058d0582b847bc4e3a4a4c46828a410bca738673f35a29ba3ca5db0b473b", size = 83857, upload-time = "2025-10-06T14:11:13.586Z" }, + { url = "https://files.pythonhosted.org/packages/73/ae/b48f95715333080afb75a4504487cbe142cae1268afc482d06692d605ae6/yarl-1.22.0-py3-none-any.whl", hash = "sha256:1380560bdba02b6b6c90de54133c81c9f2a453dee9912fe58c1dcced1edb7cff", size = 46814, upload-time = "2025-10-06T14:12:53.872Z" }, ] [[package]] name = "zipp" version = "3.23.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload_time = "2025-06-08T17:06:39.4Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload_time = "2025-06-08T17:06:38.034Z" }, + { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" }, ] [[package]] name = "zstandard" version = "0.25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fd/aa/3e0508d5a5dd96529cdc5a97011299056e14c6505b678fd58938792794b1/zstandard-0.25.0.tar.gz", hash = "sha256:7713e1179d162cf5c7906da876ec2ccb9c3a9dcbdffef0cc7f70c3667a205f0b", size = 711513, upload_time = "2025-09-14T22:15:54.002Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/56/7a/28efd1d371f1acd037ac64ed1c5e2b41514a6cc937dd6ab6a13ab9f0702f/zstandard-0.25.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e59fdc271772f6686e01e1b3b74537259800f57e24280be3f29c8a0deb1904dd", size = 795256, upload_time = "2025-09-14T22:15:56.415Z" }, - { url = "https://files.pythonhosted.org/packages/96/34/ef34ef77f1ee38fc8e4f9775217a613b452916e633c4f1d98f31db52c4a5/zstandard-0.25.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4d441506e9b372386a5271c64125f72d5df6d2a8e8a2a45a0ae09b03cb781ef7", size = 640565, upload_time = "2025-09-14T22:15:58.177Z" }, - { url = "https://files.pythonhosted.org/packages/9d/1b/4fdb2c12eb58f31f28c4d28e8dc36611dd7205df8452e63f52fb6261d13e/zstandard-0.25.0-cp310-cp310-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:ab85470ab54c2cb96e176f40342d9ed41e58ca5733be6a893b730e7af9c40550", size = 5345306, upload_time = "2025-09-14T22:16:00.165Z" }, - { url = "https://files.pythonhosted.org/packages/73/28/a44bdece01bca027b079f0e00be3b6bd89a4df180071da59a3dd7381665b/zstandard-0.25.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e05ab82ea7753354bb054b92e2f288afb750e6b439ff6ca78af52939ebbc476d", size = 5055561, upload_time = "2025-09-14T22:16:02.22Z" }, - { url = "https://files.pythonhosted.org/packages/e9/74/68341185a4f32b274e0fc3410d5ad0750497e1acc20bd0f5b5f64ce17785/zstandard-0.25.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:78228d8a6a1c177a96b94f7e2e8d012c55f9c760761980da16ae7546a15a8e9b", size = 5402214, upload_time = "2025-09-14T22:16:04.109Z" }, - { url = "https://files.pythonhosted.org/packages/8b/67/f92e64e748fd6aaffe01e2b75a083c0c4fd27abe1c8747fee4555fcee7dd/zstandard-0.25.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:2b6bd67528ee8b5c5f10255735abc21aa106931f0dbaf297c7be0c886353c3d0", size = 5449703, upload_time = "2025-09-14T22:16:06.312Z" }, - { url = "https://files.pythonhosted.org/packages/fd/e5/6d36f92a197c3c17729a2125e29c169f460538a7d939a27eaaa6dcfcba8e/zstandard-0.25.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4b6d83057e713ff235a12e73916b6d356e3084fd3d14ced499d84240f3eecee0", size = 5556583, upload_time = "2025-09-14T22:16:08.457Z" }, - { url = "https://files.pythonhosted.org/packages/d7/83/41939e60d8d7ebfe2b747be022d0806953799140a702b90ffe214d557638/zstandard-0.25.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9174f4ed06f790a6869b41cba05b43eeb9a35f8993c4422ab853b705e8112bbd", size = 5045332, upload_time = "2025-09-14T22:16:10.444Z" }, - { url = "https://files.pythonhosted.org/packages/b3/87/d3ee185e3d1aa0133399893697ae91f221fda79deb61adbe998a7235c43f/zstandard-0.25.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:25f8f3cd45087d089aef5ba3848cd9efe3ad41163d3400862fb42f81a3a46701", size = 5572283, upload_time = "2025-09-14T22:16:12.128Z" }, - { url = "https://files.pythonhosted.org/packages/0a/1d/58635ae6104df96671076ac7d4ae7816838ce7debd94aecf83e30b7121b0/zstandard-0.25.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3756b3e9da9b83da1796f8809dd57cb024f838b9eeafde28f3cb472012797ac1", size = 4959754, upload_time = "2025-09-14T22:16:14.225Z" }, - { url = "https://files.pythonhosted.org/packages/75/d6/57e9cb0a9983e9a229dd8fd2e6e96593ef2aa82a3907188436f22b111ccd/zstandard-0.25.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:81dad8d145d8fd981b2962b686b2241d3a1ea07733e76a2f15435dfb7fb60150", size = 5266477, upload_time = "2025-09-14T22:16:16.343Z" }, - { url = "https://files.pythonhosted.org/packages/d1/a9/ee891e5edf33a6ebce0a028726f0bbd8567effe20fe3d5808c42323e8542/zstandard-0.25.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a5a419712cf88862a45a23def0ae063686db3d324cec7edbe40509d1a79a0aab", size = 5440914, upload_time = "2025-09-14T22:16:18.453Z" }, - { url = "https://files.pythonhosted.org/packages/58/08/a8522c28c08031a9521f27abc6f78dbdee7312a7463dd2cfc658b813323b/zstandard-0.25.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e7360eae90809efd19b886e59a09dad07da4ca9ba096752e61a2e03c8aca188e", size = 5819847, upload_time = "2025-09-14T22:16:20.559Z" }, - { url = "https://files.pythonhosted.org/packages/6f/11/4c91411805c3f7b6f31c60e78ce347ca48f6f16d552fc659af6ec3b73202/zstandard-0.25.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:75ffc32a569fb049499e63ce68c743155477610532da1eb38e7f24bf7cd29e74", size = 5363131, upload_time = "2025-09-14T22:16:22.206Z" }, - { url = "https://files.pythonhosted.org/packages/ef/d6/8c4bd38a3b24c4c7676a7a3d8de85d6ee7a983602a734b9f9cdefb04a5d6/zstandard-0.25.0-cp310-cp310-win32.whl", hash = "sha256:106281ae350e494f4ac8a80470e66d1fe27e497052c8d9c3b95dc4cf1ade81aa", size = 436469, upload_time = "2025-09-14T22:16:25.002Z" }, - { url = "https://files.pythonhosted.org/packages/93/90/96d50ad417a8ace5f841b3228e93d1bb13e6ad356737f42e2dde30d8bd68/zstandard-0.25.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea9d54cc3d8064260114a0bbf3479fc4a98b21dffc89b3459edd506b69262f6e", size = 506100, upload_time = "2025-09-14T22:16:23.569Z" }, - { url = "https://files.pythonhosted.org/packages/2a/83/c3ca27c363d104980f1c9cee1101cc8ba724ac8c28a033ede6aab89585b1/zstandard-0.25.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:933b65d7680ea337180733cf9e87293cc5500cc0eb3fc8769f4d3c88d724ec5c", size = 795254, upload_time = "2025-09-14T22:16:26.137Z" }, - { url = "https://files.pythonhosted.org/packages/ac/4d/e66465c5411a7cf4866aeadc7d108081d8ceba9bc7abe6b14aa21c671ec3/zstandard-0.25.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3f79487c687b1fc69f19e487cd949bf3aae653d181dfb5fde3bf6d18894706f", size = 640559, upload_time = "2025-09-14T22:16:27.973Z" }, - { url = "https://files.pythonhosted.org/packages/12/56/354fe655905f290d3b147b33fe946b0f27e791e4b50a5f004c802cb3eb7b/zstandard-0.25.0-cp311-cp311-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:0bbc9a0c65ce0eea3c34a691e3c4b6889f5f3909ba4822ab385fab9057099431", size = 5348020, upload_time = "2025-09-14T22:16:29.523Z" }, - { url = "https://files.pythonhosted.org/packages/3b/13/2b7ed68bd85e69a2069bcc72141d378f22cae5a0f3b353a2c8f50ef30c1b/zstandard-0.25.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:01582723b3ccd6939ab7b3a78622c573799d5d8737b534b86d0e06ac18dbde4a", size = 5058126, upload_time = "2025-09-14T22:16:31.811Z" }, - { url = "https://files.pythonhosted.org/packages/c9/dd/fdaf0674f4b10d92cb120ccff58bbb6626bf8368f00ebfd2a41ba4a0dc99/zstandard-0.25.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5f1ad7bf88535edcf30038f6919abe087f606f62c00a87d7e33e7fc57cb69fcc", size = 5405390, upload_time = "2025-09-14T22:16:33.486Z" }, - { url = "https://files.pythonhosted.org/packages/0f/67/354d1555575bc2490435f90d67ca4dd65238ff2f119f30f72d5cde09c2ad/zstandard-0.25.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:06acb75eebeedb77b69048031282737717a63e71e4ae3f77cc0c3b9508320df6", size = 5452914, upload_time = "2025-09-14T22:16:35.277Z" }, - { url = "https://files.pythonhosted.org/packages/bb/1f/e9cfd801a3f9190bf3e759c422bbfd2247db9d7f3d54a56ecde70137791a/zstandard-0.25.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9300d02ea7c6506f00e627e287e0492a5eb0371ec1670ae852fefffa6164b072", size = 5559635, upload_time = "2025-09-14T22:16:37.141Z" }, - { url = "https://files.pythonhosted.org/packages/21/88/5ba550f797ca953a52d708c8e4f380959e7e3280af029e38fbf47b55916e/zstandard-0.25.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfd06b1c5584b657a2892a6014c2f4c20e0db0208c159148fa78c65f7e0b0277", size = 5048277, upload_time = "2025-09-14T22:16:38.807Z" }, - { url = "https://files.pythonhosted.org/packages/46/c0/ca3e533b4fa03112facbe7fbe7779cb1ebec215688e5df576fe5429172e0/zstandard-0.25.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f373da2c1757bb7f1acaf09369cdc1d51d84131e50d5fa9863982fd626466313", size = 5574377, upload_time = "2025-09-14T22:16:40.523Z" }, - { url = "https://files.pythonhosted.org/packages/12/9b/3fb626390113f272abd0799fd677ea33d5fc3ec185e62e6be534493c4b60/zstandard-0.25.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6c0e5a65158a7946e7a7affa6418878ef97ab66636f13353b8502d7ea03c8097", size = 4961493, upload_time = "2025-09-14T22:16:43.3Z" }, - { url = "https://files.pythonhosted.org/packages/cb/d3/23094a6b6a4b1343b27ae68249daa17ae0651fcfec9ed4de09d14b940285/zstandard-0.25.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c8e167d5adf59476fa3e37bee730890e389410c354771a62e3c076c86f9f7778", size = 5269018, upload_time = "2025-09-14T22:16:45.292Z" }, - { url = "https://files.pythonhosted.org/packages/8c/a7/bb5a0c1c0f3f4b5e9d5b55198e39de91e04ba7c205cc46fcb0f95f0383c1/zstandard-0.25.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:98750a309eb2f020da61e727de7d7ba3c57c97cf6213f6f6277bb7fb42a8e065", size = 5443672, upload_time = "2025-09-14T22:16:47.076Z" }, - { url = "https://files.pythonhosted.org/packages/27/22/503347aa08d073993f25109c36c8d9f029c7d5949198050962cb568dfa5e/zstandard-0.25.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:22a086cff1b6ceca18a8dd6096ec631e430e93a8e70a9ca5efa7561a00f826fa", size = 5822753, upload_time = "2025-09-14T22:16:49.316Z" }, - { url = "https://files.pythonhosted.org/packages/e2/be/94267dc6ee64f0f8ba2b2ae7c7a2df934a816baaa7291db9e1aa77394c3c/zstandard-0.25.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:72d35d7aa0bba323965da807a462b0966c91608ef3a48ba761678cb20ce5d8b7", size = 5366047, upload_time = "2025-09-14T22:16:51.328Z" }, - { url = "https://files.pythonhosted.org/packages/7b/a3/732893eab0a3a7aecff8b99052fecf9f605cf0fb5fb6d0290e36beee47a4/zstandard-0.25.0-cp311-cp311-win32.whl", hash = "sha256:f5aeea11ded7320a84dcdd62a3d95b5186834224a9e55b92ccae35d21a8b63d4", size = 436484, upload_time = "2025-09-14T22:16:55.005Z" }, - { url = "https://files.pythonhosted.org/packages/43/a3/c6155f5c1cce691cb80dfd38627046e50af3ee9ddc5d0b45b9b063bfb8c9/zstandard-0.25.0-cp311-cp311-win_amd64.whl", hash = "sha256:daab68faadb847063d0c56f361a289c4f268706b598afbf9ad113cbe5c38b6b2", size = 506183, upload_time = "2025-09-14T22:16:52.753Z" }, - { url = "https://files.pythonhosted.org/packages/8c/3e/8945ab86a0820cc0e0cdbf38086a92868a9172020fdab8a03ac19662b0e5/zstandard-0.25.0-cp311-cp311-win_arm64.whl", hash = "sha256:22a06c5df3751bb7dc67406f5374734ccee8ed37fc5981bf1ad7041831fa1137", size = 462533, upload_time = "2025-09-14T22:16:53.878Z" }, - { url = "https://files.pythonhosted.org/packages/82/fc/f26eb6ef91ae723a03e16eddb198abcfce2bc5a42e224d44cc8b6765e57e/zstandard-0.25.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7b3c3a3ab9daa3eed242d6ecceead93aebbb8f5f84318d82cee643e019c4b73b", size = 795738, upload_time = "2025-09-14T22:16:56.237Z" }, - { url = "https://files.pythonhosted.org/packages/aa/1c/d920d64b22f8dd028a8b90e2d756e431a5d86194caa78e3819c7bf53b4b3/zstandard-0.25.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:913cbd31a400febff93b564a23e17c3ed2d56c064006f54efec210d586171c00", size = 640436, upload_time = "2025-09-14T22:16:57.774Z" }, - { url = "https://files.pythonhosted.org/packages/53/6c/288c3f0bd9fcfe9ca41e2c2fbfd17b2097f6af57b62a81161941f09afa76/zstandard-0.25.0-cp312-cp312-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:011d388c76b11a0c165374ce660ce2c8efa8e5d87f34996aa80f9c0816698b64", size = 5343019, upload_time = "2025-09-14T22:16:59.302Z" }, - { url = "https://files.pythonhosted.org/packages/1e/15/efef5a2f204a64bdb5571e6161d49f7ef0fffdbca953a615efbec045f60f/zstandard-0.25.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6dffecc361d079bb48d7caef5d673c88c8988d3d33fb74ab95b7ee6da42652ea", size = 5063012, upload_time = "2025-09-14T22:17:01.156Z" }, - { url = "https://files.pythonhosted.org/packages/b7/37/a6ce629ffdb43959e92e87ebdaeebb5ac81c944b6a75c9c47e300f85abdf/zstandard-0.25.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:7149623bba7fdf7e7f24312953bcf73cae103db8cae49f8154dd1eadc8a29ecb", size = 5394148, upload_time = "2025-09-14T22:17:03.091Z" }, - { url = "https://files.pythonhosted.org/packages/e3/79/2bf870b3abeb5c070fe2d670a5a8d1057a8270f125ef7676d29ea900f496/zstandard-0.25.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:6a573a35693e03cf1d67799fd01b50ff578515a8aeadd4595d2a7fa9f3ec002a", size = 5451652, upload_time = "2025-09-14T22:17:04.979Z" }, - { url = "https://files.pythonhosted.org/packages/53/60/7be26e610767316c028a2cbedb9a3beabdbe33e2182c373f71a1c0b88f36/zstandard-0.25.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5a56ba0db2d244117ed744dfa8f6f5b366e14148e00de44723413b2f3938a902", size = 5546993, upload_time = "2025-09-14T22:17:06.781Z" }, - { url = "https://files.pythonhosted.org/packages/85/c7/3483ad9ff0662623f3648479b0380d2de5510abf00990468c286c6b04017/zstandard-0.25.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:10ef2a79ab8e2974e2075fb984e5b9806c64134810fac21576f0668e7ea19f8f", size = 5046806, upload_time = "2025-09-14T22:17:08.415Z" }, - { url = "https://files.pythonhosted.org/packages/08/b3/206883dd25b8d1591a1caa44b54c2aad84badccf2f1de9e2d60a446f9a25/zstandard-0.25.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aaf21ba8fb76d102b696781bddaa0954b782536446083ae3fdaa6f16b25a1c4b", size = 5576659, upload_time = "2025-09-14T22:17:10.164Z" }, - { url = "https://files.pythonhosted.org/packages/9d/31/76c0779101453e6c117b0ff22565865c54f48f8bd807df2b00c2c404b8e0/zstandard-0.25.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1869da9571d5e94a85a5e8d57e4e8807b175c9e4a6294e3b66fa4efb074d90f6", size = 4953933, upload_time = "2025-09-14T22:17:11.857Z" }, - { url = "https://files.pythonhosted.org/packages/18/e1/97680c664a1bf9a247a280a053d98e251424af51f1b196c6d52f117c9720/zstandard-0.25.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:809c5bcb2c67cd0ed81e9229d227d4ca28f82d0f778fc5fea624a9def3963f91", size = 5268008, upload_time = "2025-09-14T22:17:13.627Z" }, - { url = "https://files.pythonhosted.org/packages/1e/73/316e4010de585ac798e154e88fd81bb16afc5c5cb1a72eeb16dd37e8024a/zstandard-0.25.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f27662e4f7dbf9f9c12391cb37b4c4c3cb90ffbd3b1fb9284dadbbb8935fa708", size = 5433517, upload_time = "2025-09-14T22:17:16.103Z" }, - { url = "https://files.pythonhosted.org/packages/5b/60/dd0f8cfa8129c5a0ce3ea6b7f70be5b33d2618013a161e1ff26c2b39787c/zstandard-0.25.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:99c0c846e6e61718715a3c9437ccc625de26593fea60189567f0118dc9db7512", size = 5814292, upload_time = "2025-09-14T22:17:17.827Z" }, - { url = "https://files.pythonhosted.org/packages/fc/5f/75aafd4b9d11b5407b641b8e41a57864097663699f23e9ad4dbb91dc6bfe/zstandard-0.25.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:474d2596a2dbc241a556e965fb76002c1ce655445e4e3bf38e5477d413165ffa", size = 5360237, upload_time = "2025-09-14T22:17:19.954Z" }, - { url = "https://files.pythonhosted.org/packages/ff/8d/0309daffea4fcac7981021dbf21cdb2e3427a9e76bafbcdbdf5392ff99a4/zstandard-0.25.0-cp312-cp312-win32.whl", hash = "sha256:23ebc8f17a03133b4426bcc04aabd68f8236eb78c3760f12783385171b0fd8bd", size = 436922, upload_time = "2025-09-14T22:17:24.398Z" }, - { url = "https://files.pythonhosted.org/packages/79/3b/fa54d9015f945330510cb5d0b0501e8253c127cca7ebe8ba46a965df18c5/zstandard-0.25.0-cp312-cp312-win_amd64.whl", hash = "sha256:ffef5a74088f1e09947aecf91011136665152e0b4b359c42be3373897fb39b01", size = 506276, upload_time = "2025-09-14T22:17:21.429Z" }, - { url = "https://files.pythonhosted.org/packages/ea/6b/8b51697e5319b1f9ac71087b0af9a40d8a6288ff8025c36486e0c12abcc4/zstandard-0.25.0-cp312-cp312-win_arm64.whl", hash = "sha256:181eb40e0b6a29b3cd2849f825e0fa34397f649170673d385f3598ae17cca2e9", size = 462679, upload_time = "2025-09-14T22:17:23.147Z" }, - { url = "https://files.pythonhosted.org/packages/35/0b/8df9c4ad06af91d39e94fa96cc010a24ac4ef1378d3efab9223cc8593d40/zstandard-0.25.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec996f12524f88e151c339688c3897194821d7f03081ab35d31d1e12ec975e94", size = 795735, upload_time = "2025-09-14T22:17:26.042Z" }, - { url = "https://files.pythonhosted.org/packages/3f/06/9ae96a3e5dcfd119377ba33d4c42a7d89da1efabd5cb3e366b156c45ff4d/zstandard-0.25.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a1a4ae2dec3993a32247995bdfe367fc3266da832d82f8438c8570f989753de1", size = 640440, upload_time = "2025-09-14T22:17:27.366Z" }, - { url = "https://files.pythonhosted.org/packages/d9/14/933d27204c2bd404229c69f445862454dcc101cd69ef8c6068f15aaec12c/zstandard-0.25.0-cp313-cp313-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:e96594a5537722fdfb79951672a2a63aec5ebfb823e7560586f7484819f2a08f", size = 5343070, upload_time = "2025-09-14T22:17:28.896Z" }, - { url = "https://files.pythonhosted.org/packages/6d/db/ddb11011826ed7db9d0e485d13df79b58586bfdec56e5c84a928a9a78c1c/zstandard-0.25.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bfc4e20784722098822e3eee42b8e576b379ed72cca4a7cb856ae733e62192ea", size = 5063001, upload_time = "2025-09-14T22:17:31.044Z" }, - { url = "https://files.pythonhosted.org/packages/db/00/87466ea3f99599d02a5238498b87bf84a6348290c19571051839ca943777/zstandard-0.25.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:457ed498fc58cdc12fc48f7950e02740d4f7ae9493dd4ab2168a47c93c31298e", size = 5394120, upload_time = "2025-09-14T22:17:32.711Z" }, - { url = "https://files.pythonhosted.org/packages/2b/95/fc5531d9c618a679a20ff6c29e2b3ef1d1f4ad66c5e161ae6ff847d102a9/zstandard-0.25.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:fd7a5004eb1980d3cefe26b2685bcb0b17989901a70a1040d1ac86f1d898c551", size = 5451230, upload_time = "2025-09-14T22:17:34.41Z" }, - { url = "https://files.pythonhosted.org/packages/63/4b/e3678b4e776db00f9f7b2fe58e547e8928ef32727d7a1ff01dea010f3f13/zstandard-0.25.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8e735494da3db08694d26480f1493ad2cf86e99bdd53e8e9771b2752a5c0246a", size = 5547173, upload_time = "2025-09-14T22:17:36.084Z" }, - { url = "https://files.pythonhosted.org/packages/4e/d5/ba05ed95c6b8ec30bd468dfeab20589f2cf709b5c940483e31d991f2ca58/zstandard-0.25.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3a39c94ad7866160a4a46d772e43311a743c316942037671beb264e395bdd611", size = 5046736, upload_time = "2025-09-14T22:17:37.891Z" }, - { url = "https://files.pythonhosted.org/packages/50/d5/870aa06b3a76c73eced65c044b92286a3c4e00554005ff51962deef28e28/zstandard-0.25.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:172de1f06947577d3a3005416977cce6168f2261284c02080e7ad0185faeced3", size = 5576368, upload_time = "2025-09-14T22:17:40.206Z" }, - { url = "https://files.pythonhosted.org/packages/5d/35/398dc2ffc89d304d59bc12f0fdd931b4ce455bddf7038a0a67733a25f550/zstandard-0.25.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3c83b0188c852a47cd13ef3bf9209fb0a77fa5374958b8c53aaa699398c6bd7b", size = 4954022, upload_time = "2025-09-14T22:17:41.879Z" }, - { url = "https://files.pythonhosted.org/packages/9a/5c/36ba1e5507d56d2213202ec2b05e8541734af5f2ce378c5d1ceaf4d88dc4/zstandard-0.25.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1673b7199bbe763365b81a4f3252b8e80f44c9e323fc42940dc8843bfeaf9851", size = 5267889, upload_time = "2025-09-14T22:17:43.577Z" }, - { url = "https://files.pythonhosted.org/packages/70/e8/2ec6b6fb7358b2ec0113ae202647ca7c0e9d15b61c005ae5225ad0995df5/zstandard-0.25.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:0be7622c37c183406f3dbf0cba104118eb16a4ea7359eeb5752f0794882fc250", size = 5433952, upload_time = "2025-09-14T22:17:45.271Z" }, - { url = "https://files.pythonhosted.org/packages/7b/01/b5f4d4dbc59ef193e870495c6f1275f5b2928e01ff5a81fecb22a06e22fb/zstandard-0.25.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:5f5e4c2a23ca271c218ac025bd7d635597048b366d6f31f420aaeb715239fc98", size = 5814054, upload_time = "2025-09-14T22:17:47.08Z" }, - { url = "https://files.pythonhosted.org/packages/b2/e5/fbd822d5c6f427cf158316d012c5a12f233473c2f9c5fe5ab1ae5d21f3d8/zstandard-0.25.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f187a0bb61b35119d1926aee039524d1f93aaf38a9916b8c4b78ac8514a0aaf", size = 5360113, upload_time = "2025-09-14T22:17:48.893Z" }, - { url = "https://files.pythonhosted.org/packages/8e/e0/69a553d2047f9a2c7347caa225bb3a63b6d7704ad74610cb7823baa08ed7/zstandard-0.25.0-cp313-cp313-win32.whl", hash = "sha256:7030defa83eef3e51ff26f0b7bfb229f0204b66fe18e04359ce3474ac33cbc09", size = 436936, upload_time = "2025-09-14T22:17:52.658Z" }, - { url = "https://files.pythonhosted.org/packages/d9/82/b9c06c870f3bd8767c201f1edbdf9e8dc34be5b0fbc5682c4f80fe948475/zstandard-0.25.0-cp313-cp313-win_amd64.whl", hash = "sha256:1f830a0dac88719af0ae43b8b2d6aef487d437036468ef3c2ea59c51f9d55fd5", size = 506232, upload_time = "2025-09-14T22:17:50.402Z" }, - { url = "https://files.pythonhosted.org/packages/d4/57/60c3c01243bb81d381c9916e2a6d9e149ab8627c0c7d7abb2d73384b3c0c/zstandard-0.25.0-cp313-cp313-win_arm64.whl", hash = "sha256:85304a43f4d513f5464ceb938aa02c1e78c2943b29f44a750b48b25ac999a049", size = 462671, upload_time = "2025-09-14T22:17:51.533Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/fd/aa/3e0508d5a5dd96529cdc5a97011299056e14c6505b678fd58938792794b1/zstandard-0.25.0.tar.gz", hash = "sha256:7713e1179d162cf5c7906da876ec2ccb9c3a9dcbdffef0cc7f70c3667a205f0b", size = 711513, upload-time = "2025-09-14T22:15:54.002Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/7a/28efd1d371f1acd037ac64ed1c5e2b41514a6cc937dd6ab6a13ab9f0702f/zstandard-0.25.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e59fdc271772f6686e01e1b3b74537259800f57e24280be3f29c8a0deb1904dd", size = 795256, upload-time = "2025-09-14T22:15:56.415Z" }, + { url = "https://files.pythonhosted.org/packages/96/34/ef34ef77f1ee38fc8e4f9775217a613b452916e633c4f1d98f31db52c4a5/zstandard-0.25.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4d441506e9b372386a5271c64125f72d5df6d2a8e8a2a45a0ae09b03cb781ef7", size = 640565, upload-time = "2025-09-14T22:15:58.177Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1b/4fdb2c12eb58f31f28c4d28e8dc36611dd7205df8452e63f52fb6261d13e/zstandard-0.25.0-cp310-cp310-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:ab85470ab54c2cb96e176f40342d9ed41e58ca5733be6a893b730e7af9c40550", size = 5345306, upload-time = "2025-09-14T22:16:00.165Z" }, + { url = "https://files.pythonhosted.org/packages/73/28/a44bdece01bca027b079f0e00be3b6bd89a4df180071da59a3dd7381665b/zstandard-0.25.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e05ab82ea7753354bb054b92e2f288afb750e6b439ff6ca78af52939ebbc476d", size = 5055561, upload-time = "2025-09-14T22:16:02.22Z" }, + { url = "https://files.pythonhosted.org/packages/e9/74/68341185a4f32b274e0fc3410d5ad0750497e1acc20bd0f5b5f64ce17785/zstandard-0.25.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:78228d8a6a1c177a96b94f7e2e8d012c55f9c760761980da16ae7546a15a8e9b", size = 5402214, upload-time = "2025-09-14T22:16:04.109Z" }, + { url = "https://files.pythonhosted.org/packages/8b/67/f92e64e748fd6aaffe01e2b75a083c0c4fd27abe1c8747fee4555fcee7dd/zstandard-0.25.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:2b6bd67528ee8b5c5f10255735abc21aa106931f0dbaf297c7be0c886353c3d0", size = 5449703, upload-time = "2025-09-14T22:16:06.312Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e5/6d36f92a197c3c17729a2125e29c169f460538a7d939a27eaaa6dcfcba8e/zstandard-0.25.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4b6d83057e713ff235a12e73916b6d356e3084fd3d14ced499d84240f3eecee0", size = 5556583, upload-time = "2025-09-14T22:16:08.457Z" }, + { url = "https://files.pythonhosted.org/packages/d7/83/41939e60d8d7ebfe2b747be022d0806953799140a702b90ffe214d557638/zstandard-0.25.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9174f4ed06f790a6869b41cba05b43eeb9a35f8993c4422ab853b705e8112bbd", size = 5045332, upload-time = "2025-09-14T22:16:10.444Z" }, + { url = "https://files.pythonhosted.org/packages/b3/87/d3ee185e3d1aa0133399893697ae91f221fda79deb61adbe998a7235c43f/zstandard-0.25.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:25f8f3cd45087d089aef5ba3848cd9efe3ad41163d3400862fb42f81a3a46701", size = 5572283, upload-time = "2025-09-14T22:16:12.128Z" }, + { url = "https://files.pythonhosted.org/packages/0a/1d/58635ae6104df96671076ac7d4ae7816838ce7debd94aecf83e30b7121b0/zstandard-0.25.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3756b3e9da9b83da1796f8809dd57cb024f838b9eeafde28f3cb472012797ac1", size = 4959754, upload-time = "2025-09-14T22:16:14.225Z" }, + { url = "https://files.pythonhosted.org/packages/75/d6/57e9cb0a9983e9a229dd8fd2e6e96593ef2aa82a3907188436f22b111ccd/zstandard-0.25.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:81dad8d145d8fd981b2962b686b2241d3a1ea07733e76a2f15435dfb7fb60150", size = 5266477, upload-time = "2025-09-14T22:16:16.343Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a9/ee891e5edf33a6ebce0a028726f0bbd8567effe20fe3d5808c42323e8542/zstandard-0.25.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a5a419712cf88862a45a23def0ae063686db3d324cec7edbe40509d1a79a0aab", size = 5440914, upload-time = "2025-09-14T22:16:18.453Z" }, + { url = "https://files.pythonhosted.org/packages/58/08/a8522c28c08031a9521f27abc6f78dbdee7312a7463dd2cfc658b813323b/zstandard-0.25.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e7360eae90809efd19b886e59a09dad07da4ca9ba096752e61a2e03c8aca188e", size = 5819847, upload-time = "2025-09-14T22:16:20.559Z" }, + { url = "https://files.pythonhosted.org/packages/6f/11/4c91411805c3f7b6f31c60e78ce347ca48f6f16d552fc659af6ec3b73202/zstandard-0.25.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:75ffc32a569fb049499e63ce68c743155477610532da1eb38e7f24bf7cd29e74", size = 5363131, upload-time = "2025-09-14T22:16:22.206Z" }, + { url = "https://files.pythonhosted.org/packages/ef/d6/8c4bd38a3b24c4c7676a7a3d8de85d6ee7a983602a734b9f9cdefb04a5d6/zstandard-0.25.0-cp310-cp310-win32.whl", hash = "sha256:106281ae350e494f4ac8a80470e66d1fe27e497052c8d9c3b95dc4cf1ade81aa", size = 436469, upload-time = "2025-09-14T22:16:25.002Z" }, + { url = "https://files.pythonhosted.org/packages/93/90/96d50ad417a8ace5f841b3228e93d1bb13e6ad356737f42e2dde30d8bd68/zstandard-0.25.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea9d54cc3d8064260114a0bbf3479fc4a98b21dffc89b3459edd506b69262f6e", size = 506100, upload-time = "2025-09-14T22:16:23.569Z" }, + { url = "https://files.pythonhosted.org/packages/2a/83/c3ca27c363d104980f1c9cee1101cc8ba724ac8c28a033ede6aab89585b1/zstandard-0.25.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:933b65d7680ea337180733cf9e87293cc5500cc0eb3fc8769f4d3c88d724ec5c", size = 795254, upload-time = "2025-09-14T22:16:26.137Z" }, + { url = "https://files.pythonhosted.org/packages/ac/4d/e66465c5411a7cf4866aeadc7d108081d8ceba9bc7abe6b14aa21c671ec3/zstandard-0.25.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3f79487c687b1fc69f19e487cd949bf3aae653d181dfb5fde3bf6d18894706f", size = 640559, upload-time = "2025-09-14T22:16:27.973Z" }, + { url = "https://files.pythonhosted.org/packages/12/56/354fe655905f290d3b147b33fe946b0f27e791e4b50a5f004c802cb3eb7b/zstandard-0.25.0-cp311-cp311-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:0bbc9a0c65ce0eea3c34a691e3c4b6889f5f3909ba4822ab385fab9057099431", size = 5348020, upload-time = "2025-09-14T22:16:29.523Z" }, + { url = "https://files.pythonhosted.org/packages/3b/13/2b7ed68bd85e69a2069bcc72141d378f22cae5a0f3b353a2c8f50ef30c1b/zstandard-0.25.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:01582723b3ccd6939ab7b3a78622c573799d5d8737b534b86d0e06ac18dbde4a", size = 5058126, upload-time = "2025-09-14T22:16:31.811Z" }, + { url = "https://files.pythonhosted.org/packages/c9/dd/fdaf0674f4b10d92cb120ccff58bbb6626bf8368f00ebfd2a41ba4a0dc99/zstandard-0.25.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5f1ad7bf88535edcf30038f6919abe087f606f62c00a87d7e33e7fc57cb69fcc", size = 5405390, upload-time = "2025-09-14T22:16:33.486Z" }, + { url = "https://files.pythonhosted.org/packages/0f/67/354d1555575bc2490435f90d67ca4dd65238ff2f119f30f72d5cde09c2ad/zstandard-0.25.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:06acb75eebeedb77b69048031282737717a63e71e4ae3f77cc0c3b9508320df6", size = 5452914, upload-time = "2025-09-14T22:16:35.277Z" }, + { url = "https://files.pythonhosted.org/packages/bb/1f/e9cfd801a3f9190bf3e759c422bbfd2247db9d7f3d54a56ecde70137791a/zstandard-0.25.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9300d02ea7c6506f00e627e287e0492a5eb0371ec1670ae852fefffa6164b072", size = 5559635, upload-time = "2025-09-14T22:16:37.141Z" }, + { url = "https://files.pythonhosted.org/packages/21/88/5ba550f797ca953a52d708c8e4f380959e7e3280af029e38fbf47b55916e/zstandard-0.25.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfd06b1c5584b657a2892a6014c2f4c20e0db0208c159148fa78c65f7e0b0277", size = 5048277, upload-time = "2025-09-14T22:16:38.807Z" }, + { url = "https://files.pythonhosted.org/packages/46/c0/ca3e533b4fa03112facbe7fbe7779cb1ebec215688e5df576fe5429172e0/zstandard-0.25.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f373da2c1757bb7f1acaf09369cdc1d51d84131e50d5fa9863982fd626466313", size = 5574377, upload-time = "2025-09-14T22:16:40.523Z" }, + { url = "https://files.pythonhosted.org/packages/12/9b/3fb626390113f272abd0799fd677ea33d5fc3ec185e62e6be534493c4b60/zstandard-0.25.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6c0e5a65158a7946e7a7affa6418878ef97ab66636f13353b8502d7ea03c8097", size = 4961493, upload-time = "2025-09-14T22:16:43.3Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d3/23094a6b6a4b1343b27ae68249daa17ae0651fcfec9ed4de09d14b940285/zstandard-0.25.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c8e167d5adf59476fa3e37bee730890e389410c354771a62e3c076c86f9f7778", size = 5269018, upload-time = "2025-09-14T22:16:45.292Z" }, + { url = "https://files.pythonhosted.org/packages/8c/a7/bb5a0c1c0f3f4b5e9d5b55198e39de91e04ba7c205cc46fcb0f95f0383c1/zstandard-0.25.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:98750a309eb2f020da61e727de7d7ba3c57c97cf6213f6f6277bb7fb42a8e065", size = 5443672, upload-time = "2025-09-14T22:16:47.076Z" }, + { url = "https://files.pythonhosted.org/packages/27/22/503347aa08d073993f25109c36c8d9f029c7d5949198050962cb568dfa5e/zstandard-0.25.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:22a086cff1b6ceca18a8dd6096ec631e430e93a8e70a9ca5efa7561a00f826fa", size = 5822753, upload-time = "2025-09-14T22:16:49.316Z" }, + { url = "https://files.pythonhosted.org/packages/e2/be/94267dc6ee64f0f8ba2b2ae7c7a2df934a816baaa7291db9e1aa77394c3c/zstandard-0.25.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:72d35d7aa0bba323965da807a462b0966c91608ef3a48ba761678cb20ce5d8b7", size = 5366047, upload-time = "2025-09-14T22:16:51.328Z" }, + { url = "https://files.pythonhosted.org/packages/7b/a3/732893eab0a3a7aecff8b99052fecf9f605cf0fb5fb6d0290e36beee47a4/zstandard-0.25.0-cp311-cp311-win32.whl", hash = "sha256:f5aeea11ded7320a84dcdd62a3d95b5186834224a9e55b92ccae35d21a8b63d4", size = 436484, upload-time = "2025-09-14T22:16:55.005Z" }, + { url = "https://files.pythonhosted.org/packages/43/a3/c6155f5c1cce691cb80dfd38627046e50af3ee9ddc5d0b45b9b063bfb8c9/zstandard-0.25.0-cp311-cp311-win_amd64.whl", hash = "sha256:daab68faadb847063d0c56f361a289c4f268706b598afbf9ad113cbe5c38b6b2", size = 506183, upload-time = "2025-09-14T22:16:52.753Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3e/8945ab86a0820cc0e0cdbf38086a92868a9172020fdab8a03ac19662b0e5/zstandard-0.25.0-cp311-cp311-win_arm64.whl", hash = "sha256:22a06c5df3751bb7dc67406f5374734ccee8ed37fc5981bf1ad7041831fa1137", size = 462533, upload-time = "2025-09-14T22:16:53.878Z" }, + { url = "https://files.pythonhosted.org/packages/82/fc/f26eb6ef91ae723a03e16eddb198abcfce2bc5a42e224d44cc8b6765e57e/zstandard-0.25.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7b3c3a3ab9daa3eed242d6ecceead93aebbb8f5f84318d82cee643e019c4b73b", size = 795738, upload-time = "2025-09-14T22:16:56.237Z" }, + { url = "https://files.pythonhosted.org/packages/aa/1c/d920d64b22f8dd028a8b90e2d756e431a5d86194caa78e3819c7bf53b4b3/zstandard-0.25.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:913cbd31a400febff93b564a23e17c3ed2d56c064006f54efec210d586171c00", size = 640436, upload-time = "2025-09-14T22:16:57.774Z" }, + { url = "https://files.pythonhosted.org/packages/53/6c/288c3f0bd9fcfe9ca41e2c2fbfd17b2097f6af57b62a81161941f09afa76/zstandard-0.25.0-cp312-cp312-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:011d388c76b11a0c165374ce660ce2c8efa8e5d87f34996aa80f9c0816698b64", size = 5343019, upload-time = "2025-09-14T22:16:59.302Z" }, + { url = "https://files.pythonhosted.org/packages/1e/15/efef5a2f204a64bdb5571e6161d49f7ef0fffdbca953a615efbec045f60f/zstandard-0.25.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6dffecc361d079bb48d7caef5d673c88c8988d3d33fb74ab95b7ee6da42652ea", size = 5063012, upload-time = "2025-09-14T22:17:01.156Z" }, + { url = "https://files.pythonhosted.org/packages/b7/37/a6ce629ffdb43959e92e87ebdaeebb5ac81c944b6a75c9c47e300f85abdf/zstandard-0.25.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:7149623bba7fdf7e7f24312953bcf73cae103db8cae49f8154dd1eadc8a29ecb", size = 5394148, upload-time = "2025-09-14T22:17:03.091Z" }, + { url = "https://files.pythonhosted.org/packages/e3/79/2bf870b3abeb5c070fe2d670a5a8d1057a8270f125ef7676d29ea900f496/zstandard-0.25.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:6a573a35693e03cf1d67799fd01b50ff578515a8aeadd4595d2a7fa9f3ec002a", size = 5451652, upload-time = "2025-09-14T22:17:04.979Z" }, + { url = "https://files.pythonhosted.org/packages/53/60/7be26e610767316c028a2cbedb9a3beabdbe33e2182c373f71a1c0b88f36/zstandard-0.25.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5a56ba0db2d244117ed744dfa8f6f5b366e14148e00de44723413b2f3938a902", size = 5546993, upload-time = "2025-09-14T22:17:06.781Z" }, + { url = "https://files.pythonhosted.org/packages/85/c7/3483ad9ff0662623f3648479b0380d2de5510abf00990468c286c6b04017/zstandard-0.25.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:10ef2a79ab8e2974e2075fb984e5b9806c64134810fac21576f0668e7ea19f8f", size = 5046806, upload-time = "2025-09-14T22:17:08.415Z" }, + { url = "https://files.pythonhosted.org/packages/08/b3/206883dd25b8d1591a1caa44b54c2aad84badccf2f1de9e2d60a446f9a25/zstandard-0.25.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aaf21ba8fb76d102b696781bddaa0954b782536446083ae3fdaa6f16b25a1c4b", size = 5576659, upload-time = "2025-09-14T22:17:10.164Z" }, + { url = "https://files.pythonhosted.org/packages/9d/31/76c0779101453e6c117b0ff22565865c54f48f8bd807df2b00c2c404b8e0/zstandard-0.25.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1869da9571d5e94a85a5e8d57e4e8807b175c9e4a6294e3b66fa4efb074d90f6", size = 4953933, upload-time = "2025-09-14T22:17:11.857Z" }, + { url = "https://files.pythonhosted.org/packages/18/e1/97680c664a1bf9a247a280a053d98e251424af51f1b196c6d52f117c9720/zstandard-0.25.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:809c5bcb2c67cd0ed81e9229d227d4ca28f82d0f778fc5fea624a9def3963f91", size = 5268008, upload-time = "2025-09-14T22:17:13.627Z" }, + { url = "https://files.pythonhosted.org/packages/1e/73/316e4010de585ac798e154e88fd81bb16afc5c5cb1a72eeb16dd37e8024a/zstandard-0.25.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f27662e4f7dbf9f9c12391cb37b4c4c3cb90ffbd3b1fb9284dadbbb8935fa708", size = 5433517, upload-time = "2025-09-14T22:17:16.103Z" }, + { url = "https://files.pythonhosted.org/packages/5b/60/dd0f8cfa8129c5a0ce3ea6b7f70be5b33d2618013a161e1ff26c2b39787c/zstandard-0.25.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:99c0c846e6e61718715a3c9437ccc625de26593fea60189567f0118dc9db7512", size = 5814292, upload-time = "2025-09-14T22:17:17.827Z" }, + { url = "https://files.pythonhosted.org/packages/fc/5f/75aafd4b9d11b5407b641b8e41a57864097663699f23e9ad4dbb91dc6bfe/zstandard-0.25.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:474d2596a2dbc241a556e965fb76002c1ce655445e4e3bf38e5477d413165ffa", size = 5360237, upload-time = "2025-09-14T22:17:19.954Z" }, + { url = "https://files.pythonhosted.org/packages/ff/8d/0309daffea4fcac7981021dbf21cdb2e3427a9e76bafbcdbdf5392ff99a4/zstandard-0.25.0-cp312-cp312-win32.whl", hash = "sha256:23ebc8f17a03133b4426bcc04aabd68f8236eb78c3760f12783385171b0fd8bd", size = 436922, upload-time = "2025-09-14T22:17:24.398Z" }, + { url = "https://files.pythonhosted.org/packages/79/3b/fa54d9015f945330510cb5d0b0501e8253c127cca7ebe8ba46a965df18c5/zstandard-0.25.0-cp312-cp312-win_amd64.whl", hash = "sha256:ffef5a74088f1e09947aecf91011136665152e0b4b359c42be3373897fb39b01", size = 506276, upload-time = "2025-09-14T22:17:21.429Z" }, + { url = "https://files.pythonhosted.org/packages/ea/6b/8b51697e5319b1f9ac71087b0af9a40d8a6288ff8025c36486e0c12abcc4/zstandard-0.25.0-cp312-cp312-win_arm64.whl", hash = "sha256:181eb40e0b6a29b3cd2849f825e0fa34397f649170673d385f3598ae17cca2e9", size = 462679, upload-time = "2025-09-14T22:17:23.147Z" }, + { url = "https://files.pythonhosted.org/packages/35/0b/8df9c4ad06af91d39e94fa96cc010a24ac4ef1378d3efab9223cc8593d40/zstandard-0.25.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec996f12524f88e151c339688c3897194821d7f03081ab35d31d1e12ec975e94", size = 795735, upload-time = "2025-09-14T22:17:26.042Z" }, + { url = "https://files.pythonhosted.org/packages/3f/06/9ae96a3e5dcfd119377ba33d4c42a7d89da1efabd5cb3e366b156c45ff4d/zstandard-0.25.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a1a4ae2dec3993a32247995bdfe367fc3266da832d82f8438c8570f989753de1", size = 640440, upload-time = "2025-09-14T22:17:27.366Z" }, + { url = "https://files.pythonhosted.org/packages/d9/14/933d27204c2bd404229c69f445862454dcc101cd69ef8c6068f15aaec12c/zstandard-0.25.0-cp313-cp313-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:e96594a5537722fdfb79951672a2a63aec5ebfb823e7560586f7484819f2a08f", size = 5343070, upload-time = "2025-09-14T22:17:28.896Z" }, + { url = "https://files.pythonhosted.org/packages/6d/db/ddb11011826ed7db9d0e485d13df79b58586bfdec56e5c84a928a9a78c1c/zstandard-0.25.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bfc4e20784722098822e3eee42b8e576b379ed72cca4a7cb856ae733e62192ea", size = 5063001, upload-time = "2025-09-14T22:17:31.044Z" }, + { url = "https://files.pythonhosted.org/packages/db/00/87466ea3f99599d02a5238498b87bf84a6348290c19571051839ca943777/zstandard-0.25.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:457ed498fc58cdc12fc48f7950e02740d4f7ae9493dd4ab2168a47c93c31298e", size = 5394120, upload-time = "2025-09-14T22:17:32.711Z" }, + { url = "https://files.pythonhosted.org/packages/2b/95/fc5531d9c618a679a20ff6c29e2b3ef1d1f4ad66c5e161ae6ff847d102a9/zstandard-0.25.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:fd7a5004eb1980d3cefe26b2685bcb0b17989901a70a1040d1ac86f1d898c551", size = 5451230, upload-time = "2025-09-14T22:17:34.41Z" }, + { url = "https://files.pythonhosted.org/packages/63/4b/e3678b4e776db00f9f7b2fe58e547e8928ef32727d7a1ff01dea010f3f13/zstandard-0.25.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8e735494da3db08694d26480f1493ad2cf86e99bdd53e8e9771b2752a5c0246a", size = 5547173, upload-time = "2025-09-14T22:17:36.084Z" }, + { url = "https://files.pythonhosted.org/packages/4e/d5/ba05ed95c6b8ec30bd468dfeab20589f2cf709b5c940483e31d991f2ca58/zstandard-0.25.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3a39c94ad7866160a4a46d772e43311a743c316942037671beb264e395bdd611", size = 5046736, upload-time = "2025-09-14T22:17:37.891Z" }, + { url = "https://files.pythonhosted.org/packages/50/d5/870aa06b3a76c73eced65c044b92286a3c4e00554005ff51962deef28e28/zstandard-0.25.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:172de1f06947577d3a3005416977cce6168f2261284c02080e7ad0185faeced3", size = 5576368, upload-time = "2025-09-14T22:17:40.206Z" }, + { url = "https://files.pythonhosted.org/packages/5d/35/398dc2ffc89d304d59bc12f0fdd931b4ce455bddf7038a0a67733a25f550/zstandard-0.25.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3c83b0188c852a47cd13ef3bf9209fb0a77fa5374958b8c53aaa699398c6bd7b", size = 4954022, upload-time = "2025-09-14T22:17:41.879Z" }, + { url = "https://files.pythonhosted.org/packages/9a/5c/36ba1e5507d56d2213202ec2b05e8541734af5f2ce378c5d1ceaf4d88dc4/zstandard-0.25.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1673b7199bbe763365b81a4f3252b8e80f44c9e323fc42940dc8843bfeaf9851", size = 5267889, upload-time = "2025-09-14T22:17:43.577Z" }, + { url = "https://files.pythonhosted.org/packages/70/e8/2ec6b6fb7358b2ec0113ae202647ca7c0e9d15b61c005ae5225ad0995df5/zstandard-0.25.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:0be7622c37c183406f3dbf0cba104118eb16a4ea7359eeb5752f0794882fc250", size = 5433952, upload-time = "2025-09-14T22:17:45.271Z" }, + { url = "https://files.pythonhosted.org/packages/7b/01/b5f4d4dbc59ef193e870495c6f1275f5b2928e01ff5a81fecb22a06e22fb/zstandard-0.25.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:5f5e4c2a23ca271c218ac025bd7d635597048b366d6f31f420aaeb715239fc98", size = 5814054, upload-time = "2025-09-14T22:17:47.08Z" }, + { url = "https://files.pythonhosted.org/packages/b2/e5/fbd822d5c6f427cf158316d012c5a12f233473c2f9c5fe5ab1ae5d21f3d8/zstandard-0.25.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f187a0bb61b35119d1926aee039524d1f93aaf38a9916b8c4b78ac8514a0aaf", size = 5360113, upload-time = "2025-09-14T22:17:48.893Z" }, + { url = "https://files.pythonhosted.org/packages/8e/e0/69a553d2047f9a2c7347caa225bb3a63b6d7704ad74610cb7823baa08ed7/zstandard-0.25.0-cp313-cp313-win32.whl", hash = "sha256:7030defa83eef3e51ff26f0b7bfb229f0204b66fe18e04359ce3474ac33cbc09", size = 436936, upload-time = "2025-09-14T22:17:52.658Z" }, + { url = "https://files.pythonhosted.org/packages/d9/82/b9c06c870f3bd8767c201f1edbdf9e8dc34be5b0fbc5682c4f80fe948475/zstandard-0.25.0-cp313-cp313-win_amd64.whl", hash = "sha256:1f830a0dac88719af0ae43b8b2d6aef487d437036468ef3c2ea59c51f9d55fd5", size = 506232, upload-time = "2025-09-14T22:17:50.402Z" }, + { url = "https://files.pythonhosted.org/packages/d4/57/60c3c01243bb81d381c9916e2a6d9e149ab8627c0c7d7abb2d73384b3c0c/zstandard-0.25.0-cp313-cp313-win_arm64.whl", hash = "sha256:85304a43f4d513f5464ceb938aa02c1e78c2943b29f44a750b48b25ac999a049", size = 462671, upload-time = "2025-09-14T22:17:51.533Z" }, ] From 463b41deb47a395bb2aafda72fa9a59989ad3288 Mon Sep 17 00:00:00 2001 From: Prajna1999 Date: Tue, 1 Sep 2026 17:01:10 +0530 Subject: [PATCH 08/11] chore: remove .claude skills --- backend/.claude/agents/senior-engineer.md | 93 ----------- backend/.claude/agents/test-writer.md | 128 --------------- backend/.claude/commands/pr-review.md | 146 ----------------- backend/.claude/conventions/celery.md | 82 ---------- backend/.claude/conventions/crud.md | 76 --------- backend/.claude/conventions/error-handling.md | 115 -------------- backend/.claude/conventions/migration.md | 76 --------- backend/.claude/conventions/model.md | 108 ------------- backend/.claude/conventions/route.md | 84 ---------- backend/.claude/conventions/service.md | 103 ------------ backend/.claude/hooks/wiki-update.sh | 14 -- backend/.claude/settings.json | 16 -- backend/.claude/skills/grill-me/SKILL.md | 10 -- backend/.claude/skills/srd-creator/SKILL.md | 150 ------------------ .../skills/srd-creator/reference/srd-guide.md | 122 -------------- .../srd-creator/reference/srd-template.md | 140 ---------------- .../srd-creator/scripts/render-diagram.sh | 19 --- backend/.claude/skills/start-prd/SKILL.md | 63 -------- 18 files changed, 1545 deletions(-) delete mode 100644 backend/.claude/agents/senior-engineer.md delete mode 100644 backend/.claude/agents/test-writer.md delete mode 100644 backend/.claude/commands/pr-review.md delete mode 100644 backend/.claude/conventions/celery.md delete mode 100644 backend/.claude/conventions/crud.md delete mode 100644 backend/.claude/conventions/error-handling.md delete mode 100644 backend/.claude/conventions/migration.md delete mode 100644 backend/.claude/conventions/model.md delete mode 100644 backend/.claude/conventions/route.md delete mode 100644 backend/.claude/conventions/service.md delete mode 100755 backend/.claude/hooks/wiki-update.sh delete mode 100644 backend/.claude/settings.json delete mode 100644 backend/.claude/skills/grill-me/SKILL.md delete mode 100644 backend/.claude/skills/srd-creator/SKILL.md delete mode 100644 backend/.claude/skills/srd-creator/reference/srd-guide.md delete mode 100644 backend/.claude/skills/srd-creator/reference/srd-template.md delete mode 100755 backend/.claude/skills/srd-creator/scripts/render-diagram.sh delete mode 100644 backend/.claude/skills/start-prd/SKILL.md diff --git a/backend/.claude/agents/senior-engineer.md b/backend/.claude/agents/senior-engineer.md deleted file mode 100644 index 777a23f6..00000000 --- a/backend/.claude/agents/senior-engineer.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -name: senior-engineer -description: Use for any code-writing in kaapi-backend's application layers — model, crud, service, route — plus the migration and Celery task that a change drags along. Walks the dependency spine model -> crud -> service -> route in ONE context, lazy-loading each layer's convention doc, and writes the matching Alembic migration and Celery task in the same context. Does NOT write tests (test-writer). -tools: Read, Edit, Write, Bash, Grep, Glob -model: opus ---- - -You write application code for kaapi-backend across the layers **model → crud → service → route**, -plus the **migration** a schema change requires and the **Celery task** an async/background change -requires. You handle both single-layer edits ("add a filterable column", "add one endpoint over -existing data") and full features that walk the whole spine — same agent, same conventions, scoped -to what the task needs. - -## How you work - -1. **Scope first.** Decide which layers the task actually touches: - - New entity → model → crud → service → route, plus a migration. - - New endpoint over existing data → often just service + route. - - New query / filter → often just crud (+ route to expose it). - - One-field model change → just model + migration. - - Heavy/retryable/background work (LLM call, large doc transform, anything with timeouts) → a - Celery task in `app/celery/tasks/` delegating to a service. - - **Only build the layers the task needs.** Don't spin up the full spine for a one-layer change. - -2. **Walk the spine in dependency order:** model → crud → service → route. Each downstream layer - depends on the one above it (route calls service calls crud uses model), so never build out of - order. Build straight through — no per-layer handoff, you ARE the next layer. - - Sequence the migration and Celery task around the spine: write the **migration after the model** - (it needs the final field set + the next rev-id), and the **Celery task after the service** it - delegates to (the task is a thin shim over that service). - -3. **Before writing each layer, Read its convention doc and apply it.** These are the single source - of truth for the layer's rules, canonical shapes, naming, and what-not-to-do: - - model → `.claude/conventions/model.md` - - crud → `.claude/conventions/crud.md` - - service → `.claude/conventions/service.md` - - route → `.claude/conventions/route.md` - - migration → `.claude/conventions/migration.md` - - Celery task → `.claude/conventions/celery.md` - - **Lazy-load:** Read a doc only when you're about to write that layer. Skip docs for layers the - task doesn't touch. - - **Cross-cutting:** when a service or crud function wraps an external SDK or raw HTTP call, also - Read `.claude/conventions/error-handling.md` and apply its source-tagged, fault-based pattern. - -4. **Before writing a helper, check it doesn't already exist.** Anything generic — wrapping an - external SDK or its error handling, building/parsing a domain payload, hitting cloud storage, - loading config — usually has a canonical version already, and it rarely lives in a neighbor file. - Grep the whole tree by behavior (the SDK class, the model type, the storage call), not just the - directory you're writing in. Call the existing function; add a new helper only once you've - confirmed none fits. - -5. **Stay out of tests.** Do NOT write tests — that's the `test-writer` agent. Note what it should - cover and which HTTP boundaries it must mock; don't build it. - -## Cross-cutting rules (apply at every layer) - -- Type hints on every parameter and return. `-> Any` is not an annotation. -- Logging: every line starts with `[function_name]`. Mask secrets with `mask_string` from `app.utils`. -- `uv` is the runner, not `pip`. -- No magic values — extract repeated literals to constants / `Enum` / settings. -- Comments explain _why_, not _what_. Don't restate what the code already says or pad docstrings with - obvious recaps — a comment earns its place only by adding non-obvious context (rationale, gotcha, - constraint). When in doubt, delete it. No decorative/banner comments either — no full-width - separator rules (`# ──────`, `# =====`) or section-divider headers. Structure code with functions - and blank lines, not ASCII dividers. - - One line, not two, when one carries the why. Each extra sentence must add non-obvious info, not - restate the consequence: - ```python - # bad — second line restates what "too low" already implies - # Room for a full prompt rewrite plus structured JSON wrapper. A low cap risks - # truncating the rewrite mid-output, which yields malformed (unparseable) JSON. - # good - # Headroom for a full prompt rewrite + JSON wrapper; too low truncates into invalid JSON. - ``` -- Naming: `list_*` plural fetch, `get_*` singleton; `Enum` suffix on enum classes. -- Timestamps are `inserted_at` / `updated_at`, never `created_at`. - -## After building - -Emit ONE summary (not one per layer): - -1. The layers you built and the key signatures added (model variants; crud/service/route function - signatures + paths; Celery task name + queue/priority; migration rev-id). -2. Any new `Permission` enum value, domain exception, or `.env.example` / settings key the user must add. -3. If you wrote a migration, state the rev-id and remind the user to run - `uv run alembic upgrade head` (and that downgrade was exercised). If a model field changed but you - did NOT write the migration, say so and give the next rev-id - (`ls backend/app/alembic/versions/ | sort | tail -1` → that number + 1, zero-padded). -4. What `test-writer` should cover, and any external HTTP boundary it must mock. diff --git a/backend/.claude/agents/test-writer.md b/backend/.claude/agents/test-writer.md deleted file mode 100644 index c37ac768..00000000 --- a/backend/.claude/agents/test-writer.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -name: test-writer -description: Use when writing or updating tests under `app/tests/` for kaapi-backend. -tools: Read, Edit, Write, Bash, Grep, Glob -model: opus ---- - -You write pytest tests for kaapi-backend. Tests live under `app/tests/` and mirror the `app/` structure (`api/`, `crud/`, `services/`, `core/`, `models/`). - -If you're unfamiliar with the domain under test, read its `docs/wiki/modules/*.md` page (via `docs/wiki/INDEX.md`) first — it lists the domain's routes, tables, services, and external boundaries (what to mock) in ~40 lines, cheaper than exploring. - -## Workflow — red before green - -Every test runs a failing-first loop — never write one that hasn't been seen to fail. - -1. **Write the test first, run it — confirm it fails (red)** for the _expected_ reason - (assertion mismatch / missing behavior), not an import error, fixture typo, or wrong path. -2. **Passes on first run? Treat it as suspect** — likely tautological or not exercising the new - code. Tighten until it fails, or say so explicitly; a green-on-first-run test proves nothing. -3. **Make it pass (green)** with minimal code — for existing code the fix is in the test; for new - behavior, iterate until the implementation satisfies it. -4. **Rerun the focused subset** (`uv run pytest app/tests/ -k -x`), confirm green, and - report the red→green transition in your summary. - -**Refactoring is not part of the loop.** Red → green is write-test → make-it-pass, nothing more — -cleanup belongs to `/pr-review`. - -**Vertical slices, not horizontal.** One test → one implementation → repeat, each test a **tracer -bullet** shaped by what the last cycle taught. Never write all tests first, then all implementation — -bulk tests verify _imagined_ behavior and go insensitive to real changes. - -## Hard rules - -These double as review triggers: when an existing test already violates one, flag it explicitly — don't silently fix. - -- **Real DB only — never mock the database session.** `conftest.py` provides a transactional `db` fixture that rolls back after each test. Use it. Mocking is fine only for **external** systems (OpenAI, Langfuse, S3, webhooks). Database = real. -- **Use the factory pattern from `app/tests/utils/`.** Helpers like `create_random_user`, `random_email`, `random_lower_string` exist for a reason. No hardcoded `organization_id=1` / `project_id=1` — use the auth-context fixtures. No inline `User(...)` with magic ids. -- **Behavior, not implementation.** Assert what the caller observes (response status, body, DB state after the call) — not which internal function was called. The sharp tell of a bad test: it breaks under a pure refactor when behavior hasn't changed. -- **No tautological asserts.** Two forms: (a) `assert mock.called` with no behavioral check — assert observable state instead; (b) the assert recomputes the expected value the same way the code does, so it passes by construction and can never disagree with the implementation. Pull the expected value from an independent source (worked example / spec). - ```python - # bad — asserts the formula against itself - assert discounted_price(p, rate) == p - p * rate - # good — expected value from an independent source (worked example / spec) - assert discounted_price(100, 0.2) == 80 - ``` -- **Correct status codes.** A POST that creates returns 201, a DELETE 204. Don't rubber-stamp `assert resp.status_code == 200` where the verb demands otherwise. -- **Seed randomness.** If a test uses `random.random()` or similar, seed it. Random emails go through `random_email()` so they're collision-free and human-readable. -- **Bug fix → regression test.** A bug fix arriving without one → say so and write the test that fails before the fix, then confirm the fix turns it green. -- **Comments earn their place — _why_, not _what_.** A test name and its asserts already say what runs; a comment/docstring that restates them is noise. Comment only the non-obvious: why a boundary is mocked, what a sentinel means, a gotcha. When in doubt, delete it. - - **No banner/divider comments.** No `# ── constants ──────`, no `# ── 1. Happy path ──`. Group with `class Test...:` and blank lines, not ASCII rules. - - Restating-the-assert docstring → drop or tighten: - ```python - # bad — docstring just narrates the assert - def test_empty_api_key_returns_500(...): - """Storage succeeds but the key check inside the LLM step fails with 500.""" - # good — name says the what; comment only the non-obvious setup - def test_empty_api_key_returns_500(...): - monkeypatch.setattr(settings, "ANTHROPIC_API_KEY", "") # force the missing-key branch - ``` - -## Fixtures available (from `conftest.py`) - -- `db: Session` — transactional, function-scoped. Use this in CRUD and service tests. -- `client: TestClient` — function-scoped, has `db` already overridden as the dependency. Use this in API tests. -- `superuser_token_headers: dict[str, str]` — JWT auth headers for the superuser. -- `normal_user_token_headers: dict[str, str]` — JWT auth headers for a normal user. -- `superuser_api_key_header` / `user_api_key_header: dict[str, str]` — API key auth headers. -- `superuser_api_key` / `user_api_key: TestAuthContext` — full auth context if you need org/project ids. -- `seed_baseline` — session-scoped autouse fixture; you do not call it manually. - -## Test factory utilities (`app/tests/utils/`) - -- `user.py`: `create_random_user(db)`, `authentication_token_from_email(...)` -- `auth.py`: `get_superuser_test_auth_context(db)`, `get_user_test_auth_context(db)`, `TestAuthContext` -- `utils.py`: `random_email()`, `random_lower_string()`, `get_superuser_token_headers(client)` -- `openai.py`, `llm.py`, `llm_provider.py`, `collection.py`, `document.py` — per-domain factories. **Read these before writing new factories.** If a factory exists, use it; if not, add one to the same file before littering tests with bespoke setup. - -## Canonical patterns - -### API test (route) - -```python -def test_create_user_route( - client: TestClient, - superuser_token_headers: dict[str, str], - db: Session, -): - email = random_email() - password = random_lower_string() - resp = client.post( - f"{settings.API_V1_STR}/users/", - headers=superuser_token_headers, - json={"email": email, "password": password}, - ) - assert resp.status_code == 201 - body = resp.json()["data"] - assert body["email"] == email - # DB state, not just response - assert crud.get_user_by_email(session=db, email=email) is not None -``` - -### CRUD test - -```python -def test_get_user_by_email_returns_none_when_missing(db: Session): - assert crud.get_user_by_email(session=db, email=random_email()) is None -``` - -### Service test (with external HTTP mocked) - -```python -def test_send_invite_email_calls_provider(db: Session, monkeypatch): - sent: list[dict] = [] - monkeypatch.setattr("app.utils.send_email", lambda **kw: sent.append(kw)) - service_under_test.invite_user(session=db, email=random_email()) - assert len(sent) == 1 -``` - -Mock the external boundary (the email send), not the DB. - -## Asserting on `APIResponse` wrapper - -Every route wraps the body in `APIResponse[T]`. Tests should pull `body = resp.json()["data"]` and assert on that, not `resp.json()` directly. For list routes, read `app/utils.py` (defines `APIResponse`) for the wrapper shape — don't guess the count/data keys. - -## Running tests - -- All tests: `uv run bash scripts/tests-start.sh` -- A subset (when iterating): `uv run pytest app/tests/api/test_users.py -k -x` diff --git a/backend/.claude/commands/pr-review.md b/backend/.claude/commands/pr-review.md deleted file mode 100644 index 6d5c6483..00000000 --- a/backend/.claude/commands/pr-review.md +++ /dev/null @@ -1,146 +0,0 @@ ---- -description: Review the current branch's diff against main using kaapi-backend conventions and a personal review checklist. ---- - -You are reviewing the current branch's local diff against `main` in this FastAPI + PostgreSQL + SQLModel + Alembic + Celery service. - -## Gather the diff - -Refresh the remote baseline, then pin the base so every run reviews the same file set against the latest `main` — an ambiguous or stale base is why the same branch yields 13 files one run and 39 the next. - -1. **Pull this branch** — `git pull origin $(git rev-parse --abbrev-ref HEAD)` — fast-forward local to the latest pushed commits so the review runs on current work, not a stale HEAD. If the pull fails (no upstream, diverged, conflicts), stop and report — don't review stale code silently. -2. **Fetch the latest remote `main`** — `git fetch origin main`. The baseline is `origin/main` (true GitHub main), not the stale local `main` ref. No checkout, no rebase — the tree stays on your branch. -3. `BASE=$(git merge-base origin/main HEAD)` — pin the merge-base SHA once; use it for every command below so the scope can't drift between runs. -4. `git diff $BASE...HEAD --stat` for the file/line counts, `git diff $BASE...HEAD` for the review, `git log $BASE..HEAD --oneline` for the commits. -5. **Separate this branch's own work from merged-in commits.** A branch that merged another open PR (e.g. #956) carries that PR's files into the diff and inflates scope. Scan `git log $BASE..HEAD --oneline` for merge commits / unrelated PR numbers; if found, review only this branch's commits and note at the top: "Excluded N files from merged-in # — review under its own PR." Never silently review two features as one. -6. State the resolved base SHA + file count at the top of the review so a second run is comparable to the first. -7. `Read` full files at non-trivial change sites — judge in context, not from hunks. -8. `Grep` for duplication, reused literals, unused symbols. - -## What to check - -### Conventions -- Logs prefixed with `[function_name]`, levels matched to severity (`info`/`warning` for expected events, `error` only for genuine failures). -- Route descriptions via `description=load_description("/.md")`, never inline strings. `response_model` set; no untyped `dict` responses. -- DB columns get `sa_column_kwargs={"comment": "..."}` when purpose isn't obvious (status fields, JSON, foreign keys). -- Type hints on every parameter and return. `-> Any` is not an annotation — narrow it or drop it. -- `uv` is the runner, not `pip`. - -### Layering & duplication -- `HTTPException` belongs in routes, not `crud/`. CRUD returns data / `None` / raises domain errors. Third-party network calls also don't belong in `crud/` — that's DB-only. -- Routes thin, business logic in `services/`, DB access in `crud/`. -- Grep before approving: if a JWT pair, callback sender, or auth helper is duplicated across 2+ files, push for a single util. Before suggesting "extract a helper", confirm one doesn't already exist — the touched domain's `docs/wiki/modules/*.md` page lists its existing services/crud/utils, use it as the grep starting point. -- New table in the diff → check `docs/wiki/domain-map.md`: does an existing entity/flow already cover it? Ask for the justification if the page suggests reuse. -- Look for simplification — three near-identical functions (`_execute_text/_pdf/_image`) often collapse into one. - -### Magic values & config -- Repeated literals (provider names, status values, `"custom_id"`, route paths, magic numbers like `1_000_000`) → constant / Enum / config. Name the other location where it's reused. -- Hardcoded operational config (worker counts, model names, token limits, timeouts, retry counts) → env / config. Defaults lean toward smallest/cheapest, not most expensive. -- Dict crossing function boundaries where a Pydantic model belongs. - -### Naming -- `list_*` for plural fetch, `get_*` for singletons. Verb plurality matches return shape (`load_secrets_from_aws` if it returns multiple). Suffix `Enum` on enum classes. snake_case funcs/vars, PascalCase classes, UPPER_SNAKE constants. -- No leftover names from copy-paste of a sibling file. -- Alphabetical / grouped imports and route registrations, consistent with the rest of the repo. PEP 8 import order (stdlib first). - -### Error handling -- `try` wraps *only* the line(s) that throw. Bloated try blocks are bugs waiting to happen. -- Nested `try/except`: trace the path. A raised `HTTPException(404)` caught by an outer `except Exception` becomes `500` and the intended status is lost. -- Concrete exception types, not `except Exception:` / `except:`. -- Status codes: `422` for "wrong shape" (bad CSV) over `400`; `409` for conflicts; `201`/`204` on create/delete. -- Validation at the Pydantic layer or via explicit ownership checks (`organization_id`, `project_id` belong to caller). `assert` is not validation in production code. -- Errors to the client must not leak internals (hashes, stack traces, paths, credentials). - -### Concurrency & data integrity -- "Compute next / check then write" patterns (`MAX(version)+1`, find-by-name-then-insert, increment counter) are races. Push for unique constraints, transactions, or DB-side sequences. -- JSON columns are fine for opaque metadata, not for fields you'll filter or sort on — push for first-class columns. -- Cross-codebase consistency: timestamp names (`created_at` vs `inserted_at`), HTTP code choices, route shape (`/list` suffix is redundant). - -### API & response design -- Can the caller use this field? Is `data.id` the id of *what*? Are list responses missing fields the detail response populates (`signed_url`)? -- Swagger is a deliverable — generated docs must be unambiguous to an external client. - -### FastAPI -- Router prefixes/tags/versioning consistent with the rest of `app/api/`. -- `Depends` correctly wired for auth, db, current user/org/project. -- Background tasks vs Celery: short fire-and-forget → `BackgroundTasks`; heavy or retryable → Celery in `app/celery/tasks/`. - -### Async correctness -- `async def` doesn't make blocking calls (sync DB drivers, `requests`, `time.sleep`, sync file I/O). -- `await` only on coroutines. CPU-bound work → threadpool / Celery / sync route. - -### Security -- No secrets / `.env` changes committed. -- Every endpoint has the right `Depends` and verifies `organization_id` / `project_id` ownership. -- API keys / hashes never returned raw — mask after a known prefix. -- **SSRF**: any URL the server fetches (callbacks, webhooks) needs scheme + private-IP validation, optionally an allowlist. -- File uploads enforce max size and content-type allowlist — required, not optional. -- DB / shell input parameterized (no f-string SQL, no `shell=True` with user input). - -### Performance -- N+1: loops issuing queries per row → `selectinload` / `joinedload` / batch fetch. -- New filter / FK columns → `index=True`. Pagination on list endpoints. - -### Pythonic idioms (small but recurring) -- Generators over materialized lists when iterated once. -- No redundant `str()` in f-strings; `x is None` over `not x` when None is what you mean; drop unneeded `return None`; no brackets when joining (`", ".join(p.value for p in Provider)`). -- Imports inside functions are a smell — usually a cycle that should be broken structurally. -- `setattr` on Pydantic / SQLModel objects → use `model_copy(update={...})` or `dataclasses.replace`. - -### Edge cases -- For each new path, ask: input is `None`? list is empty? upstream call fails partway? what does the downgrade migration leave behind? - -### Migrations (treat as carefully as code) -- `--rev-id` = latest existing + 1; check `app/alembic/versions/`. -- New tables include timestamps + indexes on FKs / common filters; nullability correct; no skipped seed IDs. -- `downgrade()` implemented and reversible — empty downgrade is a blocker. -- Backfills live in `upgrade()` SQL, not a separate manual script. - -### Wiki freshness -- Diff adds/removes a route, table, model, service, crud file, or Celery task but the matching `docs/wiki/modules/*.md` page (or `docs/wiki/domain-map.md` for entity/edge changes) is not updated in the same diff → flag it. Stale wiki misleads every future session. - -### Cleanup -- Unused imports / functions / params / dead paths. -- Empty `__init__.py` for non-existent modules, scaffolding files no other file imports — ask "what reason was this added?" -- Commented-out blocks and `print(...)` debug removed. - -### Tests -- New behavior → test. Bug fix → regression test. Non-trivial code with zero tests → say so. -- Tests assert behavior, not implementation. Flag tautological / framework-only tests. -- Use the `app/tests/` factory pattern — no hardcoded `organization_id=1`. -- Random values seeded. Mocks match the real library's interface — prefer purpose-built mock libs over hand-rolled stubs. - -## How to write the comments - -- Cite `path:line`. Show the suggested change inline when short. -- **Name the failure mode**, not just the smell. Weak: "this try/except is too broad." Strong: "the `try` wraps the DB call too — if it raises, the handler returns 500 instead of the 404 you intended." -- **Pair criticism with a concrete fix**: a snippet, a library link, or a path in the repo that already does it right. -- **Question form** for judgment calls ("Why hardcode four workers?"). **Direct form** for unambiguous bugs. -- Hedge ("maybe", "I think") on judgment, not on correctness. -- Defer non-blocking work explicitly: "Not for this PR — worth a follow-up." Don't let style nits gate a merge. -- Tag severity: `VERY IMPORTANT:` / `MUST:` for security / data-loss / contract breaks; `nit:` for tiny cleanups. Approval can carry caveats ("approved, please resolve X before merging") — never just rubber-stamp. - -## Output format - -``` -**Branch**: → main @ · files (+ / -) - -## Summary -<1–3 sentences: what the PR does + verdict (approve / approve with nits / request changes). Caveats on approval are fine.> - -## Blocking issues -- - -## Suggestions -- - -## Nits -- - -## What's done well -- -``` - -**One bullet per item, one section per item; drop any empty section; don't pad.** Use inline tags to mark domain when useful: `[migration]`, `[test]`, `[security]`, `[follow-up]`. Severity drives the section; the tag adds the domain colour. Use `[follow-up]` for cross-cutting work the author should track separately rather than fix in this PR; place it in `Suggestions`. - -Do not modify files during the review — read-only. diff --git a/backend/.claude/conventions/celery.md b/backend/.claude/conventions/celery.md deleted file mode 100644 index f83413f0..00000000 --- a/backend/.claude/conventions/celery.md +++ /dev/null @@ -1,82 +0,0 @@ -# Celery task conventions (`app/celery/tasks/`) - -Authoritative conventions for Celery tasks in kaapi-backend. Tasks live in `app/celery/tasks/`. -Celery uses RabbitMQ as broker. There is a **single `default` queue** declared with -`x-max-priority=10`; tasks are ordered by a per-task `priority` (higher drains first, FIFO within -a band). Read `app/celery/tasks/job_execution.py` before writing — it shows the full pattern -(decorator + timeout + OTel propagation + delegation to a service). - -## Canonical decorator stack - -```python -@celery_app.task(bind=True, queue="default", priority=9) -@gevent_timeout(settings.CELERY_TASK_SOFT_TIME_LIMIT, "run_my_job") -def run_my_job(self, project_id: int, job_id: str, trace_id: str, **kwargs): - from app.services.my_domain.jobs import do_the_work # late import to avoid cycles - - _set_trace(trace_id) - return _run_with_otel_parent( - self, - lambda: do_the_work( - project_id=project_id, - job_id=job_id, - task_id=current_task.request.id, - task_instance=self, - **kwargs, - ), - ) -``` - -`_set_trace`, `_run_with_otel_parent`, and `gevent_timeout` already exist in this module / -`app/celery/utils.py` — reuse them, don't reinvent. - -## Priority choice — be explicit - -All tasks share the one `default` queue; set `priority` to place the task in the right band. Match -the bands already in use (see the `job_execution.py` module docstring): - -| Priority | When | -|---|---| -| `9` | User-blocking, interactive — LLM call / chain / response jobs | -| `6` | Fast evaluation | -| `2` | Default — doctransform, collections, STT/TTS evaluation, assessment | -| `1` | Notifications and other fire-and-forget background work | - -Pick the band that matches the task's user-facing urgency; document the choice in a comment if it's -not obvious. `task_inherit_parent_priority=True` is set, so a task enqueued from another task -inherits its priority unless you override it. - -## Hard rules - -- **`bind=True`** so you have `self` (the task instance) for retries, IDs, etc. -- **Always pass `queue="default"` and an explicit `priority`** — there is only one queue; the priority is what matters. -- **Pass `trace_id` explicitly** as a parameter and call `_set_trace(trace_id)` first thing. This wires `asgi_correlation_id` so logs from inside the task match the originating request. -- **Wrap the work in `_run_with_otel_parent(self, lambda: ...)`** so OpenTelemetry parent context propagates from the enqueueing process. -- **Delegate to a service.** The task body should be a thin shim over `app/services//`. No DB queries, no external HTTP, no business logic inside the task itself. -- **Late-import the service inside the function body** (as the canonical pattern does). Celery workers boot faster and you avoid model-import cycles. -- **Idempotency.** Celery will redeliver. Either: - - The work is naturally idempotent (`UPDATE ... SET status = 'done' WHERE id = X` — safe to repeat), OR - - The task checks a status flag before doing work (`if job.status == "completed": return`), OR - - The task uses a DB-level unique constraint to detect a duplicate run. - Tell the user which strategy applies; don't silently ship a non-idempotent task. -- **Retries.** If the task should retry on transient errors, declare it on the decorator (`autoretry_for=(httpx.HTTPError,), retry_backoff=True, retry_kwargs={"max_retries": 3}`). Don't catch-and-re-raise. -- **No blocking calls in `async def`.** Celery tasks are sync; never mix. -- **Timeouts:** rely on the `@gevent_timeout(...)` decorator (or Celery's `soft_time_limit` / `time_limit` on the decorator). External HTTP inside the service should also have its own timeout. - -## Registering the task - -- New task files under `app/celery/tasks/` must be imported somewhere Celery's autodiscover picks them up. Read `app/celery/celery_app.py` to see how imports/includes are configured; add your new module if it's not already covered by a wildcard. -- The Celery Beat schedule (recurring tasks) lives in `app/celery/beat.py`. If your task should run on a cron, add the entry there. - -## Logging - -- `logger = logging.getLogger(__name__)` at the module top. -- Every line is `logger.info(f"[task_name] Message | key: {value}")`. Log start, finish, and any retry. Mask PII / credentials with `mask_string` from `app.utils` — **never log raw payloads** if they may contain sensitive data. - -## What you DO NOT do - -- Don't write SQL or call CRUD directly from the task body. -- Don't call third-party APIs directly — that's in the service the task delegates to. -- Don't catch `Exception` and silently swallow — let it propagate so retries / failure handlers fire. -- Don't run `.delay(...)` from another Celery task to chain — use a Celery `chain` / `chord` / `group` primitive if you need orchestration, or have the service return a result the next task picks up. -- Don't use `time.sleep(...)` in a task to "wait for something" — schedule a follow-up task with `apply_async(countdown=...)`. diff --git a/backend/.claude/conventions/crud.md b/backend/.claude/conventions/crud.md deleted file mode 100644 index c7064973..00000000 --- a/backend/.claude/conventions/crud.md +++ /dev/null @@ -1,76 +0,0 @@ -# CRUD conventions (`app/crud/`) - -Authoritative conventions for data-access functions in kaapi-backend. CRUD lives in `app/crud/` -and is the **only** place that talks directly to the database via SQLModel/SQLAlchemy. Read at -least one neighbor file in the same directory before writing — patterns for keyword-only args, -logger setup, and update functions are easier to copy than to invent. - -## Hard rules - -- **No `HTTPException` in this layer.** Ever. Return `None` for "not found" or raise a domain-specific exception (`ValueError`, a custom domain error) that the route translates. -- **No third-party HTTP calls.** No `httpx`, no `openai`, no boto3, no `requests`. If you find yourself reaching for one, this code belongs in `app/services/` — stop and tell the user. -- **No business logic.** Validation, orchestration, multi-step workflows → services. CRUD is "read this row, write this row, list these rows with filters". -- **No `print`. Use `logger`.** Module top: `import logging; logger = logging.getLogger(__name__)`. Every line is `logger.info(f"[function_name] Message | key: {value}")`. Mask sensitive values with `mask_string` from `app.utils` — e.g. `f"... | email: {mask_string(email)}"`. - -## Canonical function shape (from `app/crud/user.py`) - -```python -def create_user(*, session: Session, user_create: UserCreate) -> User: - db_obj = User.model_validate( - user_create, update={"hashed_password": get_password_hash(user_create.password)} - ) - session.add(db_obj) - session.commit() - session.refresh(db_obj) - logger.info(f"[create_user] User created | user_id: {db_obj.id}") - return db_obj - - -def get_user_by_email(*, session: Session, email: str) -> User | None: - statement = select(User).where(User.email == email) - return session.exec(statement).first() -``` - -Note: **keyword-only args** with `*` for anything more than `(session, id)`. Reduces argument-order bugs at call sites. - -## Naming - -- `get__by_` returns one or `None`. -- `list_(...)` returns a list (plural in the name matches plural in the return). -- `create_`, `update_`, `delete_`. -- `bulk__` for batch ops. -- No `_one` / `_all` suffixes — the name should already say it. - -## Performance - -- **N+1 is a bug.** If you `list_` and the caller is going to access a relationship attribute, eager-load with `selectinload(...)` or `joinedload(...)`. Read the call sites before deciding. -- **Index any column you filter on.** That's a model-layer concern (`.claude/conventions/model.md`), but if you write a `get__by_` and the column has no index, flag it. -- **Pagination.** Any function that could return more than ~100 rows takes `limit: int` and `offset: int` (or `cursor`) — not "we'll add pagination later". - -## Concurrency - -- "Compute next / check then write" is a race condition. `MAX(version) + 1`, find-by-name-then-insert, increment-counter — push for a unique constraint + handle `IntegrityError`, a transaction with row lock, or a DB-side sequence. Tell the user before silently shipping the racy version. -- Don't `session.commit()` inside a loop. Build the list, add all, commit once. - -## Error surface (what to raise, what to return) - -For CRUD that wraps an external SDK (e.g. `OpenAIVectorStoreCrud`), follow `.claude/conventions/error-handling.md` — log the source-tagged message first, then raise carrying the same string. - -| Situation | Return / raise | -|---|---| -| Not found | `return None` | -| Found multiple but exactly one was expected | `raise ValueError(...)` (or a domain exception) | -| FK violation, unique conflict | Let `IntegrityError` propagate; route will translate to 409 | -| Permission / ownership | Not your concern — route or service does the check. CRUD trusts its inputs. | - -## SQL injection / shell injection - -- Always use parameterized queries (SQLModel/SQLAlchemy does this for you with `where(...)`). **Never** f-string a value into raw SQL. -- If you must use `op.execute` or `text(...)`, use bound parameters. - -## What you DO NOT do - -- Don't import from `fastapi` (no `HTTPException`, no `Depends`). -- Don't import from `httpx`, `requests`, `openai`, cloud SDKs. -- Don't write `try/except` around the whole function — wrap only the specific call that throws. -- Don't catch `Exception` — use the concrete exception type. diff --git a/backend/.claude/conventions/error-handling.md b/backend/.claude/conventions/error-handling.md deleted file mode 100644 index 9f8af0ab..00000000 --- a/backend/.claude/conventions/error-handling.md +++ /dev/null @@ -1,115 +0,0 @@ -# Error-handling conventions (external SDKs & raw HTTP) - -Authoritative convention for exception handling in any kaapi-backend code that calls an external SDK -or makes raw HTTP requests — LLM provider wrappers (`app/services/llm/providers/*.py`), CRUD that -calls external SDKs (`app/crud/**`), or any raw `requests`/`httpx` call. This is a cross-cutting -concern of the **service** and **crud** layers; apply it whenever you write or refactor those call -sites. - -**Mirror the closest reference file rather than reconstructing the structure from scratch** — they -are the source of truth for the full shape: - -| SDK shape | Reference file | -|---|---| -| Typed-per-status exception classes (OpenAI, Anthropic, Sarvam, ElevenLabs) | `app/services/llm/providers/oai.py`, `claude.py`, `sai.py`, `eai.py` | -| Status-code dispatch on one umbrella class (Gemini) | `app/services/llm/providers/gai.py` | -| Raw HTTP / no SDK (Vertex) | `app/services/llm/providers/gai_vertex.py` | -| CRUD that `raise`s instead of returning | `app/crud/rag/open_ai.py` (`OpenAIVectorStoreCrud.update`) | - -## Core principles - -1. **Every error path logs AND bubbles.** Never silently `return None, "..."` or silently `raise`. - Log first (with `exc_info=True` when an exception was caught), then return/raise. -2. **Tag every message by source.** - - `[KAAPI]` — our fault: input validation, missing config, response-shape checks, post-processing - failures, network timeouts/connection errors (we couldn't reach the provider), unexpected non-SDK errors. - - `[]` — what the provider returned: HTTP 4xx/5xx, malformed payloads, overload. - (`[OPENAI]`, `[GEMINI]`, `[ANTHROPIC]`, `[SARVAM]`, `[ELEVENLABS]`, `[VERTEX]`.) -3. **Descriptive prose, not bare codes.** State what failed, the likely cause, and what the caller - should do (retry, fix config, contact Kaapi). -4. **Always include `(code: …)`** — HTTP status (`code: 400`), exception class for network errors - (`code: ReadTimeout`), or provider status string (`code: 429 RESOURCE_EXHAUSTED`). -5. **Single source of truth for SDK errors.** The typed exception ladder lives in the outermost - dispatch (`execute()`), not duplicated inside each `_execute_`. Inner methods handle only - Kaapi-side validation and response-shape checks; SDK exceptions bubble up to `execute()`. -6. **Surface `request_id` / response_id** in the message or log tail wherever the SDK exposes one — - support escalation depends on it. - -## Log level — by fault, not by "did it fail" - -Pick the level by **who is at fault**. Failure alone doesn't justify `.error`; ops alerting fires on -`.error` rate, so everything-as-error buries real outages and everything-as-warning hides them. - -| Failure | Level | -|---|---| -| 4xx (400/401/403/404/409/413/422/425/429) — caller's fault | `warning` | -| Kaapi-side validation / response-shape checks | `warning` | -| 5xx (500/502/503/504/529) — provider broke | **`error`** | -| Network (`Timeout`, `ConnectionError`, SDK `APITimeoutError`/`APIConnectionError`) | **`error`** | -| Post-processing failure (audio convert, GCS upload, base64 decode) | **`error`** | -| Generic `Exception` catch-all | **`error`** | - -When one `except` covers both 4xx and 5xx (`APIStatusError`, `ApiError`, the non-OK branch of a raw -`_post()`), branch the level on `status_code` — and leave a one-line comment so nobody "simplifies" -it back to a single level: - -```python -# 5xx is provider-side (alert-worthy); 4xx is caller's fault (noise if alerted) -log = logger.error if status and status >= 500 else logger.warning -log(f"[.] {error_message} | provider={provider}, ...", exc_info=True) -``` - -Log tail always carries the ops join keys: `provider=`, the call type/method, `model=` (where -known), and `request_id`/response_id when available. `exc_info=True` on any path that caught a real -exception; omit it on pure validation that just builds a string. - -## Message templates (adjust verb/hint to the provider) - -| Code | Tag | Wording | -|---|---|---| -| 400 | `[]` | "Review your config and input payload — request shape, model, or content may be invalid." | -| 401 | `[]` | "Verify the API key is valid, not expired, and configured for this project." | -| 403 | `[]` | "The API key lacks access to the requested model/feature — check plan and key scopes." | -| 404 | `[]` | "Verify the model name and any referenced IDs are correct and available on your plan." | -| 409 | `[]` | "Request conflicts with current resource state — review concurrent requests before retrying." | -| 413 | `[]` | "Payload exceeds the provider's size limit — reduce prompt, shrink files, or use the Files API." | -| 422 | `[]` | "Provider rejected the payload — check input format and parameter values against the API spec." | -| 425 | `[]` | "Provider not ready yet — wait a few seconds and retry." | -| 429 | `[]` | "Hit the provider's rate/quota — wait ≥1 min and retry. Request a quota increase or contact Kaapi if persistent." | -| 500 | `[]` | "Typically transient — retry in a few seconds. If it persists, contact Kaapi." | -| 503 | `[]` | "Provider temporarily down or overloaded — retry in a few seconds." | -| 504 | `[]` | "Provider took too long — retry with a smaller payload." | -| 529 | `[ANTHROPIC]` | "Anthropic infrastructure overloaded — retry with exponential backoff." | -| Network timeout | `[KAAPI]` `(code: ReadTimeout/ConnectTimeout/APITimeoutError)` | "Request timed out — retry smaller. If persistent, contact Kaapi." | -| Network conn | `[KAAPI]` `(code: ConnectionError/APIConnectionError)` | "Network/DNS issue reaching provider — check connectivity. If persistent, contact Kaapi." | - -## Structure rules - -- **Typed-ladder ordering:** specific subclasses before parents, and `APITimeoutError` **before** - `APIConnectionError` (parent shadows child). Provider catch-alls (`APIStatusError`, - `Error`) last; branch by `status_code` inside them for 413/503/504/529. -- **Raw HTTP:** centralize mapping inside `_post()` — handle `Timeout`/`ConnectionError`/ - `RequestException` as `[KAAPI]`, parse the provider's error envelope, branch on `status_code`. The - caller just does `data, err = self._post(...)` then `if err: return None, err`. -- **CRUD that raises:** build `error_message`, log it, then `raise (error_message)` carrying - the same string. -- **Don't import provider exceptions from private modules** (`anthropic._exceptions`). If a class - isn't re-exported, branch on `status_code` inside the parent catch-all. - -## Don'ts - -- ❌ Return a bare validation error without logging it. -- ❌ HTTP-style codes for non-HTTP failures (tag a `ConnectTimeout` as `(code: ReadTimeout)`, not `408`). -- ❌ Duplicate the typed ladder inside each `_execute_*` AND in `execute()`. Pick `execute()`. -- ❌ Bare catch-all messages (`"Unexpected error occurred"`). Include `str(e)`, the operation, a "contact Kaapi" hint. -- ❌ `.warning` everything "because it failed", or `.error` everything (pager noise on every 429/401). Level by fault. -- ❌ `logger.error` sitting above the `if err:` block so it fires on success too. - -## Workflow - -1. Read the SDK's error module to enumerate its exception classes and status mappings. -2. Find every Kaapi-side error site — each `return None, ""` and each `raise` lacking a preceding `logger.*`. -3. If typed handlers exist in inner methods, move them up to `execute()` and let exceptions bubble. -4. Apply the tables: per site write tag + code + cause + remediation, then `logger.(..., exc_info=...)`, then return/raise. -5. Sanity-check ordering (subclasses first; `APITimeoutError` before `APIConnectionError`). -6. Syntax check: `python -c "import ast; ast.parse(open('').read()); print('OK')"`. diff --git a/backend/.claude/conventions/migration.md b/backend/.claude/conventions/migration.md deleted file mode 100644 index 88689ddc..00000000 --- a/backend/.claude/conventions/migration.md +++ /dev/null @@ -1,76 +0,0 @@ -# Migration conventions (`app/alembic/versions/`) - -Authoritative conventions for Alembic migrations in kaapi-backend. The DB is PostgreSQL. -Migration files live in `app/alembic/versions/` and follow a strict numeric ordering. - -## Before writing anything - -1. `ls backend/app/alembic/versions/` and find the highest `NNN_*.py`. The new revision id is - **that number + 1**, zero-padded to 3 digits. (At time of writing the latest is `069` → next - is `070`; this number moves — always recompute from the directory, don't trust this line.) Do - not skip numbers. -2. If the change adds/removes/renames model fields, prefer - `alembic revision --autogenerate -m "..." --rev-id ` (run via `uv`, not `pip`) and then - hand-edit. For data-only changes (backfills, FK additions), write the migration by hand. -3. Read a recent migration (the highest-numbered file in that dir) to match the project's - docstring style and operation patterns. - -## Required structure - -```python -""" - -Revision ID: NNN -Revises: -Create Date: YYYY-MM-DD HH:MM:SS.000000 - - -""" - -import sqlalchemy as sa -from alembic import op - -revision = "NNN" -down_revision = "" -branch_labels = None -depends_on = None - - -def upgrade(): - ... - - -def downgrade(): - ... -``` - -## Hard rules - -- **`downgrade()` is mandatory and must actually reverse `upgrade()`.** Empty `pass` is a blocker. If reverse is truly impossible (e.g., dropping then recreating a column loses data), document it explicitly in the docstring and `raise NotImplementedError("not reversible: ...")` in downgrade — but try harder first. -- **Backfills go inside `upgrade()` SQL** using `op.execute(...)`, not as a separate manual script. Same for cleanup of orphan rows before adding constraints. -- **New tables** must include: - - `id` primary key. - - `inserted_at` (NOT `created_at`) and `updated_at` timestamps. Server default `NOW()` for backfill; the column comment should describe what the timestamp tracks. - - `index=True` on every FK and every column commonly used in `WHERE` / `ORDER BY` / `GROUP BY`. - - `sa.Column(..., comment="...")` for any column with a non-obvious purpose, matching the model's `sa_column_kwargs={"comment": "..."}`. -- **Adding a non-nullable column to a populated table**: add as nullable with `server_default=sa.text("...")`, backfill, then `ALTER COLUMN ... SET NOT NULL` and optionally drop the server default if the model has a `default_factory`. See a recent migration for the exact pattern. -- **Adding a unique constraint to a populated table**: dedupe first (`op.execute("DELETE ... USING ...")`), then `CREATE UNIQUE INDEX ... CONCURRENTLY` and `ALTER TABLE ... ADD CONSTRAINT ... USING INDEX` so the build doesn't take `AccessExclusiveLock`. -- **Index builds on large tables**: use `CREATE INDEX CONCURRENTLY` via raw `op.execute(...)`. Note that CONCURRENTLY requires the migration to NOT run inside a transaction — set `transactional_ddl = False` if needed, or split the index build into its own migration. - -## What to verify before declaring done - -- `grep -n "down_revision" backend/app/alembic/versions/*.py` shows your `revision` is unique and the chain `... → ` is intact. -- The model file matches: every new model field has a corresponding column in your migration with the same name, type, nullability, comment, and index. Conversely every column you add exists in the model. -- For renames: update **all references** — model, CRUD queries, services, tests, fixtures, seed data. A migration that renames `created_at` → `inserted_at` without updating callers is a half-finished change. -- Run `uv run alembic upgrade head --sql` (offline) to verify the migration compiles. If schema is uncertain, suggest the user run `uv run alembic upgrade head` then `uv run alembic downgrade -1` then `uv run alembic upgrade head` to exercise both paths against a real DB. - -## What you DO NOT do - -- Don't add `HTTPException`, route handlers, business logic, or external HTTP calls in a migration. -- Don't write `print(...)` debug statements — use the migration docstring. If a long backfill genuinely needs progress logging, use `logging.getLogger("alembic.runtime.migration")` with the standard `[] ...` prefix. -- Don't skip the docstring. The docstring is what someone debugging at 2am will read. -- Don't pad the docstring either — keep it to the non-obvious WHY. A step-by-step recap of the `op.*` calls (which the reader can already see in `upgrade()`) is noise. Same for inline comments: explain a tricky backfill or lock-avoidance trick, not `# add the column`. -- Don't import from `app.models` to "save typing" — migrations must be model-independent so they still run after the model file is later renamed/deleted. diff --git a/backend/.claude/conventions/model.md b/backend/.claude/conventions/model.md deleted file mode 100644 index 7ad3e53e..00000000 --- a/backend/.claude/conventions/model.md +++ /dev/null @@ -1,108 +0,0 @@ -# Model conventions (`app/models/`) - -Authoritative conventions for SQLModel entities in kaapi-backend. Models live in `app/models/` -and follow a strict house style. Read `app/models/user.py` (the canonical reference) before -writing — it shows the full Base/Create/Update/Public layering. - -## Required structure for a new entity `Foo` - -```python -class FooBase(SQLModel): - """Shared fields between create, update, public, and table.""" - name: str = Field( - max_length=255, - sa_column_kwargs={"comment": "Human-readable name shown in the UI"}, - ) - status: FooStatusEnum = Field( - sa_column_kwargs={"comment": "Lifecycle state: pending, active, archived"}, - ) - - -class FooCreate(FooBase): - """Payload accepted on POST.""" - # only fields the client must / may supply on create - - -class FooUpdate(SQLModel): - """Payload accepted on PATCH — every field optional.""" - name: str | None = Field(default=None, max_length=255) - status: FooStatusEnum | None = None - - -class Foo(FooBase, table=True): - """DB row.""" - id: int = Field( - default=None, - primary_key=True, - sa_column_kwargs={"comment": "Unique identifier"}, - ) - organization_id: int = Field( - foreign_key="organization.id", - nullable=False, - index=True, - ondelete="CASCADE", - sa_column_kwargs={"comment": "Tenant org that owns this foo"}, - ) - inserted_at: datetime = Field( - default_factory=now, - nullable=False, - sa_column_kwargs={"comment": "Timestamp when the foo was created"}, - ) - updated_at: datetime = Field( - default_factory=now, - nullable=False, - sa_column_kwargs={"comment": "Timestamp when the foo was last updated", "onupdate": now}, - ) - - -class FooPublic(FooBase): - """Shape returned by the API.""" - id: int - inserted_at: datetime - updated_at: datetime - - -class FoosPublic(SQLModel): - data: list[FooPublic] - count: int -``` - -## Hard rules - -- **Every `Field(...)` gets `sa_column_kwargs={"comment": "..."}`.** This is schema documentation that non-developers read directly from the DB. Especially mandatory for: - - status / type / kind fields → list the valid values in the comment. - - JSON columns → describe the expected structure. - - Foreign keys → name the relationship. - - Anything whose purpose isn't obvious from the name. - - The comment must **add information**, not echo the field — `comment="The user's email address"` on an `email` field is noise. State the non-obvious: valid values, units, format, the relationship, or a constraint. If the only honest comment would restate the name, the field is self-documenting and a terse comment is fine — don't pad it. -- **Timestamps are `inserted_at` and `updated_at`.** NOT `created_at`. Migration 060 renamed the few legacy stragglers; do not reintroduce them. -- **Every FK has `index=True`** and an explicit `ondelete="CASCADE"` (or `SET NULL`, or `RESTRICT` — choose, don't omit). -- **Enums end in `Enum`.** `FooStatusEnum`, not `FooStatus`. snake_case for values when stored as strings. -- **JSON columns are for opaque metadata only.** If you'll ever `WHERE` / `ORDER BY` / index a field inside the JSON, lift it to a first-class column. Tell the user when you make this call. -- **Type hints use `|` unions** (Python 3.10+): `str | None`, not `Optional[str]`. - -## Naming - -- Class name = singular PascalCase: `Foo`, `Document`, `ApiKey`. -- Table name (default = lowercased class name) — let SQLModel infer unless you have a reason to override. -- Plural Public wrapper: `FoosPublic` (matches `UsersPublic`). -- Enum values: lowercase snake_case strings if string-valued. - -## Validation - -- Validate at the model layer with `Field(min_length=..., max_length=..., regex=..., ge=..., le=...)`. Don't push trivial validation into routes. -- `EmailStr` from `pydantic` for emails, not `str`. -- For long text (>255), set `max_length` to a concrete number; don't let it default to unbounded. - -## Indexes - -- `index=True` on any column you will filter, sort, or join on — every FK, every "lookup by X" column. -- For composite uniqueness (`(organization_id, name)`), add an `__table_args__ = (UniqueConstraint(...),)` block. Don't rely on app-level checks. - -## What you DO NOT do - -- Don't write the migration *in the model file* — the model is pure data shape. The matching migration is a separate file under `app/alembic/versions/`; write it (per `.claude/conventions/migration.md`) right after the model, using rev-id `NNN+1`. -- Don't import from `fastapi`, `app.crud`, or `app.services` in a model file. Models are leaf nodes. -- Don't use `setattr` on instances of these models. Use `model_copy(update={...})` or `sqlmodel_update(...)` (see `app/crud/user.py:update_user` for the pattern). -- Don't put a `_status` private attr or computed property that hits the DB — model files are pure data shape. -- Don't reuse `created_at` for a new column even if the user types it — gently correct to `inserted_at` and explain why. diff --git a/backend/.claude/conventions/route.md b/backend/.claude/conventions/route.md deleted file mode 100644 index bfd50e7a..00000000 --- a/backend/.claude/conventions/route.md +++ /dev/null @@ -1,84 +0,0 @@ -# Route conventions (`app/api/routes/`) - -Authoritative conventions for FastAPI endpoints in kaapi-backend. Routes live in -`app/api/routes/` and follow a strict house style. Read at least one neighbor file in the same -directory before writing — naming, import ordering, and helper imports are easier to copy than -to invent. - -## Required ingredients for every endpoint - -1. **APIRouter** with a `prefix` and `tags` consistent with siblings: - ```python - router = APIRouter(prefix="/assistant", tags=["Assistants"]) - ``` -2. **`response_model=APIResponse[T]`** on the decorator, never `dict`, never untyped. Use the actual Pydantic / SQLModel return type, not `Any`. -3. **`status_code=201` / `204`** on create / delete; default 200 is fine for GET / PATCH. -4. **`description=load_description("/.md")`** instead of inline docstrings for the swagger description. The matching markdown lives at `backend/app/api/docs//.md` — create it in the same change. -5. **`dependencies=[Depends(require_permission(Permission.XYZ))]`** when the endpoint is restricted. Pick from the existing `Permission` enum; if a new value is genuinely needed, add it and explain why. -6. **`SessionDep` and `AuthContextDep`** for db + current user/org/project. Never re-implement these. -7. **Return `APIResponse.success_response(...)`** at the end — never a raw model. -8. **Type hints on every parameter and the return.** Path/query params use `Annotated[..., Path(description=...)]` / `Annotated[..., Query(...)]`. - -## Canonical example (matches `app/api/routes/users.py:120`) - -```python -@router.get( - "/me", - description=load_description("users/get_me.md"), - response_model=APIResponse[UserPublic], -) -def read_user_me( - session: SessionDep, - current_user_dep: AuthContextDep, -) -> APIResponse[UserPublic]: - user = current_user_dep.user - return APIResponse.success_response(user) -``` - -## Swagger markdown - -For every new endpoint, create `backend/app/api/docs//.md`. Keep it terse — 1-3 short paragraphs. Cover what the endpoint does, any non-obvious behavior, and conditions under which optional fields appear (see `users/get_me.md` for the shape). - -## Layering rules - -- **Routes are thin.** Pull arguments, call a CRUD or service function, wrap the result. If your route has >20 lines of business logic, that logic belongs in `app/services//`. -- **HTTPException is allowed here.** Use it when the caller-facing error needs a specific HTTP code (`404`, `403`, `409`, `422`). Catch domain exceptions from CRUD/services and translate. -- **Never call third-party HTTP from a route.** That belongs in `app/services/`. -- **Never write SQL or `session.exec(select(...))` in a route.** Use a CRUD function. If one doesn't exist, write it in the `crud` layer (per `.claude/conventions/crud.md`) before wiring the route. - -## Status codes (the ones to get right) - -- `201` on POST create. -- `204` on DELETE (no body — return nothing, not `APIResponse.success_response(None)`). -- `409` on conflict (unique constraint violation, duplicate name). -- `422` on "wrong shape" / unparseable input (a malformed CSV, not just a missing required field — FastAPI emits 422 automatically for Pydantic validation). -- `400` for genuinely "bad client input that's not a shape issue". -- Don't return 200 + `{"error": "..."}` — raise `HTTPException` with the right code. - -## Ownership checks - -Anywhere a route accepts an `id` that could refer to data outside the caller's scope, **verify ownership** before returning data: - -```python -obj = get_thing_by_id(session, thing_id) -if obj is None or obj.organization_id != current_user.organization_.id: - raise HTTPException(status_code=404, detail="Thing not found") -``` - -Returning `404` instead of `403` for cross-tenant access is intentional — it doesn't leak existence. - -## Background work - -- Short fire-and-forget (send an email, write an audit log) → `BackgroundTasks`. -- Heavy or retryable (LLM call, large doc transform, anything with timeouts) → Celery task in `app/celery/tasks/`, written per `.claude/conventions/celery.md`. - -## Logging - -`logger = logging.getLogger(__name__)` at the module top. Every line is `logger.info(f"[handler_name] Message | key: {value}")`. Log non-trivial actions (creates, deletes, ownership failures) — don't spam `info` on every GET. Mask sensitive values with `mask_string` from `app.utils`. - -## What you DO NOT do - -- Don't add the route registration in `app/api/main.py` (or wherever the aggregator lives) without checking the existing alphabetical / grouped order. -- Don't return raw `dict`, `JSONResponse`, or untyped responses. -- Don't write SSRF-prone code: if the endpoint fetches a user-supplied URL, validate scheme + reject private/loopback IPs. -- Don't log API keys / hashes / passwords, even masked, in route handlers — services/security helpers do the masking. diff --git a/backend/.claude/conventions/service.md b/backend/.claude/conventions/service.md deleted file mode 100644 index 5a52cf76..00000000 --- a/backend/.claude/conventions/service.md +++ /dev/null @@ -1,103 +0,0 @@ -# Service conventions (`app/services/`) - -Authoritative conventions for business-logic services in kaapi-backend. Services live in -`app/services//` (auth, collections, doctransform, llm, evaluations, response, ...). -Services are where orchestration happens — they call CRUD for DB work and call external HTTP -libraries for third-party APIs. - -## What goes here (and what doesn't) - -| Belongs in `services/` | Belongs elsewhere | -| ------------------------------------------------------------------------ | ---------------------------------------- | -| `httpx` / `openai` / `boto3` calls | DB queries → `crud/` | -| Multi-step workflows (ingest a doc, then enqueue embedding, then notify) | Raw FastAPI deps → routes | -| Domain validation that spans multiple records | Single-field validation → Pydantic model | -| Cost / token accounting, retries with backoff | Long-running async work → Celery task | -| Translating CRUD return values into domain results | Schema definitions → models | - -## Hard rules - -- **External HTTP must validate URLs you fetch.** Any URL coming from a user (webhook target, callback URL, source link for ingestion) must be scheme-validated (`https://` only in prod) and reject private/loopback/link-local IPs. SSRF is a blocker, not a follow-up. -- **`try` wraps only the throwing line(s).** Big try blocks are the #1 source of swallowed 404s becoming 500s. -- **Concrete exception types** — `except httpx.HTTPStatusError as e:`, not `except Exception`. -- **Logger prefix:** every line is `logger.info(f"[function_name] Message | key: {value}")`. Mask credentials / API keys / hashes / emails with `mask_string` from `app.utils`. Log start + finish of external HTTP calls and any retry. -- **Keyword-only args** for anything more than `(session, x)`, matching the CRUD convention. -- **Type hints on every parameter and return.** No `-> Any`. - -## `HTTPException` in services - -It's acceptable here — `services/auth.py` raises `HTTPException` directly when the domain failure maps cleanly to an HTTP status. Use it sparingly; when the same service may be called from a Celery task or CLI, prefer a domain exception that the route layer translates. - -## Canonical example (from `app/services/auth.py`) - -```python -import logging -from datetime import timedelta - -from app.core import security -from app.core.config import settings -from app.utils import mask_string - -logger = logging.getLogger(__name__) - - -def create_token_pair( - user_id: int, - organization_id: int | None = None, - project_id: int | None = None, -) -> tuple[str, str]: - """Create an access token and refresh token pair.""" - access_token = security.create_access_token( - user_id, - expires_delta=timedelta(minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES), - organization_id=organization_id, - project_id=project_id, - ) - refresh_token = security.create_refresh_token( - user_id, - expires_delta=timedelta(minutes=settings.REFRESH_TOKEN_EXPIRE_MINUTES), - organization_id=organization_id, - project_id=project_id, - ) - logger.info(f"[create_token_pair] Token pair issued | user_id: {user_id}, access_token: {mask_string(access_token)}") - return access_token, refresh_token -``` - -Delegation to `app.core.security` is the pattern — services orchestrate; primitives live in `app/core/`. - -## External HTTP — checklist - -When wrapping an external SDK or raw HTTP call, follow `.claude/conventions/error-handling.md` for the full pattern (source-tagged `[KAAPI]`/`[]` messages, fault-based log levels, typed exception ladders). - -- **Timeout** — every `httpx`/`requests` call has an explicit timeout. The default is too long. -- **Retry policy** — idempotent GETs can retry with backoff. Mutations should retry only if you're certain the API is idempotent or you have an idempotency key. -- **Error mapping** — `httpx.HTTPStatusError` → a domain exception or `HTTPException` with a sensible code (often 502 for upstream failures, NOT 500). -- **Mock at this boundary in tests** — `monkeypatch` the HTTP client, not the DB. (See `test-writer` agent.) - -## Calling CRUD - -- Services own the `session` lifecycle for the operation. Call CRUD functions with `session=session` keyword arg. -- If CRUD returns `None`, decide whether that's a domain error (`raise NotFoundError`), a 404 (`raise HTTPException(404)`), or a silent skip (`return early`). Be explicit. - -## Config / secrets - -- Read from `settings` (`app.core.config`). Never read `os.environ` directly in a service. -- Defaults should lean toward cheap/safe: smallest model, lowest token cap, shortest TTL. Aggressive defaults belong in env, not code. - -## Reuse existing helpers - -The grep-first rule applies to _functions_, not just literals. Before hand-writing a helper that does anything generic — instantiating an external SDK client, mapping that SDK's exceptions, building or parsing a domain payload, reading/writing cloud storage, loading config — grep the whole tree first. These almost always exist already, and rarely in a neighbor file, so search by behavior (the SDK class, the model type, the storage call), not by directory. - -Signs you're about to reinvent: instantiating a vendor client inline (`Anthropic(...)`, `OpenAI(...)`, `boto3.client(...)`); a long `except`-ladder over an SDK's error types; chains of `.get(...).get(...)` over a payload that has a typed model elsewhere. Prefer calling the existing function over reimplementing it; reach for a new helper only once you've confirmed none fits. - -## Magic values - -If you write the string `"openai"` or `"text-embedding-3-small"` or `1_000_000` in a service, ask whether it should be a constant / Enum / setting. Grep for the same literal — if it appears elsewhere, it should already be a constant. - -## What you DO NOT do - -- Don't write SQL directly — call CRUD. -- Don't import `fastapi.APIRouter` or define routes. -- Don't write long-running blocking loops — that's a Celery task. -- Don't call `time.sleep` inside an `async def` (use `asyncio.sleep`). -- Don't catch `HTTPException` from a sub-call and swallow it — propagate. diff --git a/backend/.claude/hooks/wiki-update.sh b/backend/.claude/hooks/wiki-update.sh deleted file mode 100755 index 1b425e8b..00000000 --- a/backend/.claude/hooks/wiki-update.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# Stop hook: structural code change without a docs/wiki update -> block stop with a -# one-line reminder. Silent (0 tokens) in every other case. Detector stays dumb on -# purpose: file->wiki-page mapping lives in docs/wiki/INDEX.md, Claude resolves it. -INPUT=$(cat) -grep -Eq '"stop_hook_active"[[:space:]]*:[[:space:]]*true' <<<"$INPUT" && exit 0 -cd "$CLAUDE_PROJECT_DIR" 2>/dev/null || exit 0 -BASE=$(git merge-base origin/main HEAD 2>/dev/null || echo HEAD) -CHANGED=$({ git diff --name-only "$BASE" 2>/dev/null; git status --porcelain -uall 2>/dev/null | awk '{print $NF}'; } | sort -u) -STRUCT=$(grep -E '^backend/app/(api/routes|models|services|crud|celery/tasks)/' <<<"$CHANGED") -[ -z "$STRUCT" ] && exit 0 -grep -q '^docs/wiki/' <<<"$CHANGED" && exit 0 -FILES=$(head -5 <<<"$STRUCT" | tr '\n' ' ' | tr -d '"\\') -printf '{"decision":"block","reason":"Structural change without wiki update: %s— update the matching docs/wiki/modules/*.md page (names+paths only, via docs/wiki/INDEX.md), and docs/wiki/domain-map.md if entities/edges changed. If no update is needed, state why and stop."}\n' "$FILES" diff --git a/backend/.claude/settings.json b/backend/.claude/settings.json deleted file mode 100644 index d61a1660..00000000 --- a/backend/.claude/settings.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "hooks": { - "Stop": [ - { - "hooks": [ - { - "type": "command", - "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/wiki-update.sh", - "timeout": 15, - "statusMessage": "Checking wiki freshness" - } - ] - } - ] - } -} diff --git a/backend/.claude/skills/grill-me/SKILL.md b/backend/.claude/skills/grill-me/SKILL.md deleted file mode 100644 index bd04394c..00000000 --- a/backend/.claude/skills/grill-me/SKILL.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: grill-me -description: Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me". ---- - -Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer. - -Ask the questions one at a time. - -If a question can be answered by exploring the codebase, explore the codebase instead. diff --git a/backend/.claude/skills/srd-creator/SKILL.md b/backend/.claude/skills/srd-creator/SKILL.md deleted file mode 100644 index 59583788..00000000 --- a/backend/.claude/skills/srd-creator/SKILL.md +++ /dev/null @@ -1,150 +0,0 @@ ---- -name: srd-creator -description: Create a Software Requirements Document (SRD) for a Kaapi feature. Use when the user wants to write, draft, scaffold, or plan an SRD / spec / requirements doc for a new feature or capability (e.g. an evaluation pipeline, a new endpoint set, a provider integration). Produces a structured markdown SRD from the standard Kaapi template. ---- - -# SRD Creator - -Generate a Software Requirements Document for a Kaapi feature, matching the house -style of the existing Evaluation / Fast Evaluation / STT Evaluation SRDs. - -An SRD is the contract written *before* code: what to build, why, what is in/out -of scope, the execution flow, the API surface, and the DB schema, specific enough -that an engineer can build it and a reviewer can test each row of the Functional -Requirements table against the running system. Testable spec, not design prose. - -## A PRD is mandatory - -**The SRD is derived solely from a PRD.** If the user has not supplied one (a file -path or pasted content), stop and ask. Do not invent the problem, scope, or -requirements from the conversation. No PRD → no SRD. - -Division of sources: the PRD supplies the *what and why* (problem, scope, goals, -personas); the codebase (via the wiki and model files) supplies the *shapes of -what already exists* (tables, models, endpoints). Never the reverse: don't pull -scope from the codebase, don't pull schemas from the PRD or memory. - -## Workflow - -1. **Read the reference, then the wiki.** - - `reference/srd-guide.md` (what each section means), `reference/srd-template.md` - (the skeleton). Skim a prior `features/*/SRD.md` if unsure of house style. - - Codebase knowledge comes from the wiki, not memory or ad-hoc greps: open - `docs/wiki/INDEX.md`, load the touched domain's `docs/wiki/modules/*.md` page - (routes, tables → model-file map, schemas, services, external boundaries). - Follow its link into `docs/architecture/*.md` only for a design question; - never bulk-load those. - -2. **Load the Rules (below) into a `TodoWrite` list before writing.** Tick each as - sections land; run a final pass over them before output. - -3. **Blast-radius check** (after reading the PRD, before writing). Open - `docs/wiki/domain-map.md`; name the primary entity(ies) in the map's vocabulary - and collect the 1-hop and 2-hop `consumed by` surfaces (tables, logical and - external consumers). For every surface the PRD does not address, ask the user: - in scope / deferred / out of scope, never silently include or exclude. Record the - decisions in Assumptions. - - **Schema comes from code, never memory.** Before writing or reusing any table, - Read its `models/*.py` file (path from the module page's tables list); column - names, types, nullability, and JSONB shapes in the SRD must match it. Propose a - new table only when the domain map + model files show nothing existing fits. - -4. **Read the PRD and map it onto the template.** Problem → Introduction, Goals → - Goals, Users → personas, scope → Assumptions & phasing. Anything the PRD leaves - open goes under *Design Decisions / Known Limitations* as an open question, never - fabricated. Drop optional sections that don't apply. Resources links are never - guessed: ask the user for the real Google Docs / PRD / related-SRD URLs, or drop - the section. - -5. **Write the Functional Requirements table** as the testable core (per the Rules). - -6. **Output** at `features//SRD.md` (kebab-case slug, e.g. - `features/account-balances/SRD.md`). If a `PRD.md` already exists for the feature - (from `start-prd`), write `SRD.md` alongside it and reuse that slug exactly; do - not fork a parallel folder. The H1 is the feature's display name - (e.g. `# Account Balances SRD`). - -7. **Render the one execution-flow diagram.** Write a mermaid source, render it with - the helper (high-res png, no global installs, uses `npx`), and leave a placeholder - band naming the file, do not embed it inline (the author exports to Google Docs - and pastes the image at the band): - ```bash - scripts/render-diagram.sh flow-a.mmd features//assets/flow-a.png - ``` - The band is horizontal-rule fenced (Google Docs turns `---` into a real line): - ```markdown - --- - - **>> PLACE IMAGE HERE: `assets/flow-a.png`, .** - System-level sequence: the user and the real systems involved. - - --- - ``` - -## Rules - -The completion checklist. Each is a checkable condition; verify every one before -output. - -- **Single source of truth.** State each fact once, in its home section; later - sections reference it ("as in Goals"), never restate it. Goals are outcomes, not - echoes of the Introduction; Assumptions are boundaries, not re-listed goals; FR - acceptance criteria are checkable conditions, not restatements of the behavior - column. Repetition across sections is the #1 cause of bloated SRDs. No filler or - hedging: every sentence adds new information. -- **Every claim traces to the PRD.** No fact in the SRD that the PRD didn't supply - (scope, goals) or the code confirmed (schemas). Open items go to Design Decisions, - never fabricated. -- **High-level only.** Behavior and interfaces, not internals. Allowed: DB schema - (tables, columns, constraints), object/class and endpoint contracts, error codes, - settings. Not allowed: function names, private helpers, internal variable/field - names, stage/step internals, concurrency-pool names, the reader sees those in PR - review. Name *what* a thing does and *which entity* holds it, not the symbol. -- **Reuse existing models, don't invent.** Order: (1) reuse as-is, (2) extend/compose - the existing one, (3) only if nothing fits, add a new shape and say why. A reviewer - asking "can't we reuse X?" is a failure of this rule. - - Reuse at the **highest-level wrapper that fits**, not the innermost params model. - When the codebase already has a wrapper that solves the whole problem (e.g. "an - ad-hoc value OR a reference to a saved, versioned one"), spec that wrapper whole; - never re-spec its parts as bespoke sibling fields. - - Prefer a **per-request config field over a per-project binding table.** A binding - table plus its CRUD duplicates a saved/versioned config's persistence and adds - uniqueness + tenant-isolation surface for no gain. Add one only when "set once, - applies to every future request with nothing sent" is an explicit requirement. -- **Match system naming.** snake_case columns/fields, table names, and class names - follow the codebase and reuse existing names; grep for an existing name before - coining a new one. The schema must not read like it came from a different system. -- **Ripple: one design story, end to end.** When anything changes (schema, field, - endpoint, table, flow), sweep every section that touched the old design - (Introduction, Goals, Assumptions, Detailed Design, every FR row, every endpoint's - request/response/error, DB schema, Design Decisions). The done condition: grep the - SRD for the superseded names/phrases, zero hits. A doc where one section speaks the - new design and another the old is worse than either alone. -- **Kaapi DB conventions.** `inserted_at`/`updated_at` (not `created_at`), - `organization_id` + `project_id` on every multi-tenant table, snake_case, FK - indexes. Filterable data as first-class columns; bag-of-attributes as `JSONB`. -- **Phase the scope explicitly.** Phase 1 (build now) vs Phase 2+ (later), so scope - creep is visible. -- **Functional Requirements are PR-testable behaviors only.** Each row = one - user-facing behavior + a concrete, checkable acceptance criterion + a Status. If - you can't write a checkable criterion, the requirement is too vague, sharpen it. - Drop rows that restate the Intro/Goals or describe internal mechanics. Lean beats - exhaustive. -- **Real request/response JSON for every endpoint**, not just field lists. Error - responses show the actual client-facing message string (or a field-specific - validation example), not a paraphrase of a self-explanatory status code. -- **One image: the execution flow.** Rendered to `assets/flow-a.png`, referenced by - the placeholder band. No second image: a secondary flow (e.g. config CRUD) is prose - plus the Endpoints section, and the **DB schema is always column tables, never a - diagram**. The flow shows the user and the real systems that talk to each other, - not internal pipeline steps as separate lanes. No inline `![](...)`, no mermaid - blocks, no HTML/inline CSS, no emoji, no em dashes (the Google Docs importer strips - the first three; use commas, periods, or parentheses for the last). -- **Don't pad.** Each section earns its place; delete inapplicable optional sections - rather than leaving them empty. - -## Before output - -- Every Rule above holds (todos ticked). -- All required sections present (see the guide's section checklist). -- Grep the SRD for any superseded name/phrase from a revision: zero hits. diff --git a/backend/.claude/skills/srd-creator/reference/srd-guide.md b/backend/.claude/skills/srd-creator/reference/srd-guide.md deleted file mode 100644 index 7864a5c6..00000000 --- a/backend/.claude/skills/srd-creator/reference/srd-guide.md +++ /dev/null @@ -1,122 +0,0 @@ -# SRD Guide, what each section is and how to write it - -An SRD (Software Requirements Document) is the testable contract between whoever -requested the feature and whoever builds it, written before implementation: a -reviewer can take the Functional Requirements table and check each row against the -running system. - -This guide describes each section, derived from the Kaapi Evaluation, Fast Evaluation, -and STT Evaluation SRDs. Use `srd-template.md` as the fill-in skeleton. - -This guide covers *section semantics only* — what belongs in each section. The -process and the Rules (no redundancy, reuse, naming, ripple) live in `SKILL.md` and -are not repeated here. - ---- - -## 1. Introduction & Purpose *(required)* - -The "what and why" in a few short paragraphs. -- One sentence: what capability this SRD defines and for which system. -- The problem / motivation, what's painful today, who feels it (name the early - users if known). -- What the feature produces at minimum (the concrete outputs). -- Explicit phasing: what is Phase 1, what is deferred to Phase 2/3. This is where - scope gets pinned down before anyone argues about it later. -- One line on intent / quality bar (e.g. "repeatable, comparable, auditable"). - -## 2. Resources *(optional)* - -Links to related SRDs, external API docs, research notes, design docs. **Ask the -user for the real links** (Google Docs, PRD, related SRDs), never fabricate or -guess paths/URLs. Drop the section if the user has nothing to link. - -## 3. Goals *(required)* - -A short bulleted list of what success looks like. Each goal is an outcome, not a -task. Keep it to the handful that actually define done. Examples of the shape: -- "Users can run synchronously with one new request option." -- "Identical semantics to the existing path." -- "Failure isolation, one item's failure must not fail the whole run." - -## 4. Assumptions & Constraints *(required)* - -The boundary conditions the design assumes true. This is where you fence the scope. -Cover: -- What's explicitly **out of scope**. -- Hard limits / caps (size caps, thresholds, rate limits). -- Data assumptions (input format, required columns, change frequency). -- Reuse decisions ("No new tables. Reuse "). -- Pricing / billing notes if external paid APIs are involved. - -## 5. Detailed Design (Execution Flow) *(required)* - -How it runs, with brief supporting text, not a long numbered paragraph. Keep the -text to what the diagram can't carry: failure isolation, idempotency, resolution -rules. Diagram mechanics (one image, placeholder band, no HTML/emoji) are in -`SKILL.md`. - -## 6. Functional Requirements (Testing) *(required, the core)* - -A table, one row per user-facing behavior. Columns: - -| ID | What (user-facing behavior) | Acceptance criteria | Status | - -- **ID**: `FR-1`, `FR-2`, … -- **What**: a single behavior in plain language ("Reject a request that exceeds - the configured cap"). -- **Acceptance criteria**: the concrete, checkable condition ("Returns 422 with - the specific error code and the actual offending count"). -- **Status**: `Not Started` / `In Progress` / `Done`. Lifecycle: the SRD ships with - every row `Not Started`; the builder flips a row to `In Progress` when its - implementation starts, and `/pr-review` (or the reviewer) flips it to `Done` only - after verifying the acceptance criterion against the diff. - -This table is what QA and review run against. - -## 7. Endpoints *(required when the feature has an API)* - -One block per endpoint. For each: -- Method + path. -- One-line description of what it does. -- Request: body fields (a field table with Type / Required / Default / Description - for non-trivial bodies) and an example JSON body. -- Response: example JSON for the success case. -- Error responses table where relevant: Status / Code / When. - -Always show real JSON examples, not just prose. Reuse existing endpoints where -possible and call out only the new fields ("Existing endpoint, with one new -optional field"). - -## 8. Database Schema / Tables *(required when there's a data model)* - -Per table, a column table: - -| Column | Type | Nullable | Default | Description | - -Then a **Constraints** list: primary key, unique constraints (name them, -`uq_
_` pattern), foreign keys, indexes. Conventions and reuse rules are -in `SKILL.md`. One guide-level note: when reusing a table, state "No new tables" and -list only the added columns / constraints, with the backfill plan for new non-null -columns. - -## 9. Configuration *(optional)* - -New application settings the feature introduces (env vars / settings keys), with -type and default. Drop if there are none. - -## 10. Design Decisions / Known Limitations *(optional)* - -Non-obvious choices and their rationale ("X deliberately does not route through -the existing Y path because…"), plus known gaps to revisit. Captures the "why" -so the next reader doesn't re-litigate it. - ---- - -## Section checklist - -Required: Introduction & Purpose · Goals · Assumptions & Constraints · -Detailed Design · Functional Requirements · Endpoints (if API) · DB Schema (if data). -Optional: Resources · Configuration · Design Decisions / Known Limitations. - -Before output, verify every **Rule** in `SKILL.md`. diff --git a/backend/.claude/skills/srd-creator/reference/srd-template.md b/backend/.claude/skills/srd-creator/reference/srd-template.md deleted file mode 100644 index 7de01e96..00000000 --- a/backend/.claude/skills/srd-creator/reference/srd-template.md +++ /dev/null @@ -1,140 +0,0 @@ - - -# SRD - -## Introduction & Purpose - -<1–2 sentences: what capability this SRD defines and for which system (Kaapi).> - - - - -- -- - - -- **Phase 1:** -- **Phase 2+:** - - - -## Resources - -- -- -- - -## Goals -- -- -- - -## Assumptions & Constraints -- **Out of scope:** -- **Limits / caps:** -- **Data assumptions:** -- **Reuse:** -- **Pricing:** - -## Detailed Design (Execution Flow) - - - -### - ---- - -**>> PLACE IMAGE HERE: `assets/flow-a.png`, .** - ---- - - - - - -### - - - -## Functional Requirements (Testing) - -| ID | What (user-facing behavior) | Acceptance criteria | Status | -|----|-----------------------------|---------------------|--------| -| FR-1 | | | Not Started | -| FR-2 | | | Not Started | -| FR-3 | | | Not Started | - -## Endpoints - -### ` /` - - -**Request body:** - -| Field | Type | Required | Default | Description | -|-------|------|----------|---------|-------------| -| | | | | | - -```json -{ - "": "" -} -``` - -**Response:** - -```json -{ - "": "" -} -``` - -**Error responses:** - -| Status | Code | When | -|--------|------|------| -| 422 | | | -| 409 | | | - - - -## Database Schema - - - -### `` - - -| Column | Type | Nullable | Default | Description | -|--------|------|----------|---------|-------------| -| id | INTEGER (PK) | NO | auto-increment | Unique identifier | -| | | | | | -| organization_id | INTEGER | NO | n/a | Reference to the organization | -| project_id | INTEGER | NO | n/a | Reference to the project | -| inserted_at | TIMESTAMP | NO | now() | Created timestamp | -| updated_at | TIMESTAMP | NO | now() | Last-updated timestamp | - -**Constraints:** -- ``: UNIQUE on () -- FK
.-- Index on - - - -## Configuration - - -| Setting | Type | Default | Description | -|---------|------|---------|-------------| -| | | | | - -## Design Decisions / Known Limitations - -- **:** -- **Known limitation:** diff --git a/backend/.claude/skills/srd-creator/scripts/render-diagram.sh b/backend/.claude/skills/srd-creator/scripts/render-diagram.sh deleted file mode 100755 index 931ab561..00000000 --- a/backend/.claude/skills/srd-creator/scripts/render-diagram.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash -# Render a mermaid source to a high-quality png for an SRD. -# Usage: render-diagram.sh -# No global installs: uses npx for mermaid-cli. -set -euo pipefail - -if [[ $# -ne 2 ]]; then - echo "usage: $0 " >&2 - exit 1 -fi - -SRC="$1" -OUT="$2" -mkdir -p "$(dirname "$OUT")" - -# High-res render (wide + scaled) keeps sequence-diagram text crisp. -npx -y -p @mermaid-js/mermaid-cli mmdc -i "$SRC" -o "$OUT" -w 1600 -s 3 -b white - -echo "wrote $OUT" diff --git a/backend/.claude/skills/start-prd/SKILL.md b/backend/.claude/skills/start-prd/SKILL.md deleted file mode 100644 index 91f93d58..00000000 --- a/backend/.claude/skills/start-prd/SKILL.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -name: start-prd -description: Synthesize the current conversation into a product-level PRD (the why/what, not the how) at features//PRD.md — no interview. -disable-model-invocation: true ---- - -Synthesize the PRD from the current conversation and your codebase understanding. Do NOT interview the user — use what you already know. - -The PRD is a **product spec**. It answers one question: *why are we doing this and what does success look like?* It is written for everyone — PM, design, engineering, stakeholders — in user and business terms. - -**Hard boundary — the PRD does NOT contain** databases, APIs, algorithms, infrastructure, code structure, or how anything is built. If you find yourself naming a table, an endpoint, or a module, stop: that belongs in the SRD (Software Requirements Doc), not here. - -## Process - -1. Understand the current state of the codebase, if you haven't already: start with `docs/wiki/INDEX.md` + `docs/wiki/domain-map.md` and the relevant `docs/wiki/modules/*.md` page(s) — they carry the domain vocabulary the PRD should use. Explore the repo directly only for what the wiki doesn't answer. - -2. Draft the PRD using the template below, keeping every section strictly product-level. Before finalizing, check with the user that the **Goals**, **Non-Goals**, and **which stories are must-have** match their expectations — these three are where misalignment hides. - -3. Write the finished PRD to `features//PRD.md`, where `` is a short kebab-case slug (e.g. `features/account-balances/PRD.md`); create the directory if it doesn't exist. If an `SRD.md` already exists for this feature (from the `srd-creator` skill), reuse its slug exactly and write `PRD.md` beside it — don't create a parallel folder. This file is the deliverable, referenced later when building the SRD and Engineering Plan. - - - -## Problem Statement - -The user pain or business need, from the user's perspective. Why does this matter, and to whom? - -## Goals - -The desired outcomes — what we want to be true once this ships. State them qualitatively; the numbers live in Success Metrics. - -## Non-Goals - -What is explicitly out of scope. Drawing this line prevents scope creep and misaligned reviews. - -## Success Metrics - -How we'll know it worked — the KPIs or targets that should move if this succeeds. - -## Users / Personas - -Who this is for — the actors who will use or be affected by the feature. - -## User Stories / Use Cases - -Group stories under a **persona heading** (one per Persona above). Don't repeat "As a " on every line — the heading carries it. Order personas primary-first and, within each, must-have-first. Tag every story `[must-have]` or `[nice-to-have]`. Every Persona above should carry at least one story, and every Goal above should trace to at least one. Number stories continuously across the whole section (don't restart per persona). Format: - -**As a :** - -1. `[must-have]` I want a , so that -2. `[nice-to-have]` I want a , so that - - -**As a mobile bank customer:** - -1. `[must-have]` I want to see the balance on my accounts, so that I can make better informed decisions about my spending -2. `[nice-to-have]` I want to filter transactions by category, so that I can see where my money goes - - -## UX / Flows - -The experience at a high level — key user flows, screens, and interactions. Link mockups if they exist. Describe what the user sees and does, not how it's implemented. - - From bdca1d99968b5f15a5a8ecd725ed6b84e0cba44e Mon Sep 17 00:00:00 2001 From: Prajna1999 Date: Tue, 1 Sep 2026 17:10:52 +0530 Subject: [PATCH 09/11] comment string on parse_csv_list --- backend/app/api/deps.py | 25 +++---------------------- backend/app/core/config.py | 8 ++++---- 2 files changed, 7 insertions(+), 26 deletions(-) diff --git a/backend/app/api/deps.py b/backend/app/api/deps.py index 02253ad1..34ca5580 100644 --- a/backend/app/api/deps.py +++ b/backend/app/api/deps.py @@ -41,16 +41,10 @@ class TenantContext: def check_source_ip(request: Request) -> None: - """ - 403 for callers whose source IP is not in ALLOWED_IPS. - - Runs before the token and tenant checks so a caller from an unexpected - origin never learns whether its bearer token is valid. - """ + """403 for callers whose source IP is not in ALLOWED_IPS.""" if settings.ALLOWED_IPS: allowed = settings.ALLOWED_IPS if isinstance(allowed, str): - # Defense in depth: never substring-match a raw string. allowed = [allowed] client_ip = request.client.host if request.client else None if client_ip not in allowed: @@ -67,9 +61,7 @@ def check_bearer_token( Security(security), ], ) -> None: - """ - 401 for a missing or invalid bearer token. Only reached from a whitelisted IP. - """ + """401 for a missing or invalid bearer token.""" if credentials is None: raise _unauthorized("Missing Authorization header") @@ -85,18 +77,7 @@ def verify_caller( organization_id: Annotated[int, Header(alias="X-ORGANIZATION-ID")], project_id: Annotated[int, Header(alias="X-PROJECT-ID")], ) -> TenantContext: - """ - Authenticates the single trusted caller (kaapi-backend) by static bearer token - and source IP, and returns the tenant it resolved from the end user's API key. - - Tenant scope is never read from the query string or request body, so a route - cannot be tenant-unscoped: the dependency that authenticates it also supplies - the tenant. - - Check order (403 -> 401 -> 422): source IP, then bearer token, then tenant - headers. The IP check comes first on purpose so a caller from an unexpected - origin gets 403 whether or not its token was valid. - """ + """Authenticates the trusted caller and returns its tenant scope.""" return TenantContext(organization_id=organization_id, project_id=project_id) diff --git a/backend/app/core/config.py b/backend/app/core/config.py index bd25a11f..b4126358 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -15,14 +15,14 @@ from pydantic_settings import BaseSettings, SettingsConfigDict from typing_extensions import Self +#1. A comma-separated string like "1.2.3.4,5.6.7.8" → splits on , and strips whitespace. +#2. A JSON-encoded array string like '["1.2.3.4","5.6.7.8"]' +# (some env/deploy tooling JSON-encodes list-valued env vars) → parses it with json.loads. def parse_csv_list(v: Any) -> list[str] | str: if isinstance(v, str): if v.lstrip().startswith("["): - # A JSON-array value (e.g. an env var that was JSON-encoded): - # parse it so ALLOWED_IPS is always a real list. A raw string - # here would make the IP check do substring matching instead of - # exact matching. + try: parsed = json.loads(v) except json.JSONDecodeError: From 4ac04ed4fe8be511fcef246b6a6f0ae22b72f415 Mon Sep 17 00:00:00 2001 From: Prajna1999 Date: Tue, 1 Sep 2026 17:15:36 +0530 Subject: [PATCH 10/11] chore: rename parse ip func --- backend/app/core/config.py | 6 +++--- backend/app/tests/test_config.py | 18 +++++++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/backend/app/core/config.py b/backend/app/core/config.py index b4126358..85463882 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -19,7 +19,7 @@ #2. A JSON-encoded array string like '["1.2.3.4","5.6.7.8"]' # (some env/deploy tooling JSON-encodes list-valued env vars) → parses it with json.loads. -def parse_csv_list(v: Any) -> list[str] | str: +def parse_ip_list(v: Any) -> list[str] | str: if isinstance(v, str): if v.lstrip().startswith("["): @@ -57,8 +57,8 @@ class Settings(BaseSettings): GUARDRAILS_HUB_API_KEY: str | None = None # Source IPs allowed to reach this service (kaapi-backend). Empty = check disabled. # `| str` keeps pydantic-settings from JSON-parsing the dotenv value before - # parse_csv_list gets to split it. - ALLOWED_IPS: Annotated[list[str] | str, BeforeValidator(parse_csv_list)] = [] + # parse_ip_list gets to split it. + ALLOWED_IPS: Annotated[list[str] | str, BeforeValidator(parse_ip_list)] = [] CORE_DIR: ClassVar[Path] = Path(__file__).resolve().parent OPENAI_API_KEY: str | None = None ANSWER_RELEVANCE_LLM_MODEL: str = "gpt-4o-mini" diff --git a/backend/app/tests/test_config.py b/backend/app/tests/test_config.py index 5becb1b7..0cedc6f9 100644 --- a/backend/app/tests/test_config.py +++ b/backend/app/tests/test_config.py @@ -2,7 +2,7 @@ import pytest -from app.core.config import Settings, parse_csv_list +from app.core.config import Settings, parse_ip_list TOKEN_HASH = hashlib.sha256(b"test-token").hexdigest() @@ -22,36 +22,36 @@ def _settings(**overrides) -> Settings: return Settings(**base) -class TestParseCsvList: +class TestParseIpList: def test_single_value(self): - assert parse_csv_list("10.0.3.14") == ["10.0.3.14"] + assert parse_ip_list("10.0.3.14") == ["10.0.3.14"] def test_comma_separated_with_whitespace(self): - assert parse_csv_list("10.0.3.14, 10.0.3.15 ,10.0.3.16") == [ + assert parse_ip_list("10.0.3.14, 10.0.3.15 ,10.0.3.16") == [ "10.0.3.14", "10.0.3.15", "10.0.3.16", ] def test_empty_string(self): - assert parse_csv_list("") == [] + assert parse_ip_list("") == [] def test_blank_entries_are_dropped(self): - assert parse_csv_list("10.0.3.14,, ,10.0.3.15") == ["10.0.3.14", "10.0.3.15"] + assert parse_ip_list("10.0.3.14,, ,10.0.3.15") == ["10.0.3.14", "10.0.3.15"] def test_json_array_string_is_parsed(self): # A JSON-encoded env value must become a real list, never a raw string # that the IP check would substring-match against. - assert parse_csv_list('["10.0.3.14", "10.0.3.15"]') == [ + assert parse_ip_list('["10.0.3.14", "10.0.3.15"]') == [ "10.0.3.14", "10.0.3.15", ] def test_invalid_json_bracket_string_is_returned_as_is(self): - assert parse_csv_list("[not-json") == "[not-json" + assert parse_ip_list("[not-json") == "[not-json" def test_passthrough_list(self): - assert parse_csv_list(["10.0.3.14"]) == ["10.0.3.14"] + assert parse_ip_list(["10.0.3.14"]) == ["10.0.3.14"] class TestAllowedIpsSettings: From 8d697aa680adbb79070043fc94623eed285a3be6 Mon Sep 17 00:00:00 2001 From: Prajna1999 Date: Wed, 9 Sep 2026 17:00:08 +0530 Subject: [PATCH 11/11] chore: remove redundant test from READEME.md --- backend/logs/app.log | 21290 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 21290 insertions(+) create mode 100644 backend/logs/app.log diff --git a/backend/logs/app.log b/backend/logs/app.log new file mode 100644 index 00000000..d4cbda7e --- /dev/null +++ b/backend/logs/app.log @@ -0,0 +1,21290 @@ +2026-09-04 11:41:52,310 INFO presidio-analyzer Using device of type: cpu +2026-09-04 11:41:53,381 INFO app.core.telemetry Telemetry initialized (environment=development) +2026-09-04 11:41:53,382 INFO uvicorn.error Started server process [7681] +2026-09-04 11:41:53,382 INFO uvicorn.error Waiting for application startup. +2026-09-04 11:41:53,383 INFO uvicorn.error Application startup complete. +2026-09-04 11:42:19,117 INFO presidio-analyzer Using device of type: cpu +2026-09-04 11:42:20,052 INFO guardrails.execution request=f55f794e-a81c-4ff8-8727-217a23e8166c starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 11:42:20,054 INFO guardrails.execution request=f55f794e-a81c-4ff8-8727-217a23e8166c guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 11:42:20,058 INFO guardrails.execution request=f55f794e-a81c-4ff8-8727-217a23e8166c step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-04T11:42:20.052779 end=2026-09-04T11:42:20.052910 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 11:42:20,064 INFO http_request_logger POST /api/v1/guardrails/ - 200 [44.74ms] +2026-09-04 11:42:20,087 INFO guardrails.execution request=c7b5252e-f3dd-411c-b895-1242a2a3ca82 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-04 11:42:20,088 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log c7b5252e-f3dd-411c-b895-1242a2a3ca82: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-04 11:42:20,093 INFO guardrails.execution request=c7b5252e-f3dd-411c-b895-1242a2a3ca82 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-04T11:42:20.087783 end=2026-09-04T11:42:20.087878 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-04 11:42:20,096 INFO http_request_logger POST /api/v1/guardrails/ - 200 [22.31ms] +2026-09-04 11:42:20,113 INFO guardrails.execution request=1676b179-611d-4ef7-b646-e5e3b96b41f4 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='' +2026-09-04 11:42:20,114 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 1676b179-611d-4ef7-b646-e5e3b96b41f4: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +2026-09-04 11:42:20,117 INFO guardrails.execution request=1676b179-611d-4ef7-b646-e5e3b96b41f4 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-04T11:42:20.114301 end=2026-09-04T11:42:20.114362 duration_ms=0 input='' output=None +2026-09-04 11:42:20,119 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.50ms] +2026-09-04 11:42:20,137 INFO guardrails.execution request=0a52fd0f-b91d-4d2d-adb2-3ba0b5af10e8 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 11:42:20,138 INFO guardrails.execution request=0a52fd0f-b91d-4d2d-adb2-3ba0b5af10e8 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 11:42:20,140 INFO guardrails.execution request=0a52fd0f-b91d-4d2d-adb2-3ba0b5af10e8 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-04T11:42:20.137998 end=2026-09-04T11:42:20.138079 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 11:42:20,144 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.32ms] +2026-09-04 11:42:20,161 INFO guardrails.execution request=3bb4aaba-d9d1-4b7f-bf5f-22e90ff2b1a5 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-04 11:42:20,162 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 3bb4aaba-d9d1-4b7f-bf5f-22e90ff2b1a5: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-04 11:42:20,165 INFO guardrails.execution request=3bb4aaba-d9d1-4b7f-bf5f-22e90ff2b1a5 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-04T11:42:20.162187 end=2026-09-04T11:42:20.162296 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-04 11:42:20,168 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.94ms] +2026-09-04 11:42:20,188 INFO guardrails.execution request=166252b6-f85a-4e36-862e-a6c996940d1f starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-04 11:42:20,190 INFO guardrails.execution request=166252b6-f85a-4e36-862e-a6c996940d1f guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-04 11:42:20,192 INFO guardrails.execution request=166252b6-f85a-4e36-862e-a6c996940d1f step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-04T11:42:20.188920 end=2026-09-04T11:42:20.189031 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-04 11:42:20,195 INFO guardrails.execution request=166252b6-f85a-4e36-862e-a6c996940d1f step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:20.189038 end=2026-09-04T11:42:20.189178 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-04 11:42:20,198 INFO http_request_logger POST /api/v1/guardrails/ - 200 [23.24ms] +2026-09-04 11:42:20,216 INFO guardrails.execution request=a778223a-aace-466b-87da-ffa7a6353ab7 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Diabetes symptoms include fuck fatigue.' +2026-09-04 11:42:20,224 INFO guardrails.execution request=a778223a-aace-466b-87da-ffa7a6353ab7 guardrails execution finished (passed=True) output='' +2026-09-04 11:42:20,230 INFO guardrails.execution request=a778223a-aace-466b-87da-ffa7a6353ab7 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-04T11:42:20.217560 end=2026-09-04T11:42:20.217653 duration_ms=0 input='Diabetes symptoms include fuck fatigue.' output='Diabetes symptoms include fuck fatigue.' +2026-09-04 11:42:20,233 INFO guardrails.execution request=a778223a-aace-466b-87da-ffa7a6353ab7 step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:20.217659 end=2026-09-04T11:42:20.223497 duration_ms=5 input='Diabetes symptoms include fuck fatigue.' output='' +2026-09-04 11:42:20,239 INFO http_request_logger POST /api/v1/guardrails/ - 200 [36.82ms] +2026-09-04 11:42:20,275 INFO guardrails.execution request=aa492829-32f9-4bfd-ab86-127240b72bb3 starting guardrails execution (validators=['answer_relevance_custom_llm', 'uli_slur_match']) input='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-04 11:42:20,280 INFO guardrails.execution request=aa492829-32f9-4bfd-ab86-127240b72bb3 guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-04 11:42:20,283 INFO guardrails.execution request=aa492829-32f9-4bfd-ab86-127240b72bb3 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-04T11:42:20.276724 end=2026-09-04T11:42:20.276816 duration_ms=0 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-04 11:42:20,286 INFO guardrails.execution request=aa492829-32f9-4bfd-ab86-127240b72bb3 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:20.276822 end=2026-09-04T11:42:20.279366 duration_ms=2 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-04 11:42:20,294 INFO http_request_logger POST /api/v1/guardrails/ - 200 [46.50ms] +2026-09-04 11:42:20,316 INFO guardrails.execution request=5b882e30-64db-4b1a-a72d-13982b8b148d starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-04 11:42:20,318 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 5b882e30-64db-4b1a-a72d-13982b8b148d: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +2026-09-04 11:42:20,323 INFO guardrails.execution request=5b882e30-64db-4b1a-a72d-13982b8b148d step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-04T11:42:20.317534 end=2026-09-04T11:42:20.317625 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-04 11:42:20,328 INFO guardrails.execution request=5b882e30-64db-4b1a-a72d-13982b8b148d step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:20.317630 end=2026-09-04T11:42:20.318778 duration_ms=1 input='Bloody hell, the symptoms include thirst and fatigue.' output=None +2026-09-04 11:42:20,332 INFO http_request_logger POST /api/v1/guardrails/ - 200 [29.53ms] +2026-09-04 11:42:20,354 INFO guardrails.execution request=9b3f82c8-6985-4189-bfb2-195d64f245df starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list', 'profanity_free', 'uli_slur_match', 'gender_assumption_bias']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 11:42:20,359 INFO guardrails.execution request=9b3f82c8-6985-4189-bfb2-195d64f245df guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 11:42:20,362 INFO guardrails.execution request=9b3f82c8-6985-4189-bfb2-195d64f245df step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-04T11:42:20.355838 end=2026-09-04T11:42:20.355931 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 11:42:20,373 INFO guardrails.execution request=9b3f82c8-6985-4189-bfb2-195d64f245df step=2/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-04T11:42:20.355937 end=2026-09-04T11:42:20.356013 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 11:42:20,379 INFO guardrails.execution request=9b3f82c8-6985-4189-bfb2-195d64f245df step=3/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-04T11:42:20.356017 end=2026-09-04T11:42:20.357136 duration_ms=1 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 11:42:20,385 INFO guardrails.execution request=9b3f82c8-6985-4189-bfb2-195d64f245df step=4/5 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-04T11:42:20.357143 end=2026-09-04T11:42:20.357775 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 11:42:20,388 INFO guardrails.execution request=9b3f82c8-6985-4189-bfb2-195d64f245df step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.PASS start=2026-09-04T11:42:20.357779 end=2026-09-04T11:42:20.358460 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 11:42:20,393 INFO http_request_logger POST /api/v1/guardrails/ - 200 [54.30ms] +2026-09-04 11:42:20,420 INFO guardrails.execution request=34de1be8-9788-4253-abc2-148bec1f31d4 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free', 'uli_slur_match', 'ban_list', 'gender_assumption_bias']) input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-04 11:42:20,424 INFO guardrails.execution request=34de1be8-9788-4253-abc2-148bec1f31d4 guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-04 11:42:20,427 INFO guardrails.execution request=34de1be8-9788-4253-abc2-148bec1f31d4 step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-04T11:42:20.420796 end=2026-09-04T11:42:20.420886 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-04 11:42:20,428 INFO guardrails.execution request=34de1be8-9788-4253-abc2-148bec1f31d4 step=2/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-04T11:42:20.420892 end=2026-09-04T11:42:20.422103 duration_ms=1 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-04 11:42:20,430 INFO guardrails.execution request=34de1be8-9788-4253-abc2-148bec1f31d4 step=3/5 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:20.422114 end=2026-09-04T11:42:20.422719 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-04 11:42:20,431 INFO guardrails.execution request=34de1be8-9788-4253-abc2-148bec1f31d4 step=4/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-04T11:42:20.422727 end=2026-09-04T11:42:20.422800 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-04 11:42:20,433 INFO guardrails.execution request=34de1be8-9788-4253-abc2-148bec1f31d4 step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:20.422804 end=2026-09-04T11:42:20.423446 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-04 11:42:20,436 INFO http_request_logger POST /api/v1/guardrails/ - 200 [36.12ms] +2026-09-04 11:42:20,464 INFO app.crud.ban_list created ban list id=fb546e5d-a59d-4343-8a83-d2148d87e641 org=1 project=1 +2026-09-04 11:42:20,465 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [6.45ms] +2026-09-04 11:42:20,471 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [1.32ms] +2026-09-04 11:42:20,476 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [1.12ms] +2026-09-04 11:42:20,482 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [1.22ms] +2026-09-04 11:42:20,487 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [1.22ms] +2026-09-04 11:42:20,493 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [1.16ms] +2026-09-04 11:42:20,505 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [3.98ms] +2026-09-04 11:42:20,516 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [3.48ms] +2026-09-04 11:42:20,524 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [3.21ms] +2026-09-04 11:42:20,534 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.73ms] +2026-09-04 11:42:20,544 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.34ms] +2026-09-04 11:42:20,548 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.83ms] +2026-09-04 11:42:20,555 INFO app.crud.ban_list created ban list id=8f27252f-827c-42f3-8ca0-1f535ecb3ebd org=1 project=1 +2026-09-04 11:42:20,558 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [6.13ms] +2026-09-04 11:42:20,559 INFO http_request_logger GET /api/v1/guardrails/ban_lists/8f27252f-827c-42f3-8ca0-1f535ecb3ebd/ - 307 [0.10ms] +2026-09-04 11:42:20,561 INFO http_request_logger GET /api/v1/guardrails/ban_lists/8f27252f-827c-42f3-8ca0-1f535ecb3ebd - 200 [2.46ms] +2026-09-04 11:42:20,571 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.17ms] +2026-09-04 11:42:20,572 INFO http_request_logger GET /api/v1/guardrails/ban_lists/e7b9cff5-5f12-422c-a7b7-3db89fabee42/ - 307 [0.10ms] +2026-09-04 11:42:20,574 INFO http_request_logger GET /api/v1/guardrails/ban_lists/e7b9cff5-5f12-422c-a7b7-3db89fabee42 - 200 [1.76ms] +2026-09-04 11:42:20,578 INFO http_request_logger GET /api/v1/guardrails/ban_lists/9a9e7d9b-8303-4ad2-b9c3-34a10cab05b6/ - 307 [0.09ms] +2026-09-04 11:42:20,581 INFO http_request_logger GET /api/v1/guardrails/ban_lists/9a9e7d9b-8303-4ad2-b9c3-34a10cab05b6 - 404 [2.10ms] +2026-09-04 11:42:20,589 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.33ms] +2026-09-04 11:42:20,589 INFO http_request_logger GET /api/v1/guardrails/ban_lists/59935043-f7a2-45d1-9e98-344f49a294a2/ - 307 [0.11ms] +2026-09-04 11:42:20,591 INFO http_request_logger GET /api/v1/guardrails/ban_lists/59935043-f7a2-45d1-9e98-344f49a294a2 - 403 [1.69ms] +2026-09-04 11:42:20,600 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.18ms] +2026-09-04 11:42:20,601 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/6360f402-621d-4015-b9be-433cdc9b2394/ - 307 [0.10ms] +2026-09-04 11:42:20,604 INFO app.crud.ban_list updated ban list id=6360f402-621d-4015-b9be-433cdc9b2394 +2026-09-04 11:42:20,605 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/6360f402-621d-4015-b9be-433cdc9b2394 - 200 [3.72ms] +2026-09-04 11:42:20,612 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.82ms] +2026-09-04 11:42:20,613 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/a01a80d6-d1f0-4b8b-8f8e-0abbf6669d2a/ - 307 [0.10ms] +2026-09-04 11:42:20,616 INFO app.crud.ban_list updated ban list id=a01a80d6-d1f0-4b8b-8f8e-0abbf6669d2a +2026-09-04 11:42:20,616 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/a01a80d6-d1f0-4b8b-8f8e-0abbf6669d2a - 200 [3.30ms] +2026-09-04 11:42:20,620 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/020dfb4c-9dc3-447f-bc16-84a93196af7e/ - 307 [0.10ms] +2026-09-04 11:42:20,622 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/020dfb4c-9dc3-447f-bc16-84a93196af7e - 404 [2.03ms] +2026-09-04 11:42:20,632 INFO app.crud.ban_list created ban list id=1c87bbf0-254a-443f-821e-618f175e3bab org=1 project=1 +2026-09-04 11:42:20,632 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [4.84ms] +2026-09-04 11:42:20,633 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/1c87bbf0-254a-443f-821e-618f175e3bab/ - 307 [0.10ms] +2026-09-04 11:42:20,635 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/1c87bbf0-254a-443f-821e-618f175e3bab - 403 [1.62ms] +2026-09-04 11:42:20,644 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.24ms] +2026-09-04 11:42:20,645 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/8184120a-c3c2-4a23-bad1-b1ec8fe4f18b/ - 307 [0.10ms] +2026-09-04 11:42:20,648 INFO app.crud.ban_list deleted ban list id=8184120a-c3c2-4a23-bad1-b1ec8fe4f18b +2026-09-04 11:42:20,648 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/8184120a-c3c2-4a23-bad1-b1ec8fe4f18b - 200 [2.88ms] +2026-09-04 11:42:20,652 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/d41453d8-445e-4879-ac97-83fb19c21437/ - 307 [0.12ms] +2026-09-04 11:42:20,655 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/d41453d8-445e-4879-ac97-83fb19c21437 - 404 [2.45ms] +2026-09-04 11:42:20,664 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.83ms] +2026-09-04 11:42:20,665 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/d350be27-4fc6-4d60-8496-d0883932513e/ - 307 [0.12ms] +2026-09-04 11:42:20,667 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/d350be27-4fc6-4d60-8496-d0883932513e - 403 [1.70ms] +2026-09-04 11:42:20,674 INFO app.crud.ban_list created ban list id=a1803972-594c-4e86-b74d-49dc3a257a64 org=1 project=1 +2026-09-04 11:42:20,675 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [3.93ms] +2026-09-04 11:42:20,676 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/a1803972-594c-4e86-b74d-49dc3a257a64/ - 307 [0.10ms] +2026-09-04 11:42:20,678 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/a1803972-594c-4e86-b74d-49dc3a257a64 - 403 [2.12ms] +2026-09-04 11:42:20,775 INFO guardrails.execution request=173f0d56-da51-417d-8691-b1b6c6451cd5 starting guardrails execution (validators=[]) input='hello world' +2026-09-04 11:42:20,775 INFO guardrails.execution request=173f0d56-da51-417d-8691-b1b6c6451cd5 guardrails execution finished (passed=True) output='clean text' +2026-09-04 11:42:20,777 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.25ms] +2026-09-04 11:42:20,784 INFO guardrails.execution request=b89c632c-f3c0-45f5-9618-2a7882fc66b7 starting guardrails execution (validators=[]) input='my phone is 999999' +2026-09-04 11:42:20,785 INFO guardrails.execution request=b89c632c-f3c0-45f5-9618-2a7882fc66b7 guardrails execution finished (passed=False) output=None +2026-09-04 11:42:20,786 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.58ms] +2026-09-04 11:42:20,794 INFO guardrails.execution request=cb751f68-5c8e-49b3-a5dd-d4da28e4d9b4 starting guardrails execution (validators=[]) input='tell me about buildings' +2026-09-04 11:42:20,794 INFO guardrails.execution request=cb751f68-5c8e-49b3-a5dd-d4da28e4d9b4 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Input is outside the allowed topic scope.' +2026-09-04 11:42:20,797 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.96ms] +2026-09-04 11:42:20,804 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log fe1e9418-0d03-4d8d-9a43-69b7bb30ef9b: Invalid validator config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid validator config +2026-09-04 11:42:20,807 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.46ms] +2026-09-04 11:42:20,821 INFO guardrails.execution request=d25cdc7e-def4-4fc2-ac9a-66e5e890d75c starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-04 11:42:20,823 INFO guardrails.execution request=d25cdc7e-def4-4fc2-ac9a-66e5e890d75c guardrails execution finished (passed=True) output='this contains b' +2026-09-04 11:42:20,825 INFO guardrails.execution request=d25cdc7e-def4-4fc2-ac9a-66e5e890d75c step=1/1 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:20.822359 end=2026-09-04T11:42:20.822475 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-04 11:42:20,828 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.53ms] +2026-09-04 11:42:20,843 INFO guardrails.execution request=a047da6b-3dd3-4bce-822b-2e67f8618d93 starting guardrails execution (validators=['ban_list']) input='this is clean' +2026-09-04 11:42:20,845 INFO guardrails.execution request=a047da6b-3dd3-4bce-822b-2e67f8618d93 guardrails execution finished (passed=True) output='this is clean' +2026-09-04 11:42:20,847 INFO guardrails.execution request=a047da6b-3dd3-4bce-822b-2e67f8618d93 step=1/1 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-04T11:42:20.844259 end=2026-09-04T11:42:20.844347 duration_ms=0 input='this is clean' output='this is clean' +2026-09-04 11:42:20,850 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.27ms] +2026-09-04 11:42:20,871 INFO guardrails.execution request=fe1f01bb-30c2-4877-b5cc-50cc88c340d6 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-04 11:42:20,873 INFO guardrails.execution request=fe1f01bb-30c2-4877-b5cc-50cc88c340d6 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR].' +2026-09-04 11:42:20,875 INFO guardrails.execution request=fe1f01bb-30c2-4877-b5cc-50cc88c340d6 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:20.871873 end=2026-09-04T11:42:20.872384 duration_ms=0 input='This sentence contains chakki.' output='this sentence contains [REDACTED_SLUR].' +2026-09-04 11:42:20,878 INFO http_request_logger POST /api/v1/guardrails/ - 200 [24.16ms] +2026-09-04 11:42:20,895 INFO guardrails.execution request=ee2b9aaf-31b6-4b44-a2bc-5c72892b827a starting guardrails execution (validators=['uli_slur_match']) input='This is a completely safe sentence' +2026-09-04 11:42:20,897 INFO guardrails.execution request=ee2b9aaf-31b6-4b44-a2bc-5c72892b827a guardrails execution finished (passed=True) output='This is a completely safe sentence' +2026-09-04 11:42:20,900 INFO guardrails.execution request=ee2b9aaf-31b6-4b44-a2bc-5c72892b827a step=1/1 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-04T11:42:20.895987 end=2026-09-04T11:42:20.896343 duration_ms=0 input='This is a completely safe sentence' output='This is a completely safe sentence' +2026-09-04 11:42:20,904 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.74ms] +2026-09-04 11:42:20,924 INFO guardrails.execution request=80801607-fa28-4d2b-833c-f81d602fc496 starting guardrails execution (validators=['uli_slur_match', 'ban_list']) input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' +2026-09-04 11:42:20,926 INFO guardrails.execution request=80801607-fa28-4d2b-833c-f81d602fc496 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-04 11:42:20,930 INFO guardrails.execution request=80801607-fa28-4d2b-833c-f81d602fc496 step=1/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:20.924934 end=2026-09-04T11:42:20.925493 duration_ms=0 input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' +2026-09-04 11:42:20,934 INFO guardrails.execution request=80801607-fa28-4d2b-833c-f81d602fc496 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:20.925501 end=2026-09-04T11:42:20.925633 duration_ms=0 input='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-04 11:42:20,938 INFO http_request_logger POST /api/v1/guardrails/ - 200 [28.49ms] +2026-09-04 11:42:20,945 INFO http_request_logger POST /api/v1/guardrails/ - 422 [1.33ms] +2026-09-04 11:42:20,966 INFO guardrails.execution request=e99f41a3-e870-4c78-be0c-986b1d198cb3 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-04 11:42:20,967 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log e99f41a3-e870-4c78-be0c-986b1d198cb3: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-04 11:42:20,972 INFO guardrails.execution request=e99f41a3-e870-4c78-be0c-986b1d198cb3 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:20.967327 end=2026-09-04T11:42:20.967648 duration_ms=0 input='This sentence contains chakki.' output=None +2026-09-04 11:42:20,976 INFO http_request_logger POST /api/v1/guardrails/ - 200 [24.10ms] +2026-09-04 11:42:20,999 INFO guardrails.execution request=2a42a3c8-23a9-461a-89c7-ecae0dc1cc1e starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-04 11:42:21,001 INFO guardrails.execution request=2a42a3c8-23a9-461a-89c7-ecae0dc1cc1e guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-04 11:42:21,005 INFO guardrails.execution request=2a42a3c8-23a9-461a-89c7-ecae0dc1cc1e step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:21.000062 end=2026-09-04T11:42:21.000388 duration_ms=0 input='This sentence contains chakki.' output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-04 11:42:21,010 INFO http_request_logger POST /api/v1/guardrails/ - 200 [27.33ms] +2026-09-04 11:42:21,031 INFO guardrails.execution request=5e7e59f5-fae0-415e-b1e2-fc2b523f457f starting guardrails execution (validators=['profanity_free']) input='This is a damn fucking mess.' +2026-09-04 11:42:21,033 INFO guardrails.execution request=5e7e59f5-fae0-415e-b1e2-fc2b523f457f guardrails execution finished (passed=True) output='' +2026-09-04 11:42:21,038 INFO guardrails.execution request=5e7e59f5-fae0-415e-b1e2-fc2b523f457f step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:21.031605 end=2026-09-04T11:42:21.032786 duration_ms=1 input='This is a damn fucking mess.' output='' +2026-09-04 11:42:21,043 INFO http_request_logger POST /api/v1/guardrails/ - 200 [26.46ms] +2026-09-04 11:42:21,062 INFO guardrails.execution request=d06e83f7-e53b-42dc-b850-5062a60c2dad starting guardrails execution (validators=['profanity_free']) input='This is a completely clean sentence.' +2026-09-04 11:42:21,065 INFO guardrails.execution request=d06e83f7-e53b-42dc-b850-5062a60c2dad guardrails execution finished (passed=True) output='This is a completely clean sentence.' +2026-09-04 11:42:21,068 INFO guardrails.execution request=d06e83f7-e53b-42dc-b850-5062a60c2dad step=1/1 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-04T11:42:21.063057 end=2026-09-04T11:42:21.064131 duration_ms=1 input='This is a completely clean sentence.' output='This is a completely clean sentence.' +2026-09-04 11:42:21,072 INFO http_request_logger POST /api/v1/guardrails/ - 200 [22.82ms] +2026-09-04 11:42:21,091 INFO guardrails.execution request=7e9255e1-376c-4f1b-a243-8ac96db6b0c5 starting guardrails execution (validators=['profanity_free']) input='What the fuck is going on?' +2026-09-04 11:42:21,093 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 7e9255e1-376c-4f1b-a243-8ac96db6b0c5: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +2026-09-04 11:42:21,098 INFO guardrails.execution request=7e9255e1-376c-4f1b-a243-8ac96db6b0c5 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:21.091948 end=2026-09-04T11:42:21.093043 duration_ms=1 input='What the fuck is going on?' output=None +2026-09-04 11:42:21,101 INFO http_request_logger POST /api/v1/guardrails/ - 200 [23.20ms] +2026-09-04 11:42:21,120 INFO guardrails.execution request=060e3f80-4cac-48db-88e2-9cfb7430e917 starting guardrails execution (validators=['profanity_free']) input='This is absolute bullshit.' +2026-09-04 11:42:21,123 INFO guardrails.execution request=060e3f80-4cac-48db-88e2-9cfb7430e917 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-04 11:42:21,127 INFO guardrails.execution request=060e3f80-4cac-48db-88e2-9cfb7430e917 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:21.121398 end=2026-09-04T11:42:21.122439 duration_ms=1 input='This is absolute bullshit.' output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-04 11:42:21,134 INFO http_request_logger POST /api/v1/guardrails/ - 200 [27.01ms] +2026-09-04 11:42:21,144 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log fb71b03f-f0e6-4ae4-9dd1-8924fe7c7e59: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-04 11:42:21,151 INFO http_request_logger POST /api/v1/guardrails/ - 200 [11.58ms] +2026-09-04 11:42:21,621 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-04 11:42:24,650 INFO guardrails.execution request=a4a08737-d632-467e-a3d5-dfe435ef61fb starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-04 11:42:24,943 INFO guardrails.execution request=a4a08737-d632-467e-a3d5-dfe435ef61fb guardrails execution finished (passed=True) output='She slowly undressed and they had explicit sex.' +2026-09-04 11:42:24,953 INFO guardrails.execution request=a4a08737-d632-467e-a3d5-dfe435ef61fb step=1/1 validator=NSFWText stage=input outcome=Outcome.PASS start=2026-09-04T11:42:24.651988 end=2026-09-04T11:42:24.941991 duration_ms=290 input='She slowly undressed and they had explicit sex.' output='She slowly undressed and they had explicit sex.' +2026-09-04 11:42:25,143 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3986.45ms] +2026-09-04 11:42:28,077 INFO guardrails.execution request=f9e81772-912d-4cf0-b598-77d0086a297d starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-04 11:42:28,117 INFO guardrails.execution request=f9e81772-912d-4cf0-b598-77d0086a297d guardrails execution finished (passed=True) output='She slowly undressed and they had explicit sex.' +2026-09-04 11:42:28,131 INFO guardrails.execution request=f9e81772-912d-4cf0-b598-77d0086a297d step=1/1 validator=NSFWText stage=input outcome=Outcome.PASS start=2026-09-04T11:42:28.079650 end=2026-09-04T11:42:28.115664 duration_ms=36 input='She slowly undressed and they had explicit sex.' output='She slowly undressed and they had explicit sex.' +2026-09-04 11:42:28,319 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3125.69ms] +2026-09-04 11:42:31,387 INFO guardrails.execution request=777765db-55f0-4e63-a487-7382dfefbb97 starting guardrails execution (validators=['nsfw_text']) input='Explicit sexual content goes here.' +2026-09-04 11:42:31,471 INFO guardrails.execution request=777765db-55f0-4e63-a487-7382dfefbb97 guardrails execution finished (passed=True) output='Explicit sexual content goes here.' +2026-09-04 11:42:31,480 INFO guardrails.execution request=777765db-55f0-4e63-a487-7382dfefbb97 step=1/1 validator=NSFWText stage=input outcome=Outcome.PASS start=2026-09-04T11:42:31.392002 end=2026-09-04T11:42:31.469535 duration_ms=77 input='Explicit sexual content goes here.' output='Explicit sexual content goes here.' +2026-09-04 11:42:31,708 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3376.01ms] +2026-09-04 11:42:31,742 INFO guardrails.execution request=b60a50a5-82c8-423c-8b95-d5becf9e5471 starting guardrails execution (validators=['profanity_free', 'uli_slur_match']) input='This fucking chakki should leave.' +2026-09-04 11:42:31,746 INFO guardrails.execution request=b60a50a5-82c8-423c-8b95-d5becf9e5471 guardrails execution finished (passed=True) output='' +2026-09-04 11:42:31,749 INFO guardrails.execution request=b60a50a5-82c8-423c-8b95-d5becf9e5471 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:31.743327 end=2026-09-04T11:42:31.745404 duration_ms=2 input='This fucking chakki should leave.' output='' +2026-09-04 11:42:31,750 INFO guardrails.execution request=b60a50a5-82c8-423c-8b95-d5becf9e5471 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-04T11:42:31.745432 end=2026-09-04T11:42:31.745675 duration_ms=0 input='' output='' +2026-09-04 11:42:31,754 INFO http_request_logger POST /api/v1/guardrails/ - 200 [30.02ms] +2026-09-04 11:42:31,762 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 66c93427-4204-49df-af95-59e14504e411: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-04 11:42:31,767 INFO http_request_logger POST /api/v1/guardrails/ - 200 [8.67ms] +2026-09-04 11:42:34,402 INFO guardrails.execution request=a5a81ac3-5dcf-41b4-bc64-0f6d0b71b4cf starting guardrails execution (validators=['profanity_free', 'nsfw_text']) input='What the fuck, this is explicit adult sexual content.' +2026-09-04 11:42:34,409 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log a5a81ac3-5dcf-41b4-bc64-0f6d0b71b4cf: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +2026-09-04 11:42:34,421 INFO guardrails.execution request=a5a81ac3-5dcf-41b4-bc64-0f6d0b71b4cf step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:34.403644 end=2026-09-04T11:42:34.409121 duration_ms=5 input='What the fuck, this is explicit adult sexual content.' output=None +2026-09-04 11:42:34,427 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2655.93ms] +2026-09-04 11:42:37,615 INFO guardrails.execution request=ac13394e-6fb0-407a-99ed-a09b94576117 starting guardrails execution (validators=['uli_slur_match', 'nsfw_text']) input='This chakki has explicit sexual content.' +2026-09-04 11:42:37,617 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log ac13394e-6fb0-407a-99ed-a09b94576117: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-04 11:42:37,628 INFO guardrails.execution request=ac13394e-6fb0-407a-99ed-a09b94576117 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:37.616726 end=2026-09-04T11:42:37.617352 duration_ms=0 input='This chakki has explicit sexual content.' output=None +2026-09-04 11:42:37,634 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3197.94ms] +2026-09-04 11:42:37,659 INFO guardrails.execution request=2e2a2106-6b3c-4d8e-a8bc-d7f4cc0e4e03 starting guardrails execution (validators=['profanity_free', 'ban_list']) input='Tell me about renewable energy sources.' +2026-09-04 11:42:37,664 INFO guardrails.execution request=2e2a2106-6b3c-4d8e-a8bc-d7f4cc0e4e03 guardrails execution finished (passed=True) output='Tell me about renewable energy sources.' +2026-09-04 11:42:37,668 INFO guardrails.execution request=2e2a2106-6b3c-4d8e-a8bc-d7f4cc0e4e03 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-04T11:42:37.659818 end=2026-09-04T11:42:37.663297 duration_ms=3 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-04 11:42:37,670 INFO guardrails.execution request=2e2a2106-6b3c-4d8e-a8bc-d7f4cc0e4e03 step=2/2 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-04T11:42:37.663312 end=2026-09-04T11:42:37.663453 duration_ms=0 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-04 11:42:37,674 INFO http_request_logger POST /api/v1/guardrails/ - 200 [30.50ms] +2026-09-04 11:42:37,698 INFO guardrails.execution request=785347ef-4f20-4bcc-8c14-df4eaf03fc7c starting guardrails execution (validators=['uli_slur_match', 'profanity_free', 'ban_list']) input='What are some healthy breakfast options?' +2026-09-04 11:42:37,704 INFO guardrails.execution request=785347ef-4f20-4bcc-8c14-df4eaf03fc7c guardrails execution finished (passed=True) output='What are some healthy breakfast options?' +2026-09-04 11:42:37,712 INFO guardrails.execution request=785347ef-4f20-4bcc-8c14-df4eaf03fc7c step=1/3 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-04T11:42:37.699395 end=2026-09-04T11:42:37.699807 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-04 11:42:37,714 INFO guardrails.execution request=785347ef-4f20-4bcc-8c14-df4eaf03fc7c step=2/3 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-04T11:42:37.699816 end=2026-09-04T11:42:37.702817 duration_ms=3 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-04 11:42:37,716 INFO guardrails.execution request=785347ef-4f20-4bcc-8c14-df4eaf03fc7c step=3/3 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-04T11:42:37.702832 end=2026-09-04T11:42:37.702926 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-04 11:42:37,720 INFO http_request_logger POST /api/v1/guardrails/ - 200 [39.52ms] +2026-09-04 11:42:37,739 INFO guardrails.execution request=5a5cccc3-7293-4a0f-b93e-31e73cb6f608 starting guardrails execution (validators=['ban_list', 'uli_slur_match']) input='this contains badword' +2026-09-04 11:42:37,741 INFO guardrails.execution request=5a5cccc3-7293-4a0f-b93e-31e73cb6f608 guardrails execution finished (passed=True) output='this contains b' +2026-09-04 11:42:37,744 INFO guardrails.execution request=5a5cccc3-7293-4a0f-b93e-31e73cb6f608 step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-04T11:42:37.740538 end=2026-09-04T11:42:37.740678 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-04 11:42:37,748 INFO guardrails.execution request=5a5cccc3-7293-4a0f-b93e-31e73cb6f608 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-04T11:42:37.740684 end=2026-09-04T11:42:37.740940 duration_ms=0 input='this contains b' output='this contains b' +2026-09-04 11:42:37,753 INFO http_request_logger POST /api/v1/guardrails/ - 200 [25.90ms] +2026-09-04 11:42:37,769 ERROR app.api.routes.guardrails [run_guardrails] config resolution failed for request_log ee4ffcc5-4b90-40de-8cb4-100a34c62303: 404: Ban list not found +2026-09-04 11:42:37,772 INFO http_request_logger POST /api/v1/guardrails/ - 404 [8.90ms] +2026-09-04 11:42:37,782 INFO guardrails.execution request=04dbdfdf-108e-4697-9021-1c0694568bdc starting guardrails execution (validators=['ban_list']) input='hello' +2026-09-04 11:42:37,782 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 04dbdfdf-108e-4697-9021-1c0694568bdc: boom +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +RuntimeError: boom +2026-09-04 11:42:37,786 INFO http_request_logger POST /api/v1/guardrails/ - 200 [8.15ms] +2026-09-04 11:42:37,793 WARNING app.api.routes.guardrails [run_guardrails] invalid request_id 'not-a-uuid' (org=1 project=1), no request log written +2026-09-04 11:42:37,793 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1.78ms] +2026-09-04 11:42:37,807 INFO app.crud.llm_prompt_config created llm prompt config id=e689f0db-2292-48cc-a7f6-c3ac3357a1d5 org=1 project=1 +2026-09-04 11:42:37,809 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [12.32ms] +2026-09-04 11:42:37,817 INFO app.crud.llm_prompt_config created llm prompt config id=9c292732-47b1-4321-b812-7c2106a3c5df org=1 project=1 +2026-09-04 11:42:37,817 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.59ms] +2026-09-04 11:42:37,826 INFO app.crud.llm_prompt_config created llm prompt config id=1c702745-9064-4b93-8a09-f12e426a5566 org=1 project=1 +2026-09-04 11:42:37,826 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.79ms] +2026-09-04 11:42:37,832 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [1.06ms] +2026-09-04 11:42:37,839 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [1.45ms] +2026-09-04 11:42:37,844 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [1.04ms] +2026-09-04 11:42:37,850 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [1.10ms] +2026-09-04 11:42:37,856 INFO app.crud.llm_prompt_config created llm prompt config id=8cc14b49-d7ce-419f-a37e-6bea60234911 org=1 project=1 +2026-09-04 11:42:37,857 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.53ms] +2026-09-04 11:42:37,861 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [1.14ms] +2026-09-04 11:42:37,866 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [1.04ms] +2026-09-04 11:42:37,875 INFO app.crud.llm_prompt_config created llm prompt config id=0b356a55-4716-4a3d-8e7a-02ead7733f2e org=1 project=1 +2026-09-04 11:42:37,876 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [5.91ms] +2026-09-04 11:42:37,881 INFO app.crud.llm_prompt_config created llm prompt config id=c57646ed-3b43-4787-8fdb-458f69ae2eba org=1 project=1 +2026-09-04 11:42:37,882 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [5.44ms] +2026-09-04 11:42:37,887 INFO app.crud.llm_prompt_config created llm prompt config id=ffe61752-b00d-46cc-9c12-6d825aaa58ce org=1 project=1 +2026-09-04 11:42:37,888 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [5.15ms] +2026-09-04 11:42:37,892 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [3.48ms] +2026-09-04 11:42:37,904 INFO app.crud.llm_prompt_config created llm prompt config id=3d0ac09d-e849-485a-96e7-05e427fd9cbe org=1 project=1 +2026-09-04 11:42:37,905 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [5.92ms] +2026-09-04 11:42:37,910 INFO app.crud.llm_prompt_config created llm prompt config id=ff26aee1-c3b9-42cb-b2be-e4090ea11b21 org=1 project=1 +2026-09-04 11:42:37,911 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [5.26ms] +2026-09-04 11:42:37,914 INFO app.crud.llm_prompt_config created llm prompt config id=6e6d1bfd-1619-4fd2-b83e-cdc19bbee79a org=1 project=1 +2026-09-04 11:42:37,915 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.41ms] +2026-09-04 11:42:37,918 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.90ms] +2026-09-04 11:42:37,925 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.51ms] +2026-09-04 11:42:37,933 INFO app.crud.llm_prompt_config created llm prompt config id=32ddb536-4a02-4853-9a53-3608a0c9df58 org=1 project=1 +2026-09-04 11:42:37,933 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.74ms] +2026-09-04 11:42:37,936 INFO app.crud.llm_prompt_config created llm prompt config id=b70db647-54b8-4c5e-9577-2cb7175b1cba org=1 project=1 +2026-09-04 11:42:37,937 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.22ms] +2026-09-04 11:42:37,940 INFO app.crud.llm_prompt_config created llm prompt config id=3b94a1a3-f90a-42e9-9b4f-868e1f74fde6 org=1 project=1 +2026-09-04 11:42:37,941 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.25ms] +2026-09-04 11:42:37,944 INFO app.crud.llm_prompt_config created llm prompt config id=34365b8a-4bf3-4fab-9706-50e8d30a4d05 org=1 project=1 +2026-09-04 11:42:37,945 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.50ms] +2026-09-04 11:42:37,948 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.72ms] +2026-09-04 11:42:37,957 INFO app.crud.llm_prompt_config created llm prompt config id=491d18ab-2b44-43fa-85c4-6ba44d546c1d org=1 project=1 +2026-09-04 11:42:37,957 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.37ms] +2026-09-04 11:42:37,959 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.78ms] +2026-09-04 11:42:37,967 INFO app.crud.llm_prompt_config created llm prompt config id=f8960216-28d8-405f-be2a-4c47a0fecdf0 org=1 project=1 +2026-09-04 11:42:37,968 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.21ms] +2026-09-04 11:42:37,971 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/f8960216-28d8-405f-be2a-4c47a0fecdf0 - 200 [2.47ms] +2026-09-04 11:42:37,978 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/c63344ae-00a8-4869-af33-b2808cca2a0d - 404 [2.77ms] +2026-09-04 11:42:37,986 INFO app.crud.llm_prompt_config created llm prompt config id=47067b3f-76ec-4312-8e52-26bd69db687c org=1 project=1 +2026-09-04 11:42:37,987 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.26ms] +2026-09-04 11:42:37,990 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/47067b3f-76ec-4312-8e52-26bd69db687c - 404 [2.29ms] +2026-09-04 11:42:37,997 INFO app.crud.llm_prompt_config created llm prompt config id=81359d43-aa08-4cfe-aa50-2e1f7414d35c org=1 project=1 +2026-09-04 11:42:37,998 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.38ms] +2026-09-04 11:42:38,005 INFO app.crud.llm_prompt_config updated llm prompt config id=81359d43-aa08-4cfe-aa50-2e1f7414d35c +2026-09-04 11:42:38,006 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/81359d43-aa08-4cfe-aa50-2e1f7414d35c - 200 [7.18ms] +2026-09-04 11:42:38,016 INFO app.crud.llm_prompt_config created llm prompt config id=69e6d658-3625-48ae-81dd-46973a0eccbb org=1 project=1 +2026-09-04 11:42:38,017 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [5.65ms] +2026-09-04 11:42:38,023 INFO app.crud.llm_prompt_config updated llm prompt config id=69e6d658-3625-48ae-81dd-46973a0eccbb +2026-09-04 11:42:38,024 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/69e6d658-3625-48ae-81dd-46973a0eccbb - 200 [6.31ms] +2026-09-04 11:42:38,034 INFO app.crud.llm_prompt_config created llm prompt config id=455fff74-ab2a-4800-9768-9e5a914e8f2a org=1 project=1 +2026-09-04 11:42:38,034 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [5.00ms] +2026-09-04 11:42:38,039 INFO app.crud.llm_prompt_config updated llm prompt config id=455fff74-ab2a-4800-9768-9e5a914e8f2a +2026-09-04 11:42:38,040 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/455fff74-ab2a-4800-9768-9e5a914e8f2a - 200 [5.14ms] +2026-09-04 11:42:38,043 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/455fff74-ab2a-4800-9768-9e5a914e8f2a - 200 [2.54ms] +2026-09-04 11:42:38,053 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/598dda9c-736d-4cee-a5d4-fdbc44b49dc0 - 404 [3.32ms] +2026-09-04 11:42:38,062 INFO app.crud.llm_prompt_config created llm prompt config id=15b1ba4a-4d54-45db-8b1b-f31a5255b8c7 org=1 project=1 +2026-09-04 11:42:38,062 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.85ms] +2026-09-04 11:42:38,065 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/15b1ba4a-4d54-45db-8b1b-f31a5255b8c7 - 404 [2.34ms] +2026-09-04 11:42:38,074 INFO app.crud.llm_prompt_config created llm prompt config id=1cace0e6-9ff5-4137-a62e-3e2cb09ee82d org=1 project=1 +2026-09-04 11:42:38,074 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.82ms] +2026-09-04 11:42:38,077 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/1cace0e6-9ff5-4137-a62e-3e2cb09ee82d - 422 [1.85ms] +2026-09-04 11:42:38,084 INFO app.crud.llm_prompt_config created llm prompt config id=dc5298b0-766f-4459-ba03-6e51468635b2 org=1 project=1 +2026-09-04 11:42:38,085 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.93ms] +2026-09-04 11:42:38,088 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/dc5298b0-766f-4459-ba03-6e51468635b2 - 422 [3.06ms] +2026-09-04 11:42:38,097 INFO app.crud.llm_prompt_config created llm prompt config id=bbaca7d3-147a-4725-aec7-773951f0c081 org=1 project=1 +2026-09-04 11:42:38,097 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.14ms] +2026-09-04 11:42:38,101 INFO app.crud.llm_prompt_config updated llm prompt config id=bbaca7d3-147a-4725-aec7-773951f0c081 +2026-09-04 11:42:38,101 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/bbaca7d3-147a-4725-aec7-773951f0c081 - 200 [3.35ms] +2026-09-04 11:42:38,110 INFO app.crud.llm_prompt_config created llm prompt config id=ecb2ccda-ca7a-4e5e-bc22-16697ddcc0fd org=1 project=1 +2026-09-04 11:42:38,111 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.11ms] +2026-09-04 11:42:38,115 INFO app.crud.llm_prompt_config updated llm prompt config id=ecb2ccda-ca7a-4e5e-bc22-16697ddcc0fd +2026-09-04 11:42:38,115 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/ecb2ccda-ca7a-4e5e-bc22-16697ddcc0fd - 200 [3.60ms] +2026-09-04 11:42:38,122 INFO app.crud.llm_prompt_config created llm prompt config id=de9b0c0e-af22-4dc2-bcfb-9a88bb7675d8 org=1 project=1 +2026-09-04 11:42:38,123 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.87ms] +2026-09-04 11:42:38,127 INFO app.crud.llm_prompt_config deleted llm prompt config id=de9b0c0e-af22-4dc2-bcfb-9a88bb7675d8 +2026-09-04 11:42:38,127 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/de9b0c0e-af22-4dc2-bcfb-9a88bb7675d8 - 200 [3.56ms] +2026-09-04 11:42:38,136 INFO app.crud.llm_prompt_config created llm prompt config id=6f5f6750-e40c-4f86-ada4-f2dd6ad33ed4 org=1 project=1 +2026-09-04 11:42:38,137 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.52ms] +2026-09-04 11:42:38,139 INFO app.crud.llm_prompt_config deleted llm prompt config id=6f5f6750-e40c-4f86-ada4-f2dd6ad33ed4 +2026-09-04 11:42:38,139 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/6f5f6750-e40c-4f86-ada4-f2dd6ad33ed4 - 200 [2.43ms] +2026-09-04 11:42:38,142 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.02ms] +2026-09-04 11:42:38,149 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/e1ed852f-e880-4ddd-8468-afa87e8ea673 - 404 [2.92ms] +2026-09-04 11:42:38,158 INFO app.crud.llm_prompt_config created llm prompt config id=5f17d47b-cc7a-4ad0-9b08-9e97e4beb96f org=1 project=1 +2026-09-04 11:42:38,159 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [5.05ms] +2026-09-04 11:42:38,162 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/5f17d47b-cc7a-4ad0-9b08-9e97e4beb96f - 404 [2.23ms] +2026-09-04 11:42:38,279 INFO guardrails.execution request=5b1d96ba-8193-4e76-a4f9-31092ccaa66d starting guardrails execution (validators=[]) input='hello' +2026-09-04 11:42:38,279 INFO guardrails.execution request=5b1d96ba-8193-4e76-a4f9-31092ccaa66d guardrails execution finished (passed=True) output='clean text' +2026-09-04 11:42:38,281 INFO guardrails.execution request=5b1d96ba-8193-4e76-a4f9-31092ccaa66d starting guardrails execution (validators=[]) input='bad text' +2026-09-04 11:42:38,281 INFO guardrails.execution request=5b1d96ba-8193-4e76-a4f9-31092ccaa66d guardrails execution finished (passed=False) output=None +2026-09-04 11:42:38,284 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 5b1d96ba-8193-4e76-a4f9-31092ccaa66d: Invalid config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid config +2026-09-04 11:42:38,287 INFO guardrails.execution request=5b1d96ba-8193-4e76-a4f9-31092ccaa66d starting guardrails execution (validators=[]) input='bad text' +2026-09-04 11:42:38,287 INFO guardrails.execution request=5b1d96ba-8193-4e76-a4f9-31092ccaa66d guardrails execution finished (passed=False) output=None +2026-09-04 11:42:38,289 INFO guardrails.execution request=5b1d96ba-8193-4e76-a4f9-31092ccaa66d starting guardrails execution (validators=[]) input='bad text' +2026-09-04 11:42:38,289 INFO guardrails.execution request=5b1d96ba-8193-4e76-a4f9-31092ccaa66d guardrails execution finished (passed=False) output=None +2026-09-04 11:42:38,318 INFO guardrails.execution request=5b1d96ba-8193-4e76-a4f9-31092ccaa66d starting guardrails execution (validators=[]) input='this is some unsafe content' +2026-09-04 11:42:38,318 INFO guardrails.execution request=5b1d96ba-8193-4e76-a4f9-31092ccaa66d guardrails execution finished (passed=False) output=None +2026-09-04 11:42:38,321 INFO guardrails.execution request=5b1d96ba-8193-4e76-a4f9-31092ccaa66d starting guardrails execution (validators=[]) input='some input text' +2026-09-04 11:42:38,321 INFO guardrails.execution request=5b1d96ba-8193-4e76-a4f9-31092ccaa66d guardrails execution finished (passed=False) output=None +2026-09-04 11:42:38,323 INFO guardrails.execution request=5b1d96ba-8193-4e76-a4f9-31092ccaa66d starting guardrails execution (validators=[]) input='this contains profane words' +2026-09-04 11:42:38,323 INFO guardrails.execution request=5b1d96ba-8193-4e76-a4f9-31092ccaa66d guardrails execution finished (passed=False) output=None +2026-09-04 11:42:38,326 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 5b1d96ba-8193-4e76-a4f9-31092ccaa66d: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +2026-09-04 11:42:38,328 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 5b1d96ba-8193-4e76-a4f9-31092ccaa66d: Validation failed for field with errors: Profanity detected in: this contains profane words +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: Profanity detected in: this contains profane words +2026-09-04 11:42:38,344 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-04 11:42:38,349 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-04 11:42:38,353 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-04 11:42:38,368 INFO app.crud.validator_config created validator config id=8c2d6645-cbc7-4308-a285-d5d51763f2dd org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-04 11:42:38,369 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [8.42ms] +2026-09-04 11:42:38,377 INFO app.crud.validator_config created validator config id=ca9f8856-58df-4b61-8beb-9b4248077f93 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-04 11:42:38,378 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [4.31ms] +2026-09-04 11:42:38,380 WARNING app.crud.validator_config create validator config failed: duplicate name (org=1 project=1) +2026-09-04 11:42:38,381 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 400 [2.58ms] +2026-09-04 11:42:38,387 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 422 [1.20ms] +2026-09-04 11:42:38,393 INFO app.crud.validator_config created validator config id=77e1a9e4-820b-4819-9ab2-7851725870de org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-04 11:42:38,394 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.48ms] +2026-09-04 11:42:38,397 INFO app.crud.validator_config created validator config id=6f321db5-3f39-4679-ac0a-4904c18b1c1c org=1 project=1 type=ValidatorType.PIIRemover +2026-09-04 11:42:38,398 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.86ms] +2026-09-04 11:42:38,402 INFO app.crud.validator_config created validator config id=d97ff0fb-8a07-4f72-975f-48f6e08018e3 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-04 11:42:38,402 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.81ms] +2026-09-04 11:42:38,407 INFO app.crud.validator_config created validator config id=b24dc583-7d37-4fa4-a148-62d5dfc520cd org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-04 11:42:38,408 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [4.63ms] +2026-09-04 11:42:38,411 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [3.22ms] +2026-09-04 11:42:38,412 INFO http_request_logger GET /api/v1/guardrails/validators/configs/77e1a9e4-820b-4819-9ab2-7851725870de/ - 307 [0.11ms] +2026-09-04 11:42:38,417 INFO http_request_logger GET /api/v1/guardrails/validators/configs/77e1a9e4-820b-4819-9ab2-7851725870de - 200 [3.91ms] +2026-09-04 11:42:38,417 INFO http_request_logger GET /api/v1/guardrails/validators/configs/6f321db5-3f39-4679-ac0a-4904c18b1c1c/ - 307 [0.11ms] +2026-09-04 11:42:38,422 INFO http_request_logger GET /api/v1/guardrails/validators/configs/6f321db5-3f39-4679-ac0a-4904c18b1c1c - 200 [3.77ms] +2026-09-04 11:42:38,423 INFO http_request_logger GET /api/v1/guardrails/validators/configs/d97ff0fb-8a07-4f72-975f-48f6e08018e3/ - 307 [0.15ms] +2026-09-04 11:42:38,425 INFO http_request_logger GET /api/v1/guardrails/validators/configs/d97ff0fb-8a07-4f72-975f-48f6e08018e3 - 200 [2.11ms] +2026-09-04 11:42:38,426 INFO http_request_logger GET /api/v1/guardrails/validators/configs/b24dc583-7d37-4fa4-a148-62d5dfc520cd/ - 307 [0.10ms] +2026-09-04 11:42:38,428 INFO http_request_logger GET /api/v1/guardrails/validators/configs/b24dc583-7d37-4fa4-a148-62d5dfc520cd - 200 [2.01ms] +2026-09-04 11:42:38,436 INFO app.crud.validator_config created validator config id=c0e25c6e-cea3-443e-974b-aedeaacf5299 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-04 11:42:38,437 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.99ms] +2026-09-04 11:42:38,440 INFO app.crud.validator_config created validator config id=48f0ae73-5d1c-40ed-90bf-8bb4776846f5 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-04 11:42:38,440 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.85ms] +2026-09-04 11:42:38,443 INFO app.crud.validator_config created validator config id=fa132aff-3965-4184-abcf-087ee5342a28 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-04 11:42:38,444 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.05ms] +2026-09-04 11:42:38,444 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/c0e25c6e-cea3-443e-974b-aedeaacf5299/ - 307 [0.10ms] +2026-09-04 11:42:38,449 INFO app.crud.validator_config updated validator config id=c0e25c6e-cea3-443e-974b-aedeaacf5299 +2026-09-04 11:42:38,450 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/c0e25c6e-cea3-443e-974b-aedeaacf5299 - 200 [5.00ms] +2026-09-04 11:42:38,450 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/48f0ae73-5d1c-40ed-90bf-8bb4776846f5/ - 307 [0.11ms] +2026-09-04 11:42:38,454 INFO app.crud.validator_config updated validator config id=48f0ae73-5d1c-40ed-90bf-8bb4776846f5 +2026-09-04 11:42:38,454 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/48f0ae73-5d1c-40ed-90bf-8bb4776846f5 - 200 [3.61ms] +2026-09-04 11:42:38,455 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/fa132aff-3965-4184-abcf-087ee5342a28/ - 307 [0.12ms] +2026-09-04 11:42:38,459 INFO app.crud.validator_config updated validator config id=fa132aff-3965-4184-abcf-087ee5342a28 +2026-09-04 11:42:38,459 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/fa132aff-3965-4184-abcf-087ee5342a28 - 200 [4.14ms] +2026-09-04 11:42:38,462 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.46ms] +2026-09-04 11:42:38,472 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.42ms] +2026-09-04 11:42:38,483 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [3.73ms] +2026-09-04 11:42:38,494 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.42ms] +2026-09-04 11:42:38,502 INFO app.crud.validator_config created validator config id=fa2a1215-b294-419a-934c-b99611c44fa2 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-04 11:42:38,503 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [4.48ms] +2026-09-04 11:42:38,507 INFO app.crud.validator_config created validator config id=1b689936-d056-415e-bb17-cb8fd82583b2 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-04 11:42:38,508 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [4.08ms] +2026-09-04 11:42:38,510 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.27ms] +2026-09-04 11:42:38,518 INFO app.crud.validator_config created validator config id=69bb13e2-0cd4-4f95-a1ac-53358dab3a4d org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-04 11:42:38,519 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [4.12ms] +2026-09-04 11:42:38,522 INFO app.crud.validator_config created validator config id=585a1c6b-f6b4-484a-a6e5-04abfc6eb8db org=1 project=1 type=ValidatorType.PIIRemover +2026-09-04 11:42:38,523 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.33ms] +2026-09-04 11:42:38,526 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.65ms] +2026-09-04 11:42:38,532 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 422 [1.07ms] +2026-09-04 11:42:38,538 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.00ms] +2026-09-04 11:42:38,546 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.19ms] +2026-09-04 11:42:38,547 INFO http_request_logger GET /api/v1/guardrails/validators/configs/861333d2-3331-478b-8d07-2ebf2c5b3a18/ - 307 [0.10ms] +2026-09-04 11:42:38,549 INFO http_request_logger GET /api/v1/guardrails/validators/configs/861333d2-3331-478b-8d07-2ebf2c5b3a18 - 200 [1.69ms] +2026-09-04 11:42:38,552 INFO http_request_logger GET /api/v1/guardrails/validators/configs/83f4381a-fe65-4797-a591-6f906e3c3fc2/ - 307 [0.09ms] +2026-09-04 11:42:38,554 INFO http_request_logger GET /api/v1/guardrails/validators/configs/83f4381a-fe65-4797-a591-6f906e3c3fc2 - 404 [1.64ms] +2026-09-04 11:42:38,557 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid/ - 307 [0.09ms] +2026-09-04 11:42:38,559 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid - 422 [0.83ms] +2026-09-04 11:42:38,565 INFO app.crud.validator_config created validator config id=9551f871-d637-4256-a763-246efe12a8c3 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-04 11:42:38,566 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [4.25ms] +2026-09-04 11:42:38,567 INFO http_request_logger GET /api/v1/guardrails/validators/configs/9551f871-d637-4256-a763-246efe12a8c3/ - 307 [0.11ms] +2026-09-04 11:42:38,569 INFO http_request_logger GET /api/v1/guardrails/validators/configs/9551f871-d637-4256-a763-246efe12a8c3 - 404 [1.79ms] +2026-09-04 11:42:38,578 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.26ms] +2026-09-04 11:42:38,579 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/0ab06f2b-4d22-4525-9a50-db9b13e01145/ - 307 [0.10ms] +2026-09-04 11:42:38,582 INFO app.crud.validator_config updated validator config id=0ab06f2b-4d22-4525-9a50-db9b13e01145 +2026-09-04 11:42:38,583 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/0ab06f2b-4d22-4525-9a50-db9b13e01145 - 200 [3.91ms] +2026-09-04 11:42:38,592 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.41ms] +2026-09-04 11:42:38,593 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/dbaeb025-79b1-4eb6-927f-c50e5cf62091/ - 307 [0.10ms] +2026-09-04 11:42:38,596 INFO app.crud.validator_config updated validator config id=dbaeb025-79b1-4eb6-927f-c50e5cf62091 +2026-09-04 11:42:38,596 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/dbaeb025-79b1-4eb6-927f-c50e5cf62091 - 200 [3.11ms] +2026-09-04 11:42:38,600 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/dff8039d-8823-473f-9a1d-12a41701c3e5/ - 307 [0.10ms] +2026-09-04 11:42:38,603 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/dff8039d-8823-473f-9a1d-12a41701c3e5 - 404 [2.60ms] +2026-09-04 11:42:38,612 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.11ms] +2026-09-04 11:42:38,612 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/0cb148bb-76a7-426c-ba98-550374a7225e/ - 307 [0.09ms] +2026-09-04 11:42:38,615 INFO app.crud.validator_config deleted validator config id=0cb148bb-76a7-426c-ba98-550374a7225e +2026-09-04 11:42:38,615 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/0cb148bb-76a7-426c-ba98-550374a7225e - 200 [2.41ms] +2026-09-04 11:42:38,615 INFO http_request_logger GET /api/v1/guardrails/validators/configs/0cb148bb-76a7-426c-ba98-550374a7225e/ - 307 [0.09ms] +2026-09-04 11:42:38,617 INFO http_request_logger GET /api/v1/guardrails/validators/configs/0cb148bb-76a7-426c-ba98-550374a7225e - 404 [1.69ms] +2026-09-04 11:42:38,621 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/f1f6cabd-b886-4a0a-a229-9499e6729dc8/ - 307 [0.10ms] +2026-09-04 11:42:38,624 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/f1f6cabd-b886-4a0a-a229-9499e6729dc8 - 404 [2.26ms] +2026-09-04 11:42:38,632 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.58ms] +2026-09-04 11:42:38,633 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/c94c81a6-6947-404d-97e2-eeee664d70d3/ - 307 [0.11ms] +2026-09-04 11:42:38,635 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/c94c81a6-6947-404d-97e2-eeee664d70d3 - 404 [1.80ms] +2026-09-04 11:42:38,636 INFO http_request_logger GET /api/v1/guardrails/validators/configs/c94c81a6-6947-404d-97e2-eeee664d70d3/ - 307 [0.11ms] +2026-09-04 11:42:38,638 INFO http_request_logger GET /api/v1/guardrails/validators/configs/c94c81a6-6947-404d-97e2-eeee664d70d3 - 200 [1.97ms] +2026-09-04 11:42:38,763 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-04 11:42:38,763 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-04 11:42:38,840 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 11:42:41,209 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 11:42:41,217 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 11:42:42,253 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 11:42:42,264 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 11:42:43,641 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 11:42:43,651 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 11:42:44,977 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 11:42:45,077 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 11:42:46,765 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 11:42:46,950 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 11:42:47,964 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 11:42:47,966 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 11:42:49,192 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 16:31:01,521 INFO uvicorn.error Shutting down +2026-09-04 16:31:01,642 INFO uvicorn.error Waiting for application shutdown. +2026-09-04 16:31:01,644 INFO uvicorn.error Application shutdown complete. +2026-09-04 16:31:01,645 INFO uvicorn.error Finished server process [7681] +2026-09-04 16:31:10,669 INFO presidio-analyzer Using device of type: cpu +2026-09-04 16:31:11,601 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-04 16:31:11,632 INFO uvicorn.error Will watch for changes in these directories: ['/Users/prajna/Desktop/t4d/kaapi-guardrails/backend'] +2026-09-04 16:31:11,633 INFO uvicorn.error Uvicorn running on http://127.0.0.1:8001 (Press CTRL+C to quit) +2026-09-04 16:31:11,633 INFO uvicorn.error Started reloader process [21142] using WatchFiles +2026-09-04 16:31:16,430 INFO presidio-analyzer Using device of type: cpu +2026-09-04 16:31:17,211 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-04 16:31:17,211 INFO uvicorn.error Started server process [21168] +2026-09-04 16:31:17,212 INFO uvicorn.error Waiting for application startup. +2026-09-04 16:31:17,212 INFO uvicorn.error Application startup complete. +2026-09-04 16:37:30,240 INFO presidio-analyzer Using device of type: cpu +2026-09-04 16:37:31,208 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-04 16:37:31,590 INFO watchfiles.main 1 change detected +2026-09-04 16:52:51,489 WARNING app.crud.validator_config create validator config failed: duplicate name (org=1 project=1) +2026-09-04 16:52:51,491 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 400 [60.12ms] +2026-09-04 16:52:59,350 INFO app.crud.validator_config created validator config id=48d7d2cf-038d-4e2b-a8c8-b94dd602da7f org=1 project=1 type=ValidatorType.PIIRemover +2026-09-04 16:52:59,351 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [15.65ms] +2026-09-04 16:53:46,720 INFO uvicorn.error Shutting down +2026-09-04 16:53:46,832 INFO uvicorn.error Waiting for application shutdown. +2026-09-04 16:53:46,838 INFO uvicorn.error Application shutdown complete. +2026-09-04 16:53:46,839 INFO uvicorn.error Finished server process [21168] +2026-09-04 16:53:46,878 INFO uvicorn.error Stopping reloader process [21142] +2026-09-04 16:53:54,419 INFO presidio-analyzer Using device of type: cpu +2026-09-04 16:53:55,229 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-04 16:53:55,259 INFO uvicorn.error Will watch for changes in these directories: ['/Users/prajna/Desktop/t4d/kaapi-guardrails/backend'] +2026-09-04 16:53:55,259 INFO uvicorn.error Uvicorn running on http://127.0.0.1:8001 (Press CTRL+C to quit) +2026-09-04 16:53:55,260 INFO uvicorn.error Started reloader process [23649] using WatchFiles +2026-09-04 16:53:59,757 INFO presidio-analyzer Using device of type: cpu +2026-09-04 16:54:00,575 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-04 16:54:00,576 INFO uvicorn.error Started server process [23664] +2026-09-04 16:54:00,576 INFO uvicorn.error Waiting for application startup. +2026-09-04 16:54:00,577 INFO uvicorn.error Application startup complete. +2026-09-04 16:54:18,523 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 403 [3.14ms] +2026-09-04 16:54:23,344 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 403 [0.90ms] +2026-09-04 16:55:46,510 INFO watchfiles.main 3 changes detected +2026-09-04 16:55:46,515 WARNING uvicorn.error WatchFiles detected changes in 'app/api/deps.py'. Reloading... +2026-09-04 16:55:46,602 INFO uvicorn.error Shutting down +2026-09-04 16:55:46,708 INFO uvicorn.error Waiting for application shutdown. +2026-09-04 16:55:46,709 INFO uvicorn.error Application shutdown complete. +2026-09-04 16:55:46,711 INFO uvicorn.error Finished server process [23664] +2026-09-04 16:55:47,106 INFO watchfiles.main 1 change detected +2026-09-04 16:55:47,467 INFO watchfiles.main 3 changes detected +2026-09-04 16:55:52,977 INFO presidio-analyzer Using device of type: cpu +2026-09-04 16:55:53,864 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-04 16:55:53,865 INFO uvicorn.error Started server process [23757] +2026-09-04 16:55:53,865 INFO uvicorn.error Waiting for application startup. +2026-09-04 16:55:53,866 INFO uvicorn.error Application startup complete. +2026-09-04 16:56:03,214 INFO presidio-analyzer Using device of type: cpu +2026-09-04 16:56:04,014 INFO guardrails.execution request=0286d910-d16b-4113-8005-3357db09beab starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 16:56:04,017 INFO guardrails.execution request=0286d910-d16b-4113-8005-3357db09beab guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 16:56:04,020 INFO guardrails.execution request=0286d910-d16b-4113-8005-3357db09beab step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-04T16:56:04.016118 end=2026-09-04T16:56:04.016231 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 16:56:04,024 INFO http_request_logger POST /api/v1/guardrails/ - 200 [35.98ms] +2026-09-04 16:56:04,040 INFO guardrails.execution request=8eecd700-a5dd-4a0e-89a7-3d36b281abc8 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-04 16:56:04,040 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 8eecd700-a5dd-4a0e-89a7-3d36b281abc8: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-04 16:56:04,047 INFO guardrails.execution request=8eecd700-a5dd-4a0e-89a7-3d36b281abc8 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-04T16:56:04.040607 end=2026-09-04T16:56:04.040689 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-04 16:56:04,050 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.46ms] +2026-09-04 16:56:04,066 INFO guardrails.execution request=9bb7affb-8552-4959-8df8-072e507d3ddc starting guardrails execution (validators=['answer_relevance_custom_llm']) input='' +2026-09-04 16:56:04,067 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 9bb7affb-8552-4959-8df8-072e507d3ddc: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +2026-09-04 16:56:04,069 INFO guardrails.execution request=9bb7affb-8552-4959-8df8-072e507d3ddc step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-04T16:56:04.066727 end=2026-09-04T16:56:04.066777 duration_ms=0 input='' output=None +2026-09-04 16:56:04,071 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.55ms] +2026-09-04 16:56:04,089 INFO guardrails.execution request=7833433a-9e96-4d52-b123-a480b5f42aec starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 16:56:04,091 INFO guardrails.execution request=7833433a-9e96-4d52-b123-a480b5f42aec guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 16:56:04,093 INFO guardrails.execution request=7833433a-9e96-4d52-b123-a480b5f42aec step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-04T16:56:04.090265 end=2026-09-04T16:56:04.090352 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 16:56:04,096 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.67ms] +2026-09-04 16:56:04,112 INFO guardrails.execution request=7c3f5620-2094-4a3a-844a-c925370799e2 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-04 16:56:04,113 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 7c3f5620-2094-4a3a-844a-c925370799e2: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-04 16:56:04,115 INFO guardrails.execution request=7c3f5620-2094-4a3a-844a-c925370799e2 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-04T16:56:04.113166 end=2026-09-04T16:56:04.113250 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-04 16:56:04,117 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.90ms] +2026-09-04 16:56:04,133 INFO guardrails.execution request=6e6b4b9b-3879-4d54-a54c-564caec6164a starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-04 16:56:04,135 INFO guardrails.execution request=6e6b4b9b-3879-4d54-a54c-564caec6164a guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-04 16:56:04,137 INFO guardrails.execution request=6e6b4b9b-3879-4d54-a54c-564caec6164a step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-04T16:56:04.134017 end=2026-09-04T16:56:04.134085 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-04 16:56:04,138 INFO guardrails.execution request=6e6b4b9b-3879-4d54-a54c-564caec6164a step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:04.134089 end=2026-09-04T16:56:04.134195 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-04 16:56:04,141 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.24ms] +2026-09-04 16:56:04,156 INFO guardrails.execution request=a701a5a8-4946-4660-b4d7-f50d0164eac4 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Diabetes symptoms include fuck fatigue.' +2026-09-04 16:56:04,161 INFO guardrails.execution request=a701a5a8-4946-4660-b4d7-f50d0164eac4 guardrails execution finished (passed=True) output='' +2026-09-04 16:56:04,163 INFO guardrails.execution request=a701a5a8-4946-4660-b4d7-f50d0164eac4 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-04T16:56:04.156853 end=2026-09-04T16:56:04.156925 duration_ms=0 input='Diabetes symptoms include fuck fatigue.' output='Diabetes symptoms include fuck fatigue.' +2026-09-04 16:56:04,164 INFO guardrails.execution request=a701a5a8-4946-4660-b4d7-f50d0164eac4 step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:04.156930 end=2026-09-04T16:56:04.160766 duration_ms=3 input='Diabetes symptoms include fuck fatigue.' output='' +2026-09-04 16:56:04,167 INFO http_request_logger POST /api/v1/guardrails/ - 200 [21.05ms] +2026-09-04 16:56:04,189 INFO guardrails.execution request=c4c0d4c7-2102-4817-912c-19101a7331d1 starting guardrails execution (validators=['answer_relevance_custom_llm', 'uli_slur_match']) input='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-04 16:56:04,193 INFO guardrails.execution request=c4c0d4c7-2102-4817-912c-19101a7331d1 guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-04 16:56:04,195 INFO guardrails.execution request=c4c0d4c7-2102-4817-912c-19101a7331d1 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-04T16:56:04.190432 end=2026-09-04T16:56:04.190498 duration_ms=0 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-04 16:56:04,196 INFO guardrails.execution request=c4c0d4c7-2102-4817-912c-19101a7331d1 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:04.190502 end=2026-09-04T16:56:04.192785 duration_ms=2 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-04 16:56:04,199 INFO http_request_logger POST /api/v1/guardrails/ - 200 [28.31ms] +2026-09-04 16:56:04,212 INFO guardrails.execution request=daafd376-d8fe-4bd1-9cd6-0ca783e1ff6d starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-04 16:56:04,214 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log daafd376-d8fe-4bd1-9cd6-0ca783e1ff6d: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +2026-09-04 16:56:04,216 INFO guardrails.execution request=daafd376-d8fe-4bd1-9cd6-0ca783e1ff6d step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-04T16:56:04.212748 end=2026-09-04T16:56:04.212826 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-04 16:56:04,217 INFO guardrails.execution request=daafd376-d8fe-4bd1-9cd6-0ca783e1ff6d step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:04.212832 end=2026-09-04T16:56:04.213875 duration_ms=1 input='Bloody hell, the symptoms include thirst and fatigue.' output=None +2026-09-04 16:56:04,219 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.00ms] +2026-09-04 16:56:04,236 INFO guardrails.execution request=57228fdc-700e-42a6-97cd-308623fe59f7 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list', 'profanity_free', 'uli_slur_match', 'gender_assumption_bias']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 16:56:04,240 INFO guardrails.execution request=57228fdc-700e-42a6-97cd-308623fe59f7 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 16:56:04,242 INFO guardrails.execution request=57228fdc-700e-42a6-97cd-308623fe59f7 step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-04T16:56:04.236955 end=2026-09-04T16:56:04.237029 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 16:56:04,243 INFO guardrails.execution request=57228fdc-700e-42a6-97cd-308623fe59f7 step=2/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-04T16:56:04.237034 end=2026-09-04T16:56:04.237096 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 16:56:04,245 INFO guardrails.execution request=57228fdc-700e-42a6-97cd-308623fe59f7 step=3/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-04T16:56:04.237099 end=2026-09-04T16:56:04.238041 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 16:56:04,246 INFO guardrails.execution request=57228fdc-700e-42a6-97cd-308623fe59f7 step=4/5 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-04T16:56:04.238045 end=2026-09-04T16:56:04.238589 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 16:56:04,247 INFO guardrails.execution request=57228fdc-700e-42a6-97cd-308623fe59f7 step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.PASS start=2026-09-04T16:56:04.238593 end=2026-09-04T16:56:04.239223 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-04 16:56:04,250 INFO http_request_logger POST /api/v1/guardrails/ - 200 [27.24ms] +2026-09-04 16:56:04,269 INFO guardrails.execution request=2c7390e0-bfc5-46fd-b94f-7e00867b4e0c starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free', 'uli_slur_match', 'ban_list', 'gender_assumption_bias']) input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-04 16:56:04,272 INFO guardrails.execution request=2c7390e0-bfc5-46fd-b94f-7e00867b4e0c guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-04 16:56:04,274 INFO guardrails.execution request=2c7390e0-bfc5-46fd-b94f-7e00867b4e0c step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-04T16:56:04.269860 end=2026-09-04T16:56:04.269925 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-04 16:56:04,276 INFO guardrails.execution request=2c7390e0-bfc5-46fd-b94f-7e00867b4e0c step=2/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-04T16:56:04.269929 end=2026-09-04T16:56:04.270829 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-04 16:56:04,277 INFO guardrails.execution request=2c7390e0-bfc5-46fd-b94f-7e00867b4e0c step=3/5 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:04.270833 end=2026-09-04T16:56:04.271324 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-04 16:56:04,278 INFO guardrails.execution request=2c7390e0-bfc5-46fd-b94f-7e00867b4e0c step=4/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-04T16:56:04.271329 end=2026-09-04T16:56:04.271392 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-04 16:56:04,279 INFO guardrails.execution request=2c7390e0-bfc5-46fd-b94f-7e00867b4e0c step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:04.271396 end=2026-09-04T16:56:04.271996 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-04 16:56:04,282 INFO http_request_logger POST /api/v1/guardrails/ - 200 [28.39ms] +2026-09-04 16:56:04,304 INFO app.crud.ban_list created ban list id=53b79ada-43bf-4df7-a004-55b4f179d1e2 org=1 project=1 +2026-09-04 16:56:04,305 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [5.82ms] +2026-09-04 16:56:04,309 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [1.06ms] +2026-09-04 16:56:04,313 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.83ms] +2026-09-04 16:56:04,317 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [1.01ms] +2026-09-04 16:56:04,320 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.76ms] +2026-09-04 16:56:04,324 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.69ms] +2026-09-04 16:56:04,335 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [4.87ms] +2026-09-04 16:56:04,344 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.42ms] +2026-09-04 16:56:04,349 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.10ms] +2026-09-04 16:56:04,357 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [3.54ms] +2026-09-04 16:56:04,368 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.70ms] +2026-09-04 16:56:04,370 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.80ms] +2026-09-04 16:56:04,375 INFO app.crud.ban_list created ban list id=7b1340fc-8ba1-4e20-bf96-da343cf7b43f org=1 project=1 +2026-09-04 16:56:04,375 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [2.66ms] +2026-09-04 16:56:04,376 INFO http_request_logger GET /api/v1/guardrails/ban_lists/7b1340fc-8ba1-4e20-bf96-da343cf7b43f/ - 307 [0.11ms] +2026-09-04 16:56:04,379 INFO http_request_logger GET /api/v1/guardrails/ban_lists/7b1340fc-8ba1-4e20-bf96-da343cf7b43f - 200 [2.33ms] +2026-09-04 16:56:04,388 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.26ms] +2026-09-04 16:56:04,389 INFO http_request_logger GET /api/v1/guardrails/ban_lists/04de9d52-56bd-4854-a0de-5718996cea8d/ - 307 [0.10ms] +2026-09-04 16:56:04,391 INFO http_request_logger GET /api/v1/guardrails/ban_lists/04de9d52-56bd-4854-a0de-5718996cea8d - 200 [1.62ms] +2026-09-04 16:56:04,394 INFO http_request_logger GET /api/v1/guardrails/ban_lists/17556210-2828-48bb-b18a-9cba633bd257/ - 307 [0.09ms] +2026-09-04 16:56:04,396 INFO http_request_logger GET /api/v1/guardrails/ban_lists/17556210-2828-48bb-b18a-9cba633bd257 - 404 [1.63ms] +2026-09-04 16:56:04,405 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.81ms] +2026-09-04 16:56:04,405 INFO http_request_logger GET /api/v1/guardrails/ban_lists/921ef882-e76b-4738-8c48-abd644e0b41f/ - 307 [0.09ms] +2026-09-04 16:56:04,407 INFO http_request_logger GET /api/v1/guardrails/ban_lists/921ef882-e76b-4738-8c48-abd644e0b41f - 403 [1.33ms] +2026-09-04 16:56:04,413 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.74ms] +2026-09-04 16:56:04,414 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/bffea4c5-5d53-4a02-b15e-86f376628876/ - 307 [0.08ms] +2026-09-04 16:56:04,417 INFO app.crud.ban_list updated ban list id=bffea4c5-5d53-4a02-b15e-86f376628876 +2026-09-04 16:56:04,418 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/bffea4c5-5d53-4a02-b15e-86f376628876 - 200 [3.39ms] +2026-09-04 16:56:04,424 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.64ms] +2026-09-04 16:56:04,425 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/06b1dd90-62a3-47ce-9d6d-ffa4337783b0/ - 307 [0.09ms] +2026-09-04 16:56:04,427 INFO app.crud.ban_list updated ban list id=06b1dd90-62a3-47ce-9d6d-ffa4337783b0 +2026-09-04 16:56:04,428 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/06b1dd90-62a3-47ce-9d6d-ffa4337783b0 - 200 [2.88ms] +2026-09-04 16:56:04,431 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/ca6868e9-af4c-4e67-9fe3-ab9085ce0a7e/ - 307 [0.08ms] +2026-09-04 16:56:04,433 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/ca6868e9-af4c-4e67-9fe3-ab9085ce0a7e - 404 [1.53ms] +2026-09-04 16:56:04,440 INFO app.crud.ban_list created ban list id=fc00a9b6-414b-47ee-957e-cf833c6b8b8b org=1 project=1 +2026-09-04 16:56:04,440 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [2.92ms] +2026-09-04 16:56:04,441 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/fc00a9b6-414b-47ee-957e-cf833c6b8b8b/ - 307 [0.08ms] +2026-09-04 16:56:04,442 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/fc00a9b6-414b-47ee-957e-cf833c6b8b8b - 403 [1.29ms] +2026-09-04 16:56:04,449 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.75ms] +2026-09-04 16:56:04,450 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/b87bf82c-37cb-46bb-a969-f746f62186de/ - 307 [0.09ms] +2026-09-04 16:56:04,453 INFO app.crud.ban_list deleted ban list id=b87bf82c-37cb-46bb-a969-f746f62186de +2026-09-04 16:56:04,454 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/b87bf82c-37cb-46bb-a969-f746f62186de - 200 [3.43ms] +2026-09-04 16:56:04,460 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/f329f98c-531d-4c8b-a122-2cd15f2478c5/ - 307 [0.10ms] +2026-09-04 16:56:04,462 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/f329f98c-531d-4c8b-a122-2cd15f2478c5 - 404 [1.95ms] +2026-09-04 16:56:04,469 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.80ms] +2026-09-04 16:56:04,469 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/5a01d207-3316-48c2-b7c9-bd55e7b17fc5/ - 307 [0.08ms] +2026-09-04 16:56:04,472 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/5a01d207-3316-48c2-b7c9-bd55e7b17fc5 - 403 [2.61ms] +2026-09-04 16:56:04,479 INFO app.crud.ban_list created ban list id=de9b87e3-5e2b-4c8c-93cd-b07a3756c031 org=1 project=1 +2026-09-04 16:56:04,479 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [2.75ms] +2026-09-04 16:56:04,480 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/de9b87e3-5e2b-4c8c-93cd-b07a3756c031/ - 307 [0.09ms] +2026-09-04 16:56:04,481 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/de9b87e3-5e2b-4c8c-93cd-b07a3756c031 - 403 [1.36ms] +2026-09-04 16:56:04,565 INFO guardrails.execution request=90b8ee2f-357e-401f-80dc-0048efb07e79 starting guardrails execution (validators=[]) input='hello world' +2026-09-04 16:56:04,565 INFO guardrails.execution request=90b8ee2f-357e-401f-80dc-0048efb07e79 guardrails execution finished (passed=True) output='clean text' +2026-09-04 16:56:04,568 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.34ms] +2026-09-04 16:56:04,574 INFO guardrails.execution request=a2f2fef6-0b2f-46c6-bb9a-405b406bc835 starting guardrails execution (validators=[]) input='my phone is 999999' +2026-09-04 16:56:04,574 INFO guardrails.execution request=a2f2fef6-0b2f-46c6-bb9a-405b406bc835 guardrails execution finished (passed=False) output=None +2026-09-04 16:56:04,576 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.36ms] +2026-09-04 16:56:04,581 INFO guardrails.execution request=ee99a0b4-0e6f-4faa-8007-d3154ad1df39 starting guardrails execution (validators=[]) input='tell me about buildings' +2026-09-04 16:56:04,581 INFO guardrails.execution request=ee99a0b4-0e6f-4faa-8007-d3154ad1df39 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Input is outside the allowed topic scope.' +2026-09-04 16:56:04,583 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3.86ms] +2026-09-04 16:56:04,588 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 9780eb5e-f26e-4a87-88aa-d3b2d1ac4fe8: Invalid validator config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid validator config +2026-09-04 16:56:04,591 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.70ms] +2026-09-04 16:56:04,602 INFO guardrails.execution request=437b8802-e5cc-4e6b-9676-5f4369c8e48f starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-04 16:56:04,604 INFO guardrails.execution request=437b8802-e5cc-4e6b-9676-5f4369c8e48f guardrails execution finished (passed=True) output='this contains b' +2026-09-04 16:56:04,605 INFO guardrails.execution request=437b8802-e5cc-4e6b-9676-5f4369c8e48f step=1/1 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:04.603366 end=2026-09-04T16:56:04.603462 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-04 16:56:04,608 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.29ms] +2026-09-04 16:56:04,621 INFO guardrails.execution request=0eec1576-ecbc-418a-8459-3d586657dfd4 starting guardrails execution (validators=['ban_list']) input='this is clean' +2026-09-04 16:56:04,622 INFO guardrails.execution request=0eec1576-ecbc-418a-8459-3d586657dfd4 guardrails execution finished (passed=True) output='this is clean' +2026-09-04 16:56:04,624 INFO guardrails.execution request=0eec1576-ecbc-418a-8459-3d586657dfd4 step=1/1 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-04T16:56:04.621559 end=2026-09-04T16:56:04.621629 duration_ms=0 input='this is clean' output='this is clean' +2026-09-04 16:56:04,627 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.65ms] +2026-09-04 16:56:04,644 INFO guardrails.execution request=27b13f7d-f0ad-4adb-a7eb-ae3170966f92 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-04 16:56:04,646 INFO guardrails.execution request=27b13f7d-f0ad-4adb-a7eb-ae3170966f92 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR].' +2026-09-04 16:56:04,648 INFO guardrails.execution request=27b13f7d-f0ad-4adb-a7eb-ae3170966f92 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:04.645462 end=2026-09-04T16:56:04.645834 duration_ms=0 input='This sentence contains chakki.' output='this sentence contains [REDACTED_SLUR].' +2026-09-04 16:56:04,650 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.25ms] +2026-09-04 16:56:04,663 INFO guardrails.execution request=3ff6ea18-33cb-46d2-b393-c656496060d5 starting guardrails execution (validators=['uli_slur_match']) input='This is a completely safe sentence' +2026-09-04 16:56:04,665 INFO guardrails.execution request=3ff6ea18-33cb-46d2-b393-c656496060d5 guardrails execution finished (passed=True) output='This is a completely safe sentence' +2026-09-04 16:56:04,666 INFO guardrails.execution request=3ff6ea18-33cb-46d2-b393-c656496060d5 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-04T16:56:04.664291 end=2026-09-04T16:56:04.664598 duration_ms=0 input='This is a completely safe sentence' output='This is a completely safe sentence' +2026-09-04 16:56:04,669 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.41ms] +2026-09-04 16:56:04,683 INFO guardrails.execution request=85761011-02a9-4595-86fe-83a630e1b59d starting guardrails execution (validators=['uli_slur_match', 'ban_list']) input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' +2026-09-04 16:56:04,685 INFO guardrails.execution request=85761011-02a9-4595-86fe-83a630e1b59d guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-04 16:56:04,686 INFO guardrails.execution request=85761011-02a9-4595-86fe-83a630e1b59d step=1/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:04.684073 end=2026-09-04T16:56:04.684540 duration_ms=0 input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' +2026-09-04 16:56:04,688 INFO guardrails.execution request=85761011-02a9-4595-86fe-83a630e1b59d step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:04.684546 end=2026-09-04T16:56:04.684621 duration_ms=0 input='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-04 16:56:04,690 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.40ms] +2026-09-04 16:56:04,694 INFO http_request_logger POST /api/v1/guardrails/ - 422 [0.88ms] +2026-09-04 16:56:04,707 INFO guardrails.execution request=aa5386ef-3a47-4274-8c3d-aaf693c65cfc starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-04 16:56:04,708 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log aa5386ef-3a47-4274-8c3d-aaf693c65cfc: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-04 16:56:04,710 INFO guardrails.execution request=aa5386ef-3a47-4274-8c3d-aaf693c65cfc step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:04.708221 end=2026-09-04T16:56:04.708473 duration_ms=0 input='This sentence contains chakki.' output=None +2026-09-04 16:56:04,712 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.68ms] +2026-09-04 16:56:04,725 INFO guardrails.execution request=4ca168bf-3572-4412-a89c-59af8e8b13d6 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-04 16:56:04,727 INFO guardrails.execution request=4ca168bf-3572-4412-a89c-59af8e8b13d6 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-04 16:56:04,728 INFO guardrails.execution request=4ca168bf-3572-4412-a89c-59af8e8b13d6 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:04.726346 end=2026-09-04T16:56:04.726590 duration_ms=0 input='This sentence contains chakki.' output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-04 16:56:04,731 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.62ms] +2026-09-04 16:56:04,743 INFO guardrails.execution request=71425796-d0d8-4d01-8c78-5f6f2e1c95aa starting guardrails execution (validators=['profanity_free']) input='This is a damn fucking mess.' +2026-09-04 16:56:04,745 INFO guardrails.execution request=71425796-d0d8-4d01-8c78-5f6f2e1c95aa guardrails execution finished (passed=True) output='' +2026-09-04 16:56:04,746 INFO guardrails.execution request=71425796-d0d8-4d01-8c78-5f6f2e1c95aa step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:04.743672 end=2026-09-04T16:56:04.744623 duration_ms=0 input='This is a damn fucking mess.' output='' +2026-09-04 16:56:04,749 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.81ms] +2026-09-04 16:56:04,761 INFO guardrails.execution request=9978e5ce-d1b2-4b37-acbd-63dcb90d12af starting guardrails execution (validators=['profanity_free']) input='This is a completely clean sentence.' +2026-09-04 16:56:04,763 INFO guardrails.execution request=9978e5ce-d1b2-4b37-acbd-63dcb90d12af guardrails execution finished (passed=True) output='This is a completely clean sentence.' +2026-09-04 16:56:04,764 INFO guardrails.execution request=9978e5ce-d1b2-4b37-acbd-63dcb90d12af step=1/1 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-04T16:56:04.761559 end=2026-09-04T16:56:04.762394 duration_ms=0 input='This is a completely clean sentence.' output='This is a completely clean sentence.' +2026-09-04 16:56:04,766 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.39ms] +2026-09-04 16:56:04,778 INFO guardrails.execution request=a62d837e-d20f-4a84-914a-d1486b6798ba starting guardrails execution (validators=['profanity_free']) input='What the fuck is going on?' +2026-09-04 16:56:04,780 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log a62d837e-d20f-4a84-914a-d1486b6798ba: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +2026-09-04 16:56:04,782 INFO guardrails.execution request=a62d837e-d20f-4a84-914a-d1486b6798ba step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:04.779177 end=2026-09-04T16:56:04.780005 duration_ms=0 input='What the fuck is going on?' output=None +2026-09-04 16:56:04,784 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.10ms] +2026-09-04 16:56:04,797 INFO guardrails.execution request=967242f7-7eab-4dab-b4f8-fda6fbffff76 starting guardrails execution (validators=['profanity_free']) input='This is absolute bullshit.' +2026-09-04 16:56:04,799 INFO guardrails.execution request=967242f7-7eab-4dab-b4f8-fda6fbffff76 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-04 16:56:04,800 INFO guardrails.execution request=967242f7-7eab-4dab-b4f8-fda6fbffff76 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:04.797782 end=2026-09-04T16:56:04.798657 duration_ms=0 input='This is absolute bullshit.' output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-04 16:56:04,804 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.46ms] +2026-09-04 16:56:04,812 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 422654d5-b41d-45cd-8339-9fbc2660b3a2: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-04 16:56:04,815 INFO http_request_logger POST /api/v1/guardrails/ - 200 [7.23ms] +2026-09-04 16:56:05,250 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-04 16:56:08,059 INFO guardrails.execution request=2d42f57b-2ffd-4579-9718-1e00c6d6e5dc starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-04 16:56:08,367 INFO guardrails.execution request=2d42f57b-2ffd-4579-9718-1e00c6d6e5dc guardrails execution finished (passed=True) output='She slowly undressed and they had explicit sex.' +2026-09-04 16:56:08,379 INFO guardrails.execution request=2d42f57b-2ffd-4579-9718-1e00c6d6e5dc step=1/1 validator=NSFWText stage=input outcome=Outcome.PASS start=2026-09-04T16:56:08.065937 end=2026-09-04T16:56:08.365721 duration_ms=299 input='She slowly undressed and they had explicit sex.' output='She slowly undressed and they had explicit sex.' +2026-09-04 16:56:08,533 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3714.82ms] +2026-09-04 16:56:10,865 INFO guardrails.execution request=ba10f84a-c27a-4cd7-b156-665cc92c2891 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-04 16:56:10,895 INFO guardrails.execution request=ba10f84a-c27a-4cd7-b156-665cc92c2891 guardrails execution finished (passed=True) output='She slowly undressed and they had explicit sex.' +2026-09-04 16:56:10,915 INFO guardrails.execution request=ba10f84a-c27a-4cd7-b156-665cc92c2891 step=1/1 validator=NSFWText stage=input outcome=Outcome.PASS start=2026-09-04T16:56:10.867010 end=2026-09-04T16:56:10.890470 duration_ms=23 input='She slowly undressed and they had explicit sex.' output='She slowly undressed and they had explicit sex.' +2026-09-04 16:56:11,123 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2542.35ms] +2026-09-04 16:56:13,393 INFO guardrails.execution request=c862241e-4390-4531-878d-405b9b054ecf starting guardrails execution (validators=['nsfw_text']) input='Explicit sexual content goes here.' +2026-09-04 16:56:13,447 INFO guardrails.execution request=c862241e-4390-4531-878d-405b9b054ecf guardrails execution finished (passed=True) output='Explicit sexual content goes here.' +2026-09-04 16:56:13,457 INFO guardrails.execution request=c862241e-4390-4531-878d-405b9b054ecf step=1/1 validator=NSFWText stage=input outcome=Outcome.PASS start=2026-09-04T16:56:13.393862 end=2026-09-04T16:56:13.446218 duration_ms=52 input='Explicit sexual content goes here.' output='Explicit sexual content goes here.' +2026-09-04 16:56:13,606 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2471.76ms] +2026-09-04 16:56:13,632 INFO guardrails.execution request=76a90fe5-9498-4765-8e86-593100a4340f starting guardrails execution (validators=['profanity_free', 'uli_slur_match']) input='This fucking chakki should leave.' +2026-09-04 16:56:13,635 INFO guardrails.execution request=76a90fe5-9498-4765-8e86-593100a4340f guardrails execution finished (passed=True) output='' +2026-09-04 16:56:13,640 INFO guardrails.execution request=76a90fe5-9498-4765-8e86-593100a4340f step=1/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:13.633511 end=2026-09-04T16:56:13.634771 duration_ms=1 input='This fucking chakki should leave.' output='' +2026-09-04 16:56:13,643 INFO guardrails.execution request=76a90fe5-9498-4765-8e86-593100a4340f step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-04T16:56:13.634782 end=2026-09-04T16:56:13.634927 duration_ms=0 input='' output='' +2026-09-04 16:56:13,647 INFO http_request_logger POST /api/v1/guardrails/ - 200 [30.49ms] +2026-09-04 16:56:13,656 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 94c51ffd-5901-4862-a507-a51c28e7c15f: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-04 16:56:13,659 INFO http_request_logger POST /api/v1/guardrails/ - 200 [6.83ms] +2026-09-04 16:56:15,871 INFO guardrails.execution request=318cdc05-684b-4b0c-99c5-c00e97902577 starting guardrails execution (validators=['profanity_free', 'nsfw_text']) input='What the fuck, this is explicit adult sexual content.' +2026-09-04 16:56:15,876 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 318cdc05-684b-4b0c-99c5-c00e97902577: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +2026-09-04 16:56:15,906 INFO guardrails.execution request=318cdc05-684b-4b0c-99c5-c00e97902577 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:15.872075 end=2026-09-04T16:56:15.875942 duration_ms=3 input='What the fuck, this is explicit adult sexual content.' output=None +2026-09-04 16:56:15,922 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2258.53ms] +2026-09-04 16:56:18,634 INFO guardrails.execution request=7ec3febb-1663-4477-9e73-66b34b5f5a69 starting guardrails execution (validators=['uli_slur_match', 'nsfw_text']) input='This chakki has explicit sexual content.' +2026-09-04 16:56:18,635 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 7ec3febb-1663-4477-9e73-66b34b5f5a69: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-04 16:56:18,641 INFO guardrails.execution request=7ec3febb-1663-4477-9e73-66b34b5f5a69 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:18.635287 end=2026-09-04T16:56:18.635766 duration_ms=0 input='This chakki has explicit sexual content.' output=None +2026-09-04 16:56:18,644 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2715.16ms] +2026-09-04 16:56:18,660 INFO guardrails.execution request=a0f9df98-703a-4da5-aeda-ea4c4c869486 starting guardrails execution (validators=['profanity_free', 'ban_list']) input='Tell me about renewable energy sources.' +2026-09-04 16:56:18,665 INFO guardrails.execution request=a0f9df98-703a-4da5-aeda-ea4c4c869486 guardrails execution finished (passed=True) output='Tell me about renewable energy sources.' +2026-09-04 16:56:18,668 INFO guardrails.execution request=a0f9df98-703a-4da5-aeda-ea4c4c869486 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-04T16:56:18.661287 end=2026-09-04T16:56:18.664187 duration_ms=2 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-04 16:56:18,670 INFO guardrails.execution request=a0f9df98-703a-4da5-aeda-ea4c4c869486 step=2/2 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-04T16:56:18.664194 end=2026-09-04T16:56:18.664276 duration_ms=0 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-04 16:56:18,674 INFO http_request_logger POST /api/v1/guardrails/ - 200 [24.31ms] +2026-09-04 16:56:18,698 INFO guardrails.execution request=449ec5b5-b888-411e-b2d2-084cf15c9ab1 starting guardrails execution (validators=['uli_slur_match', 'profanity_free', 'ban_list']) input='What are some healthy breakfast options?' +2026-09-04 16:56:18,702 INFO guardrails.execution request=449ec5b5-b888-411e-b2d2-084cf15c9ab1 guardrails execution finished (passed=True) output='What are some healthy breakfast options?' +2026-09-04 16:56:18,706 INFO guardrails.execution request=449ec5b5-b888-411e-b2d2-084cf15c9ab1 step=1/3 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-04T16:56:18.699677 end=2026-09-04T16:56:18.700010 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-04 16:56:18,708 INFO guardrails.execution request=449ec5b5-b888-411e-b2d2-084cf15c9ab1 step=2/3 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-04T16:56:18.700015 end=2026-09-04T16:56:18.701162 duration_ms=1 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-04 16:56:18,710 INFO guardrails.execution request=449ec5b5-b888-411e-b2d2-084cf15c9ab1 step=3/3 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-04T16:56:18.701169 end=2026-09-04T16:56:18.701281 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-04 16:56:18,714 INFO http_request_logger POST /api/v1/guardrails/ - 200 [33.44ms] +2026-09-04 16:56:18,730 INFO guardrails.execution request=cec24597-9de3-45c6-ba6e-acd810dc70d8 starting guardrails execution (validators=['ban_list', 'uli_slur_match']) input='this contains badword' +2026-09-04 16:56:18,732 INFO guardrails.execution request=cec24597-9de3-45c6-ba6e-acd810dc70d8 guardrails execution finished (passed=True) output='this contains b' +2026-09-04 16:56:18,734 INFO guardrails.execution request=cec24597-9de3-45c6-ba6e-acd810dc70d8 step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-04T16:56:18.731089 end=2026-09-04T16:56:18.731215 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-04 16:56:18,736 INFO guardrails.execution request=cec24597-9de3-45c6-ba6e-acd810dc70d8 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-04T16:56:18.731221 end=2026-09-04T16:56:18.731406 duration_ms=0 input='this contains b' output='this contains b' +2026-09-04 16:56:18,739 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.58ms] +2026-09-04 16:56:18,749 ERROR app.api.routes.guardrails [run_guardrails] config resolution failed for request_log 878c7187-fe7f-492c-9667-b5d8d4f8bf33: 404: Ban list not found +2026-09-04 16:56:18,752 INFO http_request_logger POST /api/v1/guardrails/ - 404 [5.33ms] +2026-09-04 16:56:18,758 INFO guardrails.execution request=1d35aaff-51b5-4991-a27a-323363851b31 starting guardrails execution (validators=['ban_list']) input='hello' +2026-09-04 16:56:18,758 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 1d35aaff-51b5-4991-a27a-323363851b31: boom +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +RuntimeError: boom +2026-09-04 16:56:18,760 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3.84ms] +2026-09-04 16:56:18,765 WARNING app.api.routes.guardrails [run_guardrails] invalid request_id 'not-a-uuid' (org=1 project=1), no request log written +2026-09-04 16:56:18,765 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1.36ms] +2026-09-04 16:56:18,776 INFO app.crud.llm_prompt_config created llm prompt config id=a1ab348d-ae7b-4548-96a4-26d68b7c2352 org=1 project=1 +2026-09-04 16:56:18,777 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [7.97ms] +2026-09-04 16:56:18,782 INFO app.crud.llm_prompt_config created llm prompt config id=8e939f28-93b7-4f52-9c96-41ca0f40f5e2 org=1 project=1 +2026-09-04 16:56:18,783 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.54ms] +2026-09-04 16:56:18,788 INFO app.crud.llm_prompt_config created llm prompt config id=93f788e4-5399-4482-8e01-dce0e6d2bc24 org=1 project=1 +2026-09-04 16:56:18,789 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.59ms] +2026-09-04 16:56:18,792 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.81ms] +2026-09-04 16:56:18,797 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.77ms] +2026-09-04 16:56:18,801 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.70ms] +2026-09-04 16:56:18,804 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.80ms] +2026-09-04 16:56:18,810 INFO app.crud.llm_prompt_config created llm prompt config id=0f0ec530-142f-4995-a07e-de8def29297b org=1 project=1 +2026-09-04 16:56:18,810 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.84ms] +2026-09-04 16:56:18,815 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.75ms] +2026-09-04 16:56:18,818 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.74ms] +2026-09-04 16:56:18,823 INFO app.crud.llm_prompt_config created llm prompt config id=bc9c1f5d-40a5-4656-af37-ef9ff6bf58b6 org=1 project=1 +2026-09-04 16:56:18,823 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.80ms] +2026-09-04 16:56:18,826 INFO app.crud.llm_prompt_config created llm prompt config id=4d526ba7-13e4-4be4-b17b-a2fec5ac3dda org=1 project=1 +2026-09-04 16:56:18,827 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.95ms] +2026-09-04 16:56:18,830 INFO app.crud.llm_prompt_config created llm prompt config id=798d005d-7a88-4109-a084-bad641bcf6c9 org=1 project=1 +2026-09-04 16:56:18,831 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.74ms] +2026-09-04 16:56:18,833 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.06ms] +2026-09-04 16:56:18,838 INFO app.crud.llm_prompt_config created llm prompt config id=29e2eddf-ed5a-4312-9b91-dcfea9db2291 org=1 project=1 +2026-09-04 16:56:18,839 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.87ms] +2026-09-04 16:56:18,842 INFO app.crud.llm_prompt_config created llm prompt config id=f3cf9115-b69b-4ba1-9c1e-31098df77784 org=1 project=1 +2026-09-04 16:56:18,842 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.09ms] +2026-09-04 16:56:18,845 INFO app.crud.llm_prompt_config created llm prompt config id=7e0c4dc8-e929-4cad-903b-ae8b6db86118 org=1 project=1 +2026-09-04 16:56:18,846 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.84ms] +2026-09-04 16:56:18,849 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.47ms] +2026-09-04 16:56:18,854 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.61ms] +2026-09-04 16:56:18,860 INFO app.crud.llm_prompt_config created llm prompt config id=52d6a1b8-9197-4570-9192-8e9c2e9f75b0 org=1 project=1 +2026-09-04 16:56:18,860 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.74ms] +2026-09-04 16:56:18,863 INFO app.crud.llm_prompt_config created llm prompt config id=6afffcf0-70c2-4667-95da-e54f245072e2 org=1 project=1 +2026-09-04 16:56:18,864 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.14ms] +2026-09-04 16:56:18,866 INFO app.crud.llm_prompt_config created llm prompt config id=d9aec31b-ff46-488d-ad9f-114a374d600c org=1 project=1 +2026-09-04 16:56:18,867 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.85ms] +2026-09-04 16:56:18,870 INFO app.crud.llm_prompt_config created llm prompt config id=d1a331cc-7513-493e-b92c-15d1671e9810 org=1 project=1 +2026-09-04 16:56:18,870 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.85ms] +2026-09-04 16:56:18,872 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.78ms] +2026-09-04 16:56:18,877 INFO app.crud.llm_prompt_config created llm prompt config id=8b3f9f94-f371-439f-9cc8-9f2dac75b505 org=1 project=1 +2026-09-04 16:56:18,878 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.88ms] +2026-09-04 16:56:18,881 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.07ms] +2026-09-04 16:56:18,887 INFO app.crud.llm_prompt_config created llm prompt config id=fbe6f1da-2deb-4e81-afbd-265dda83a1e1 org=1 project=1 +2026-09-04 16:56:18,888 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.30ms] +2026-09-04 16:56:18,890 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/fbe6f1da-2deb-4e81-afbd-265dda83a1e1 - 200 [1.92ms] +2026-09-04 16:56:18,897 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/09d09001-d8cb-4fcb-a6f4-82a37e8da592 - 404 [1.68ms] +2026-09-04 16:56:18,902 INFO app.crud.llm_prompt_config created llm prompt config id=cdf75c38-b422-417f-b37e-eaf7910da096 org=1 project=1 +2026-09-04 16:56:18,902 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.45ms] +2026-09-04 16:56:18,905 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/cdf75c38-b422-417f-b37e-eaf7910da096 - 404 [2.49ms] +2026-09-04 16:56:18,911 INFO app.crud.llm_prompt_config created llm prompt config id=aecb13a2-2aff-4ae4-ae71-d886351b4b99 org=1 project=1 +2026-09-04 16:56:18,911 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.58ms] +2026-09-04 16:56:18,914 INFO app.crud.llm_prompt_config updated llm prompt config id=aecb13a2-2aff-4ae4-ae71-d886351b4b99 +2026-09-04 16:56:18,915 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/aecb13a2-2aff-4ae4-ae71-d886351b4b99 - 200 [3.29ms] +2026-09-04 16:56:18,920 INFO app.crud.llm_prompt_config created llm prompt config id=1ce261bd-2c27-44e6-9863-e0c080b74aee org=1 project=1 +2026-09-04 16:56:18,920 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.38ms] +2026-09-04 16:56:18,923 INFO app.crud.llm_prompt_config updated llm prompt config id=1ce261bd-2c27-44e6-9863-e0c080b74aee +2026-09-04 16:56:18,923 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/1ce261bd-2c27-44e6-9863-e0c080b74aee - 200 [2.62ms] +2026-09-04 16:56:18,928 INFO app.crud.llm_prompt_config created llm prompt config id=523284b4-2268-4ff7-9186-b554fb4ddf89 org=1 project=1 +2026-09-04 16:56:18,928 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.29ms] +2026-09-04 16:56:18,931 INFO app.crud.llm_prompt_config updated llm prompt config id=523284b4-2268-4ff7-9186-b554fb4ddf89 +2026-09-04 16:56:18,931 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/523284b4-2268-4ff7-9186-b554fb4ddf89 - 200 [2.42ms] +2026-09-04 16:56:18,933 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/523284b4-2268-4ff7-9186-b554fb4ddf89 - 200 [1.33ms] +2026-09-04 16:56:18,937 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/22dadec6-bb65-4052-8a2b-189cb96fb270 - 404 [1.87ms] +2026-09-04 16:56:18,944 INFO app.crud.llm_prompt_config created llm prompt config id=708d35c0-c4a0-4c45-9e8f-4c6b019c6718 org=1 project=1 +2026-09-04 16:56:18,944 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.94ms] +2026-09-04 16:56:18,946 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/708d35c0-c4a0-4c45-9e8f-4c6b019c6718 - 404 [1.39ms] +2026-09-04 16:56:18,951 INFO app.crud.llm_prompt_config created llm prompt config id=9f6b34b6-63ee-4224-b7bb-478a817243c9 org=1 project=1 +2026-09-04 16:56:18,952 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.59ms] +2026-09-04 16:56:18,953 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/9f6b34b6-63ee-4224-b7bb-478a817243c9 - 422 [1.47ms] +2026-09-04 16:56:18,961 INFO app.crud.llm_prompt_config created llm prompt config id=61a8201e-6abb-4c9c-bafe-e2af49116b5f org=1 project=1 +2026-09-04 16:56:18,962 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.73ms] +2026-09-04 16:56:18,964 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/61a8201e-6abb-4c9c-bafe-e2af49116b5f - 422 [1.72ms] +2026-09-04 16:56:18,971 INFO app.crud.llm_prompt_config created llm prompt config id=800deac5-780e-4391-a1bd-9fe93428d3e6 org=1 project=1 +2026-09-04 16:56:18,971 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.17ms] +2026-09-04 16:56:18,975 INFO app.crud.llm_prompt_config updated llm prompt config id=800deac5-780e-4391-a1bd-9fe93428d3e6 +2026-09-04 16:56:18,975 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/800deac5-780e-4391-a1bd-9fe93428d3e6 - 200 [3.11ms] +2026-09-04 16:56:18,982 INFO app.crud.llm_prompt_config created llm prompt config id=a6df2815-7662-4c15-9436-16ae05d4851a org=1 project=1 +2026-09-04 16:56:18,982 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.74ms] +2026-09-04 16:56:18,985 INFO app.crud.llm_prompt_config updated llm prompt config id=a6df2815-7662-4c15-9436-16ae05d4851a +2026-09-04 16:56:18,985 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/a6df2815-7662-4c15-9436-16ae05d4851a - 200 [2.55ms] +2026-09-04 16:56:18,990 INFO app.crud.llm_prompt_config created llm prompt config id=461ef187-5be6-4c3c-bc76-9792d582c3ef org=1 project=1 +2026-09-04 16:56:18,991 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.57ms] +2026-09-04 16:56:18,993 INFO app.crud.llm_prompt_config deleted llm prompt config id=461ef187-5be6-4c3c-bc76-9792d582c3ef +2026-09-04 16:56:18,993 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/461ef187-5be6-4c3c-bc76-9792d582c3ef - 200 [1.93ms] +2026-09-04 16:56:18,999 INFO app.crud.llm_prompt_config created llm prompt config id=9b381b3a-44a0-4937-a566-b7cec9910ab7 org=1 project=1 +2026-09-04 16:56:18,999 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.51ms] +2026-09-04 16:56:19,001 INFO app.crud.llm_prompt_config deleted llm prompt config id=9b381b3a-44a0-4937-a566-b7cec9910ab7 +2026-09-04 16:56:19,002 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/9b381b3a-44a0-4937-a566-b7cec9910ab7 - 200 [1.72ms] +2026-09-04 16:56:19,003 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.31ms] +2026-09-04 16:56:19,009 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/14b63e19-d2e4-4b22-8642-cf293be78a4e - 404 [1.89ms] +2026-09-04 16:56:19,015 INFO app.crud.llm_prompt_config created llm prompt config id=fbe487d4-69cd-4c4d-acbf-1edbab7270d6 org=1 project=1 +2026-09-04 16:56:19,016 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.41ms] +2026-09-04 16:56:19,017 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/fbe487d4-69cd-4c4d-acbf-1edbab7270d6 - 404 [1.61ms] +2026-09-04 16:56:19,108 INFO guardrails.execution request=f0516335-edb6-4e8e-ac7d-08efdb8e09f4 starting guardrails execution (validators=[]) input='hello' +2026-09-04 16:56:19,108 INFO guardrails.execution request=f0516335-edb6-4e8e-ac7d-08efdb8e09f4 guardrails execution finished (passed=True) output='clean text' +2026-09-04 16:56:19,110 INFO guardrails.execution request=f0516335-edb6-4e8e-ac7d-08efdb8e09f4 starting guardrails execution (validators=[]) input='bad text' +2026-09-04 16:56:19,111 INFO guardrails.execution request=f0516335-edb6-4e8e-ac7d-08efdb8e09f4 guardrails execution finished (passed=False) output=None +2026-09-04 16:56:19,113 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log f0516335-edb6-4e8e-ac7d-08efdb8e09f4: Invalid config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid config +2026-09-04 16:56:19,116 INFO guardrails.execution request=f0516335-edb6-4e8e-ac7d-08efdb8e09f4 starting guardrails execution (validators=[]) input='bad text' +2026-09-04 16:56:19,116 INFO guardrails.execution request=f0516335-edb6-4e8e-ac7d-08efdb8e09f4 guardrails execution finished (passed=False) output=None +2026-09-04 16:56:19,120 INFO guardrails.execution request=f0516335-edb6-4e8e-ac7d-08efdb8e09f4 starting guardrails execution (validators=[]) input='bad text' +2026-09-04 16:56:19,120 INFO guardrails.execution request=f0516335-edb6-4e8e-ac7d-08efdb8e09f4 guardrails execution finished (passed=False) output=None +2026-09-04 16:56:19,142 INFO guardrails.execution request=f0516335-edb6-4e8e-ac7d-08efdb8e09f4 starting guardrails execution (validators=[]) input='this is some unsafe content' +2026-09-04 16:56:19,142 INFO guardrails.execution request=f0516335-edb6-4e8e-ac7d-08efdb8e09f4 guardrails execution finished (passed=False) output=None +2026-09-04 16:56:19,144 INFO guardrails.execution request=f0516335-edb6-4e8e-ac7d-08efdb8e09f4 starting guardrails execution (validators=[]) input='some input text' +2026-09-04 16:56:19,144 INFO guardrails.execution request=f0516335-edb6-4e8e-ac7d-08efdb8e09f4 guardrails execution finished (passed=False) output=None +2026-09-04 16:56:19,147 INFO guardrails.execution request=f0516335-edb6-4e8e-ac7d-08efdb8e09f4 starting guardrails execution (validators=[]) input='this contains profane words' +2026-09-04 16:56:19,147 INFO guardrails.execution request=f0516335-edb6-4e8e-ac7d-08efdb8e09f4 guardrails execution finished (passed=False) output=None +2026-09-04 16:56:19,149 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log f0516335-edb6-4e8e-ac7d-08efdb8e09f4: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +2026-09-04 16:56:19,152 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log f0516335-edb6-4e8e-ac7d-08efdb8e09f4: Validation failed for field with errors: Profanity detected in: this contains profane words +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: Profanity detected in: this contains profane words +2026-09-04 16:56:19,169 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-04 16:56:19,171 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-04 16:56:19,174 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-04 16:56:19,186 INFO app.crud.validator_config created validator config id=00464b6e-32c9-4047-bab5-31053976a0ed org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-04 16:56:19,186 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [6.97ms] +2026-09-04 16:56:19,192 INFO app.crud.validator_config created validator config id=81a09caa-6e5f-4e68-a22d-2fbf8d8e57fa org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-04 16:56:19,192 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.66ms] +2026-09-04 16:56:19,194 WARNING app.crud.validator_config create validator config failed: duplicate name (org=1 project=1) +2026-09-04 16:56:19,194 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 400 [1.63ms] +2026-09-04 16:56:19,198 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 422 [0.88ms] +2026-09-04 16:56:19,205 INFO app.crud.validator_config created validator config id=aa2fdb24-e094-472d-b2d7-7490ba0b9da0 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-04 16:56:19,205 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.84ms] +2026-09-04 16:56:19,208 INFO app.crud.validator_config created validator config id=ce1a412a-352d-46ce-afdf-9f386fd1dfd6 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-04 16:56:19,209 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.95ms] +2026-09-04 16:56:19,212 INFO app.crud.validator_config created validator config id=9518cb19-16ef-4486-977a-f95b9268a5eb org=1 project=1 type=ValidatorType.PIIRemover +2026-09-04 16:56:19,212 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.27ms] +2026-09-04 16:56:19,215 INFO app.crud.validator_config created validator config id=3a5e6057-32b4-4c91-9763-88230368814e org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-04 16:56:19,216 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.22ms] +2026-09-04 16:56:19,218 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.26ms] +2026-09-04 16:56:19,219 INFO http_request_logger GET /api/v1/guardrails/validators/configs/aa2fdb24-e094-472d-b2d7-7490ba0b9da0/ - 307 [0.09ms] +2026-09-04 16:56:19,221 INFO http_request_logger GET /api/v1/guardrails/validators/configs/aa2fdb24-e094-472d-b2d7-7490ba0b9da0 - 200 [1.78ms] +2026-09-04 16:56:19,221 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ce1a412a-352d-46ce-afdf-9f386fd1dfd6/ - 307 [0.09ms] +2026-09-04 16:56:19,223 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ce1a412a-352d-46ce-afdf-9f386fd1dfd6 - 200 [1.90ms] +2026-09-04 16:56:19,224 INFO http_request_logger GET /api/v1/guardrails/validators/configs/9518cb19-16ef-4486-977a-f95b9268a5eb/ - 307 [0.08ms] +2026-09-04 16:56:19,226 INFO http_request_logger GET /api/v1/guardrails/validators/configs/9518cb19-16ef-4486-977a-f95b9268a5eb - 200 [1.54ms] +2026-09-04 16:56:19,226 INFO http_request_logger GET /api/v1/guardrails/validators/configs/3a5e6057-32b4-4c91-9763-88230368814e/ - 307 [0.08ms] +2026-09-04 16:56:19,228 INFO http_request_logger GET /api/v1/guardrails/validators/configs/3a5e6057-32b4-4c91-9763-88230368814e - 200 [1.55ms] +2026-09-04 16:56:19,236 INFO app.crud.validator_config created validator config id=c277a5c2-1db6-41cf-8a56-4579d1f65565 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-04 16:56:19,236 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [4.11ms] +2026-09-04 16:56:19,239 INFO app.crud.validator_config created validator config id=3613817a-850d-4eb6-8cb7-01b3a3403ee8 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-04 16:56:19,239 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.81ms] +2026-09-04 16:56:19,242 INFO app.crud.validator_config created validator config id=2cdfe392-a231-4c7e-a2cb-0ceeba064683 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-04 16:56:19,243 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.89ms] +2026-09-04 16:56:19,243 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/c277a5c2-1db6-41cf-8a56-4579d1f65565/ - 307 [0.08ms] +2026-09-04 16:56:19,247 INFO app.crud.validator_config updated validator config id=c277a5c2-1db6-41cf-8a56-4579d1f65565 +2026-09-04 16:56:19,248 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/c277a5c2-1db6-41cf-8a56-4579d1f65565 - 200 [4.31ms] +2026-09-04 16:56:19,248 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/3613817a-850d-4eb6-8cb7-01b3a3403ee8/ - 307 [0.09ms] +2026-09-04 16:56:19,251 INFO app.crud.validator_config updated validator config id=3613817a-850d-4eb6-8cb7-01b3a3403ee8 +2026-09-04 16:56:19,252 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/3613817a-850d-4eb6-8cb7-01b3a3403ee8 - 200 [3.67ms] +2026-09-04 16:56:19,252 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/2cdfe392-a231-4c7e-a2cb-0ceeba064683/ - 307 [0.08ms] +2026-09-04 16:56:19,256 INFO app.crud.validator_config updated validator config id=2cdfe392-a231-4c7e-a2cb-0ceeba064683 +2026-09-04 16:56:19,256 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/2cdfe392-a231-4c7e-a2cb-0ceeba064683 - 200 [3.76ms] +2026-09-04 16:56:19,258 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.79ms] +2026-09-04 16:56:19,267 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.32ms] +2026-09-04 16:56:19,278 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [3.38ms] +2026-09-04 16:56:19,290 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [3.20ms] +2026-09-04 16:56:19,300 INFO app.crud.validator_config created validator config id=a2179f20-7540-4970-bc76-e07225f28be1 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-04 16:56:19,301 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [6.16ms] +2026-09-04 16:56:19,303 INFO app.crud.validator_config created validator config id=aaf2d8db-7c2c-4e11-8f55-694ba7e16941 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-04 16:56:19,304 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.71ms] +2026-09-04 16:56:19,306 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.84ms] +2026-09-04 16:56:19,313 INFO app.crud.validator_config created validator config id=1e0d7f0c-6599-4462-930e-c4bb4e4a3f07 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-04 16:56:19,313 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.95ms] +2026-09-04 16:56:19,316 INFO app.crud.validator_config created validator config id=df122109-c509-47e6-af9d-185913827376 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-04 16:56:19,316 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.54ms] +2026-09-04 16:56:19,318 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.62ms] +2026-09-04 16:56:19,322 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 422 [0.77ms] +2026-09-04 16:56:19,328 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.89ms] +2026-09-04 16:56:19,338 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.23ms] +2026-09-04 16:56:19,338 INFO http_request_logger GET /api/v1/guardrails/validators/configs/7f8e2df0-03d8-4266-8c9e-7bd9e04c008e/ - 307 [0.11ms] +2026-09-04 16:56:19,341 INFO http_request_logger GET /api/v1/guardrails/validators/configs/7f8e2df0-03d8-4266-8c9e-7bd9e04c008e - 200 [3.10ms] +2026-09-04 16:56:19,346 INFO http_request_logger GET /api/v1/guardrails/validators/configs/edec4a6d-fd07-4b31-9259-e4a239c42ab0/ - 307 [0.13ms] +2026-09-04 16:56:19,349 INFO http_request_logger GET /api/v1/guardrails/validators/configs/edec4a6d-fd07-4b31-9259-e4a239c42ab0 - 404 [2.40ms] +2026-09-04 16:56:19,354 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid/ - 307 [0.09ms] +2026-09-04 16:56:19,355 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid - 422 [0.74ms] +2026-09-04 16:56:19,363 INFO app.crud.validator_config created validator config id=e47e2bfd-4996-42b8-aae3-0e5ebabdf351 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-04 16:56:19,364 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [4.83ms] +2026-09-04 16:56:19,364 INFO http_request_logger GET /api/v1/guardrails/validators/configs/e47e2bfd-4996-42b8-aae3-0e5ebabdf351/ - 307 [0.09ms] +2026-09-04 16:56:19,366 INFO http_request_logger GET /api/v1/guardrails/validators/configs/e47e2bfd-4996-42b8-aae3-0e5ebabdf351 - 404 [1.82ms] +2026-09-04 16:56:19,376 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.37ms] +2026-09-04 16:56:19,377 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/b6dda911-125d-4036-be51-04064e6f8d3f/ - 307 [0.09ms] +2026-09-04 16:56:19,381 INFO app.crud.validator_config updated validator config id=b6dda911-125d-4036-be51-04064e6f8d3f +2026-09-04 16:56:19,381 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/b6dda911-125d-4036-be51-04064e6f8d3f - 200 [4.12ms] +2026-09-04 16:56:19,391 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.26ms] +2026-09-04 16:56:19,391 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/259d074f-3f96-4b0b-b870-233222f65bae/ - 307 [0.09ms] +2026-09-04 16:56:19,394 INFO app.crud.validator_config updated validator config id=259d074f-3f96-4b0b-b870-233222f65bae +2026-09-04 16:56:19,395 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/259d074f-3f96-4b0b-b870-233222f65bae - 200 [3.30ms] +2026-09-04 16:56:19,399 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/8b146c0f-164e-48ee-94b9-543ae436cdd7/ - 307 [0.10ms] +2026-09-04 16:56:19,402 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/8b146c0f-164e-48ee-94b9-543ae436cdd7 - 404 [2.25ms] +2026-09-04 16:56:19,409 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.87ms] +2026-09-04 16:56:19,409 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/720a7290-770b-4249-928d-53038faef55c/ - 307 [0.09ms] +2026-09-04 16:56:19,413 INFO app.crud.validator_config deleted validator config id=720a7290-770b-4249-928d-53038faef55c +2026-09-04 16:56:19,413 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/720a7290-770b-4249-928d-53038faef55c - 200 [3.79ms] +2026-09-04 16:56:19,414 INFO http_request_logger GET /api/v1/guardrails/validators/configs/720a7290-770b-4249-928d-53038faef55c/ - 307 [0.09ms] +2026-09-04 16:56:19,416 INFO http_request_logger GET /api/v1/guardrails/validators/configs/720a7290-770b-4249-928d-53038faef55c - 404 [2.26ms] +2026-09-04 16:56:19,420 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/29d136b7-5912-4182-81e5-a004c4cac9f1/ - 307 [0.09ms] +2026-09-04 16:56:19,422 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/29d136b7-5912-4182-81e5-a004c4cac9f1 - 404 [1.69ms] +2026-09-04 16:56:19,429 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.82ms] +2026-09-04 16:56:19,429 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/daf80db4-2c5b-462a-adfb-42705fccf360/ - 307 [0.10ms] +2026-09-04 16:56:19,432 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/daf80db4-2c5b-462a-adfb-42705fccf360 - 404 [2.08ms] +2026-09-04 16:56:19,432 INFO http_request_logger GET /api/v1/guardrails/validators/configs/daf80db4-2c5b-462a-adfb-42705fccf360/ - 307 [0.09ms] +2026-09-04 16:56:19,434 INFO http_request_logger GET /api/v1/guardrails/validators/configs/daf80db4-2c5b-462a-adfb-42705fccf360 - 200 [1.62ms] +2026-09-04 16:56:19,537 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-04 16:56:19,537 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-04 16:56:19,610 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 16:56:22,337 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 16:56:22,346 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 16:56:23,783 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 16:56:23,792 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 16:56:25,132 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 16:56:25,139 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 16:56:26,692 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 16:56:26,699 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 16:56:27,689 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 16:56:27,699 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 16:56:29,117 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 16:56:29,119 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 16:56:30,449 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 16:56:30,621 INFO watchfiles.main 3 changes detected +2026-09-04 16:57:18,233 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 403 [3.47ms] +2026-09-04 16:57:45,120 INFO watchfiles.main 1 change detected +2026-09-04 16:57:45,123 WARNING uvicorn.error WatchFiles detected changes in 'app/api/deps.py'. Reloading... +2026-09-04 16:57:45,143 INFO uvicorn.error Shutting down +2026-09-04 16:57:45,245 INFO uvicorn.error Waiting for application shutdown. +2026-09-04 16:57:45,246 INFO uvicorn.error Application shutdown complete. +2026-09-04 16:57:45,246 INFO uvicorn.error Finished server process [23757] +2026-09-04 16:57:45,645 INFO watchfiles.main 1 change detected +2026-09-04 16:57:46,010 INFO watchfiles.main 3 changes detected +2026-09-04 16:57:51,432 INFO presidio-analyzer Using device of type: cpu +2026-09-04 16:57:52,305 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-04 16:57:52,306 INFO uvicorn.error Started server process [23917] +2026-09-04 16:57:52,306 INFO uvicorn.error Waiting for application startup. +2026-09-04 16:57:52,307 INFO uvicorn.error Application startup complete. +2026-09-04 16:58:08,872 INFO uvicorn.error Shutting down +2026-09-04 16:58:08,976 INFO uvicorn.error Waiting for application shutdown. +2026-09-04 16:58:08,978 INFO uvicorn.error Application shutdown complete. +2026-09-04 16:58:08,979 INFO uvicorn.error Finished server process [23917] +2026-09-04 16:58:09,006 INFO uvicorn.error Stopping reloader process [23649] +2026-09-04 16:58:15,867 INFO presidio-analyzer Using device of type: cpu +2026-09-04 16:58:16,668 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-04 16:58:16,695 INFO uvicorn.error Will watch for changes in these directories: ['/Users/prajna/Desktop/t4d/kaapi-guardrails/backend'] +2026-09-04 16:58:16,696 INFO uvicorn.error Uvicorn running on http://127.0.0.1:8001 (Press CTRL+C to quit) +2026-09-04 16:58:16,696 INFO uvicorn.error Started reloader process [24069] using WatchFiles +2026-09-04 16:58:21,830 INFO presidio-analyzer Using device of type: cpu +2026-09-04 16:58:22,621 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-04 16:58:22,622 INFO uvicorn.error Started server process [24126] +2026-09-04 16:58:22,622 INFO uvicorn.error Waiting for application startup. +2026-09-04 16:58:22,623 INFO uvicorn.error Application startup complete. +2026-09-04 17:00:02,383 INFO uvicorn.error Shutting down +2026-09-04 17:00:02,497 INFO uvicorn.error Waiting for application shutdown. +2026-09-04 17:00:02,501 INFO uvicorn.error Application shutdown complete. +2026-09-04 17:00:02,503 INFO uvicorn.error Finished server process [24126] +2026-09-04 17:00:02,545 INFO uvicorn.error Stopping reloader process [24069] +2026-09-04 17:00:10,295 INFO presidio-analyzer Using device of type: cpu +2026-09-04 17:00:11,176 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-04 17:00:11,207 INFO uvicorn.error Will watch for changes in these directories: ['/Users/prajna/Desktop/t4d/kaapi-guardrails/backend'] +2026-09-04 17:00:11,207 INFO uvicorn.error Uvicorn running on http://127.0.0.1:8001 (Press CTRL+C to quit) +2026-09-04 17:00:11,208 INFO uvicorn.error Started reloader process [24372] using WatchFiles +2026-09-04 17:00:15,953 INFO presidio-analyzer Using device of type: cpu +2026-09-04 17:00:16,679 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-04 17:00:16,679 INFO uvicorn.error Started server process [24385] +2026-09-04 17:00:16,680 INFO uvicorn.error Waiting for application startup. +2026-09-04 17:00:16,680 INFO uvicorn.error Application startup complete. +2026-09-04 17:00:21,004 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 403 [0.95ms] +2026-09-04 17:00:52,985 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 403 [3.86ms] +2026-09-04 17:01:34,542 INFO uvicorn.error Shutting down +2026-09-04 17:01:34,651 INFO uvicorn.error Waiting for application shutdown. +2026-09-04 17:01:34,655 INFO uvicorn.error Application shutdown complete. +2026-09-04 17:01:34,656 INFO uvicorn.error Finished server process [24385] +2026-09-04 17:01:34,696 INFO uvicorn.error Stopping reloader process [24372] +2026-09-04 17:01:42,033 INFO presidio-analyzer Using device of type: cpu +2026-09-04 17:01:42,932 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-04 17:01:42,967 INFO uvicorn.error Will watch for changes in these directories: ['/Users/prajna/Desktop/t4d/kaapi-guardrails/backend'] +2026-09-04 17:01:42,968 INFO uvicorn.error Uvicorn running on http://127.0.0.1:8001 (Press CTRL+C to quit) +2026-09-04 17:01:42,968 INFO uvicorn.error Started reloader process [24601] using WatchFiles +2026-09-04 17:01:47,634 INFO presidio-analyzer Using device of type: cpu +2026-09-04 17:01:48,382 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-04 17:01:48,382 INFO uvicorn.error Started server process [24618] +2026-09-04 17:01:48,383 INFO uvicorn.error Waiting for application startup. +2026-09-04 17:01:48,383 INFO uvicorn.error Application startup complete. +2026-09-04 17:01:48,933 INFO app.crud.validator_config created validator config id=efff492c-3ed9-4422-9c9a-53850886905e org=1 project=1 type=ValidatorType.PIIRemover +2026-09-04 17:01:48,935 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [36.44ms] +2026-09-04 17:05:42,409 INFO http_request_logger GET /api/v1/utils/health-check/ - 200 [2.28ms] +2026-09-04 17:06:03,138 INFO http_request_logger GET /api/v1/guardrails/ - 200 [10.10ms] +2026-09-04 17:06:12,689 INFO app.crud.validator_config created validator config id=35ec29e6-1bd3-4421-be00-d84da7e2cc77 org=1 project=1 type=ValidatorType.ProfanityFree +2026-09-04 17:06:12,690 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [13.56ms] +2026-09-04 17:06:21,252 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [9.21ms] +2026-09-04 17:06:21,283 INFO guardrails.execution request=8991e082-c6ba-4cb7-b2ac-312cbf4e66fb starting guardrails execution (validators=['profanity_free']) input='this is a clean test sentence' +2026-09-04 17:06:21,291 INFO guardrails.execution request=8991e082-c6ba-4cb7-b2ac-312cbf4e66fb guardrails execution finished (passed=True) output='this is a clean test sentence' +2026-09-04 17:06:21,298 INFO guardrails.execution request=8991e082-c6ba-4cb7-b2ac-312cbf4e66fb step=1/1 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-04T17:06:21.286672 end=2026-09-04T17:06:21.290904 duration_ms=4 input='this is a clean test sentence' output='this is a clean test sentence' +2026-09-04 17:06:21,307 INFO http_request_logger POST /api/v1/guardrails/ - 200 [48.13ms] +2026-09-04 17:06:51,102 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [9.16ms] +2026-09-04 17:06:51,125 INFO guardrails.execution request=48ff206a-1a94-4ecf-9113-56e70abec1a1 starting guardrails execution (validators=['profanity_free']) input='Say hello in one short sentence.' +2026-09-04 17:06:51,128 INFO guardrails.execution request=48ff206a-1a94-4ecf-9113-56e70abec1a1 guardrails execution finished (passed=True) output='Say hello in one short sentence.' +2026-09-04 17:06:51,132 INFO guardrails.execution request=48ff206a-1a94-4ecf-9113-56e70abec1a1 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-04T17:06:51.126045 end=2026-09-04T17:06:51.127574 duration_ms=1 input='Say hello in one short sentence.' output='Say hello in one short sentence.' +2026-09-04 17:06:51,137 INFO http_request_logger POST /api/v1/guardrails/ - 200 [27.71ms] +2026-09-04 17:10:01,187 INFO app.crud.llm_prompt_config created llm prompt config id=fb6a9ac9-5396-46fd-bda1-abf986bba10b org=1 project=1 +2026-09-04 17:10:01,190 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [22.46ms] +2026-09-04 17:10:01,394 INFO app.crud.llm_prompt_config created llm prompt config id=0c4bfa53-6071-45a4-aca5-6008b2fd70bf org=1 project=1 +2026-09-04 17:10:01,394 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [7.97ms] +2026-09-04 17:10:09,633 INFO app.crud.ban_list created ban list id=c08948c6-8488-4473-be3f-1473e7a0f72b org=1 project=1 +2026-09-04 17:10:09,634 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [12.70ms] +2026-09-04 17:10:24,582 INFO app.crud.validator_config created validator config id=1ef1b4c3-8def-4e3e-9cae-da70adf43fda org=1 project=1 type=ValidatorType.BanList +2026-09-04 17:10:24,583 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [11.05ms] +2026-09-04 17:10:24,785 INFO app.crud.validator_config created validator config id=b6d86f24-c6bc-48bc-a441-7ef8c6c007ee org=1 project=1 type=ValidatorType.PIIRemover +2026-09-04 17:10:24,786 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [7.69ms] +2026-09-04 17:10:24,987 INFO app.crud.validator_config created validator config id=4349d465-15a5-4954-a562-d429beb341bc org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-04 17:10:24,988 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [5.63ms] +2026-09-04 17:10:25,186 INFO app.crud.validator_config created validator config id=a8e0ff48-7a0a-4f74-9ac8-b5d30520899c org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-04 17:10:25,187 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [7.66ms] +2026-09-04 17:10:25,401 INFO app.crud.validator_config created validator config id=e815fe44-7743-4c7f-8425-f9d6772caadb org=1 project=1 type=ValidatorType.NSFWText +2026-09-04 17:10:25,402 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [9.40ms] +2026-09-04 17:10:25,621 INFO app.crud.validator_config created validator config id=c2fa6d9e-cc6a-4372-9560-1d56539ce40e org=1 project=1 type=ValidatorType.LLMCritic +2026-09-04 17:10:25,622 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [8.04ms] +2026-09-04 17:10:25,821 INFO app.crud.validator_config created validator config id=9331c01a-1fff-4d42-808b-bcd248af610d org=1 project=1 type=ValidatorType.TopicRelevance +2026-09-04 17:10:25,825 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [10.69ms] +2026-09-04 17:10:26,026 INFO app.crud.validator_config created validator config id=78db96b7-247e-4279-ad6f-12b30e337855 org=1 project=1 type=ValidatorType.TopicRelevanceLLM +2026-09-04 17:10:26,027 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [7.19ms] +2026-09-04 17:10:26,228 INFO app.crud.validator_config created validator config id=f58e229b-ff21-4b74-900e-9f33acaaeff4 org=1 project=1 type=ValidatorType.AnswerRelevanceCustomLLM +2026-09-04 17:10:26,229 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [8.25ms] +2026-09-04 17:11:07,204 INFO watchfiles.main 3 changes detected +2026-09-04 17:11:27,960 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [17.58ms] +2026-09-04 17:11:28,003 INFO guardrails.execution request=3a1d5f5f-1768-4a6d-9516-e56e936e69cf starting guardrails execution (validators=['ban_list']) input='this text contains forbiddenword in it' +2026-09-04 17:11:28,006 INFO guardrails.execution request=3a1d5f5f-1768-4a6d-9516-e56e936e69cf guardrails execution finished (passed=True) output='this text contains f in it' +2026-09-04 17:11:28,012 INFO guardrails.execution request=3a1d5f5f-1768-4a6d-9516-e56e936e69cf step=1/1 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-04T17:11:28.005145 end=2026-09-04T17:11:28.005433 duration_ms=0 input='this text contains forbiddenword in it' output='this text contains f in it' +2026-09-04 17:11:28,026 INFO http_request_logger POST /api/v1/guardrails/ - 200 [52.47ms] +2026-09-04 17:11:32,703 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [4.48ms] +2026-09-04 17:11:33,397 INFO presidio-analyzer Created NLP engine: spacy. Loaded models: ['en'] +2026-09-04 17:11:33,398 INFO presidio-analyzer registry not provided, creating default. +2026-09-04 17:11:33,405 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-04 17:11:33,405 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-04 17:11:33,405 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-04 17:11:33,405 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-04 17:11:33,405 INFO presidio-analyzer Loaded recognizer: UsBankRecognizer +2026-09-04 17:11:33,405 INFO presidio-analyzer Loaded recognizer: UsLicenseRecognizer +2026-09-04 17:11:33,405 INFO presidio-analyzer Loaded recognizer: UsItinRecognizer +2026-09-04 17:11:33,405 INFO presidio-analyzer Loaded recognizer: UsPassportRecognizer +2026-09-04 17:11:33,405 INFO presidio-analyzer Loaded recognizer: UsSsnRecognizer +2026-09-04 17:11:33,405 INFO presidio-analyzer Loaded recognizer: NhsRecognizer +2026-09-04 17:11:33,405 INFO presidio-analyzer Loaded recognizer: EsNifRecognizer +2026-09-04 17:11:33,405 INFO presidio-analyzer Loaded recognizer: EsNieRecognizer +2026-09-04 17:11:33,406 INFO presidio-analyzer Loaded recognizer: ItDriverLicenseRecognizer +2026-09-04 17:11:33,406 INFO presidio-analyzer Loaded recognizer: ItFiscalCodeRecognizer +2026-09-04 17:11:33,406 INFO presidio-analyzer Loaded recognizer: ItVatCodeRecognizer +2026-09-04 17:11:33,406 INFO presidio-analyzer Loaded recognizer: ItIdentityCardRecognizer +2026-09-04 17:11:33,406 INFO presidio-analyzer Loaded recognizer: ItPassportRecognizer +2026-09-04 17:11:33,406 INFO presidio-analyzer Loaded recognizer: PlPeselRecognizer +2026-09-04 17:11:33,406 INFO presidio-analyzer Loaded recognizer: CryptoRecognizer +2026-09-04 17:11:33,406 INFO presidio-analyzer Loaded recognizer: DateRecognizer +2026-09-04 17:11:33,406 INFO presidio-analyzer Loaded recognizer: EmailRecognizer +2026-09-04 17:11:33,406 INFO presidio-analyzer Loaded recognizer: IbanRecognizer +2026-09-04 17:11:33,406 INFO presidio-analyzer Loaded recognizer: IpRecognizer +2026-09-04 17:11:33,406 INFO presidio-analyzer Loaded recognizer: MedicalLicenseRecognizer +2026-09-04 17:11:33,406 INFO presidio-analyzer Loaded recognizer: MacAddressRecognizer +2026-09-04 17:11:33,406 INFO presidio-analyzer Loaded recognizer: PhoneRecognizer +2026-09-04 17:11:33,406 INFO presidio-analyzer Loaded recognizer: UrlRecognizer +2026-09-04 17:11:33,407 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: es, registry supported languages: en +2026-09-04 17:11:33,407 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: it, registry supported languages: en +2026-09-04 17:11:33,407 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: pl, registry supported languages: en +2026-09-04 17:11:33,407 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - EsNifRecognizer supported languages: es, registry supported languages: en +2026-09-04 17:11:33,407 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - EsNieRecognizer supported languages: es, registry supported languages: en +2026-09-04 17:11:33,407 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItDriverLicenseRecognizer supported languages: it, registry supported languages: en +2026-09-04 17:11:33,407 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItFiscalCodeRecognizer supported languages: it, registry supported languages: en +2026-09-04 17:11:33,407 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItVatCodeRecognizer supported languages: it, registry supported languages: en +2026-09-04 17:11:33,407 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItIdentityCardRecognizer supported languages: it, registry supported languages: en +2026-09-04 17:11:33,407 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItPassportRecognizer supported languages: it, registry supported languages: en +2026-09-04 17:11:33,407 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - PlPeselRecognizer supported languages: pl, registry supported languages: en +2026-09-04 17:11:33,407 INFO presidio-analyzer Loaded recognizer: SpacyRecognizer +2026-09-04 17:11:33,407 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-04 17:11:33,407 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-04 17:11:33,407 INFO presidio-analyzer Loaded recognizer: InPassportRecognizer +2026-09-04 17:11:33,407 INFO presidio-analyzer Loaded recognizer: InVehicleRegistrationRecognizer +2026-09-04 17:11:33,407 INFO presidio-analyzer Loaded recognizer: InVoterRecognizer +2026-09-04 17:11:33,417 INFO guardrails.execution request=dbc7c623-120c-4524-8c90-9c1813aabe2d starting guardrails execution (validators=['pii_remover']) input='Contact me at john.doe@example.com or call 9876543210' +2026-09-04 17:11:33,881 INFO guardrails.execution request=dbc7c623-120c-4524-8c90-9c1813aabe2d guardrails execution finished (passed=True) output='Contact me at or call ' +2026-09-04 17:11:33,890 INFO guardrails.execution request=dbc7c623-120c-4524-8c90-9c1813aabe2d step=1/1 validator=PIIRemover stage=input outcome=Outcome.FAIL start=2026-09-04T17:11:33.418631 end=2026-09-04T17:11:33.880758 duration_ms=462 input='Contact me at john.doe@example.com or call 9876543210' output='Contact me at or call ' +2026-09-04 17:11:33,896 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1185.02ms] +2026-09-04 17:11:36,855 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [5.55ms] +2026-09-04 17:11:36,880 INFO guardrails.execution request=980ae224-0796-4eea-bf66-84634a76e3e8 starting guardrails execution (validators=['gender_assumption_bias']) input='The engineer forgot her badge at home.' +2026-09-04 17:11:36,882 INFO guardrails.execution request=980ae224-0796-4eea-bf66-84634a76e3e8 guardrails execution finished (passed=True) output='The engineer forgot them badge at home.' +2026-09-04 17:11:36,885 INFO guardrails.execution request=980ae224-0796-4eea-bf66-84634a76e3e8 step=1/1 validator=GenderAssumptionBias stage=output outcome=Outcome.FAIL start=2026-09-04T17:11:36.880735 end=2026-09-04T17:11:36.881673 duration_ms=0 input='The engineer forgot her badge at home.' output='The engineer forgot them badge at home.' +2026-09-04 17:11:36,890 INFO http_request_logger POST /api/v1/guardrails/ - 200 [29.35ms] +2026-09-04 17:11:41,302 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [3.53ms] +2026-09-04 17:11:41,330 INFO guardrails.execution request=65935177-8c91-4d53-98f4-acbe9cdb60f4 starting guardrails execution (validators=['uli_slur_match']) input='This is a perfectly friendly and clean sentence.' +2026-09-04 17:11:41,335 INFO guardrails.execution request=65935177-8c91-4d53-98f4-acbe9cdb60f4 guardrails execution finished (passed=True) output='This is a perfectly friendly and clean sentence.' +2026-09-04 17:11:41,340 INFO guardrails.execution request=65935177-8c91-4d53-98f4-acbe9cdb60f4 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-04T17:11:41.331579 end=2026-09-04T17:11:41.334299 duration_ms=2 input='This is a perfectly friendly and clean sentence.' output='This is a perfectly friendly and clean sentence.' +2026-09-04 17:11:41,344 INFO http_request_logger POST /api/v1/guardrails/ - 200 [33.63ms] +2026-09-04 17:11:45,768 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [4.11ms] +2026-09-04 17:11:49,096 INFO guardrails.execution request=9c0fa404-0429-4059-a5b6-7f235a902165 starting guardrails execution (validators=['nsfw_text']) input='The weather today is sunny and pleasant.' +2026-09-04 17:11:49,791 INFO guardrails.execution request=9c0fa404-0429-4059-a5b6-7f235a902165 guardrails execution finished (passed=True) output='The weather today is sunny and pleasant.' +2026-09-04 17:11:49,800 INFO guardrails.execution request=9c0fa404-0429-4059-a5b6-7f235a902165 step=1/1 validator=NSFWText stage=output outcome=Outcome.PASS start=2026-09-04T17:11:49.097265 end=2026-09-04T17:11:49.790503 duration_ms=693 input='The weather today is sunny and pleasant.' output='The weather today is sunny and pleasant.' +2026-09-04 17:11:49,956 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4182.78ms] +2026-09-04 17:11:50,250 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [4.37ms] +2026-09-04 17:11:50,269 INFO guardrails.execution request=bacb4a9b-ae91-4e6e-a447-077e4d96cadd starting guardrails execution (validators=['profanity_free']) input='this is a clean test sentence' +2026-09-04 17:11:50,272 INFO guardrails.execution request=bacb4a9b-ae91-4e6e-a447-077e4d96cadd guardrails execution finished (passed=True) output='this is a clean test sentence' +2026-09-04 17:11:50,278 INFO guardrails.execution request=bacb4a9b-ae91-4e6e-a447-077e4d96cadd step=1/1 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-04T17:11:50.270432 end=2026-09-04T17:11:50.271991 duration_ms=1 input='this is a clean test sentence' output='this is a clean test sentence' +2026-09-04 17:11:50,283 INFO http_request_logger POST /api/v1/guardrails/ - 200 [26.13ms] +2026-09-04 17:11:54,676 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [3.41ms] +2026-09-04 17:11:54,694 INFO guardrails.execution request=1f3c29ab-16dd-4016-864f-8a5af766670e starting guardrails execution (validators=['llm_critic']) input='I really appreciate your help, thank you so much!' +2026-09-04 17:11:54,700 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 17:11:56,136 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 17:11:56,140 INFO guardrails.execution request=1f3c29ab-16dd-4016-864f-8a5af766670e guardrails execution finished (passed=True) output='' +2026-09-04 17:11:56,148 INFO guardrails.execution request=1f3c29ab-16dd-4016-864f-8a5af766670e step=1/1 validator=LLMCritic stage=output outcome=Outcome.FAIL start=2026-09-04T17:11:54.694647 end=2026-09-04T17:11:56.139034 duration_ms=1444 input='I really appreciate your help, thank you so much!' output='' +2026-09-04 17:11:56,156 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1474.36ms] +2026-09-04 17:11:59,134 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [4.95ms] +2026-09-04 17:11:59,157 INFO guardrails.execution request=adddde72-2c7d-43ef-a1a8-70c560b9c1e4 starting guardrails execution (validators=['topic_relevance']) input='What is the interest rate on a savings account?' +2026-09-04 17:11:59,158 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 17:12:00,282 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 17:12:00,285 INFO guardrails.execution request=adddde72-2c7d-43ef-a1a8-70c560b9c1e4 guardrails execution finished (passed=True) output='What is the interest rate on a savings account?' +2026-09-04 17:12:00,292 INFO guardrails.execution request=adddde72-2c7d-43ef-a1a8-70c560b9c1e4 step=1/1 validator=TopicRelevance stage=input outcome=Outcome.PASS start=2026-09-04T17:11:59.158250 end=2026-09-04T17:12:00.283476 duration_ms=1125 input='What is the interest rate on a savings account?' output='What is the interest rate on a savings account?' +2026-09-04 17:12:00,298 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1156.92ms] +2026-09-04 17:12:03,577 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [4.75ms] +2026-09-04 17:12:03,599 INFO guardrails.execution request=9524f3f1-3fa3-4d5e-8421-b10166526dec starting guardrails execution (validators=['topic_relevance_llm']) input="What's the best recipe for chocolate cake?" +2026-09-04 17:12:03,600 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 17:12:05,135 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 17:12:05,139 INFO guardrails.execution request=9524f3f1-3fa3-4d5e-8421-b10166526dec guardrails execution finished (passed=True) output='' +2026-09-04 17:12:05,149 INFO guardrails.execution request=9524f3f1-3fa3-4d5e-8421-b10166526dec step=1/1 validator=TopicRelevanceLLM stage=input outcome=Outcome.FAIL start=2026-09-04T17:12:03.599926 end=2026-09-04T17:12:05.137270 duration_ms=1537 input="What's the best recipe for chocolate cake?" output='' +2026-09-04 17:12:05,158 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1573.98ms] +2026-09-04 17:13:17,718 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [10.63ms] +2026-09-04 17:13:17,748 INFO guardrails.execution request=fb7fe795-2b95-479b-b94c-9e7248f807f4 starting guardrails execution (validators=['ban_list', 'pii_remover', 'topic_relevance']) input='My email is jane@example.com, what is the interest rate on a savings account?' +2026-09-04 17:13:17,761 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 17:13:19,236 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 17:13:19,241 INFO guardrails.execution request=fb7fe795-2b95-479b-b94c-9e7248f807f4 guardrails execution finished (passed=True) output='My email is , what is the interest rate on a savings account?' +2026-09-04 17:13:19,252 INFO guardrails.execution request=fb7fe795-2b95-479b-b94c-9e7248f807f4 step=1/3 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-04T17:13:17.749923 end=2026-09-04T17:13:17.750116 duration_ms=0 input='My email is jane@example.com, what is the interest rate on a savings account?' output='My email is jane@example.com, what is the interest rate on a savings account?' +2026-09-04 17:13:19,257 INFO guardrails.execution request=fb7fe795-2b95-479b-b94c-9e7248f807f4 step=2/3 validator=PIIRemover stage=input outcome=Outcome.FAIL start=2026-09-04T17:13:17.750128 end=2026-09-04T17:13:17.759973 duration_ms=9 input='My email is jane@example.com, what is the interest rate on a savings account?' output='My email is , what is the interest rate on a savings account?' +2026-09-04 17:13:19,264 INFO guardrails.execution request=fb7fe795-2b95-479b-b94c-9e7248f807f4 step=3/3 validator=TopicRelevance stage=input outcome=Outcome.PASS start=2026-09-04T17:13:17.759984 end=2026-09-04T17:13:19.239195 duration_ms=1479 input='My email is , what is the interest rate on a savings account?' output='My email is , what is the interest rate on a savings account?' +2026-09-04 17:13:19,272 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1546.19ms] +2026-09-04 17:13:22,594 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [4.65ms] +2026-09-04 17:13:25,806 INFO guardrails.execution request=50c0bd40-eaeb-4c29-b5da-0d889243b37c starting guardrails execution (validators=['gender_assumption_bias', 'nsfw_text']) input='My email is jane@example.com, what is the interest rate on a savings account?' +2026-09-04 17:13:25,948 INFO guardrails.execution request=50c0bd40-eaeb-4c29-b5da-0d889243b37c guardrails execution finished (passed=True) output='My email is jane@example.com, what is the interest rate on a savings account?' +2026-09-04 17:13:25,953 INFO guardrails.execution request=50c0bd40-eaeb-4c29-b5da-0d889243b37c step=1/2 validator=GenderAssumptionBias stage=output outcome=Outcome.PASS start=2026-09-04T17:13:25.806989 end=2026-09-04T17:13:25.807684 duration_ms=0 input='My email is jane@example.com, what is the interest rate on a savings account?' output='My email is jane@example.com, what is the interest rate on a savings account?' +2026-09-04 17:13:25,957 INFO guardrails.execution request=50c0bd40-eaeb-4c29-b5da-0d889243b37c step=2/2 validator=NSFWText stage=output outcome=Outcome.PASS start=2026-09-04T17:13:25.807689 end=2026-09-04T17:13:25.947824 duration_ms=140 input='My email is jane@example.com, what is the interest rate on a savings account?' output='My email is jane@example.com, what is the interest rate on a savings account?' +2026-09-04 17:13:26,099 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3498.57ms] +2026-09-04 17:13:42,596 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [6.19ms] +2026-09-04 17:13:42,619 INFO guardrails.execution request=79666641-e270-4e36-903a-345893fde02e starting guardrails execution (validators=['ban_list', 'topic_relevance']) input='This is my forbiddenword question: what is the best recipe for chocolate cake?' +2026-09-04 17:13:42,621 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 17:13:43,472 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 17:13:43,477 INFO guardrails.execution request=79666641-e270-4e36-903a-345893fde02e guardrails execution finished (passed=True) output='' +2026-09-04 17:13:43,485 INFO guardrails.execution request=79666641-e270-4e36-903a-345893fde02e step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-04T17:13:42.620889 end=2026-09-04T17:13:42.621031 duration_ms=0 input='This is my forbiddenword question: what is the best recipe for chocolate cake?' output='This is my f question: what is the best recipe for chocolate cake?' +2026-09-04 17:13:43,488 INFO guardrails.execution request=79666641-e270-4e36-903a-345893fde02e step=2/2 validator=TopicRelevance stage=input outcome=Outcome.FAIL start=2026-09-04T17:13:42.621038 end=2026-09-04T17:13:43.474720 duration_ms=853 input='This is my f question: what is the best recipe for chocolate cake?' output='' +2026-09-04 17:13:43,494 INFO http_request_logger POST /api/v1/guardrails/ - 200 [892.53ms] +2026-09-04 17:14:18,609 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [7.78ms] +2026-09-04 17:14:18,634 INFO guardrails.execution request=dc626acb-819d-4ded-ac4a-43b60662f608 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='The capital of France is Paris.' +2026-09-04 17:14:18,636 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-04 17:14:20,490 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-04 17:14:20,493 INFO guardrails.execution request=dc626acb-819d-4ded-ac4a-43b60662f608 guardrails execution finished (passed=True) output='The capital of France is Paris.' +2026-09-04 17:14:20,500 INFO guardrails.execution request=dc626acb-819d-4ded-ac4a-43b60662f608 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-04T17:14:18.635832 end=2026-09-04T17:14:20.491383 duration_ms=1855 input='The capital of France is Paris.' output='The capital of France is Paris.' +2026-09-04 17:14:20,510 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1894.14ms] +2026-09-05 20:29:40,195 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/c2fa6d9e-cc6a-4372-9560-1d56539ce40e - 422 [49.21ms] +2026-09-05 20:29:48,630 INFO app.crud.validator_config deleted validator config id=c2fa6d9e-cc6a-4372-9560-1d56539ce40e +2026-09-05 20:29:48,631 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/c2fa6d9e-cc6a-4372-9560-1d56539ce40e - 200 [50.17ms] +2026-09-05 20:29:48,846 INFO app.crud.validator_config created validator config id=0c9a0f98-7939-417d-bfca-303982131f04 org=1 project=1 type=ValidatorType.LLMCritic +2026-09-05 20:29:48,848 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [14.82ms] +2026-09-05 20:29:55,218 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [4.82ms] +2026-09-05 20:29:55,253 INFO guardrails.execution request=404406db-c30f-4bf3-8908-8605d999788a starting guardrails execution (validators=['llm_critic']) input='I really appreciate your help, thank you so much!' +2026-09-05 20:29:55,271 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:29:57,617 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:29:57,621 INFO guardrails.execution request=404406db-c30f-4bf3-8908-8605d999788a guardrails execution finished (passed=True) output='I really appreciate your help, thank you so much!' +2026-09-05 20:29:57,630 INFO guardrails.execution request=404406db-c30f-4bf3-8908-8605d999788a step=1/1 validator=LLMCritic stage=output outcome=Outcome.PASS start=2026-09-05T20:29:55.260676 end=2026-09-05T20:29:57.619513 duration_ms=2358 input='I really appreciate your help, thank you so much!' output='I really appreciate your help, thank you so much!' +2026-09-05 20:29:57,641 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2414.70ms] +2026-09-05 20:34:27,206 INFO http_request_logger GET /api/v1/utils/health-check/ - 200 [3.30ms] +2026-09-05 20:34:36,921 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [9.29ms] +2026-09-05 20:34:36,969 INFO guardrails.execution request=6911c76f-d3e8-4d18-823b-4e695af3d717 starting guardrails execution (validators=['ban_list', 'topic_relevance']) input='This is my forbiddenword question: what is the best recipe for chocolate cake?' +2026-09-05 20:34:36,975 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:34:38,734 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:34:38,739 INFO guardrails.execution request=6911c76f-d3e8-4d18-823b-4e695af3d717 guardrails execution finished (passed=True) output='' +2026-09-05 20:34:38,748 INFO guardrails.execution request=6911c76f-d3e8-4d18-823b-4e695af3d717 step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-05T20:34:36.970573 end=2026-09-05T20:34:36.972284 duration_ms=1 input='This is my forbiddenword question: what is the best recipe for chocolate cake?' output='This is my f question: what is the best recipe for chocolate cake?' +2026-09-05 20:34:38,753 INFO guardrails.execution request=6911c76f-d3e8-4d18-823b-4e695af3d717 step=2/2 validator=TopicRelevance stage=input outcome=Outcome.FAIL start=2026-09-05T20:34:36.972302 end=2026-09-05T20:34:38.736706 duration_ms=1764 input='This is my f question: what is the best recipe for chocolate cake?' output='' +2026-09-05 20:34:38,759 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1829.49ms] +2026-09-05 20:34:59,310 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [13.97ms] +2026-09-05 20:34:59,349 INFO guardrails.execution request=29b243cb-e7b6-4c10-992a-a9f52e9a4f6f starting guardrails execution (validators=['ban_list', 'pii_remover', 'topic_relevance']) input='My email is jane@example.com, what is the interest rate on a savings account?' +2026-09-05 20:34:59,442 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:35:00,437 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:35:00,441 INFO guardrails.execution request=29b243cb-e7b6-4c10-992a-a9f52e9a4f6f guardrails execution finished (passed=True) output='My email is , what is the interest rate on a savings account?' +2026-09-05 20:35:00,444 INFO guardrails.execution request=29b243cb-e7b6-4c10-992a-a9f52e9a4f6f step=1/3 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-05T20:34:59.351327 end=2026-09-05T20:34:59.351469 duration_ms=0 input='My email is jane@example.com, what is the interest rate on a savings account?' output='My email is jane@example.com, what is the interest rate on a savings account?' +2026-09-05 20:35:00,447 INFO guardrails.execution request=29b243cb-e7b6-4c10-992a-a9f52e9a4f6f step=2/3 validator=PIIRemover stage=input outcome=Outcome.FAIL start=2026-09-05T20:34:59.351481 end=2026-09-05T20:34:59.440385 duration_ms=88 input='My email is jane@example.com, what is the interest rate on a savings account?' output='My email is , what is the interest rate on a savings account?' +2026-09-05 20:35:00,450 INFO guardrails.execution request=29b243cb-e7b6-4c10-992a-a9f52e9a4f6f step=3/3 validator=TopicRelevance stage=input outcome=Outcome.PASS start=2026-09-05T20:34:59.440397 end=2026-09-05T20:35:00.439502 duration_ms=999 input='My email is , what is the interest rate on a savings account?' output='My email is , what is the interest rate on a savings account?' +2026-09-05 20:35:00,454 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1135.61ms] +2026-09-05 20:35:04,006 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [5.19ms] +2026-09-05 20:35:04,446 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-05 20:35:11,207 INFO guardrails.execution request=2ac6b6d6-a304-4108-bf60-98cc7dddbb82 starting guardrails execution (validators=['gender_assumption_bias', 'nsfw_text']) input='My email is jane@example.com, what is the interest rate on a savings account?' +2026-09-05 20:35:11,359 INFO guardrails.execution request=2ac6b6d6-a304-4108-bf60-98cc7dddbb82 guardrails execution finished (passed=True) output='My email is jane@example.com, what is the interest rate on a savings account?' +2026-09-05 20:35:11,373 INFO guardrails.execution request=2ac6b6d6-a304-4108-bf60-98cc7dddbb82 step=1/2 validator=GenderAssumptionBias stage=output outcome=Outcome.PASS start=2026-09-05T20:35:11.209526 end=2026-09-05T20:35:11.209968 duration_ms=0 input='My email is jane@example.com, what is the interest rate on a savings account?' output='My email is jane@example.com, what is the interest rate on a savings account?' +2026-09-05 20:35:11,375 INFO guardrails.execution request=2ac6b6d6-a304-4108-bf60-98cc7dddbb82 step=2/2 validator=NSFWText stage=output outcome=Outcome.PASS start=2026-09-05T20:35:11.209981 end=2026-09-05T20:35:11.358393 duration_ms=148 input='My email is jane@example.com, what is the interest rate on a savings account?' output='My email is jane@example.com, what is the interest rate on a savings account?' +2026-09-05 20:35:11,547 INFO http_request_logger POST /api/v1/guardrails/ - 200 [7533.46ms] +2026-09-05 20:43:21,026 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [15.39ms] +2026-09-05 20:43:21,231 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [7.65ms] +2026-09-05 20:48:08,953 INFO presidio-analyzer Using device of type: cpu +2026-09-05 20:48:09,838 INFO guardrails.execution request=e555e243-f904-42c9-9b3d-51a39a48f281 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:48:09,840 INFO guardrails.execution request=e555e243-f904-42c9-9b3d-51a39a48f281 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:48:09,842 INFO guardrails.execution request=e555e243-f904-42c9-9b3d-51a39a48f281 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:48:09.838955 end=2026-09-05T20:48:09.839053 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:48:09,847 INFO http_request_logger POST /api/v1/guardrails/ - 200 [34.54ms] +2026-09-05 20:48:09,865 INFO guardrails.execution request=e5bd49de-75db-4302-a4bf-3c1e4d20b2ac starting guardrails execution (validators=['answer_relevance_custom_llm']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-05 20:48:09,865 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log e5bd49de-75db-4302-a4bf-3c1e4d20b2ac: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-05 20:48:09,871 INFO guardrails.execution request=e5bd49de-75db-4302-a4bf-3c1e4d20b2ac step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-05T20:48:09.865619 end=2026-09-05T20:48:09.865700 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-05 20:48:09,873 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.17ms] +2026-09-05 20:48:09,888 INFO guardrails.execution request=6dde7391-6c52-4044-9b2f-e2cde107c12a starting guardrails execution (validators=['answer_relevance_custom_llm']) input='' +2026-09-05 20:48:09,889 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 6dde7391-6c52-4044-9b2f-e2cde107c12a: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +2026-09-05 20:48:09,891 INFO guardrails.execution request=6dde7391-6c52-4044-9b2f-e2cde107c12a step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-05T20:48:09.888984 end=2026-09-05T20:48:09.889035 duration_ms=0 input='' output=None +2026-09-05 20:48:09,893 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.27ms] +2026-09-05 20:48:09,913 INFO guardrails.execution request=f85e9407-dda3-41f2-bd0d-64d54f91a071 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:48:09,915 INFO guardrails.execution request=f85e9407-dda3-41f2-bd0d-64d54f91a071 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:48:09,917 INFO guardrails.execution request=f85e9407-dda3-41f2-bd0d-64d54f91a071 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:48:09.914192 end=2026-09-05T20:48:09.914278 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:48:09,920 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.63ms] +2026-09-05 20:48:09,934 INFO guardrails.execution request=b55742fd-818c-4da0-ba37-42c7b92020c4 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-05 20:48:09,935 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log b55742fd-818c-4da0-ba37-42c7b92020c4: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-05 20:48:09,937 INFO guardrails.execution request=b55742fd-818c-4da0-ba37-42c7b92020c4 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-05T20:48:09.934860 end=2026-09-05T20:48:09.934928 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-05 20:48:09,939 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.64ms] +2026-09-05 20:48:09,955 INFO guardrails.execution request=c54206dc-ff8c-44a6-a070-97e9f596d416 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-05 20:48:09,956 INFO guardrails.execution request=c54206dc-ff8c-44a6-a070-97e9f596d416 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-05 20:48:09,958 INFO guardrails.execution request=c54206dc-ff8c-44a6-a070-97e9f596d416 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:48:09.955392 end=2026-09-05T20:48:09.955454 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-05 20:48:09,959 INFO guardrails.execution request=c54206dc-ff8c-44a6-a070-97e9f596d416 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:09.955458 end=2026-09-05T20:48:09.955553 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-05 20:48:09,961 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.87ms] +2026-09-05 20:48:09,975 INFO guardrails.execution request=c0f27f4a-498a-4856-b427-29e453dc2615 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Diabetes symptoms include fuck fatigue.' +2026-09-05 20:48:09,979 INFO guardrails.execution request=c0f27f4a-498a-4856-b427-29e453dc2615 guardrails execution finished (passed=True) output='' +2026-09-05 20:48:09,981 INFO guardrails.execution request=c0f27f4a-498a-4856-b427-29e453dc2615 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:48:09.975481 end=2026-09-05T20:48:09.975556 duration_ms=0 input='Diabetes symptoms include fuck fatigue.' output='Diabetes symptoms include fuck fatigue.' +2026-09-05 20:48:09,982 INFO guardrails.execution request=c0f27f4a-498a-4856-b427-29e453dc2615 step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:09.975561 end=2026-09-05T20:48:09.979008 duration_ms=3 input='Diabetes symptoms include fuck fatigue.' output='' +2026-09-05 20:48:09,985 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.52ms] +2026-09-05 20:48:10,005 INFO guardrails.execution request=20dfe585-3d29-414b-b785-5b91c8de1724 starting guardrails execution (validators=['answer_relevance_custom_llm', 'uli_slur_match']) input='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-05 20:48:10,009 INFO guardrails.execution request=20dfe585-3d29-414b-b785-5b91c8de1724 guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-05 20:48:10,011 INFO guardrails.execution request=20dfe585-3d29-414b-b785-5b91c8de1724 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:48:10.005866 end=2026-09-05T20:48:10.005933 duration_ms=0 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-05 20:48:10,012 INFO guardrails.execution request=20dfe585-3d29-414b-b785-5b91c8de1724 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:10.005938 end=2026-09-05T20:48:10.008293 duration_ms=2 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-05 20:48:10,015 INFO http_request_logger POST /api/v1/guardrails/ - 200 [26.43ms] +2026-09-05 20:48:10,031 INFO guardrails.execution request=4f80ed13-b2ef-49ae-b930-3d0a39d72e03 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-05 20:48:10,033 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 4f80ed13-b2ef-49ae-b930-3d0a39d72e03: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +2026-09-05 20:48:10,036 INFO guardrails.execution request=4f80ed13-b2ef-49ae-b930-3d0a39d72e03 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:48:10.031843 end=2026-09-05T20:48:10.031913 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-05 20:48:10,038 INFO guardrails.execution request=4f80ed13-b2ef-49ae-b930-3d0a39d72e03 step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:10.031917 end=2026-09-05T20:48:10.032933 duration_ms=1 input='Bloody hell, the symptoms include thirst and fatigue.' output=None +2026-09-05 20:48:10,040 INFO http_request_logger POST /api/v1/guardrails/ - 200 [21.07ms] +2026-09-05 20:48:10,057 INFO guardrails.execution request=59045a7a-1119-4e95-98e2-d96fa7e87d83 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list', 'profanity_free', 'uli_slur_match', 'gender_assumption_bias']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:48:10,061 INFO guardrails.execution request=59045a7a-1119-4e95-98e2-d96fa7e87d83 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:48:10,063 INFO guardrails.execution request=59045a7a-1119-4e95-98e2-d96fa7e87d83 step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:48:10.058509 end=2026-09-05T20:48:10.058578 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:48:10,065 INFO guardrails.execution request=59045a7a-1119-4e95-98e2-d96fa7e87d83 step=2/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-05T20:48:10.058582 end=2026-09-05T20:48:10.058652 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:48:10,066 INFO guardrails.execution request=59045a7a-1119-4e95-98e2-d96fa7e87d83 step=3/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-05T20:48:10.058656 end=2026-09-05T20:48:10.059608 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:48:10,067 INFO guardrails.execution request=59045a7a-1119-4e95-98e2-d96fa7e87d83 step=4/5 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-05T20:48:10.059614 end=2026-09-05T20:48:10.060194 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:48:10,069 INFO guardrails.execution request=59045a7a-1119-4e95-98e2-d96fa7e87d83 step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.PASS start=2026-09-05T20:48:10.060199 end=2026-09-05T20:48:10.060834 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:48:10,071 INFO http_request_logger POST /api/v1/guardrails/ - 200 [26.24ms] +2026-09-05 20:48:10,091 INFO guardrails.execution request=be30174b-e9c7-43d0-91f5-d63f3520cb4e starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free', 'uli_slur_match', 'ban_list', 'gender_assumption_bias']) input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-05 20:48:10,095 INFO guardrails.execution request=be30174b-e9c7-43d0-91f5-d63f3520cb4e guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-05 20:48:10,098 INFO guardrails.execution request=be30174b-e9c7-43d0-91f5-d63f3520cb4e step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:48:10.092337 end=2026-09-05T20:48:10.092407 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-05 20:48:10,101 INFO guardrails.execution request=be30174b-e9c7-43d0-91f5-d63f3520cb4e step=2/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-05T20:48:10.092411 end=2026-09-05T20:48:10.093398 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-05 20:48:10,103 INFO guardrails.execution request=be30174b-e9c7-43d0-91f5-d63f3520cb4e step=3/5 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:10.093403 end=2026-09-05T20:48:10.093962 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-05 20:48:10,105 INFO guardrails.execution request=be30174b-e9c7-43d0-91f5-d63f3520cb4e step=4/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-05T20:48:10.093968 end=2026-09-05T20:48:10.094029 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-05 20:48:10,107 INFO guardrails.execution request=be30174b-e9c7-43d0-91f5-d63f3520cb4e step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:10.094032 end=2026-09-05T20:48:10.094680 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-05 20:48:10,110 INFO http_request_logger POST /api/v1/guardrails/ - 200 [34.64ms] +2026-09-05 20:48:10,137 INFO app.crud.ban_list created ban list id=6eeaaf67-e9bc-46d9-8703-41c1ddf7d6ad org=1 project=1 +2026-09-05 20:48:10,138 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [6.09ms] +2026-09-05 20:48:10,143 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.93ms] +2026-09-05 20:48:10,148 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.78ms] +2026-09-05 20:48:10,153 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.85ms] +2026-09-05 20:48:10,157 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.82ms] +2026-09-05 20:48:10,162 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.78ms] +2026-09-05 20:48:10,174 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [3.58ms] +2026-09-05 20:48:10,185 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [3.10ms] +2026-09-05 20:48:10,191 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.30ms] +2026-09-05 20:48:10,199 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.51ms] +2026-09-05 20:48:10,209 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.13ms] +2026-09-05 20:48:10,211 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.90ms] +2026-09-05 20:48:10,217 INFO app.crud.ban_list created ban list id=9448e6cf-6610-4f5a-ac63-f1fdfd60a35e org=1 project=1 +2026-09-05 20:48:10,218 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [3.05ms] +2026-09-05 20:48:10,218 INFO http_request_logger GET /api/v1/guardrails/ban_lists/9448e6cf-6610-4f5a-ac63-f1fdfd60a35e/ - 307 [0.09ms] +2026-09-05 20:48:10,220 INFO http_request_logger GET /api/v1/guardrails/ban_lists/9448e6cf-6610-4f5a-ac63-f1fdfd60a35e - 200 [1.85ms] +2026-09-05 20:48:10,228 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.87ms] +2026-09-05 20:48:10,229 INFO http_request_logger GET /api/v1/guardrails/ban_lists/6e20c12e-6c5c-4afe-9268-03680ebb61b1/ - 307 [0.08ms] +2026-09-05 20:48:10,231 INFO http_request_logger GET /api/v1/guardrails/ban_lists/6e20c12e-6c5c-4afe-9268-03680ebb61b1 - 200 [1.51ms] +2026-09-05 20:48:10,234 INFO http_request_logger GET /api/v1/guardrails/ban_lists/310fcee5-974d-4a54-933f-90ac78af596f/ - 307 [0.08ms] +2026-09-05 20:48:10,240 INFO http_request_logger GET /api/v1/guardrails/ban_lists/310fcee5-974d-4a54-933f-90ac78af596f - 404 [5.69ms] +2026-09-05 20:48:10,257 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.89ms] +2026-09-05 20:48:10,258 INFO http_request_logger GET /api/v1/guardrails/ban_lists/38473694-cd77-426a-809f-8ed26e22b790/ - 307 [0.09ms] +2026-09-05 20:48:10,262 INFO http_request_logger GET /api/v1/guardrails/ban_lists/38473694-cd77-426a-809f-8ed26e22b790 - 403 [3.58ms] +2026-09-05 20:48:10,272 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.50ms] +2026-09-05 20:48:10,273 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/79782ebb-95f3-4c3c-8ea3-3ad4f00cf07f/ - 307 [0.10ms] +2026-09-05 20:48:10,277 INFO app.crud.ban_list updated ban list id=79782ebb-95f3-4c3c-8ea3-3ad4f00cf07f +2026-09-05 20:48:10,277 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/79782ebb-95f3-4c3c-8ea3-3ad4f00cf07f - 200 [4.28ms] +2026-09-05 20:48:10,286 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.16ms] +2026-09-05 20:48:10,287 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/aae21f76-116f-42c2-80e8-cbaf173fe375/ - 307 [0.08ms] +2026-09-05 20:48:10,290 INFO app.crud.ban_list updated ban list id=aae21f76-116f-42c2-80e8-cbaf173fe375 +2026-09-05 20:48:10,291 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/aae21f76-116f-42c2-80e8-cbaf173fe375 - 200 [4.23ms] +2026-09-05 20:48:10,296 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/54b3f32e-3d38-4cf0-aabc-510fb03ea978/ - 307 [0.08ms] +2026-09-05 20:48:10,298 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/54b3f32e-3d38-4cf0-aabc-510fb03ea978 - 404 [2.05ms] +2026-09-05 20:48:10,306 INFO app.crud.ban_list created ban list id=8474bd61-3795-4f19-ac81-7ec305467297 org=1 project=1 +2026-09-05 20:48:10,306 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [4.17ms] +2026-09-05 20:48:10,307 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/8474bd61-3795-4f19-ac81-7ec305467297/ - 307 [0.08ms] +2026-09-05 20:48:10,309 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/8474bd61-3795-4f19-ac81-7ec305467297 - 403 [1.79ms] +2026-09-05 20:48:10,318 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.07ms] +2026-09-05 20:48:10,318 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/81eabd83-cf4a-48ce-a8fa-1073633c879a/ - 307 [0.08ms] +2026-09-05 20:48:10,321 INFO app.crud.ban_list deleted ban list id=81eabd83-cf4a-48ce-a8fa-1073633c879a +2026-09-05 20:48:10,321 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/81eabd83-cf4a-48ce-a8fa-1073633c879a - 200 [2.70ms] +2026-09-05 20:48:10,326 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/fa619f48-f842-4085-a6a6-8bc74e104ac1/ - 307 [0.08ms] +2026-09-05 20:48:10,328 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/fa619f48-f842-4085-a6a6-8bc74e104ac1 - 404 [1.75ms] +2026-09-05 20:48:10,337 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.16ms] +2026-09-05 20:48:10,337 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/8805a4d0-af49-44ed-b590-a4b019f62222/ - 307 [0.09ms] +2026-09-05 20:48:10,339 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/8805a4d0-af49-44ed-b590-a4b019f62222 - 403 [1.68ms] +2026-09-05 20:48:10,347 INFO app.crud.ban_list created ban list id=8c866542-929a-4c1b-ac77-cd37e6b6e6b6 org=1 project=1 +2026-09-05 20:48:10,348 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [4.18ms] +2026-09-05 20:48:10,348 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/8c866542-929a-4c1b-ac77-cd37e6b6e6b6/ - 307 [0.08ms] +2026-09-05 20:48:10,350 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/8c866542-929a-4c1b-ac77-cd37e6b6e6b6 - 403 [1.68ms] +2026-09-05 20:48:10,443 INFO guardrails.execution request=d9bdc656-49a3-49a6-b997-de6cfbfda776 starting guardrails execution (validators=[]) input='hello world' +2026-09-05 20:48:10,443 INFO guardrails.execution request=d9bdc656-49a3-49a6-b997-de6cfbfda776 guardrails execution finished (passed=True) output='clean text' +2026-09-05 20:48:10,445 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.82ms] +2026-09-05 20:48:10,454 INFO guardrails.execution request=015d18d3-3b4d-478a-90ab-43b839ac75ef starting guardrails execution (validators=[]) input='my phone is 999999' +2026-09-05 20:48:10,454 INFO guardrails.execution request=015d18d3-3b4d-478a-90ab-43b839ac75ef guardrails execution finished (passed=False) output=None +2026-09-05 20:48:10,456 INFO http_request_logger POST /api/v1/guardrails/ - 200 [6.47ms] +2026-09-05 20:48:10,463 INFO guardrails.execution request=18aec735-591b-4ada-928b-e087b4a11584 starting guardrails execution (validators=[]) input='tell me about buildings' +2026-09-05 20:48:10,463 INFO guardrails.execution request=18aec735-591b-4ada-928b-e087b4a11584 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Input is outside the allowed topic scope.' +2026-09-05 20:48:10,465 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.59ms] +2026-09-05 20:48:10,471 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 53ee88fe-2456-4c7e-8115-996320dd6c35: Invalid validator config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid validator config +2026-09-05 20:48:10,474 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.12ms] +2026-09-05 20:48:10,487 INFO guardrails.execution request=75b2bd9e-3c3f-4b50-8750-95e12058f410 starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-05 20:48:10,488 INFO guardrails.execution request=75b2bd9e-3c3f-4b50-8750-95e12058f410 guardrails execution finished (passed=True) output='this contains b' +2026-09-05 20:48:10,490 INFO guardrails.execution request=75b2bd9e-3c3f-4b50-8750-95e12058f410 step=1/1 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:10.487674 end=2026-09-05T20:48:10.487774 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-05 20:48:10,493 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.18ms] +2026-09-05 20:48:10,507 INFO guardrails.execution request=07d0cbc7-4231-4e3c-8174-171fadb7fe99 starting guardrails execution (validators=['ban_list']) input='this is clean' +2026-09-05 20:48:10,508 INFO guardrails.execution request=07d0cbc7-4231-4e3c-8174-171fadb7fe99 guardrails execution finished (passed=True) output='this is clean' +2026-09-05 20:48:10,510 INFO guardrails.execution request=07d0cbc7-4231-4e3c-8174-171fadb7fe99 step=1/1 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-05T20:48:10.507623 end=2026-09-05T20:48:10.507685 duration_ms=0 input='this is clean' output='this is clean' +2026-09-05 20:48:10,513 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.31ms] +2026-09-05 20:48:10,533 INFO guardrails.execution request=5a5e9d21-5f8a-4c13-86af-92a2d5f3c10e starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-05 20:48:10,535 INFO guardrails.execution request=5a5e9d21-5f8a-4c13-86af-92a2d5f3c10e guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR].' +2026-09-05 20:48:10,538 INFO guardrails.execution request=5a5e9d21-5f8a-4c13-86af-92a2d5f3c10e step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:10.534141 end=2026-09-05T20:48:10.534519 duration_ms=0 input='This sentence contains chakki.' output='this sentence contains [REDACTED_SLUR].' +2026-09-05 20:48:10,541 INFO http_request_logger POST /api/v1/guardrails/ - 200 [23.75ms] +2026-09-05 20:48:10,556 INFO guardrails.execution request=357ea95e-5e17-45e6-8271-60e04a3cdbce starting guardrails execution (validators=['uli_slur_match']) input='This is a completely safe sentence' +2026-09-05 20:48:10,557 INFO guardrails.execution request=357ea95e-5e17-45e6-8271-60e04a3cdbce guardrails execution finished (passed=True) output='This is a completely safe sentence' +2026-09-05 20:48:10,560 INFO guardrails.execution request=357ea95e-5e17-45e6-8271-60e04a3cdbce step=1/1 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-05T20:48:10.556641 end=2026-09-05T20:48:10.556924 duration_ms=0 input='This is a completely safe sentence' output='This is a completely safe sentence' +2026-09-05 20:48:10,564 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.11ms] +2026-09-05 20:48:10,580 INFO guardrails.execution request=9138ef2a-d753-4ee6-b560-4ad915b7b351 starting guardrails execution (validators=['uli_slur_match', 'ban_list']) input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' +2026-09-05 20:48:10,582 INFO guardrails.execution request=9138ef2a-d753-4ee6-b560-4ad915b7b351 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-05 20:48:10,585 INFO guardrails.execution request=9138ef2a-d753-4ee6-b560-4ad915b7b351 step=1/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:10.580783 end=2026-09-05T20:48:10.581298 duration_ms=0 input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' +2026-09-05 20:48:10,588 INFO guardrails.execution request=9138ef2a-d753-4ee6-b560-4ad915b7b351 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:10.581304 end=2026-09-05T20:48:10.581391 duration_ms=0 input='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-05 20:48:10,592 INFO http_request_logger POST /api/v1/guardrails/ - 200 [23.73ms] +2026-09-05 20:48:10,598 INFO http_request_logger POST /api/v1/guardrails/ - 422 [0.94ms] +2026-09-05 20:48:10,612 INFO guardrails.execution request=cd29abcb-f8b1-4e3d-9863-689b1b4b729e starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-05 20:48:10,613 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log cd29abcb-f8b1-4e3d-9863-689b1b4b729e: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-05 20:48:10,616 INFO guardrails.execution request=cd29abcb-f8b1-4e3d-9863-689b1b4b729e step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:10.613267 end=2026-09-05T20:48:10.613534 duration_ms=0 input='This sentence contains chakki.' output=None +2026-09-05 20:48:10,618 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.67ms] +2026-09-05 20:48:10,634 INFO guardrails.execution request=2875a3d7-69c4-4dbf-8805-23584fd2ac9d starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-05 20:48:10,635 INFO guardrails.execution request=2875a3d7-69c4-4dbf-8805-23584fd2ac9d guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-05 20:48:10,638 INFO guardrails.execution request=2875a3d7-69c4-4dbf-8805-23584fd2ac9d step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:10.634619 end=2026-09-05T20:48:10.634889 duration_ms=0 input='This sentence contains chakki.' output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-05 20:48:10,642 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.02ms] +2026-09-05 20:48:10,657 INFO guardrails.execution request=23150867-4ca3-4f01-b93c-19674adb23e2 starting guardrails execution (validators=['profanity_free']) input='This is a damn fucking mess.' +2026-09-05 20:48:10,659 INFO guardrails.execution request=23150867-4ca3-4f01-b93c-19674adb23e2 guardrails execution finished (passed=True) output='' +2026-09-05 20:48:10,662 INFO guardrails.execution request=23150867-4ca3-4f01-b93c-19674adb23e2 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:10.658000 end=2026-09-05T20:48:10.659025 duration_ms=1 input='This is a damn fucking mess.' output='' +2026-09-05 20:48:10,667 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.81ms] +2026-09-05 20:48:10,682 INFO guardrails.execution request=daa73356-6f43-4698-8ad7-03f29765cf18 starting guardrails execution (validators=['profanity_free']) input='This is a completely clean sentence.' +2026-09-05 20:48:10,684 INFO guardrails.execution request=daa73356-6f43-4698-8ad7-03f29765cf18 guardrails execution finished (passed=True) output='This is a completely clean sentence.' +2026-09-05 20:48:10,687 INFO guardrails.execution request=daa73356-6f43-4698-8ad7-03f29765cf18 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-05T20:48:10.682449 end=2026-09-05T20:48:10.683465 duration_ms=1 input='This is a completely clean sentence.' output='This is a completely clean sentence.' +2026-09-05 20:48:10,691 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.16ms] +2026-09-05 20:48:10,710 INFO guardrails.execution request=72b893df-68e1-4409-b5bd-87a9d026d2cc starting guardrails execution (validators=['profanity_free']) input='What the fuck is going on?' +2026-09-05 20:48:10,711 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 72b893df-68e1-4409-b5bd-87a9d026d2cc: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +2026-09-05 20:48:10,715 INFO guardrails.execution request=72b893df-68e1-4409-b5bd-87a9d026d2cc step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:10.710722 end=2026-09-05T20:48:10.711648 duration_ms=0 input='What the fuck is going on?' output=None +2026-09-05 20:48:10,718 INFO http_request_logger POST /api/v1/guardrails/ - 200 [21.00ms] +2026-09-05 20:48:10,734 INFO guardrails.execution request=700b2b0b-abe3-455c-b157-c949edb9bc21 starting guardrails execution (validators=['profanity_free']) input='This is absolute bullshit.' +2026-09-05 20:48:10,736 INFO guardrails.execution request=700b2b0b-abe3-455c-b157-c949edb9bc21 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-05 20:48:10,738 INFO guardrails.execution request=700b2b0b-abe3-455c-b157-c949edb9bc21 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:10.734748 end=2026-09-05T20:48:10.735702 duration_ms=0 input='This is absolute bullshit.' output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-05 20:48:10,742 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.54ms] +2026-09-05 20:48:10,752 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log e32ddcfd-e240-4a0d-ab7b-9beef1e63f55: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-05 20:48:10,756 INFO http_request_logger POST /api/v1/guardrails/ - 200 [7.40ms] +2026-09-05 20:48:11,171 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-05 20:48:14,385 INFO guardrails.execution request=56d1bdf0-e599-4ba9-a0dd-7f993cf6dbb2 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-05 20:48:16,772 INFO guardrails.execution request=56d1bdf0-e599-4ba9-a0dd-7f993cf6dbb2 guardrails execution finished (passed=True) output='She slowly undressed and they had explicit sex.' +2026-09-05 20:48:16,783 INFO guardrails.execution request=56d1bdf0-e599-4ba9-a0dd-7f993cf6dbb2 step=1/1 validator=NSFWText stage=input outcome=Outcome.PASS start=2026-09-05T20:48:14.388547 end=2026-09-05T20:48:16.771243 duration_ms=2382 input='She slowly undressed and they had explicit sex.' output='She slowly undressed and they had explicit sex.' +2026-09-05 20:48:16,945 INFO http_request_logger POST /api/v1/guardrails/ - 200 [6184.37ms] +2026-09-05 20:48:19,347 INFO guardrails.execution request=1d7ee0db-dcab-4b3a-9ed1-c9545c2e35d6 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-05 20:48:19,445 INFO guardrails.execution request=1d7ee0db-dcab-4b3a-9ed1-c9545c2e35d6 guardrails execution finished (passed=True) output='She slowly undressed and they had explicit sex.' +2026-09-05 20:48:19,449 INFO guardrails.execution request=1d7ee0db-dcab-4b3a-9ed1-c9545c2e35d6 step=1/1 validator=NSFWText stage=input outcome=Outcome.PASS start=2026-09-05T20:48:19.348515 end=2026-09-05T20:48:19.444517 duration_ms=96 input='She slowly undressed and they had explicit sex.' output='She slowly undressed and they had explicit sex.' +2026-09-05 20:48:19,621 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2631.54ms] +2026-09-05 20:48:22,535 INFO guardrails.execution request=6e8ddbbb-0268-4d5c-b7ce-ad51641eb5f6 starting guardrails execution (validators=['nsfw_text']) input='Explicit sexual content goes here.' +2026-09-05 20:48:22,839 INFO guardrails.execution request=6e8ddbbb-0268-4d5c-b7ce-ad51641eb5f6 guardrails execution finished (passed=True) output='Explicit sexual content goes here.' +2026-09-05 20:48:22,846 INFO guardrails.execution request=6e8ddbbb-0268-4d5c-b7ce-ad51641eb5f6 step=1/1 validator=NSFWText stage=input outcome=Outcome.PASS start=2026-09-05T20:48:22.537526 end=2026-09-05T20:48:22.838417 duration_ms=300 input='Explicit sexual content goes here.' output='Explicit sexual content goes here.' +2026-09-05 20:48:23,001 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3369.38ms] +2026-09-05 20:48:23,028 INFO guardrails.execution request=6c9d0449-0a75-4ea8-a27f-006406d05620 starting guardrails execution (validators=['profanity_free', 'uli_slur_match']) input='This fucking chakki should leave.' +2026-09-05 20:48:23,032 INFO guardrails.execution request=6c9d0449-0a75-4ea8-a27f-006406d05620 guardrails execution finished (passed=True) output='' +2026-09-05 20:48:23,035 INFO guardrails.execution request=6c9d0449-0a75-4ea8-a27f-006406d05620 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:23.029628 end=2026-09-05T20:48:23.031179 duration_ms=1 input='This fucking chakki should leave.' output='' +2026-09-05 20:48:23,038 INFO guardrails.execution request=6c9d0449-0a75-4ea8-a27f-006406d05620 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-05T20:48:23.031190 end=2026-09-05T20:48:23.031332 duration_ms=0 input='' output='' +2026-09-05 20:48:23,041 INFO http_request_logger POST /api/v1/guardrails/ - 200 [29.45ms] +2026-09-05 20:48:23,049 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 19845af0-29ff-420d-8ccc-2ff9b0fcb501: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-05 20:48:23,052 INFO http_request_logger POST /api/v1/guardrails/ - 200 [6.20ms] +2026-09-05 20:48:25,167 INFO guardrails.execution request=e940b36c-2705-41a5-ac66-44fb3c3bd60f starting guardrails execution (validators=['profanity_free', 'nsfw_text']) input='What the fuck, this is explicit adult sexual content.' +2026-09-05 20:48:25,170 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log e940b36c-2705-41a5-ac66-44fb3c3bd60f: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +2026-09-05 20:48:25,173 INFO guardrails.execution request=e940b36c-2705-41a5-ac66-44fb3c3bd60f step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:25.169191 end=2026-09-05T20:48:25.170454 duration_ms=1 input='What the fuck, this is explicit adult sexual content.' output=None +2026-09-05 20:48:25,176 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2119.18ms] +2026-09-05 20:48:27,557 INFO guardrails.execution request=a223b9e7-f062-402f-8546-eb5ced8614eb starting guardrails execution (validators=['uli_slur_match', 'nsfw_text']) input='This chakki has explicit sexual content.' +2026-09-05 20:48:27,558 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log a223b9e7-f062-402f-8546-eb5ced8614eb: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-05 20:48:27,563 INFO guardrails.execution request=a223b9e7-f062-402f-8546-eb5ced8614eb step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:27.558339 end=2026-09-05T20:48:27.558747 duration_ms=0 input='This chakki has explicit sexual content.' output=None +2026-09-05 20:48:27,566 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2386.61ms] +2026-09-05 20:48:27,582 INFO guardrails.execution request=df5a180a-2884-40c5-ae3c-db5d18427464 starting guardrails execution (validators=['profanity_free', 'ban_list']) input='Tell me about renewable energy sources.' +2026-09-05 20:48:27,584 INFO guardrails.execution request=df5a180a-2884-40c5-ae3c-db5d18427464 guardrails execution finished (passed=True) output='Tell me about renewable energy sources.' +2026-09-05 20:48:27,587 INFO guardrails.execution request=df5a180a-2884-40c5-ae3c-db5d18427464 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-05T20:48:27.582927 end=2026-09-05T20:48:27.583945 duration_ms=1 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-05 20:48:27,590 INFO guardrails.execution request=df5a180a-2884-40c5-ae3c-db5d18427464 step=2/2 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-05T20:48:27.583951 end=2026-09-05T20:48:27.584021 duration_ms=0 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-05 20:48:27,594 INFO http_request_logger POST /api/v1/guardrails/ - 200 [22.68ms] +2026-09-05 20:48:27,620 INFO guardrails.execution request=7bff6186-3957-4bf8-84af-6f15437f287d starting guardrails execution (validators=['uli_slur_match', 'profanity_free', 'ban_list']) input='What are some healthy breakfast options?' +2026-09-05 20:48:27,623 INFO guardrails.execution request=7bff6186-3957-4bf8-84af-6f15437f287d guardrails execution finished (passed=True) output='What are some healthy breakfast options?' +2026-09-05 20:48:27,628 INFO guardrails.execution request=7bff6186-3957-4bf8-84af-6f15437f287d step=1/3 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-05T20:48:27.620858 end=2026-09-05T20:48:27.621207 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-05 20:48:27,635 INFO guardrails.execution request=7bff6186-3957-4bf8-84af-6f15437f287d step=2/3 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-05T20:48:27.621212 end=2026-09-05T20:48:27.622745 duration_ms=1 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-05 20:48:27,639 INFO guardrails.execution request=7bff6186-3957-4bf8-84af-6f15437f287d step=3/3 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-05T20:48:27.622759 end=2026-09-05T20:48:27.622826 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-05 20:48:27,644 INFO http_request_logger POST /api/v1/guardrails/ - 200 [44.66ms] +2026-09-05 20:48:27,662 INFO guardrails.execution request=cb581020-8a5d-42fc-978c-9ae27e89d0f1 starting guardrails execution (validators=['ban_list', 'uli_slur_match']) input='this contains badword' +2026-09-05 20:48:27,664 INFO guardrails.execution request=cb581020-8a5d-42fc-978c-9ae27e89d0f1 guardrails execution finished (passed=True) output='this contains b' +2026-09-05 20:48:27,666 INFO guardrails.execution request=cb581020-8a5d-42fc-978c-9ae27e89d0f1 step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-05T20:48:27.663079 end=2026-09-05T20:48:27.663199 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-05 20:48:27,667 INFO guardrails.execution request=cb581020-8a5d-42fc-978c-9ae27e89d0f1 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-05T20:48:27.663206 end=2026-09-05T20:48:27.663457 duration_ms=0 input='this contains b' output='this contains b' +2026-09-05 20:48:27,671 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.91ms] +2026-09-05 20:48:27,680 ERROR app.api.routes.guardrails [run_guardrails] config resolution failed for request_log 8ffa6ad2-bb12-4993-84c8-d29e59eed53b: 404: Ban list not found +2026-09-05 20:48:27,682 INFO http_request_logger POST /api/v1/guardrails/ - 404 [5.48ms] +2026-09-05 20:48:27,690 INFO guardrails.execution request=40e5456e-ec69-4c6b-b012-ead06c20c0c0 starting guardrails execution (validators=['ban_list']) input='hello' +2026-09-05 20:48:27,690 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 40e5456e-ec69-4c6b-b012-ead06c20c0c0: boom +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +RuntimeError: boom +2026-09-05 20:48:27,692 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.04ms] +2026-09-05 20:48:27,699 WARNING app.api.routes.guardrails [run_guardrails] invalid request_id 'not-a-uuid' (org=1 project=1), no request log written +2026-09-05 20:48:27,699 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1.70ms] +2026-09-05 20:48:27,708 INFO app.crud.llm_prompt_config created llm prompt config id=b3f1b40a-e837-4d60-90b0-784409a85c24 org=1 project=1 +2026-09-05 20:48:27,708 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [6.15ms] +2026-09-05 20:48:27,715 INFO app.crud.llm_prompt_config created llm prompt config id=54209207-c433-44b9-bb1a-fd9db2e77896 org=1 project=1 +2026-09-05 20:48:27,716 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.29ms] +2026-09-05 20:48:27,722 INFO app.crud.llm_prompt_config created llm prompt config id=2d81d53a-010b-4da2-9b36-4e7c6ba8477a org=1 project=1 +2026-09-05 20:48:27,722 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.95ms] +2026-09-05 20:48:27,726 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.89ms] +2026-09-05 20:48:27,731 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.90ms] +2026-09-05 20:48:27,735 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.80ms] +2026-09-05 20:48:27,739 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.83ms] +2026-09-05 20:48:27,745 INFO app.crud.llm_prompt_config created llm prompt config id=451adba6-c9cc-4414-a302-e5ae070b93c1 org=1 project=1 +2026-09-05 20:48:27,746 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.36ms] +2026-09-05 20:48:27,750 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.87ms] +2026-09-05 20:48:27,754 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.87ms] +2026-09-05 20:48:27,759 INFO app.crud.llm_prompt_config created llm prompt config id=ef08a745-a680-4913-9c18-9222dc144fa9 org=1 project=1 +2026-09-05 20:48:27,760 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.27ms] +2026-09-05 20:48:27,762 INFO app.crud.llm_prompt_config created llm prompt config id=504ef49b-1fb6-417c-90d6-92e3c93ec73c org=1 project=1 +2026-09-05 20:48:27,763 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.42ms] +2026-09-05 20:48:27,765 INFO app.crud.llm_prompt_config created llm prompt config id=a1fb9c3c-9f23-421d-8c32-a4d29352b9b9 org=1 project=1 +2026-09-05 20:48:27,766 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.50ms] +2026-09-05 20:48:27,768 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.17ms] +2026-09-05 20:48:27,775 INFO app.crud.llm_prompt_config created llm prompt config id=a3c7947c-71b3-4978-97aa-9a8b54496e43 org=1 project=1 +2026-09-05 20:48:27,775 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.30ms] +2026-09-05 20:48:27,778 INFO app.crud.llm_prompt_config created llm prompt config id=9063793a-ce02-41a2-992a-3be15ffa97a5 org=1 project=1 +2026-09-05 20:48:27,779 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.92ms] +2026-09-05 20:48:27,781 INFO app.crud.llm_prompt_config created llm prompt config id=fbc580f7-b679-415c-8e69-f3bae2a839d6 org=1 project=1 +2026-09-05 20:48:27,782 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.77ms] +2026-09-05 20:48:27,785 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.36ms] +2026-09-05 20:48:27,790 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.82ms] +2026-09-05 20:48:27,796 INFO app.crud.llm_prompt_config created llm prompt config id=75e4593c-5699-40fe-8a09-434a64151f43 org=1 project=1 +2026-09-05 20:48:27,796 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.01ms] +2026-09-05 20:48:27,799 INFO app.crud.llm_prompt_config created llm prompt config id=926093d0-9f2a-417e-bba3-fe4851478c2e org=1 project=1 +2026-09-05 20:48:27,799 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.61ms] +2026-09-05 20:48:27,802 INFO app.crud.llm_prompt_config created llm prompt config id=509ce70a-2a20-46ce-81e6-72df17db0cfb org=1 project=1 +2026-09-05 20:48:27,802 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.67ms] +2026-09-05 20:48:27,805 INFO app.crud.llm_prompt_config created llm prompt config id=f38c8b54-b861-4ca0-ad69-c475e349c1de org=1 project=1 +2026-09-05 20:48:27,806 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.76ms] +2026-09-05 20:48:27,808 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.02ms] +2026-09-05 20:48:27,814 INFO app.crud.llm_prompt_config created llm prompt config id=54325139-1342-4054-8d87-e331b443201e org=1 project=1 +2026-09-05 20:48:27,815 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.08ms] +2026-09-05 20:48:27,817 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.81ms] +2026-09-05 20:48:27,823 INFO app.crud.llm_prompt_config created llm prompt config id=0c4bdf68-9c2a-493d-b913-accc25f908e5 org=1 project=1 +2026-09-05 20:48:27,824 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.12ms] +2026-09-05 20:48:27,826 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/0c4bdf68-9c2a-493d-b913-accc25f908e5 - 200 [1.70ms] +2026-09-05 20:48:27,831 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/72c4df9c-db22-4b95-b8f3-94fefa3a155f - 404 [1.71ms] +2026-09-05 20:48:27,837 INFO app.crud.llm_prompt_config created llm prompt config id=e0d9b4ab-eaa7-4138-b805-baa6e80f0ac3 org=1 project=1 +2026-09-05 20:48:27,837 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.92ms] +2026-09-05 20:48:27,839 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/e0d9b4ab-eaa7-4138-b805-baa6e80f0ac3 - 404 [1.53ms] +2026-09-05 20:48:27,845 INFO app.crud.llm_prompt_config created llm prompt config id=f80700a6-c406-42ee-916c-a616066ca93a org=1 project=1 +2026-09-05 20:48:27,846 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.19ms] +2026-09-05 20:48:27,850 INFO app.crud.llm_prompt_config updated llm prompt config id=f80700a6-c406-42ee-916c-a616066ca93a +2026-09-05 20:48:27,850 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/f80700a6-c406-42ee-916c-a616066ca93a - 200 [3.64ms] +2026-09-05 20:48:27,856 INFO app.crud.llm_prompt_config created llm prompt config id=239f425c-9b93-4d23-8428-fdb7b49523ef org=1 project=1 +2026-09-05 20:48:27,857 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.01ms] +2026-09-05 20:48:27,860 INFO app.crud.llm_prompt_config updated llm prompt config id=239f425c-9b93-4d23-8428-fdb7b49523ef +2026-09-05 20:48:27,860 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/239f425c-9b93-4d23-8428-fdb7b49523ef - 200 [3.18ms] +2026-09-05 20:48:27,866 INFO app.crud.llm_prompt_config created llm prompt config id=03e4f461-fe3c-4dd0-b0a2-2fe7117d4795 org=1 project=1 +2026-09-05 20:48:27,867 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.83ms] +2026-09-05 20:48:27,869 INFO app.crud.llm_prompt_config updated llm prompt config id=03e4f461-fe3c-4dd0-b0a2-2fe7117d4795 +2026-09-05 20:48:27,870 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/03e4f461-fe3c-4dd0-b0a2-2fe7117d4795 - 200 [2.90ms] +2026-09-05 20:48:27,872 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/03e4f461-fe3c-4dd0-b0a2-2fe7117d4795 - 200 [1.51ms] +2026-09-05 20:48:27,878 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/9936a273-4463-4a31-92e8-ed52cd275c6e - 404 [2.56ms] +2026-09-05 20:48:27,884 INFO app.crud.llm_prompt_config created llm prompt config id=033e4895-ce20-470b-a9a5-c44f21a69eea org=1 project=1 +2026-09-05 20:48:27,885 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.44ms] +2026-09-05 20:48:27,887 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/033e4895-ce20-470b-a9a5-c44f21a69eea - 404 [1.58ms] +2026-09-05 20:48:27,893 INFO app.crud.llm_prompt_config created llm prompt config id=5879ccdd-7c7d-4a78-881b-220e7cf39b88 org=1 project=1 +2026-09-05 20:48:27,894 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.11ms] +2026-09-05 20:48:27,896 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/5879ccdd-7c7d-4a78-881b-220e7cf39b88 - 422 [1.68ms] +2026-09-05 20:48:27,902 INFO app.crud.llm_prompt_config created llm prompt config id=1902f815-aa4f-412c-9d79-37667c69788a org=1 project=1 +2026-09-05 20:48:27,903 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.31ms] +2026-09-05 20:48:27,905 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/1902f815-aa4f-412c-9d79-37667c69788a - 422 [1.71ms] +2026-09-05 20:48:27,911 INFO app.crud.llm_prompt_config created llm prompt config id=5a528461-af3a-47f6-bbf7-ec70f9cd5413 org=1 project=1 +2026-09-05 20:48:27,912 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.04ms] +2026-09-05 20:48:27,915 INFO app.crud.llm_prompt_config updated llm prompt config id=5a528461-af3a-47f6-bbf7-ec70f9cd5413 +2026-09-05 20:48:27,915 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/5a528461-af3a-47f6-bbf7-ec70f9cd5413 - 200 [3.10ms] +2026-09-05 20:48:27,921 INFO app.crud.llm_prompt_config created llm prompt config id=dd87df49-c4eb-4459-b34b-94c3aab6cd1d org=1 project=1 +2026-09-05 20:48:27,922 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.20ms] +2026-09-05 20:48:27,925 INFO app.crud.llm_prompt_config updated llm prompt config id=dd87df49-c4eb-4459-b34b-94c3aab6cd1d +2026-09-05 20:48:27,926 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/dd87df49-c4eb-4459-b34b-94c3aab6cd1d - 200 [3.12ms] +2026-09-05 20:48:27,932 INFO app.crud.llm_prompt_config created llm prompt config id=866412b8-754f-41d1-9d85-0a3f062f803f org=1 project=1 +2026-09-05 20:48:27,932 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.94ms] +2026-09-05 20:48:27,935 INFO app.crud.llm_prompt_config deleted llm prompt config id=866412b8-754f-41d1-9d85-0a3f062f803f +2026-09-05 20:48:27,935 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/866412b8-754f-41d1-9d85-0a3f062f803f - 200 [2.42ms] +2026-09-05 20:48:27,941 INFO app.crud.llm_prompt_config created llm prompt config id=990f3675-062d-438d-b910-21ed7c015140 org=1 project=1 +2026-09-05 20:48:27,942 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.90ms] +2026-09-05 20:48:27,944 INFO app.crud.llm_prompt_config deleted llm prompt config id=990f3675-062d-438d-b910-21ed7c015140 +2026-09-05 20:48:27,944 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/990f3675-062d-438d-b910-21ed7c015140 - 200 [2.12ms] +2026-09-05 20:48:27,946 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.53ms] +2026-09-05 20:48:27,951 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/395bdd1e-d9e6-413a-8134-6428be9cd088 - 404 [1.91ms] +2026-09-05 20:48:27,958 INFO app.crud.llm_prompt_config created llm prompt config id=6af7afa5-614e-412d-983f-5034d7191d47 org=1 project=1 +2026-09-05 20:48:27,958 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.27ms] +2026-09-05 20:48:27,960 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/6af7afa5-614e-412d-983f-5034d7191d47 - 404 [1.46ms] +2026-09-05 20:48:28,049 INFO guardrails.execution request=8136c0b8-7c11-40d1-84e5-7fe1c04c538c starting guardrails execution (validators=[]) input='hello' +2026-09-05 20:48:28,049 INFO guardrails.execution request=8136c0b8-7c11-40d1-84e5-7fe1c04c538c guardrails execution finished (passed=True) output='clean text' +2026-09-05 20:48:28,052 INFO guardrails.execution request=8136c0b8-7c11-40d1-84e5-7fe1c04c538c starting guardrails execution (validators=[]) input='bad text' +2026-09-05 20:48:28,052 INFO guardrails.execution request=8136c0b8-7c11-40d1-84e5-7fe1c04c538c guardrails execution finished (passed=False) output=None +2026-09-05 20:48:28,055 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 8136c0b8-7c11-40d1-84e5-7fe1c04c538c: Invalid config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid config +2026-09-05 20:48:28,058 INFO guardrails.execution request=8136c0b8-7c11-40d1-84e5-7fe1c04c538c starting guardrails execution (validators=[]) input='bad text' +2026-09-05 20:48:28,058 INFO guardrails.execution request=8136c0b8-7c11-40d1-84e5-7fe1c04c538c guardrails execution finished (passed=False) output=None +2026-09-05 20:48:28,061 INFO guardrails.execution request=8136c0b8-7c11-40d1-84e5-7fe1c04c538c starting guardrails execution (validators=[]) input='bad text' +2026-09-05 20:48:28,061 INFO guardrails.execution request=8136c0b8-7c11-40d1-84e5-7fe1c04c538c guardrails execution finished (passed=False) output=None +2026-09-05 20:48:28,089 INFO guardrails.execution request=8136c0b8-7c11-40d1-84e5-7fe1c04c538c starting guardrails execution (validators=[]) input='this is some unsafe content' +2026-09-05 20:48:28,089 INFO guardrails.execution request=8136c0b8-7c11-40d1-84e5-7fe1c04c538c guardrails execution finished (passed=False) output=None +2026-09-05 20:48:28,092 INFO guardrails.execution request=8136c0b8-7c11-40d1-84e5-7fe1c04c538c starting guardrails execution (validators=[]) input='some input text' +2026-09-05 20:48:28,092 INFO guardrails.execution request=8136c0b8-7c11-40d1-84e5-7fe1c04c538c guardrails execution finished (passed=False) output=None +2026-09-05 20:48:28,095 INFO guardrails.execution request=8136c0b8-7c11-40d1-84e5-7fe1c04c538c starting guardrails execution (validators=[]) input='this contains profane words' +2026-09-05 20:48:28,095 INFO guardrails.execution request=8136c0b8-7c11-40d1-84e5-7fe1c04c538c guardrails execution finished (passed=False) output=None +2026-09-05 20:48:28,097 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 8136c0b8-7c11-40d1-84e5-7fe1c04c538c: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +2026-09-05 20:48:28,100 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 8136c0b8-7c11-40d1-84e5-7fe1c04c538c: Validation failed for field with errors: Profanity detected in: this contains profane words +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: Profanity detected in: this contains profane words +2026-09-05 20:48:28,117 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-05 20:48:28,121 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-05 20:48:28,123 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-05 20:48:28,137 INFO app.crud.validator_config created validator config id=003e59e2-af92-436a-a0d3-9caa71ea271a org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-05 20:48:28,137 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [6.73ms] +2026-09-05 20:48:28,143 INFO app.crud.validator_config created validator config id=a63f9297-aeff-4cd7-b077-4ff77a7547fc org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-05 20:48:28,144 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.95ms] +2026-09-05 20:48:28,146 WARNING app.crud.validator_config create validator config failed: duplicate name (org=1 project=1) +2026-09-05 20:48:28,146 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 400 [1.95ms] +2026-09-05 20:48:28,150 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 422 [0.91ms] +2026-09-05 20:48:28,156 INFO app.crud.validator_config created validator config id=755646dd-69d3-4c42-845e-99e173278910 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-05 20:48:28,157 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.45ms] +2026-09-05 20:48:28,160 INFO app.crud.validator_config created validator config id=d3cb4385-e3a7-4dfd-9363-e1ab5eb09cb8 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-05 20:48:28,160 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.02ms] +2026-09-05 20:48:28,163 INFO app.crud.validator_config created validator config id=4debfd6b-e6b1-43db-8b52-b0254f02b071 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-05 20:48:28,164 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.23ms] +2026-09-05 20:48:28,167 INFO app.crud.validator_config created validator config id=867b4f94-dea4-4bb6-b6b9-0efca520fb21 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-05 20:48:28,167 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.06ms] +2026-09-05 20:48:28,170 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.27ms] +2026-09-05 20:48:28,170 INFO http_request_logger GET /api/v1/guardrails/validators/configs/755646dd-69d3-4c42-845e-99e173278910/ - 307 [0.09ms] +2026-09-05 20:48:28,173 INFO http_request_logger GET /api/v1/guardrails/validators/configs/755646dd-69d3-4c42-845e-99e173278910 - 200 [1.98ms] +2026-09-05 20:48:28,173 INFO http_request_logger GET /api/v1/guardrails/validators/configs/d3cb4385-e3a7-4dfd-9363-e1ab5eb09cb8/ - 307 [0.08ms] +2026-09-05 20:48:28,175 INFO http_request_logger GET /api/v1/guardrails/validators/configs/d3cb4385-e3a7-4dfd-9363-e1ab5eb09cb8 - 200 [1.75ms] +2026-09-05 20:48:28,175 INFO http_request_logger GET /api/v1/guardrails/validators/configs/4debfd6b-e6b1-43db-8b52-b0254f02b071/ - 307 [0.08ms] +2026-09-05 20:48:28,178 INFO http_request_logger GET /api/v1/guardrails/validators/configs/4debfd6b-e6b1-43db-8b52-b0254f02b071 - 200 [2.03ms] +2026-09-05 20:48:28,178 INFO http_request_logger GET /api/v1/guardrails/validators/configs/867b4f94-dea4-4bb6-b6b9-0efca520fb21/ - 307 [0.08ms] +2026-09-05 20:48:28,180 INFO http_request_logger GET /api/v1/guardrails/validators/configs/867b4f94-dea4-4bb6-b6b9-0efca520fb21 - 200 [1.86ms] +2026-09-05 20:48:28,188 INFO app.crud.validator_config created validator config id=c04a494b-ef32-4e2f-8645-9cf7b3748b97 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-05 20:48:28,188 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.39ms] +2026-09-05 20:48:28,191 INFO app.crud.validator_config created validator config id=83bd2765-d72e-4615-bdc7-e7505a593fa2 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-05 20:48:28,191 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.60ms] +2026-09-05 20:48:28,193 INFO app.crud.validator_config created validator config id=bc650bd1-a33b-40d4-bea0-2da0b6af1168 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-05 20:48:28,194 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.43ms] +2026-09-05 20:48:28,194 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/c04a494b-ef32-4e2f-8645-9cf7b3748b97/ - 307 [0.08ms] +2026-09-05 20:48:28,198 INFO app.crud.validator_config updated validator config id=c04a494b-ef32-4e2f-8645-9cf7b3748b97 +2026-09-05 20:48:28,199 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/c04a494b-ef32-4e2f-8645-9cf7b3748b97 - 200 [4.04ms] +2026-09-05 20:48:28,199 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/83bd2765-d72e-4615-bdc7-e7505a593fa2/ - 307 [0.10ms] +2026-09-05 20:48:28,203 INFO app.crud.validator_config updated validator config id=83bd2765-d72e-4615-bdc7-e7505a593fa2 +2026-09-05 20:48:28,203 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/83bd2765-d72e-4615-bdc7-e7505a593fa2 - 200 [3.68ms] +2026-09-05 20:48:28,204 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/bc650bd1-a33b-40d4-bea0-2da0b6af1168/ - 307 [0.10ms] +2026-09-05 20:48:28,209 INFO app.crud.validator_config updated validator config id=bc650bd1-a33b-40d4-bea0-2da0b6af1168 +2026-09-05 20:48:28,209 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/bc650bd1-a33b-40d4-bea0-2da0b6af1168 - 200 [4.94ms] +2026-09-05 20:48:28,212 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.23ms] +2026-09-05 20:48:28,222 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.26ms] +2026-09-05 20:48:28,232 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [3.03ms] +2026-09-05 20:48:28,240 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.25ms] +2026-09-05 20:48:28,248 INFO app.crud.validator_config created validator config id=84fe4be6-3ec7-46bf-ada4-bb7eb594626b org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-05 20:48:28,248 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [4.44ms] +2026-09-05 20:48:28,252 INFO app.crud.validator_config created validator config id=aeb59d22-9e75-4c31-b5cb-1a795f80497d org=1 project=1 type=ValidatorType.PIIRemover +2026-09-05 20:48:28,252 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.18ms] +2026-09-05 20:48:28,255 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.17ms] +2026-09-05 20:48:28,262 INFO app.crud.validator_config created validator config id=6e41d9f4-d774-499b-aabe-d8a1c2d45fb1 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-05 20:48:28,262 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.59ms] +2026-09-05 20:48:28,265 INFO app.crud.validator_config created validator config id=23d3d425-496b-44cc-85ef-5d90ca501fac org=1 project=1 type=ValidatorType.PIIRemover +2026-09-05 20:48:28,266 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.61ms] +2026-09-05 20:48:28,269 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.43ms] +2026-09-05 20:48:28,276 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 422 [1.21ms] +2026-09-05 20:48:28,286 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [3.15ms] +2026-09-05 20:48:28,295 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.64ms] +2026-09-05 20:48:28,296 INFO http_request_logger GET /api/v1/guardrails/validators/configs/214da969-e6af-4959-a582-6385e8427004/ - 307 [0.11ms] +2026-09-05 20:48:28,298 INFO http_request_logger GET /api/v1/guardrails/validators/configs/214da969-e6af-4959-a582-6385e8427004 - 200 [1.90ms] +2026-09-05 20:48:28,313 INFO http_request_logger GET /api/v1/guardrails/validators/configs/2217617e-29d0-428a-9560-c75bc8aba38c/ - 307 [0.26ms] +2026-09-05 20:48:28,322 INFO http_request_logger GET /api/v1/guardrails/validators/configs/2217617e-29d0-428a-9560-c75bc8aba38c - 404 [7.11ms] +2026-09-05 20:48:28,328 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid/ - 307 [0.11ms] +2026-09-05 20:48:28,332 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid - 422 [2.81ms] +2026-09-05 20:48:28,343 INFO app.crud.validator_config created validator config id=67965166-a771-46d6-b0a6-46c5e7d5b19f org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-05 20:48:28,344 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [5.22ms] +2026-09-05 20:48:28,344 INFO http_request_logger GET /api/v1/guardrails/validators/configs/67965166-a771-46d6-b0a6-46c5e7d5b19f/ - 307 [0.09ms] +2026-09-05 20:48:28,347 INFO http_request_logger GET /api/v1/guardrails/validators/configs/67965166-a771-46d6-b0a6-46c5e7d5b19f - 404 [1.90ms] +2026-09-05 20:48:28,357 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.71ms] +2026-09-05 20:48:28,358 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/9e0aed26-5356-4993-b1a9-e931d4d98a00/ - 307 [0.16ms] +2026-09-05 20:48:28,363 INFO app.crud.validator_config updated validator config id=9e0aed26-5356-4993-b1a9-e931d4d98a00 +2026-09-05 20:48:28,363 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/9e0aed26-5356-4993-b1a9-e931d4d98a00 - 200 [5.04ms] +2026-09-05 20:48:28,375 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [3.11ms] +2026-09-05 20:48:28,375 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/18b46747-d827-496a-aa2d-3d0e156cff9f/ - 307 [0.11ms] +2026-09-05 20:48:28,381 INFO app.crud.validator_config updated validator config id=18b46747-d827-496a-aa2d-3d0e156cff9f +2026-09-05 20:48:28,382 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/18b46747-d827-496a-aa2d-3d0e156cff9f - 200 [6.42ms] +2026-09-05 20:48:28,389 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/c943f3b6-ef50-4ea1-b776-b7324484b8cc/ - 307 [0.12ms] +2026-09-05 20:48:28,393 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/c943f3b6-ef50-4ea1-b776-b7324484b8cc - 404 [2.99ms] +2026-09-05 20:48:28,402 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.25ms] +2026-09-05 20:48:28,403 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/9435f3ee-a765-4165-813f-878d14aceeb0/ - 307 [0.10ms] +2026-09-05 20:48:28,405 INFO app.crud.validator_config deleted validator config id=9435f3ee-a765-4165-813f-878d14aceeb0 +2026-09-05 20:48:28,405 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/9435f3ee-a765-4165-813f-878d14aceeb0 - 200 [2.42ms] +2026-09-05 20:48:28,406 INFO http_request_logger GET /api/v1/guardrails/validators/configs/9435f3ee-a765-4165-813f-878d14aceeb0/ - 307 [0.09ms] +2026-09-05 20:48:28,408 INFO http_request_logger GET /api/v1/guardrails/validators/configs/9435f3ee-a765-4165-813f-878d14aceeb0 - 404 [1.50ms] +2026-09-05 20:48:28,412 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/1731cce0-c18a-4055-8432-9bb1d47d2756/ - 307 [0.10ms] +2026-09-05 20:48:28,415 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/1731cce0-c18a-4055-8432-9bb1d47d2756 - 404 [2.00ms] +2026-09-05 20:48:28,423 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.30ms] +2026-09-05 20:48:28,424 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/138fbe4a-6f3f-4fc3-9fa7-30e9b9535509/ - 307 [0.10ms] +2026-09-05 20:48:28,426 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/138fbe4a-6f3f-4fc3-9fa7-30e9b9535509 - 404 [1.64ms] +2026-09-05 20:48:28,426 INFO http_request_logger GET /api/v1/guardrails/validators/configs/138fbe4a-6f3f-4fc3-9fa7-30e9b9535509/ - 307 [0.09ms] +2026-09-05 20:48:28,428 INFO http_request_logger GET /api/v1/guardrails/validators/configs/138fbe4a-6f3f-4fc3-9fa7-30e9b9535509 - 200 [1.69ms] +2026-09-05 20:48:28,557 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-05 20:48:28,557 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-05 20:48:28,633 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:48:31,416 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:48:31,426 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:48:32,872 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:48:32,876 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:48:34,348 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:48:34,351 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:48:35,773 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:48:35,779 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:48:37,068 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:48:37,078 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:48:38,193 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:48:38,194 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:48:39,381 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:48:39,506 INFO watchfiles.main 3 changes detected +2026-09-05 20:49:32,618 INFO presidio-analyzer Using device of type: cpu +2026-09-05 20:49:36,800 INFO guardrails.execution request=9b6fb982-7a33-431d-ba61-f238c5f10deb starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-05 20:49:36,932 INFO guardrails.execution request=9b6fb982-7a33-431d-ba61-f238c5f10deb guardrails execution finished (passed=True) output='She slowly undressed and they had explicit sex.' +2026-09-05 20:49:36,937 INFO guardrails.execution request=9b6fb982-7a33-431d-ba61-f238c5f10deb step=1/1 validator=NSFWText stage=input outcome=Outcome.PASS start=2026-09-05T20:49:36.801965 end=2026-09-05T20:49:36.931714 duration_ms=129 input='She slowly undressed and they had explicit sex.' output='She slowly undressed and they had explicit sex.' +2026-09-05 20:49:37,118 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3756.80ms] +2026-09-05 20:49:37,431 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-05 20:49:39,470 INFO guardrails.execution request=bec8f1e2-1352-4e6b-bb13-a05f2e20be70 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-05 20:49:39,504 INFO guardrails.execution request=bec8f1e2-1352-4e6b-bb13-a05f2e20be70 guardrails execution finished (passed=True) output='She slowly undressed and they had explicit sex.' +2026-09-05 20:49:39,517 INFO guardrails.execution request=bec8f1e2-1352-4e6b-bb13-a05f2e20be70 step=1/1 validator=NSFWText stage=input outcome=Outcome.PASS start=2026-09-05T20:49:39.472452 end=2026-09-05T20:49:39.500837 duration_ms=28 input='She slowly undressed and they had explicit sex.' output='She slowly undressed and they had explicit sex.' +2026-09-05 20:49:39,659 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2502.36ms] +2026-09-05 20:49:41,964 INFO guardrails.execution request=8a8fb1fc-62b5-405d-b71d-23b00ce3861a starting guardrails execution (validators=['nsfw_text']) input='Explicit sexual content goes here.' +2026-09-05 20:49:42,022 INFO guardrails.execution request=8a8fb1fc-62b5-405d-b71d-23b00ce3861a guardrails execution finished (passed=True) output='Explicit sexual content goes here.' +2026-09-05 20:49:42,028 INFO guardrails.execution request=8a8fb1fc-62b5-405d-b71d-23b00ce3861a step=1/1 validator=NSFWText stage=input outcome=Outcome.PASS start=2026-09-05T20:49:41.965356 end=2026-09-05T20:49:42.021842 duration_ms=56 input='Explicit sexual content goes here.' output='Explicit sexual content goes here.' +2026-09-05 20:49:42,199 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2530.73ms] +2026-09-05 20:49:44,832 INFO guardrails.execution request=03afb971-a482-4e27-8cae-1d8caa87b5b2 starting guardrails execution (validators=['profanity_free', 'nsfw_text']) input='What the fuck, this is explicit adult sexual content.' +2026-09-05 20:49:44,835 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 03afb971-a482-4e27-8cae-1d8caa87b5b2: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +2026-09-05 20:49:44,848 INFO guardrails.execution request=03afb971-a482-4e27-8cae-1d8caa87b5b2 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:49:44.833151 end=2026-09-05T20:49:44.835459 duration_ms=2 input='What the fuck, this is explicit adult sexual content.' output=None +2026-09-05 20:49:44,852 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2645.01ms] +2026-09-05 20:49:47,986 INFO guardrails.execution request=9ab36df9-f594-4ab8-a61b-279eb8f4361b starting guardrails execution (validators=['uli_slur_match', 'nsfw_text']) input='This chakki has explicit sexual content.' +2026-09-05 20:49:47,991 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 9ab36df9-f594-4ab8-a61b-279eb8f4361b: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-05 20:49:47,996 INFO guardrails.execution request=9ab36df9-f594-4ab8-a61b-279eb8f4361b step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:49:47.988762 end=2026-09-05T20:49:47.991792 duration_ms=3 input='This chakki has explicit sexual content.' output=None +2026-09-05 20:49:47,999 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3138.62ms] +2026-09-05 20:49:48,130 INFO watchfiles.main 3 changes detected +2026-09-05 20:52:07,653 INFO watchfiles.main 3 changes detected +2026-09-05 20:52:07,668 WARNING uvicorn.error WatchFiles detected changes in 'app/core/validators/config/nsfw_text_safety_validator_config.py'. Reloading... +2026-09-05 20:52:07,767 INFO uvicorn.error Shutting down +2026-09-05 20:52:07,874 INFO uvicorn.error Waiting for application shutdown. +2026-09-05 20:52:07,877 INFO uvicorn.error Application shutdown complete. +2026-09-05 20:52:07,879 INFO uvicorn.error Finished server process [24618] +2026-09-05 20:52:08,286 INFO watchfiles.main 1 change detected +2026-09-05 20:52:11,430 INFO watchfiles.main 3 changes detected +2026-09-05 20:52:13,390 INFO presidio-analyzer Using device of type: cpu +2026-09-05 20:52:14,291 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-05 20:52:14,291 INFO uvicorn.error Started server process [60805] +2026-09-05 20:52:14,292 INFO uvicorn.error Waiting for application startup. +2026-09-05 20:52:14,293 INFO uvicorn.error Application startup complete. +2026-09-05 20:52:14,563 INFO presidio-analyzer Using device of type: cpu +2026-09-05 20:52:15,959 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-05 20:52:18,338 INFO guardrails.execution request=04437402-b4c7-4de5-aeb5-1414b9724787 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-05 20:52:18,711 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 04437402-b4c7-4de5-aeb5-1414b9724787: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-05 20:52:18,722 INFO guardrails.execution request=04437402-b4c7-4de5-aeb5-1414b9724787 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:18.340015 end=2026-09-05T20:52:18.711064 duration_ms=371 input='She slowly undressed and they had explicit sex.' output=None +2026-09-05 20:52:18,728 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3509.76ms] +2026-09-05 20:52:21,006 INFO guardrails.execution request=bd594a91-5d28-43e7-a074-c403c6c868ac starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-05 20:52:21,020 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log bd594a91-5d28-43e7-a074-c403c6c868ac: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-05 20:52:21,027 INFO guardrails.execution request=bd594a91-5d28-43e7-a074-c403c6c868ac step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:21.006706 end=2026-09-05T20:52:21.020609 duration_ms=13 input='She slowly undressed and they had explicit sex.' output=None +2026-09-05 20:52:21,031 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2295.80ms] +2026-09-05 20:52:23,308 INFO guardrails.execution request=417fe2c9-9b30-4114-83dc-6b4e240af2c0 starting guardrails execution (validators=['nsfw_text']) input='Explicit sexual content goes here.' +2026-09-05 20:52:23,486 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 417fe2c9-9b30-4114-83dc-6b4e240af2c0: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +2026-09-05 20:52:23,493 INFO guardrails.execution request=417fe2c9-9b30-4114-83dc-6b4e240af2c0 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:23.309023 end=2026-09-05T20:52:23.486592 duration_ms=177 input='Explicit sexual content goes here.' output=None +2026-09-05 20:52:23,495 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2458.02ms] +2026-09-05 20:52:26,096 INFO guardrails.execution request=2229f33e-ee2a-424d-90e4-245c1258918a starting guardrails execution (validators=['profanity_free', 'nsfw_text']) input='What the fuck, this is explicit adult sexual content.' +2026-09-05 20:52:26,099 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 2229f33e-ee2a-424d-90e4-245c1258918a: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +2026-09-05 20:52:26,104 INFO guardrails.execution request=2229f33e-ee2a-424d-90e4-245c1258918a step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:26.097126 end=2026-09-05T20:52:26.099031 duration_ms=1 input='What the fuck, this is explicit adult sexual content.' output=None +2026-09-05 20:52:26,108 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2606.98ms] +2026-09-05 20:52:34,115 INFO guardrails.execution request=fc31805b-a58c-48ff-b039-4bce6d50884e starting guardrails execution (validators=['uli_slur_match', 'nsfw_text']) input='This chakki has explicit sexual content.' +2026-09-05 20:52:34,123 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log fc31805b-a58c-48ff-b039-4bce6d50884e: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-05 20:52:34,134 INFO guardrails.execution request=fc31805b-a58c-48ff-b039-4bce6d50884e step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:34.118327 end=2026-09-05T20:52:34.122801 duration_ms=4 input='This chakki has explicit sexual content.' output=None +2026-09-05 20:52:34,138 INFO http_request_logger POST /api/v1/guardrails/ - 200 [8024.46ms] +2026-09-05 20:52:34,261 INFO watchfiles.main 4 changes detected +2026-09-05 20:52:41,859 INFO presidio-analyzer Using device of type: cpu +2026-09-05 20:52:42,587 INFO guardrails.execution request=e90427bc-ff3d-4d8f-9681-ce1524a08d32 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:52:42,589 INFO guardrails.execution request=e90427bc-ff3d-4d8f-9681-ce1524a08d32 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:52:42,591 INFO guardrails.execution request=e90427bc-ff3d-4d8f-9681-ce1524a08d32 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:52:42.588303 end=2026-09-05T20:52:42.588405 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:52:42,595 INFO http_request_logger POST /api/v1/guardrails/ - 200 [34.11ms] +2026-09-05 20:52:42,611 INFO guardrails.execution request=44daaa06-c118-452b-acaf-66853d672dc9 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-05 20:52:42,612 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 44daaa06-c118-452b-acaf-66853d672dc9: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-05 20:52:42,616 INFO guardrails.execution request=44daaa06-c118-452b-acaf-66853d672dc9 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-05T20:52:42.612161 end=2026-09-05T20:52:42.612243 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-05 20:52:42,618 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.77ms] +2026-09-05 20:52:42,634 INFO guardrails.execution request=e123d259-331a-4fc4-a05f-f842daf84e46 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='' +2026-09-05 20:52:42,635 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log e123d259-331a-4fc4-a05f-f842daf84e46: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +2026-09-05 20:52:42,637 INFO guardrails.execution request=e123d259-331a-4fc4-a05f-f842daf84e46 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-05T20:52:42.635209 end=2026-09-05T20:52:42.635261 duration_ms=0 input='' output=None +2026-09-05 20:52:42,639 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.49ms] +2026-09-05 20:52:42,656 INFO guardrails.execution request=5988e9d7-59d7-4270-b6fe-3338ab8694da starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:52:42,657 INFO guardrails.execution request=5988e9d7-59d7-4270-b6fe-3338ab8694da guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:52:42,659 INFO guardrails.execution request=5988e9d7-59d7-4270-b6fe-3338ab8694da step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:52:42.656863 end=2026-09-05T20:52:42.656943 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:52:42,662 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.23ms] +2026-09-05 20:52:42,676 INFO guardrails.execution request=05239b32-55a1-4b6a-9f11-d928767327e5 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-05 20:52:42,677 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 05239b32-55a1-4b6a-9f11-d928767327e5: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-05 20:52:42,679 INFO guardrails.execution request=05239b32-55a1-4b6a-9f11-d928767327e5 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-05T20:52:42.677309 end=2026-09-05T20:52:42.677380 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-05 20:52:42,681 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.89ms] +2026-09-05 20:52:42,698 INFO guardrails.execution request=45d4adf6-5d82-4b77-b05d-0e05bb6dee66 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-05 20:52:42,700 INFO guardrails.execution request=45d4adf6-5d82-4b77-b05d-0e05bb6dee66 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-05 20:52:42,702 INFO guardrails.execution request=45d4adf6-5d82-4b77-b05d-0e05bb6dee66 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:52:42.699378 end=2026-09-05T20:52:42.699457 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-05 20:52:42,704 INFO guardrails.execution request=45d4adf6-5d82-4b77-b05d-0e05bb6dee66 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:42.699462 end=2026-09-05T20:52:42.699571 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-05 20:52:42,707 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.55ms] +2026-09-05 20:52:42,720 INFO guardrails.execution request=943b166a-3a0d-4884-bc52-5033b576b8a4 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Diabetes symptoms include fuck fatigue.' +2026-09-05 20:52:42,723 INFO guardrails.execution request=943b166a-3a0d-4884-bc52-5033b576b8a4 guardrails execution finished (passed=True) output='' +2026-09-05 20:52:42,724 INFO guardrails.execution request=943b166a-3a0d-4884-bc52-5033b576b8a4 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:52:42.721151 end=2026-09-05T20:52:42.721213 duration_ms=0 input='Diabetes symptoms include fuck fatigue.' output='Diabetes symptoms include fuck fatigue.' +2026-09-05 20:52:42,726 INFO guardrails.execution request=943b166a-3a0d-4884-bc52-5033b576b8a4 step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:42.721218 end=2026-09-05T20:52:42.722599 duration_ms=1 input='Diabetes symptoms include fuck fatigue.' output='' +2026-09-05 20:52:42,728 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.44ms] +2026-09-05 20:52:42,748 INFO guardrails.execution request=f4316e70-7b77-49d4-a912-61af5f23b448 starting guardrails execution (validators=['answer_relevance_custom_llm', 'uli_slur_match']) input='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-05 20:52:42,752 INFO guardrails.execution request=f4316e70-7b77-49d4-a912-61af5f23b448 guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-05 20:52:42,753 INFO guardrails.execution request=f4316e70-7b77-49d4-a912-61af5f23b448 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:52:42.748891 end=2026-09-05T20:52:42.748952 duration_ms=0 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-05 20:52:42,755 INFO guardrails.execution request=f4316e70-7b77-49d4-a912-61af5f23b448 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:42.748956 end=2026-09-05T20:52:42.751283 duration_ms=2 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-05 20:52:42,758 INFO http_request_logger POST /api/v1/guardrails/ - 200 [25.62ms] +2026-09-05 20:52:42,771 INFO guardrails.execution request=7ed2b5a0-3ee6-4c86-b7ab-084ce8de98ff starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-05 20:52:42,772 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 7ed2b5a0-3ee6-4c86-b7ab-084ce8de98ff: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +2026-09-05 20:52:42,774 INFO guardrails.execution request=7ed2b5a0-3ee6-4c86-b7ab-084ce8de98ff step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:52:42.771423 end=2026-09-05T20:52:42.771486 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-05 20:52:42,776 INFO guardrails.execution request=7ed2b5a0-3ee6-4c86-b7ab-084ce8de98ff step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:42.771491 end=2026-09-05T20:52:42.772389 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output=None +2026-09-05 20:52:42,777 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.86ms] +2026-09-05 20:52:42,793 INFO guardrails.execution request=ab80d52a-21d2-4ec9-8c3d-ba436adbed46 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list', 'profanity_free', 'uli_slur_match', 'gender_assumption_bias']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:52:42,796 INFO guardrails.execution request=ab80d52a-21d2-4ec9-8c3d-ba436adbed46 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:52:42,798 INFO guardrails.execution request=ab80d52a-21d2-4ec9-8c3d-ba436adbed46 step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:52:42.793634 end=2026-09-05T20:52:42.793691 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:52:42,799 INFO guardrails.execution request=ab80d52a-21d2-4ec9-8c3d-ba436adbed46 step=2/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-05T20:52:42.793696 end=2026-09-05T20:52:42.793756 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:52:42,801 INFO guardrails.execution request=ab80d52a-21d2-4ec9-8c3d-ba436adbed46 step=3/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-05T20:52:42.793759 end=2026-09-05T20:52:42.794607 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:52:42,802 INFO guardrails.execution request=ab80d52a-21d2-4ec9-8c3d-ba436adbed46 step=4/5 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-05T20:52:42.794611 end=2026-09-05T20:52:42.795157 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:52:42,803 INFO guardrails.execution request=ab80d52a-21d2-4ec9-8c3d-ba436adbed46 step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.PASS start=2026-09-05T20:52:42.795161 end=2026-09-05T20:52:42.795770 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:52:42,806 INFO http_request_logger POST /api/v1/guardrails/ - 200 [24.65ms] +2026-09-05 20:52:42,823 INFO guardrails.execution request=959ecf3c-5e81-4ff4-81ee-40e32781fe8a starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free', 'uli_slur_match', 'ban_list', 'gender_assumption_bias']) input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-05 20:52:42,827 INFO guardrails.execution request=959ecf3c-5e81-4ff4-81ee-40e32781fe8a guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-05 20:52:42,828 INFO guardrails.execution request=959ecf3c-5e81-4ff4-81ee-40e32781fe8a step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:52:42.824391 end=2026-09-05T20:52:42.824444 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-05 20:52:42,830 INFO guardrails.execution request=959ecf3c-5e81-4ff4-81ee-40e32781fe8a step=2/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-05T20:52:42.824449 end=2026-09-05T20:52:42.825283 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-05 20:52:42,831 INFO guardrails.execution request=959ecf3c-5e81-4ff4-81ee-40e32781fe8a step=3/5 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:42.825288 end=2026-09-05T20:52:42.825780 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-05 20:52:42,833 INFO guardrails.execution request=959ecf3c-5e81-4ff4-81ee-40e32781fe8a step=4/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-05T20:52:42.825785 end=2026-09-05T20:52:42.825841 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-05 20:52:42,834 INFO guardrails.execution request=959ecf3c-5e81-4ff4-81ee-40e32781fe8a step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:42.825844 end=2026-09-05T20:52:42.826457 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-05 20:52:42,837 INFO http_request_logger POST /api/v1/guardrails/ - 200 [27.46ms] +2026-09-05 20:52:42,856 INFO app.crud.ban_list created ban list id=33d30b9a-26b2-4dfe-8ee6-407352aad5f6 org=1 project=1 +2026-09-05 20:52:42,857 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [4.31ms] +2026-09-05 20:52:42,860 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.82ms] +2026-09-05 20:52:42,864 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.73ms] +2026-09-05 20:52:42,867 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.72ms] +2026-09-05 20:52:42,871 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.76ms] +2026-09-05 20:52:42,874 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.70ms] +2026-09-05 20:52:42,888 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [3.87ms] +2026-09-05 20:52:42,897 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.53ms] +2026-09-05 20:52:42,903 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.45ms] +2026-09-05 20:52:42,911 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.78ms] +2026-09-05 20:52:42,920 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.08ms] +2026-09-05 20:52:42,923 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.28ms] +2026-09-05 20:52:42,929 INFO app.crud.ban_list created ban list id=f2487b36-0bb7-410d-9f7d-d438073864eb org=1 project=1 +2026-09-05 20:52:42,929 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [3.08ms] +2026-09-05 20:52:42,930 INFO http_request_logger GET /api/v1/guardrails/ban_lists/f2487b36-0bb7-410d-9f7d-d438073864eb/ - 307 [0.11ms] +2026-09-05 20:52:42,932 INFO http_request_logger GET /api/v1/guardrails/ban_lists/f2487b36-0bb7-410d-9f7d-d438073864eb - 200 [1.86ms] +2026-09-05 20:52:42,940 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.98ms] +2026-09-05 20:52:42,941 INFO http_request_logger GET /api/v1/guardrails/ban_lists/b7dac56e-48c8-4916-8c70-c2cb6a2c50c1/ - 307 [0.10ms] +2026-09-05 20:52:42,943 INFO http_request_logger GET /api/v1/guardrails/ban_lists/b7dac56e-48c8-4916-8c70-c2cb6a2c50c1 - 200 [1.51ms] +2026-09-05 20:52:42,946 INFO http_request_logger GET /api/v1/guardrails/ban_lists/60cf39cf-2e6f-4b8e-9583-23cdcb6bbea1/ - 307 [0.09ms] +2026-09-05 20:52:42,949 INFO http_request_logger GET /api/v1/guardrails/ban_lists/60cf39cf-2e6f-4b8e-9583-23cdcb6bbea1 - 404 [1.83ms] +2026-09-05 20:52:42,956 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.21ms] +2026-09-05 20:52:42,957 INFO http_request_logger GET /api/v1/guardrails/ban_lists/0bfb83ef-833b-4fa0-a3c4-42f5028c76be/ - 307 [0.10ms] +2026-09-05 20:52:42,959 INFO http_request_logger GET /api/v1/guardrails/ban_lists/0bfb83ef-833b-4fa0-a3c4-42f5028c76be - 403 [1.56ms] +2026-09-05 20:52:42,966 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.02ms] +2026-09-05 20:52:42,967 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/b8e9fd6c-15e7-47c4-b350-a9c6c9ca3555/ - 307 [0.08ms] +2026-09-05 20:52:42,970 INFO app.crud.ban_list updated ban list id=b8e9fd6c-15e7-47c4-b350-a9c6c9ca3555 +2026-09-05 20:52:42,971 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/b8e9fd6c-15e7-47c4-b350-a9c6c9ca3555 - 200 [3.54ms] +2026-09-05 20:52:42,977 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.57ms] +2026-09-05 20:52:42,977 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/9d72deaf-cd4f-446c-a2be-df3a28f25624/ - 307 [0.08ms] +2026-09-05 20:52:42,980 INFO app.crud.ban_list updated ban list id=9d72deaf-cd4f-446c-a2be-df3a28f25624 +2026-09-05 20:52:42,980 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/9d72deaf-cd4f-446c-a2be-df3a28f25624 - 200 [2.76ms] +2026-09-05 20:52:42,984 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/2faadc6a-e047-4e71-922c-3923880c1701/ - 307 [0.08ms] +2026-09-05 20:52:42,985 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/2faadc6a-e047-4e71-922c-3923880c1701 - 404 [1.45ms] +2026-09-05 20:52:42,990 INFO app.crud.ban_list created ban list id=88a72e4c-aa98-4810-9f62-548e0acafde8 org=1 project=1 +2026-09-05 20:52:42,991 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [2.75ms] +2026-09-05 20:52:42,991 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/88a72e4c-aa98-4810-9f62-548e0acafde8/ - 307 [0.08ms] +2026-09-05 20:52:42,993 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/88a72e4c-aa98-4810-9f62-548e0acafde8 - 403 [1.30ms] +2026-09-05 20:52:42,999 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.46ms] +2026-09-05 20:52:42,999 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/523d532d-4e69-4990-af0f-a64f249fbc55/ - 307 [0.08ms] +2026-09-05 20:52:43,001 INFO app.crud.ban_list deleted ban list id=523d532d-4e69-4990-af0f-a64f249fbc55 +2026-09-05 20:52:43,001 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/523d532d-4e69-4990-af0f-a64f249fbc55 - 200 [1.79ms] +2026-09-05 20:52:43,004 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/589f0c91-da24-4167-8197-1b8efe983ee0/ - 307 [0.08ms] +2026-09-05 20:52:43,006 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/589f0c91-da24-4167-8197-1b8efe983ee0 - 404 [1.29ms] +2026-09-05 20:52:43,012 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.62ms] +2026-09-05 20:52:43,012 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/1d3c55e2-ce21-4402-9138-032cadf1802a/ - 307 [0.08ms] +2026-09-05 20:52:43,014 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/1d3c55e2-ce21-4402-9138-032cadf1802a - 403 [1.18ms] +2026-09-05 20:52:43,018 INFO app.crud.ban_list created ban list id=a3f0dad5-519f-4680-8d86-46b71cb0369d org=1 project=1 +2026-09-05 20:52:43,019 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [2.36ms] +2026-09-05 20:52:43,019 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/a3f0dad5-519f-4680-8d86-46b71cb0369d/ - 307 [0.08ms] +2026-09-05 20:52:43,021 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/a3f0dad5-519f-4680-8d86-46b71cb0369d - 403 [1.20ms] +2026-09-05 20:52:43,094 INFO guardrails.execution request=d8337d85-b154-4c5c-b525-3e52c9e63c73 starting guardrails execution (validators=[]) input='hello world' +2026-09-05 20:52:43,094 INFO guardrails.execution request=d8337d85-b154-4c5c-b525-3e52c9e63c73 guardrails execution finished (passed=True) output='clean text' +2026-09-05 20:52:43,096 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.06ms] +2026-09-05 20:52:43,101 INFO guardrails.execution request=a2b1257f-00be-4af0-8a7e-5f49e04abba3 starting guardrails execution (validators=[]) input='my phone is 999999' +2026-09-05 20:52:43,101 INFO guardrails.execution request=a2b1257f-00be-4af0-8a7e-5f49e04abba3 guardrails execution finished (passed=False) output=None +2026-09-05 20:52:43,102 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3.37ms] +2026-09-05 20:52:43,107 INFO guardrails.execution request=0755bb25-a831-4555-af46-5c4952195a01 starting guardrails execution (validators=[]) input='tell me about buildings' +2026-09-05 20:52:43,107 INFO guardrails.execution request=0755bb25-a831-4555-af46-5c4952195a01 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Input is outside the allowed topic scope.' +2026-09-05 20:52:43,108 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3.37ms] +2026-09-05 20:52:43,113 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log f5c368a3-999c-4bba-9eed-3bdd4cac1799: Invalid validator config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid validator config +2026-09-05 20:52:43,116 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.34ms] +2026-09-05 20:52:43,127 INFO guardrails.execution request=da232617-f3d9-4ca6-ab72-e5bc9576e218 starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-05 20:52:43,129 INFO guardrails.execution request=da232617-f3d9-4ca6-ab72-e5bc9576e218 guardrails execution finished (passed=True) output='this contains b' +2026-09-05 20:52:43,130 INFO guardrails.execution request=da232617-f3d9-4ca6-ab72-e5bc9576e218 step=1/1 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:43.128388 end=2026-09-05T20:52:43.128494 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-05 20:52:43,133 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.55ms] +2026-09-05 20:52:43,146 INFO guardrails.execution request=f9f8d06e-c481-4040-9099-efe932ca17a5 starting guardrails execution (validators=['ban_list']) input='this is clean' +2026-09-05 20:52:43,147 INFO guardrails.execution request=f9f8d06e-c481-4040-9099-efe932ca17a5 guardrails execution finished (passed=True) output='this is clean' +2026-09-05 20:52:43,148 INFO guardrails.execution request=f9f8d06e-c481-4040-9099-efe932ca17a5 step=1/1 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-05T20:52:43.146440 end=2026-09-05T20:52:43.146507 duration_ms=0 input='this is clean' output='this is clean' +2026-09-05 20:52:43,151 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.54ms] +2026-09-05 20:52:43,169 INFO guardrails.execution request=13556735-acf5-48f2-9940-8ce54853d676 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-05 20:52:43,171 INFO guardrails.execution request=13556735-acf5-48f2-9940-8ce54853d676 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR].' +2026-09-05 20:52:43,173 INFO guardrails.execution request=13556735-acf5-48f2-9940-8ce54853d676 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:43.170538 end=2026-09-05T20:52:43.170927 duration_ms=0 input='This sentence contains chakki.' output='this sentence contains [REDACTED_SLUR].' +2026-09-05 20:52:43,176 INFO http_request_logger POST /api/v1/guardrails/ - 200 [21.36ms] +2026-09-05 20:52:43,189 INFO guardrails.execution request=09070dc7-fce4-4070-9ae1-a4baea0bea27 starting guardrails execution (validators=['uli_slur_match']) input='This is a completely safe sentence' +2026-09-05 20:52:43,190 INFO guardrails.execution request=09070dc7-fce4-4070-9ae1-a4baea0bea27 guardrails execution finished (passed=True) output='This is a completely safe sentence' +2026-09-05 20:52:43,193 INFO guardrails.execution request=09070dc7-fce4-4070-9ae1-a4baea0bea27 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-05T20:52:43.189877 end=2026-09-05T20:52:43.190153 duration_ms=0 input='This is a completely safe sentence' output='This is a completely safe sentence' +2026-09-05 20:52:43,197 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.64ms] +2026-09-05 20:52:43,211 INFO guardrails.execution request=a2d1a250-09ed-4938-851a-08efa32bfef5 starting guardrails execution (validators=['uli_slur_match', 'ban_list']) input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' +2026-09-05 20:52:43,213 INFO guardrails.execution request=a2d1a250-09ed-4938-851a-08efa32bfef5 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-05 20:52:43,216 INFO guardrails.execution request=a2d1a250-09ed-4938-851a-08efa32bfef5 step=1/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:43.212052 end=2026-09-05T20:52:43.212504 duration_ms=0 input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' +2026-09-05 20:52:43,218 INFO guardrails.execution request=a2d1a250-09ed-4938-851a-08efa32bfef5 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:43.212509 end=2026-09-05T20:52:43.212590 duration_ms=0 input='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-05 20:52:43,222 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.70ms] +2026-09-05 20:52:43,227 INFO http_request_logger POST /api/v1/guardrails/ - 422 [0.86ms] +2026-09-05 20:52:43,240 INFO guardrails.execution request=f79a3bbd-06ef-44af-b8cb-6a7a9eee6b46 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-05 20:52:43,241 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log f79a3bbd-06ef-44af-b8cb-6a7a9eee6b46: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-05 20:52:43,245 INFO guardrails.execution request=f79a3bbd-06ef-44af-b8cb-6a7a9eee6b46 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:43.241275 end=2026-09-05T20:52:43.241511 duration_ms=0 input='This sentence contains chakki.' output=None +2026-09-05 20:52:43,247 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.83ms] +2026-09-05 20:52:43,261 INFO guardrails.execution request=b19f174e-77cb-49be-ad2e-558b3d9ab396 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-05 20:52:43,262 INFO guardrails.execution request=b19f174e-77cb-49be-ad2e-558b3d9ab396 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-05 20:52:43,265 INFO guardrails.execution request=b19f174e-77cb-49be-ad2e-558b3d9ab396 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:43.261476 end=2026-09-05T20:52:43.261730 duration_ms=0 input='This sentence contains chakki.' output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-05 20:52:43,269 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.36ms] +2026-09-05 20:52:43,282 INFO guardrails.execution request=960e9dc1-cd17-43df-ae22-bd216761ab30 starting guardrails execution (validators=['profanity_free']) input='This is a damn fucking mess.' +2026-09-05 20:52:43,284 INFO guardrails.execution request=960e9dc1-cd17-43df-ae22-bd216761ab30 guardrails execution finished (passed=True) output='' +2026-09-05 20:52:43,287 INFO guardrails.execution request=960e9dc1-cd17-43df-ae22-bd216761ab30 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:43.282936 end=2026-09-05T20:52:43.283902 duration_ms=0 input='This is a damn fucking mess.' output='' +2026-09-05 20:52:43,290 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.17ms] +2026-09-05 20:52:43,302 INFO guardrails.execution request=a7532a9b-1381-44ba-8308-5f0300785554 starting guardrails execution (validators=['profanity_free']) input='This is a completely clean sentence.' +2026-09-05 20:52:43,304 INFO guardrails.execution request=a7532a9b-1381-44ba-8308-5f0300785554 guardrails execution finished (passed=True) output='This is a completely clean sentence.' +2026-09-05 20:52:43,308 INFO guardrails.execution request=a7532a9b-1381-44ba-8308-5f0300785554 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-05T20:52:43.302850 end=2026-09-05T20:52:43.303733 duration_ms=0 input='This is a completely clean sentence.' output='This is a completely clean sentence.' +2026-09-05 20:52:43,312 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.75ms] +2026-09-05 20:52:43,325 INFO guardrails.execution request=85b190da-156a-49b5-bd24-54797a90cb6c starting guardrails execution (validators=['profanity_free']) input='What the fuck is going on?' +2026-09-05 20:52:43,326 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 85b190da-156a-49b5-bd24-54797a90cb6c: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +2026-09-05 20:52:43,329 INFO guardrails.execution request=85b190da-156a-49b5-bd24-54797a90cb6c step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:43.325800 end=2026-09-05T20:52:43.326602 duration_ms=0 input='What the fuck is going on?' output=None +2026-09-05 20:52:43,332 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.51ms] +2026-09-05 20:52:43,347 INFO guardrails.execution request=cb476cbf-8bbd-4730-9fb4-af48edc132da starting guardrails execution (validators=['profanity_free']) input='This is absolute bullshit.' +2026-09-05 20:52:43,349 INFO guardrails.execution request=cb476cbf-8bbd-4730-9fb4-af48edc132da guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-05 20:52:43,352 INFO guardrails.execution request=cb476cbf-8bbd-4730-9fb4-af48edc132da step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:43.347859 end=2026-09-05T20:52:43.348650 duration_ms=0 input='This is absolute bullshit.' output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-05 20:52:43,356 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.03ms] +2026-09-05 20:52:43,363 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log af2ba659-73a8-42e1-a97e-cc51b37226f5: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-05 20:52:43,367 INFO http_request_logger POST /api/v1/guardrails/ - 200 [6.84ms] +2026-09-05 20:52:44,075 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-05 20:52:46,151 INFO guardrails.execution request=c91552f2-9dd3-4072-8c38-1fc908849562 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-05 20:52:46,283 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log c91552f2-9dd3-4072-8c38-1fc908849562: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-05 20:52:46,291 INFO guardrails.execution request=c91552f2-9dd3-4072-8c38-1fc908849562 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:46.152807 end=2026-09-05T20:52:46.283114 duration_ms=130 input='She slowly undressed and they had explicit sex.' output=None +2026-09-05 20:52:46,294 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2923.60ms] +2026-09-05 20:52:48,459 INFO guardrails.execution request=ad6f9e35-c0a9-449b-95a9-2e40f0948161 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-05 20:52:48,474 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log ad6f9e35-c0a9-449b-95a9-2e40f0948161: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-05 20:52:48,479 INFO guardrails.execution request=ad6f9e35-c0a9-449b-95a9-2e40f0948161 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:48.460206 end=2026-09-05T20:52:48.474042 duration_ms=13 input='She slowly undressed and they had explicit sex.' output=None +2026-09-05 20:52:48,483 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2181.44ms] +2026-09-05 20:52:50,742 INFO guardrails.execution request=93e000c1-63fc-4fb6-b7c0-75f143ed6a0a starting guardrails execution (validators=['nsfw_text']) input='Explicit sexual content goes here.' +2026-09-05 20:52:50,768 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 93e000c1-63fc-4fb6-b7c0-75f143ed6a0a: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +2026-09-05 20:52:50,774 INFO guardrails.execution request=93e000c1-63fc-4fb6-b7c0-75f143ed6a0a step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:50.742579 end=2026-09-05T20:52:50.767997 duration_ms=25 input='Explicit sexual content goes here.' output=None +2026-09-05 20:52:50,778 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2288.00ms] +2026-09-05 20:52:50,802 INFO guardrails.execution request=5ea3636d-b7d7-41f7-890e-f9ee67b41d98 starting guardrails execution (validators=['profanity_free', 'uli_slur_match']) input='This fucking chakki should leave.' +2026-09-05 20:52:50,806 INFO guardrails.execution request=5ea3636d-b7d7-41f7-890e-f9ee67b41d98 guardrails execution finished (passed=True) output='' +2026-09-05 20:52:50,811 INFO guardrails.execution request=5ea3636d-b7d7-41f7-890e-f9ee67b41d98 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:50.803706 end=2026-09-05T20:52:50.805384 duration_ms=1 input='This fucking chakki should leave.' output='' +2026-09-05 20:52:50,814 INFO guardrails.execution request=5ea3636d-b7d7-41f7-890e-f9ee67b41d98 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-05T20:52:50.805423 end=2026-09-05T20:52:50.805693 duration_ms=0 input='' output='' +2026-09-05 20:52:50,819 INFO http_request_logger POST /api/v1/guardrails/ - 200 [34.93ms] +2026-09-05 20:52:50,828 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 1cb025df-76af-438f-818b-0d7a7d580b7d: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-05 20:52:50,832 INFO http_request_logger POST /api/v1/guardrails/ - 200 [7.41ms] +2026-09-05 20:52:55,657 INFO guardrails.execution request=670ed59c-5ad0-4081-bd6a-ad17d1b950d4 starting guardrails execution (validators=['profanity_free', 'nsfw_text']) input='What the fuck, this is explicit adult sexual content.' +2026-09-05 20:52:55,660 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 670ed59c-5ad0-4081-bd6a-ad17d1b950d4: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +2026-09-05 20:52:55,668 INFO guardrails.execution request=670ed59c-5ad0-4081-bd6a-ad17d1b950d4 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:55.658417 end=2026-09-05T20:52:55.660163 duration_ms=1 input='What the fuck, this is explicit adult sexual content.' output=None +2026-09-05 20:52:55,673 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4835.98ms] +2026-09-05 20:52:57,760 INFO guardrails.execution request=60521e51-77f3-4ea9-9b98-e12d38dc12da starting guardrails execution (validators=['uli_slur_match', 'nsfw_text']) input='This chakki has explicit sexual content.' +2026-09-05 20:52:57,761 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 60521e51-77f3-4ea9-9b98-e12d38dc12da: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-05 20:52:57,766 INFO guardrails.execution request=60521e51-77f3-4ea9-9b98-e12d38dc12da step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:57.761410 end=2026-09-05T20:52:57.761845 duration_ms=0 input='This chakki has explicit sexual content.' output=None +2026-09-05 20:52:57,770 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2089.91ms] +2026-09-05 20:52:57,787 INFO guardrails.execution request=17c48a59-6d0b-4f49-8719-e647eeeafd52 starting guardrails execution (validators=['profanity_free', 'ban_list']) input='Tell me about renewable energy sources.' +2026-09-05 20:52:57,790 INFO guardrails.execution request=17c48a59-6d0b-4f49-8719-e647eeeafd52 guardrails execution finished (passed=True) output='Tell me about renewable energy sources.' +2026-09-05 20:52:57,794 INFO guardrails.execution request=17c48a59-6d0b-4f49-8719-e647eeeafd52 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-05T20:52:57.788280 end=2026-09-05T20:52:57.789445 duration_ms=1 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-05 20:52:57,796 INFO guardrails.execution request=17c48a59-6d0b-4f49-8719-e647eeeafd52 step=2/2 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-05T20:52:57.789455 end=2026-09-05T20:52:57.789559 duration_ms=0 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-05 20:52:57,800 INFO http_request_logger POST /api/v1/guardrails/ - 200 [25.41ms] +2026-09-05 20:52:57,820 INFO guardrails.execution request=2e636ec7-caef-47e0-96f9-7b34533ce549 starting guardrails execution (validators=['uli_slur_match', 'profanity_free', 'ban_list']) input='What are some healthy breakfast options?' +2026-09-05 20:52:57,823 INFO guardrails.execution request=2e636ec7-caef-47e0-96f9-7b34533ce549 guardrails execution finished (passed=True) output='What are some healthy breakfast options?' +2026-09-05 20:52:57,827 INFO guardrails.execution request=2e636ec7-caef-47e0-96f9-7b34533ce549 step=1/3 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-05T20:52:57.821137 end=2026-09-05T20:52:57.821479 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-05 20:52:57,831 INFO guardrails.execution request=2e636ec7-caef-47e0-96f9-7b34533ce549 step=2/3 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-05T20:52:57.821484 end=2026-09-05T20:52:57.822554 duration_ms=1 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-05 20:52:57,834 INFO guardrails.execution request=2e636ec7-caef-47e0-96f9-7b34533ce549 step=3/3 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-05T20:52:57.822560 end=2026-09-05T20:52:57.822623 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-05 20:52:57,839 INFO http_request_logger POST /api/v1/guardrails/ - 200 [35.20ms] +2026-09-05 20:52:57,857 INFO guardrails.execution request=3e01ea37-cbe3-4cfd-89a5-9730ce049802 starting guardrails execution (validators=['ban_list', 'uli_slur_match']) input='this contains badword' +2026-09-05 20:52:57,859 INFO guardrails.execution request=3e01ea37-cbe3-4cfd-89a5-9730ce049802 guardrails execution finished (passed=True) output='this contains b' +2026-09-05 20:52:57,862 INFO guardrails.execution request=3e01ea37-cbe3-4cfd-89a5-9730ce049802 step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-05T20:52:57.858345 end=2026-09-05T20:52:57.858458 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-05 20:52:57,864 INFO guardrails.execution request=3e01ea37-cbe3-4cfd-89a5-9730ce049802 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-05T20:52:57.858464 end=2026-09-05T20:52:57.858662 duration_ms=0 input='this contains b' output='this contains b' +2026-09-05 20:52:57,867 INFO http_request_logger POST /api/v1/guardrails/ - 200 [21.41ms] +2026-09-05 20:52:57,877 ERROR app.api.routes.guardrails [run_guardrails] config resolution failed for request_log 07b0822d-5b53-449c-b8f5-fbee1b9f3d85: 404: Ban list not found +2026-09-05 20:52:57,880 INFO http_request_logger POST /api/v1/guardrails/ - 404 [6.51ms] +2026-09-05 20:52:57,888 INFO guardrails.execution request=92d10808-a4ac-44b5-b948-9278d59085dd starting guardrails execution (validators=['ban_list']) input='hello' +2026-09-05 20:52:57,889 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 92d10808-a4ac-44b5-b948-9278d59085dd: boom +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +RuntimeError: boom +2026-09-05 20:52:57,890 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.82ms] +2026-09-05 20:52:57,896 WARNING app.api.routes.guardrails [run_guardrails] invalid request_id 'not-a-uuid' (org=1 project=1), no request log written +2026-09-05 20:52:57,897 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1.36ms] +2026-09-05 20:52:57,905 INFO app.crud.llm_prompt_config created llm prompt config id=670fbe45-8060-4c53-91b9-ecd5e0175d88 org=1 project=1 +2026-09-05 20:52:57,906 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [6.44ms] +2026-09-05 20:52:57,914 INFO app.crud.llm_prompt_config created llm prompt config id=5b893a7a-50c7-4bdb-94a9-433ccf9ec0f7 org=1 project=1 +2026-09-05 20:52:57,914 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.99ms] +2026-09-05 20:52:57,921 INFO app.crud.llm_prompt_config created llm prompt config id=3a5b41c0-ff2e-45c8-af82-392598a473f4 org=1 project=1 +2026-09-05 20:52:57,921 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.36ms] +2026-09-05 20:52:57,926 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [1.12ms] +2026-09-05 20:52:57,932 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [1.06ms] +2026-09-05 20:52:57,936 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.89ms] +2026-09-05 20:52:57,939 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.80ms] +2026-09-05 20:52:57,945 INFO app.crud.llm_prompt_config created llm prompt config id=ef74523d-3ca8-4363-8602-7debe3da2949 org=1 project=1 +2026-09-05 20:52:57,946 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.17ms] +2026-09-05 20:52:57,950 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.79ms] +2026-09-05 20:52:57,953 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.82ms] +2026-09-05 20:52:57,959 INFO app.crud.llm_prompt_config created llm prompt config id=0b9988d9-e5d2-4644-b1f9-15ee57f3ffc5 org=1 project=1 +2026-09-05 20:52:57,960 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.11ms] +2026-09-05 20:52:57,962 INFO app.crud.llm_prompt_config created llm prompt config id=02f107a0-f209-4cf0-b52b-c7e18ffcc500 org=1 project=1 +2026-09-05 20:52:57,962 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.38ms] +2026-09-05 20:52:57,965 INFO app.crud.llm_prompt_config created llm prompt config id=9fcb335d-df41-41c1-8a4b-7b226c633a16 org=1 project=1 +2026-09-05 20:52:57,965 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.38ms] +2026-09-05 20:52:57,968 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.20ms] +2026-09-05 20:52:57,974 INFO app.crud.llm_prompt_config created llm prompt config id=a2026b39-457d-4a56-abe5-b1d5417aea90 org=1 project=1 +2026-09-05 20:52:57,975 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.01ms] +2026-09-05 20:52:57,977 INFO app.crud.llm_prompt_config created llm prompt config id=9effefba-b858-43f0-a238-b4be10e78753 org=1 project=1 +2026-09-05 20:52:57,978 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.21ms] +2026-09-05 20:52:57,981 INFO app.crud.llm_prompt_config created llm prompt config id=651db809-bdae-4585-b9b2-f7a023dcdfec org=1 project=1 +2026-09-05 20:52:57,981 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.75ms] +2026-09-05 20:52:57,984 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.11ms] +2026-09-05 20:52:57,990 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.49ms] +2026-09-05 20:52:57,997 INFO app.crud.llm_prompt_config created llm prompt config id=f4824a47-22cc-40b4-abcc-4a3db5cbab08 org=1 project=1 +2026-09-05 20:52:57,998 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.50ms] +2026-09-05 20:52:58,001 INFO app.crud.llm_prompt_config created llm prompt config id=bdd7bcf2-eec1-4062-8ed8-5982aba6bce6 org=1 project=1 +2026-09-05 20:52:58,001 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.06ms] +2026-09-05 20:52:58,004 INFO app.crud.llm_prompt_config created llm prompt config id=02b2e1df-8d36-4305-8474-fe32f8b01b80 org=1 project=1 +2026-09-05 20:52:58,005 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.94ms] +2026-09-05 20:52:58,007 INFO app.crud.llm_prompt_config created llm prompt config id=dc1d9c5a-c25c-4e01-9033-12e334a32a70 org=1 project=1 +2026-09-05 20:52:58,008 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.83ms] +2026-09-05 20:52:58,011 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.56ms] +2026-09-05 20:52:58,019 INFO app.crud.llm_prompt_config created llm prompt config id=ac718cf0-6121-4f72-b82b-608dd1d8a489 org=1 project=1 +2026-09-05 20:52:58,020 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.24ms] +2026-09-05 20:52:58,022 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.76ms] +2026-09-05 20:52:58,029 INFO app.crud.llm_prompt_config created llm prompt config id=4afefd00-d1e4-47b1-babe-9932969d973d org=1 project=1 +2026-09-05 20:52:58,030 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.34ms] +2026-09-05 20:52:58,033 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/4afefd00-d1e4-47b1-babe-9932969d973d - 200 [2.26ms] +2026-09-05 20:52:58,038 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/db39ff51-ce7b-44e7-846e-5abfe4b20fa1 - 404 [2.02ms] +2026-09-05 20:52:58,045 INFO app.crud.llm_prompt_config created llm prompt config id=4e63e262-65d4-41a4-b002-08603c243e9a org=1 project=1 +2026-09-05 20:52:58,046 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.51ms] +2026-09-05 20:52:58,048 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/4e63e262-65d4-41a4-b002-08603c243e9a - 404 [1.80ms] +2026-09-05 20:52:58,055 INFO app.crud.llm_prompt_config created llm prompt config id=dd130d54-e83f-4b43-9d68-73219d4b5e18 org=1 project=1 +2026-09-05 20:52:58,056 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.78ms] +2026-09-05 20:52:58,061 INFO app.crud.llm_prompt_config updated llm prompt config id=dd130d54-e83f-4b43-9d68-73219d4b5e18 +2026-09-05 20:52:58,061 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/dd130d54-e83f-4b43-9d68-73219d4b5e18 - 200 [4.54ms] +2026-09-05 20:52:58,068 INFO app.crud.llm_prompt_config created llm prompt config id=b65414b6-8755-46e3-a00a-fd3634ea4384 org=1 project=1 +2026-09-05 20:52:58,069 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.61ms] +2026-09-05 20:52:58,072 INFO app.crud.llm_prompt_config updated llm prompt config id=b65414b6-8755-46e3-a00a-fd3634ea4384 +2026-09-05 20:52:58,073 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/b65414b6-8755-46e3-a00a-fd3634ea4384 - 200 [3.58ms] +2026-09-05 20:52:58,079 INFO app.crud.llm_prompt_config created llm prompt config id=f50d1cc1-66f1-4049-80de-4aed5fddff61 org=1 project=1 +2026-09-05 20:52:58,080 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.15ms] +2026-09-05 20:52:58,083 INFO app.crud.llm_prompt_config updated llm prompt config id=f50d1cc1-66f1-4049-80de-4aed5fddff61 +2026-09-05 20:52:58,084 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/f50d1cc1-66f1-4049-80de-4aed5fddff61 - 200 [3.43ms] +2026-09-05 20:52:58,086 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/f50d1cc1-66f1-4049-80de-4aed5fddff61 - 200 [1.69ms] +2026-09-05 20:52:58,092 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/7970015c-17d9-41f7-8302-f094e937aa98 - 404 [2.34ms] +2026-09-05 20:52:58,098 INFO app.crud.llm_prompt_config created llm prompt config id=43305d04-4e52-438f-8bba-221712a156d2 org=1 project=1 +2026-09-05 20:52:58,099 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.19ms] +2026-09-05 20:52:58,101 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/43305d04-4e52-438f-8bba-221712a156d2 - 404 [1.69ms] +2026-09-05 20:52:58,108 INFO app.crud.llm_prompt_config created llm prompt config id=436a7d3b-f5a1-4657-b95b-7196971dd0d5 org=1 project=1 +2026-09-05 20:52:58,109 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.02ms] +2026-09-05 20:52:58,111 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/436a7d3b-f5a1-4657-b95b-7196971dd0d5 - 422 [1.70ms] +2026-09-05 20:52:58,119 INFO app.crud.llm_prompt_config created llm prompt config id=7f72e772-c8d5-4da6-acd5-8dc352215f07 org=1 project=1 +2026-09-05 20:52:58,119 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.14ms] +2026-09-05 20:52:58,121 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/7f72e772-c8d5-4da6-acd5-8dc352215f07 - 422 [1.47ms] +2026-09-05 20:52:58,127 INFO app.crud.llm_prompt_config created llm prompt config id=f404d1c0-134b-412d-bcc0-ac170d97b2a5 org=1 project=1 +2026-09-05 20:52:58,128 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.19ms] +2026-09-05 20:52:58,133 INFO app.crud.llm_prompt_config updated llm prompt config id=f404d1c0-134b-412d-bcc0-ac170d97b2a5 +2026-09-05 20:52:58,134 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/f404d1c0-134b-412d-bcc0-ac170d97b2a5 - 200 [5.82ms] +2026-09-05 20:52:58,143 INFO app.crud.llm_prompt_config created llm prompt config id=75733a0d-455d-4679-948a-9fc8e9cec158 org=1 project=1 +2026-09-05 20:52:58,143 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.42ms] +2026-09-05 20:52:58,147 INFO app.crud.llm_prompt_config updated llm prompt config id=75733a0d-455d-4679-948a-9fc8e9cec158 +2026-09-05 20:52:58,147 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/75733a0d-455d-4679-948a-9fc8e9cec158 - 200 [3.28ms] +2026-09-05 20:52:58,156 INFO app.crud.llm_prompt_config created llm prompt config id=75a603a5-1476-457c-99d9-721bb23cd450 org=1 project=1 +2026-09-05 20:52:58,157 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [5.33ms] +2026-09-05 20:52:58,160 INFO app.crud.llm_prompt_config deleted llm prompt config id=75a603a5-1476-457c-99d9-721bb23cd450 +2026-09-05 20:52:58,160 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/75a603a5-1476-457c-99d9-721bb23cd450 - 200 [2.70ms] +2026-09-05 20:52:58,168 INFO app.crud.llm_prompt_config created llm prompt config id=d2920a2a-913a-4d4c-903b-22cf713818bc org=1 project=1 +2026-09-05 20:52:58,168 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.90ms] +2026-09-05 20:52:58,171 INFO app.crud.llm_prompt_config deleted llm prompt config id=d2920a2a-913a-4d4c-903b-22cf713818bc +2026-09-05 20:52:58,171 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/d2920a2a-913a-4d4c-903b-22cf713818bc - 200 [2.06ms] +2026-09-05 20:52:58,173 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.96ms] +2026-09-05 20:52:58,179 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/c907d7d9-c947-4dff-8f41-d5fedaba7eaa - 404 [1.74ms] +2026-09-05 20:52:58,188 INFO app.crud.llm_prompt_config created llm prompt config id=562996c4-a9b1-4d0a-8740-5df0048f44ce org=1 project=1 +2026-09-05 20:52:58,188 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [5.74ms] +2026-09-05 20:52:58,190 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/562996c4-a9b1-4d0a-8740-5df0048f44ce - 404 [1.39ms] +2026-09-05 20:52:58,349 INFO guardrails.execution request=a158763e-91bd-497c-9782-435836c460bf starting guardrails execution (validators=[]) input='hello' +2026-09-05 20:52:58,350 INFO guardrails.execution request=a158763e-91bd-497c-9782-435836c460bf guardrails execution finished (passed=True) output='clean text' +2026-09-05 20:52:58,352 INFO guardrails.execution request=a158763e-91bd-497c-9782-435836c460bf starting guardrails execution (validators=[]) input='bad text' +2026-09-05 20:52:58,352 INFO guardrails.execution request=a158763e-91bd-497c-9782-435836c460bf guardrails execution finished (passed=False) output=None +2026-09-05 20:52:58,354 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log a158763e-91bd-497c-9782-435836c460bf: Invalid config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid config +2026-09-05 20:52:58,356 INFO guardrails.execution request=a158763e-91bd-497c-9782-435836c460bf starting guardrails execution (validators=[]) input='bad text' +2026-09-05 20:52:58,356 INFO guardrails.execution request=a158763e-91bd-497c-9782-435836c460bf guardrails execution finished (passed=False) output=None +2026-09-05 20:52:58,358 INFO guardrails.execution request=a158763e-91bd-497c-9782-435836c460bf starting guardrails execution (validators=[]) input='bad text' +2026-09-05 20:52:58,358 INFO guardrails.execution request=a158763e-91bd-497c-9782-435836c460bf guardrails execution finished (passed=False) output=None +2026-09-05 20:52:58,385 INFO guardrails.execution request=a158763e-91bd-497c-9782-435836c460bf starting guardrails execution (validators=[]) input='this is some unsafe content' +2026-09-05 20:52:58,385 INFO guardrails.execution request=a158763e-91bd-497c-9782-435836c460bf guardrails execution finished (passed=False) output=None +2026-09-05 20:52:58,388 INFO guardrails.execution request=a158763e-91bd-497c-9782-435836c460bf starting guardrails execution (validators=[]) input='some input text' +2026-09-05 20:52:58,388 INFO guardrails.execution request=a158763e-91bd-497c-9782-435836c460bf guardrails execution finished (passed=False) output=None +2026-09-05 20:52:58,390 INFO guardrails.execution request=a158763e-91bd-497c-9782-435836c460bf starting guardrails execution (validators=[]) input='this contains profane words' +2026-09-05 20:52:58,390 INFO guardrails.execution request=a158763e-91bd-497c-9782-435836c460bf guardrails execution finished (passed=False) output=None +2026-09-05 20:52:58,393 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log a158763e-91bd-497c-9782-435836c460bf: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +2026-09-05 20:52:58,395 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log a158763e-91bd-497c-9782-435836c460bf: Validation failed for field with errors: Profanity detected in: this contains profane words +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: Profanity detected in: this contains profane words +2026-09-05 20:52:58,415 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-05 20:52:58,419 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-05 20:52:58,422 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-05 20:52:58,434 INFO app.crud.validator_config created validator config id=c335a450-a05f-4998-9ca5-603626c14fe6 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-05 20:52:58,435 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [4.85ms] +2026-09-05 20:52:58,440 INFO app.crud.validator_config created validator config id=c8cff846-05b3-47c8-ab6e-e3f7e372804b org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-05 20:52:58,441 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.90ms] +2026-09-05 20:52:58,444 WARNING app.crud.validator_config create validator config failed: duplicate name (org=1 project=1) +2026-09-05 20:52:58,444 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 400 [2.55ms] +2026-09-05 20:52:58,449 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 422 [0.86ms] +2026-09-05 20:52:58,455 INFO app.crud.validator_config created validator config id=4f52abc3-cda8-4ebb-9eaa-dd447ce02c0f org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-05 20:52:58,455 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.38ms] +2026-09-05 20:52:58,459 INFO app.crud.validator_config created validator config id=be5b2031-ffe5-4d2d-a49f-1b254ec0ccdd org=1 project=1 type=ValidatorType.PIIRemover +2026-09-05 20:52:58,459 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.33ms] +2026-09-05 20:52:58,463 INFO app.crud.validator_config created validator config id=5c076330-7708-443f-9508-c3d35ab4bd9e org=1 project=1 type=ValidatorType.PIIRemover +2026-09-05 20:52:58,464 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.90ms] +2026-09-05 20:52:58,467 INFO app.crud.validator_config created validator config id=fde18cea-bffc-4f03-af5a-a8f8bb4f8cb4 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-05 20:52:58,467 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.25ms] +2026-09-05 20:52:58,470 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.29ms] +2026-09-05 20:52:58,470 INFO http_request_logger GET /api/v1/guardrails/validators/configs/4f52abc3-cda8-4ebb-9eaa-dd447ce02c0f/ - 307 [0.10ms] +2026-09-05 20:52:58,472 INFO http_request_logger GET /api/v1/guardrails/validators/configs/4f52abc3-cda8-4ebb-9eaa-dd447ce02c0f - 200 [1.73ms] +2026-09-05 20:52:58,473 INFO http_request_logger GET /api/v1/guardrails/validators/configs/be5b2031-ffe5-4d2d-a49f-1b254ec0ccdd/ - 307 [0.09ms] +2026-09-05 20:52:58,475 INFO http_request_logger GET /api/v1/guardrails/validators/configs/be5b2031-ffe5-4d2d-a49f-1b254ec0ccdd - 200 [1.55ms] +2026-09-05 20:52:58,475 INFO http_request_logger GET /api/v1/guardrails/validators/configs/5c076330-7708-443f-9508-c3d35ab4bd9e/ - 307 [0.09ms] +2026-09-05 20:52:58,477 INFO http_request_logger GET /api/v1/guardrails/validators/configs/5c076330-7708-443f-9508-c3d35ab4bd9e - 200 [1.70ms] +2026-09-05 20:52:58,477 INFO http_request_logger GET /api/v1/guardrails/validators/configs/fde18cea-bffc-4f03-af5a-a8f8bb4f8cb4/ - 307 [0.08ms] +2026-09-05 20:52:58,479 INFO http_request_logger GET /api/v1/guardrails/validators/configs/fde18cea-bffc-4f03-af5a-a8f8bb4f8cb4 - 200 [1.67ms] +2026-09-05 20:52:58,487 INFO app.crud.validator_config created validator config id=b8df65e2-fb48-44a1-9a4d-ae1ec8ff62d1 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-05 20:52:58,488 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.65ms] +2026-09-05 20:52:58,491 INFO app.crud.validator_config created validator config id=b43793ca-f549-4052-9dde-fee955b8237f org=1 project=1 type=ValidatorType.PIIRemover +2026-09-05 20:52:58,491 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.19ms] +2026-09-05 20:52:58,494 INFO app.crud.validator_config created validator config id=92c46c0f-9559-4c82-b119-11b9aa526743 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-05 20:52:58,495 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.13ms] +2026-09-05 20:52:58,495 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/b8df65e2-fb48-44a1-9a4d-ae1ec8ff62d1/ - 307 [0.10ms] +2026-09-05 20:52:58,499 INFO app.crud.validator_config updated validator config id=b8df65e2-fb48-44a1-9a4d-ae1ec8ff62d1 +2026-09-05 20:52:58,500 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/b8df65e2-fb48-44a1-9a4d-ae1ec8ff62d1 - 200 [4.15ms] +2026-09-05 20:52:58,500 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/b43793ca-f549-4052-9dde-fee955b8237f/ - 307 [0.10ms] +2026-09-05 20:52:58,504 INFO app.crud.validator_config updated validator config id=b43793ca-f549-4052-9dde-fee955b8237f +2026-09-05 20:52:58,505 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/b43793ca-f549-4052-9dde-fee955b8237f - 200 [4.03ms] +2026-09-05 20:52:58,505 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/92c46c0f-9559-4c82-b119-11b9aa526743/ - 307 [0.09ms] +2026-09-05 20:52:58,508 INFO app.crud.validator_config updated validator config id=92c46c0f-9559-4c82-b119-11b9aa526743 +2026-09-05 20:52:58,509 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/92c46c0f-9559-4c82-b119-11b9aa526743 - 200 [3.76ms] +2026-09-05 20:52:58,512 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.15ms] +2026-09-05 20:52:58,522 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.14ms] +2026-09-05 20:52:58,531 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.73ms] +2026-09-05 20:52:58,543 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.42ms] +2026-09-05 20:52:58,551 INFO app.crud.validator_config created validator config id=73cd5a1f-86e7-4c82-92b3-7b1a9f77d5ca org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-05 20:52:58,551 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.35ms] +2026-09-05 20:52:58,554 INFO app.crud.validator_config created validator config id=fe80cd7f-3586-4c0e-a4a5-2c4762c1f625 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-05 20:52:58,554 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.58ms] +2026-09-05 20:52:58,556 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.88ms] +2026-09-05 20:52:58,563 INFO app.crud.validator_config created validator config id=47813514-aa7a-464c-a012-4b353757b003 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-05 20:52:58,563 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.35ms] +2026-09-05 20:52:58,567 INFO app.crud.validator_config created validator config id=d8c5988f-a7e6-4fee-9cbb-ca33dff58614 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-05 20:52:58,567 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.43ms] +2026-09-05 20:52:58,569 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.85ms] +2026-09-05 20:52:58,575 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 422 [0.87ms] +2026-09-05 20:52:58,581 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.32ms] +2026-09-05 20:52:58,590 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.99ms] +2026-09-05 20:52:58,590 INFO http_request_logger GET /api/v1/guardrails/validators/configs/193126be-55e3-4cc1-a403-c612ada293a6/ - 307 [0.09ms] +2026-09-05 20:52:58,592 INFO http_request_logger GET /api/v1/guardrails/validators/configs/193126be-55e3-4cc1-a403-c612ada293a6 - 200 [1.47ms] +2026-09-05 20:52:58,595 INFO http_request_logger GET /api/v1/guardrails/validators/configs/bad6b07d-17ae-4058-ac11-7c086e2fdcbe/ - 307 [0.09ms] +2026-09-05 20:52:58,597 INFO http_request_logger GET /api/v1/guardrails/validators/configs/bad6b07d-17ae-4058-ac11-7c086e2fdcbe - 404 [1.51ms] +2026-09-05 20:52:58,601 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid/ - 307 [0.08ms] +2026-09-05 20:52:58,602 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid - 422 [0.77ms] +2026-09-05 20:52:58,608 INFO app.crud.validator_config created validator config id=83ef17be-95c2-466c-b56a-717cd3419bf8 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-05 20:52:58,608 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.82ms] +2026-09-05 20:52:58,609 INFO http_request_logger GET /api/v1/guardrails/validators/configs/83ef17be-95c2-466c-b56a-717cd3419bf8/ - 307 [0.09ms] +2026-09-05 20:52:58,610 INFO http_request_logger GET /api/v1/guardrails/validators/configs/83ef17be-95c2-466c-b56a-717cd3419bf8 - 404 [1.23ms] +2026-09-05 20:52:58,617 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.97ms] +2026-09-05 20:52:58,618 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/2e8f5af9-689b-470f-aafc-c7df03cab843/ - 307 [0.09ms] +2026-09-05 20:52:58,621 INFO app.crud.validator_config updated validator config id=2e8f5af9-689b-470f-aafc-c7df03cab843 +2026-09-05 20:52:58,622 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/2e8f5af9-689b-470f-aafc-c7df03cab843 - 200 [3.96ms] +2026-09-05 20:52:58,630 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.94ms] +2026-09-05 20:52:58,631 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/dd64444f-ac70-4fcf-b6ad-ef0b01492a02/ - 307 [0.09ms] +2026-09-05 20:52:58,633 INFO app.crud.validator_config updated validator config id=dd64444f-ac70-4fcf-b6ad-ef0b01492a02 +2026-09-05 20:52:58,634 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/dd64444f-ac70-4fcf-b6ad-ef0b01492a02 - 200 [2.76ms] +2026-09-05 20:52:58,638 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/73087a67-7ee7-43d4-b3c7-0457d46ad35b/ - 307 [0.10ms] +2026-09-05 20:52:58,640 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/73087a67-7ee7-43d4-b3c7-0457d46ad35b - 404 [2.21ms] +2026-09-05 20:52:58,650 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.97ms] +2026-09-05 20:52:58,650 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/31d28867-ff2f-4612-a485-44742f1c2315/ - 307 [0.09ms] +2026-09-05 20:52:58,653 INFO app.crud.validator_config deleted validator config id=31d28867-ff2f-4612-a485-44742f1c2315 +2026-09-05 20:52:58,654 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/31d28867-ff2f-4612-a485-44742f1c2315 - 200 [3.42ms] +2026-09-05 20:52:58,654 INFO http_request_logger GET /api/v1/guardrails/validators/configs/31d28867-ff2f-4612-a485-44742f1c2315/ - 307 [0.09ms] +2026-09-05 20:52:58,656 INFO http_request_logger GET /api/v1/guardrails/validators/configs/31d28867-ff2f-4612-a485-44742f1c2315 - 404 [1.84ms] +2026-09-05 20:52:58,662 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/e556ea5c-72d5-4b2c-bc8e-38d927748894/ - 307 [0.24ms] +2026-09-05 20:52:58,664 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/e556ea5c-72d5-4b2c-bc8e-38d927748894 - 404 [1.43ms] +2026-09-05 20:52:58,674 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.34ms] +2026-09-05 20:52:58,674 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/af0fde9d-9157-4e7d-9625-dfe405cf30e0/ - 307 [0.10ms] +2026-09-05 20:52:58,676 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/af0fde9d-9157-4e7d-9625-dfe405cf30e0 - 404 [1.50ms] +2026-09-05 20:52:58,677 INFO http_request_logger GET /api/v1/guardrails/validators/configs/af0fde9d-9157-4e7d-9625-dfe405cf30e0/ - 307 [0.09ms] +2026-09-05 20:52:58,679 INFO http_request_logger GET /api/v1/guardrails/validators/configs/af0fde9d-9157-4e7d-9625-dfe405cf30e0 - 200 [1.49ms] +2026-09-05 20:52:58,799 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-05 20:52:58,799 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-05 20:52:58,890 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:53:01,176 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:53:01,185 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:53:02,209 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:53:02,220 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:53:03,337 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:53:03,345 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:53:04,507 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:53:04,519 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:53:05,856 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:53:05,868 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:53:07,478 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:53:07,478 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:53:08,711 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:53:08,898 INFO watchfiles.main 4 changes detected +2026-09-05 20:53:16,697 INFO watchfiles.main 3 changes detected +2026-09-05 20:53:16,698 WARNING uvicorn.error WatchFiles detected changes in 'app/tests/test_toxicity_hub_validators.py'. Reloading... +2026-09-05 20:53:16,796 INFO uvicorn.error Shutting down +2026-09-05 20:53:16,904 INFO uvicorn.error Waiting for application shutdown. +2026-09-05 20:53:16,908 INFO uvicorn.error Application shutdown complete. +2026-09-05 20:53:16,909 INFO uvicorn.error Finished server process [60805] +2026-09-05 20:53:17,338 INFO watchfiles.main 1 change detected +2026-09-05 20:53:21,960 INFO presidio-analyzer Using device of type: cpu +2026-09-05 20:53:22,777 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-05 20:53:22,778 INFO uvicorn.error Started server process [60944] +2026-09-05 20:53:22,778 INFO uvicorn.error Waiting for application startup. +2026-09-05 20:53:22,779 INFO uvicorn.error Application startup complete. +2026-09-05 20:53:34,370 INFO watchfiles.main 3 changes detected +2026-09-05 20:53:38,765 INFO watchfiles.main 3 changes detected +2026-09-05 20:53:50,426 INFO presidio-analyzer Using device of type: cpu +2026-09-05 20:53:51,168 INFO watchfiles.main 3 changes detected +2026-09-05 20:53:51,201 INFO guardrails.execution request=0fe7cbdf-ae5c-4b6f-8f38-2b3cc8307603 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:53:51,202 INFO guardrails.execution request=0fe7cbdf-ae5c-4b6f-8f38-2b3cc8307603 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:53:51,205 INFO guardrails.execution request=0fe7cbdf-ae5c-4b6f-8f38-2b3cc8307603 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:53:51.201778 end=2026-09-05T20:53:51.201883 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:53:51,209 INFO http_request_logger POST /api/v1/guardrails/ - 200 [37.08ms] +2026-09-05 20:53:51,223 INFO guardrails.execution request=45b19610-b12c-49d6-a402-f524372eb9e2 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-05 20:53:51,224 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 45b19610-b12c-49d6-a402-f524372eb9e2: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-05 20:53:51,228 INFO guardrails.execution request=45b19610-b12c-49d6-a402-f524372eb9e2 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-05T20:53:51.224331 end=2026-09-05T20:53:51.224401 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-05 20:53:51,230 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.91ms] +2026-09-05 20:53:51,244 INFO guardrails.execution request=95c50fef-c994-4d73-9105-bacd6348d491 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='' +2026-09-05 20:53:51,245 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 95c50fef-c994-4d73-9105-bacd6348d491: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +2026-09-05 20:53:51,247 INFO guardrails.execution request=95c50fef-c994-4d73-9105-bacd6348d491 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-05T20:53:51.245029 end=2026-09-05T20:53:51.245081 duration_ms=0 input='' output=None +2026-09-05 20:53:51,249 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.08ms] +2026-09-05 20:53:51,264 INFO guardrails.execution request=1ce67b3f-8dbd-45e1-9b82-9c0127bc8818 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:53:51,265 INFO guardrails.execution request=1ce67b3f-8dbd-45e1-9b82-9c0127bc8818 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:53:51,267 INFO guardrails.execution request=1ce67b3f-8dbd-45e1-9b82-9c0127bc8818 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:53:51.264747 end=2026-09-05T20:53:51.264815 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:53:51,269 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.63ms] +2026-09-05 20:53:51,283 INFO guardrails.execution request=8282a101-86f5-4e3a-9476-8123447df398 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-05 20:53:51,284 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 8282a101-86f5-4e3a-9476-8123447df398: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-05 20:53:51,287 INFO guardrails.execution request=8282a101-86f5-4e3a-9476-8123447df398 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-05T20:53:51.283863 end=2026-09-05T20:53:51.283939 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-05 20:53:51,289 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.98ms] +2026-09-05 20:53:51,303 INFO guardrails.execution request=0818c095-c0ab-47cf-b857-d511e89addde starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-05 20:53:51,305 INFO guardrails.execution request=0818c095-c0ab-47cf-b857-d511e89addde guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-05 20:53:51,306 INFO guardrails.execution request=0818c095-c0ab-47cf-b857-d511e89addde step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:53:51.304266 end=2026-09-05T20:53:51.304335 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-05 20:53:51,308 INFO guardrails.execution request=0818c095-c0ab-47cf-b857-d511e89addde step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:51.304340 end=2026-09-05T20:53:51.304439 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-05 20:53:51,310 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.22ms] +2026-09-05 20:53:51,323 INFO guardrails.execution request=dcbae32b-6eee-437e-9aa5-8eec4c6fc14b starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Diabetes symptoms include fuck fatigue.' +2026-09-05 20:53:51,327 INFO guardrails.execution request=dcbae32b-6eee-437e-9aa5-8eec4c6fc14b guardrails execution finished (passed=True) output='' +2026-09-05 20:53:51,329 INFO guardrails.execution request=dcbae32b-6eee-437e-9aa5-8eec4c6fc14b step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:53:51.325507 end=2026-09-05T20:53:51.325569 duration_ms=0 input='Diabetes symptoms include fuck fatigue.' output='Diabetes symptoms include fuck fatigue.' +2026-09-05 20:53:51,330 INFO guardrails.execution request=dcbae32b-6eee-437e-9aa5-8eec4c6fc14b step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:51.325574 end=2026-09-05T20:53:51.326975 duration_ms=1 input='Diabetes symptoms include fuck fatigue.' output='' +2026-09-05 20:53:51,333 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.68ms] +2026-09-05 20:53:51,353 INFO guardrails.execution request=1026ea1e-dc9b-44a3-ad24-133ed066e2a1 starting guardrails execution (validators=['answer_relevance_custom_llm', 'uli_slur_match']) input='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-05 20:53:51,357 INFO guardrails.execution request=1026ea1e-dc9b-44a3-ad24-133ed066e2a1 guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-05 20:53:51,359 INFO guardrails.execution request=1026ea1e-dc9b-44a3-ad24-133ed066e2a1 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:53:51.354358 end=2026-09-05T20:53:51.354429 duration_ms=0 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-05 20:53:51,361 INFO guardrails.execution request=1026ea1e-dc9b-44a3-ad24-133ed066e2a1 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:51.354433 end=2026-09-05T20:53:51.356629 duration_ms=2 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-05 20:53:51,363 INFO http_request_logger POST /api/v1/guardrails/ - 200 [26.98ms] +2026-09-05 20:53:51,378 INFO guardrails.execution request=4f6180fb-5a10-4581-9a34-40643a7ecac0 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-05 20:53:51,379 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 4f6180fb-5a10-4581-9a34-40643a7ecac0: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +2026-09-05 20:53:51,383 INFO guardrails.execution request=4f6180fb-5a10-4581-9a34-40643a7ecac0 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:53:51.378489 end=2026-09-05T20:53:51.378555 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-05 20:53:51,384 INFO guardrails.execution request=4f6180fb-5a10-4581-9a34-40643a7ecac0 step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:51.378559 end=2026-09-05T20:53:51.379478 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output=None +2026-09-05 20:53:51,386 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.55ms] +2026-09-05 20:53:51,400 INFO guardrails.execution request=7e755693-32de-4e10-b8a4-6539e78138bd starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list', 'profanity_free', 'uli_slur_match', 'gender_assumption_bias']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:53:51,404 INFO guardrails.execution request=7e755693-32de-4e10-b8a4-6539e78138bd guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:53:51,408 INFO guardrails.execution request=7e755693-32de-4e10-b8a4-6539e78138bd step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:53:51.401297 end=2026-09-05T20:53:51.401365 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:53:51,412 INFO guardrails.execution request=7e755693-32de-4e10-b8a4-6539e78138bd step=2/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-05T20:53:51.401370 end=2026-09-05T20:53:51.401427 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:53:51,414 INFO guardrails.execution request=7e755693-32de-4e10-b8a4-6539e78138bd step=3/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-05T20:53:51.401431 end=2026-09-05T20:53:51.402304 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:53:51,416 INFO guardrails.execution request=7e755693-32de-4e10-b8a4-6539e78138bd step=4/5 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-05T20:53:51.402308 end=2026-09-05T20:53:51.402860 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:53:51,418 INFO guardrails.execution request=7e755693-32de-4e10-b8a4-6539e78138bd step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.PASS start=2026-09-05T20:53:51.402864 end=2026-09-05T20:53:51.403480 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-05 20:53:51,421 INFO http_request_logger POST /api/v1/guardrails/ - 200 [31.39ms] +2026-09-05 20:53:51,439 INFO guardrails.execution request=5406e87d-1422-47cc-9752-72dee47fcb78 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free', 'uli_slur_match', 'ban_list', 'gender_assumption_bias']) input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-05 20:53:51,442 INFO guardrails.execution request=5406e87d-1422-47cc-9752-72dee47fcb78 guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-05 20:53:51,444 INFO guardrails.execution request=5406e87d-1422-47cc-9752-72dee47fcb78 step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-05T20:53:51.440020 end=2026-09-05T20:53:51.440084 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-05 20:53:51,445 INFO guardrails.execution request=5406e87d-1422-47cc-9752-72dee47fcb78 step=2/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-05T20:53:51.440088 end=2026-09-05T20:53:51.440945 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-05 20:53:51,447 INFO guardrails.execution request=5406e87d-1422-47cc-9752-72dee47fcb78 step=3/5 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:51.440950 end=2026-09-05T20:53:51.441434 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-05 20:53:51,448 INFO guardrails.execution request=5406e87d-1422-47cc-9752-72dee47fcb78 step=4/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-05T20:53:51.441440 end=2026-09-05T20:53:51.441503 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-05 20:53:51,449 INFO guardrails.execution request=5406e87d-1422-47cc-9752-72dee47fcb78 step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:51.441506 end=2026-09-05T20:53:51.442098 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-05 20:53:51,452 INFO http_request_logger POST /api/v1/guardrails/ - 200 [27.41ms] +2026-09-05 20:53:51,470 INFO app.crud.ban_list created ban list id=f682b128-686a-47cc-a1ac-ab36c9bb8e1a org=1 project=1 +2026-09-05 20:53:51,471 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [6.16ms] +2026-09-05 20:53:51,475 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.87ms] +2026-09-05 20:53:51,480 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.96ms] +2026-09-05 20:53:51,486 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [2.03ms] +2026-09-05 20:53:51,492 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [1.04ms] +2026-09-05 20:53:51,497 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.93ms] +2026-09-05 20:53:51,507 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.71ms] +2026-09-05 20:53:51,515 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.14ms] +2026-09-05 20:53:51,519 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.66ms] +2026-09-05 20:53:51,527 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [3.00ms] +2026-09-05 20:53:51,536 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.65ms] +2026-09-05 20:53:51,539 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.13ms] +2026-09-05 20:53:51,544 INFO app.crud.ban_list created ban list id=83d7ee45-199e-4842-9465-3395d1a04724 org=1 project=1 +2026-09-05 20:53:51,545 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [3.13ms] +2026-09-05 20:53:51,545 INFO http_request_logger GET /api/v1/guardrails/ban_lists/83d7ee45-199e-4842-9465-3395d1a04724/ - 307 [0.10ms] +2026-09-05 20:53:51,548 INFO http_request_logger GET /api/v1/guardrails/ban_lists/83d7ee45-199e-4842-9465-3395d1a04724 - 200 [2.56ms] +2026-09-05 20:53:51,556 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.61ms] +2026-09-05 20:53:51,556 INFO http_request_logger GET /api/v1/guardrails/ban_lists/8d3fe111-cea2-4872-b6e2-1e6df6d9f06e/ - 307 [0.09ms] +2026-09-05 20:53:51,558 INFO http_request_logger GET /api/v1/guardrails/ban_lists/8d3fe111-cea2-4872-b6e2-1e6df6d9f06e - 200 [1.31ms] +2026-09-05 20:53:51,561 INFO http_request_logger GET /api/v1/guardrails/ban_lists/9def06e6-97c6-479d-adaa-30ad42b99c10/ - 307 [0.08ms] +2026-09-05 20:53:51,563 INFO http_request_logger GET /api/v1/guardrails/ban_lists/9def06e6-97c6-479d-adaa-30ad42b99c10 - 404 [1.48ms] +2026-09-05 20:53:51,573 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.95ms] +2026-09-05 20:53:51,573 INFO http_request_logger GET /api/v1/guardrails/ban_lists/5ae17f6f-32eb-4abf-8cef-289d8c2a2d28/ - 307 [0.09ms] +2026-09-05 20:53:51,575 INFO http_request_logger GET /api/v1/guardrails/ban_lists/5ae17f6f-32eb-4abf-8cef-289d8c2a2d28 - 403 [1.32ms] +2026-09-05 20:53:51,582 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.20ms] +2026-09-05 20:53:51,582 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/c5025211-cdc1-4dc5-b22e-9240c10ed5a0/ - 307 [0.10ms] +2026-09-05 20:53:51,589 INFO app.crud.ban_list updated ban list id=c5025211-cdc1-4dc5-b22e-9240c10ed5a0 +2026-09-05 20:53:51,589 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/c5025211-cdc1-4dc5-b22e-9240c10ed5a0 - 200 [6.53ms] +2026-09-05 20:53:51,595 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.56ms] +2026-09-05 20:53:51,596 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/ff7c0ed0-da5c-4df7-b346-0824be13ca6b/ - 307 [0.08ms] +2026-09-05 20:53:51,599 INFO app.crud.ban_list updated ban list id=ff7c0ed0-da5c-4df7-b346-0824be13ca6b +2026-09-05 20:53:51,599 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/ff7c0ed0-da5c-4df7-b346-0824be13ca6b - 200 [2.83ms] +2026-09-05 20:53:51,602 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/49a5af86-f35c-4569-8334-6647ce32d7ca/ - 307 [0.08ms] +2026-09-05 20:53:51,604 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/49a5af86-f35c-4569-8334-6647ce32d7ca - 404 [1.48ms] +2026-09-05 20:53:51,612 INFO app.crud.ban_list created ban list id=f86dedd7-83c4-4ec5-aed7-1cf63515d95c org=1 project=1 +2026-09-05 20:53:51,612 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [4.38ms] +2026-09-05 20:53:51,613 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/f86dedd7-83c4-4ec5-aed7-1cf63515d95c/ - 307 [0.09ms] +2026-09-05 20:53:51,615 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/f86dedd7-83c4-4ec5-aed7-1cf63515d95c - 403 [2.23ms] +2026-09-05 20:53:51,626 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.75ms] +2026-09-05 20:53:51,627 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/c9ef7098-f010-4678-9999-f01d18de53da/ - 307 [0.09ms] +2026-09-05 20:53:51,630 INFO app.crud.ban_list deleted ban list id=c9ef7098-f010-4678-9999-f01d18de53da +2026-09-05 20:53:51,631 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/c9ef7098-f010-4678-9999-f01d18de53da - 200 [3.36ms] +2026-09-05 20:53:51,636 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/05dd2b8f-1a9a-42b4-8a71-7ea9ae2ce26d/ - 307 [0.09ms] +2026-09-05 20:53:51,640 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/05dd2b8f-1a9a-42b4-8a71-7ea9ae2ce26d - 404 [3.04ms] +2026-09-05 20:53:51,650 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [3.92ms] +2026-09-05 20:53:51,650 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/835f7f0b-f2c3-4add-aea7-a2713daaf39f/ - 307 [0.09ms] +2026-09-05 20:53:51,654 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/835f7f0b-f2c3-4add-aea7-a2713daaf39f - 403 [3.11ms] +2026-09-05 20:53:51,661 INFO app.crud.ban_list created ban list id=6a669437-e040-4ac4-92b8-1c6666c7602d org=1 project=1 +2026-09-05 20:53:51,662 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [2.76ms] +2026-09-05 20:53:51,662 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/6a669437-e040-4ac4-92b8-1c6666c7602d/ - 307 [0.08ms] +2026-09-05 20:53:51,664 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/6a669437-e040-4ac4-92b8-1c6666c7602d - 403 [1.24ms] +2026-09-05 20:53:51,744 INFO guardrails.execution request=9ac52047-0f43-4b09-ace0-8d5c5081def3 starting guardrails execution (validators=[]) input='hello world' +2026-09-05 20:53:51,744 INFO guardrails.execution request=9ac52047-0f43-4b09-ace0-8d5c5081def3 guardrails execution finished (passed=True) output='clean text' +2026-09-05 20:53:51,746 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.40ms] +2026-09-05 20:53:51,751 INFO guardrails.execution request=e64d307a-7e6b-4da9-8651-7996da08c182 starting guardrails execution (validators=[]) input='my phone is 999999' +2026-09-05 20:53:51,751 INFO guardrails.execution request=e64d307a-7e6b-4da9-8651-7996da08c182 guardrails execution finished (passed=False) output=None +2026-09-05 20:53:51,752 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3.50ms] +2026-09-05 20:53:51,757 INFO guardrails.execution request=3e74775c-e23b-4929-be20-9ede8412d3f5 starting guardrails execution (validators=[]) input='tell me about buildings' +2026-09-05 20:53:51,758 INFO guardrails.execution request=3e74775c-e23b-4929-be20-9ede8412d3f5 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Input is outside the allowed topic scope.' +2026-09-05 20:53:51,759 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3.88ms] +2026-09-05 20:53:51,767 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log d330cf3e-886e-4bb4-8328-a27a5058a012: Invalid validator config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid validator config +2026-09-05 20:53:51,769 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.53ms] +2026-09-05 20:53:51,781 INFO guardrails.execution request=6a745f9b-73d5-408a-bf9a-dfac8aa060f0 starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-05 20:53:51,782 INFO guardrails.execution request=6a745f9b-73d5-408a-bf9a-dfac8aa060f0 guardrails execution finished (passed=True) output='this contains b' +2026-09-05 20:53:51,785 INFO guardrails.execution request=6a745f9b-73d5-408a-bf9a-dfac8aa060f0 step=1/1 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:51.782030 end=2026-09-05T20:53:51.782127 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-05 20:53:51,788 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.94ms] +2026-09-05 20:53:51,802 INFO guardrails.execution request=03d2b48b-9ce6-413a-bc4d-5ed65ad61cfe starting guardrails execution (validators=['ban_list']) input='this is clean' +2026-09-05 20:53:51,803 INFO guardrails.execution request=03d2b48b-9ce6-413a-bc4d-5ed65ad61cfe guardrails execution finished (passed=True) output='this is clean' +2026-09-05 20:53:51,805 INFO guardrails.execution request=03d2b48b-9ce6-413a-bc4d-5ed65ad61cfe step=1/1 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-05T20:53:51.802328 end=2026-09-05T20:53:51.802388 duration_ms=0 input='this is clean' output='this is clean' +2026-09-05 20:53:51,808 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.12ms] +2026-09-05 20:53:51,827 INFO guardrails.execution request=4da2b271-02a2-4e2e-a47d-4c775211a13f starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-05 20:53:51,828 INFO guardrails.execution request=4da2b271-02a2-4e2e-a47d-4c775211a13f guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR].' +2026-09-05 20:53:51,831 INFO guardrails.execution request=4da2b271-02a2-4e2e-a47d-4c775211a13f step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:51.827890 end=2026-09-05T20:53:51.828168 duration_ms=0 input='This sentence contains chakki.' output='this sentence contains [REDACTED_SLUR].' +2026-09-05 20:53:51,835 INFO http_request_logger POST /api/v1/guardrails/ - 200 [23.00ms] +2026-09-05 20:53:51,850 INFO guardrails.execution request=f7a2e7fa-cf00-41a4-a749-fd584b44cba7 starting guardrails execution (validators=['uli_slur_match']) input='This is a completely safe sentence' +2026-09-05 20:53:51,851 INFO guardrails.execution request=f7a2e7fa-cf00-41a4-a749-fd584b44cba7 guardrails execution finished (passed=True) output='This is a completely safe sentence' +2026-09-05 20:53:51,854 INFO guardrails.execution request=f7a2e7fa-cf00-41a4-a749-fd584b44cba7 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-05T20:53:51.850894 end=2026-09-05T20:53:51.851147 duration_ms=0 input='This is a completely safe sentence' output='This is a completely safe sentence' +2026-09-05 20:53:51,858 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.47ms] +2026-09-05 20:53:51,873 INFO guardrails.execution request=d62da418-3734-4a26-91b3-550eb2cb9e5c starting guardrails execution (validators=['uli_slur_match', 'ban_list']) input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' +2026-09-05 20:53:51,875 INFO guardrails.execution request=d62da418-3734-4a26-91b3-550eb2cb9e5c guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-05 20:53:51,879 INFO guardrails.execution request=d62da418-3734-4a26-91b3-550eb2cb9e5c step=1/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:51.874246 end=2026-09-05T20:53:51.874712 duration_ms=0 input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' +2026-09-05 20:53:51,881 INFO guardrails.execution request=d62da418-3734-4a26-91b3-550eb2cb9e5c step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:51.874718 end=2026-09-05T20:53:51.874798 duration_ms=0 input='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-05 20:53:51,885 INFO http_request_logger POST /api/v1/guardrails/ - 200 [22.33ms] +2026-09-05 20:53:51,892 INFO http_request_logger POST /api/v1/guardrails/ - 422 [0.89ms] +2026-09-05 20:53:51,908 INFO guardrails.execution request=17f01c9f-f82d-42d7-8209-950e821a2b82 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-05 20:53:51,909 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 17f01c9f-f82d-42d7-8209-950e821a2b82: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-05 20:53:51,912 INFO guardrails.execution request=17f01c9f-f82d-42d7-8209-950e821a2b82 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:51.908776 end=2026-09-05T20:53:51.909047 duration_ms=0 input='This sentence contains chakki.' output=None +2026-09-05 20:53:51,915 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.22ms] +2026-09-05 20:53:51,933 INFO guardrails.execution request=177ab67e-175a-4ef8-a9be-635377ffe2b4 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-05 20:53:51,935 INFO guardrails.execution request=177ab67e-175a-4ef8-a9be-635377ffe2b4 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-05 20:53:51,938 INFO guardrails.execution request=177ab67e-175a-4ef8-a9be-635377ffe2b4 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:51.934039 end=2026-09-05T20:53:51.934332 duration_ms=0 input='This sentence contains chakki.' output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-05 20:53:51,942 INFO http_request_logger POST /api/v1/guardrails/ - 200 [22.10ms] +2026-09-05 20:53:51,957 INFO guardrails.execution request=99840c94-3650-4436-b364-7a8563ea63a5 starting guardrails execution (validators=['profanity_free']) input='This is a damn fucking mess.' +2026-09-05 20:53:51,959 INFO guardrails.execution request=99840c94-3650-4436-b364-7a8563ea63a5 guardrails execution finished (passed=True) output='' +2026-09-05 20:53:51,963 INFO guardrails.execution request=99840c94-3650-4436-b364-7a8563ea63a5 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:51.957844 end=2026-09-05T20:53:51.958892 duration_ms=1 input='This is a damn fucking mess.' output='' +2026-09-05 20:53:51,966 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.11ms] +2026-09-05 20:53:51,979 INFO guardrails.execution request=378ae8af-39fd-488e-a737-26ee62d7b125 starting guardrails execution (validators=['profanity_free']) input='This is a completely clean sentence.' +2026-09-05 20:53:51,981 INFO guardrails.execution request=378ae8af-39fd-488e-a737-26ee62d7b125 guardrails execution finished (passed=True) output='This is a completely clean sentence.' +2026-09-05 20:53:51,984 INFO guardrails.execution request=378ae8af-39fd-488e-a737-26ee62d7b125 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-05T20:53:51.979480 end=2026-09-05T20:53:51.980347 duration_ms=0 input='This is a completely clean sentence.' output='This is a completely clean sentence.' +2026-09-05 20:53:51,987 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.24ms] +2026-09-05 20:53:52,002 INFO guardrails.execution request=1f1527eb-d96e-4469-b049-c6613ac7ef40 starting guardrails execution (validators=['profanity_free']) input='What the fuck is going on?' +2026-09-05 20:53:52,004 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 1f1527eb-d96e-4469-b049-c6613ac7ef40: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +2026-09-05 20:53:52,007 INFO guardrails.execution request=1f1527eb-d96e-4469-b049-c6613ac7ef40 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:52.003166 end=2026-09-05T20:53:52.004021 duration_ms=0 input='What the fuck is going on?' output=None +2026-09-05 20:53:52,009 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.49ms] +2026-09-05 20:53:52,026 INFO guardrails.execution request=5f29e875-c4ee-44f3-94a2-4491d4e61178 starting guardrails execution (validators=['profanity_free']) input='This is absolute bullshit.' +2026-09-05 20:53:52,028 INFO guardrails.execution request=5f29e875-c4ee-44f3-94a2-4491d4e61178 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-05 20:53:52,032 INFO guardrails.execution request=5f29e875-c4ee-44f3-94a2-4491d4e61178 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:52.026505 end=2026-09-05T20:53:52.027312 duration_ms=0 input='This is absolute bullshit.' output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-05 20:53:52,037 INFO http_request_logger POST /api/v1/guardrails/ - 200 [23.31ms] +2026-09-05 20:53:52,045 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 313385d6-4141-4495-a7aa-3be139b8e974: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-05 20:53:52,049 INFO http_request_logger POST /api/v1/guardrails/ - 200 [7.79ms] +2026-09-05 20:53:52,834 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-05 20:53:54,877 INFO guardrails.execution request=1553f0f0-1b60-4242-ba26-18745501afff starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-05 20:53:54,975 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 1553f0f0-1b60-4242-ba26-18745501afff: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-05 20:53:54,980 INFO guardrails.execution request=1553f0f0-1b60-4242-ba26-18745501afff step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:54.878690 end=2026-09-05T20:53:54.975369 duration_ms=96 input='She slowly undressed and they had explicit sex.' output=None +2026-09-05 20:53:54,983 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2929.85ms] +2026-09-05 20:53:57,346 INFO guardrails.execution request=7db556fd-2640-4653-8c52-c8ca27d9a8f0 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-05 20:53:57,361 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 7db556fd-2640-4653-8c52-c8ca27d9a8f0: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-05 20:53:57,365 INFO guardrails.execution request=7db556fd-2640-4653-8c52-c8ca27d9a8f0 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:57.347431 end=2026-09-05T20:53:57.360969 duration_ms=13 input='She slowly undressed and they had explicit sex.' output=None +2026-09-05 20:53:57,368 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2379.69ms] +2026-09-05 20:53:59,604 INFO guardrails.execution request=d4379c61-8ab8-4a5f-b5e7-2090a2f10403 starting guardrails execution (validators=['nsfw_text']) input='Explicit sexual content goes here.' +2026-09-05 20:53:59,630 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log d4379c61-8ab8-4a5f-b5e7-2090a2f10403: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +2026-09-05 20:53:59,638 INFO guardrails.execution request=d4379c61-8ab8-4a5f-b5e7-2090a2f10403 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:59.605103 end=2026-09-05T20:53:59.630440 duration_ms=25 input='Explicit sexual content goes here.' output=None +2026-09-05 20:53:59,643 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2269.46ms] +2026-09-05 20:53:59,668 INFO guardrails.execution request=76205860-e099-41d0-b01d-3a8447efc8b7 starting guardrails execution (validators=['profanity_free', 'uli_slur_match']) input='This fucking chakki should leave.' +2026-09-05 20:53:59,672 INFO guardrails.execution request=76205860-e099-41d0-b01d-3a8447efc8b7 guardrails execution finished (passed=True) output='' +2026-09-05 20:53:59,676 INFO guardrails.execution request=76205860-e099-41d0-b01d-3a8447efc8b7 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:53:59.669405 end=2026-09-05T20:53:59.670845 duration_ms=1 input='This fucking chakki should leave.' output='' +2026-09-05 20:53:59,680 INFO guardrails.execution request=76205860-e099-41d0-b01d-3a8447efc8b7 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-05T20:53:59.670859 end=2026-09-05T20:53:59.671042 duration_ms=0 input='' output='' +2026-09-05 20:53:59,685 INFO http_request_logger POST /api/v1/guardrails/ - 200 [34.01ms] +2026-09-05 20:53:59,694 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log fa3da7bf-9796-4f3f-87d4-f3d485e0bd2b: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-05 20:53:59,696 INFO http_request_logger POST /api/v1/guardrails/ - 200 [7.03ms] +2026-09-05 20:54:01,984 INFO guardrails.execution request=33bb52cf-cb71-4f13-87c1-22f8167d8619 starting guardrails execution (validators=['profanity_free', 'nsfw_text']) input='What the fuck, this is explicit adult sexual content.' +2026-09-05 20:54:01,987 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 33bb52cf-cb71-4f13-87c1-22f8167d8619: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +2026-09-05 20:54:02,008 INFO guardrails.execution request=33bb52cf-cb71-4f13-87c1-22f8167d8619 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-05T20:54:01.985570 end=2026-09-05T20:54:01.987267 duration_ms=1 input='What the fuck, this is explicit adult sexual content.' output=None +2026-09-05 20:54:02,013 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2313.56ms] +2026-09-05 20:54:04,576 INFO guardrails.execution request=83a9e7dc-5c89-48e9-9ea6-5a097256eb3e starting guardrails execution (validators=['uli_slur_match', 'nsfw_text']) input='This chakki has explicit sexual content.' +2026-09-05 20:54:04,578 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 83a9e7dc-5c89-48e9-9ea6-5a097256eb3e: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-05 20:54:04,585 INFO guardrails.execution request=83a9e7dc-5c89-48e9-9ea6-5a097256eb3e step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-05T20:54:04.577453 end=2026-09-05T20:54:04.578419 duration_ms=0 input='This chakki has explicit sexual content.' output=None +2026-09-05 20:54:04,589 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2569.30ms] +2026-09-05 20:54:04,605 INFO guardrails.execution request=531b6022-7363-4f9d-9463-956787e557ba starting guardrails execution (validators=['profanity_free', 'ban_list']) input='Tell me about renewable energy sources.' +2026-09-05 20:54:04,607 INFO guardrails.execution request=531b6022-7363-4f9d-9463-956787e557ba guardrails execution finished (passed=True) output='Tell me about renewable energy sources.' +2026-09-05 20:54:04,610 INFO guardrails.execution request=531b6022-7363-4f9d-9463-956787e557ba step=1/2 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-05T20:54:04.605689 end=2026-09-05T20:54:04.606738 duration_ms=1 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-05 20:54:04,613 INFO guardrails.execution request=531b6022-7363-4f9d-9463-956787e557ba step=2/2 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-05T20:54:04.606752 end=2026-09-05T20:54:04.606867 duration_ms=0 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-05 20:54:04,617 INFO http_request_logger POST /api/v1/guardrails/ - 200 [23.34ms] +2026-09-05 20:54:04,644 INFO guardrails.execution request=32576dd9-aa50-4fbb-a325-f04a844d80e4 starting guardrails execution (validators=['uli_slur_match', 'profanity_free', 'ban_list']) input='What are some healthy breakfast options?' +2026-09-05 20:54:04,647 INFO guardrails.execution request=32576dd9-aa50-4fbb-a325-f04a844d80e4 guardrails execution finished (passed=True) output='What are some healthy breakfast options?' +2026-09-05 20:54:04,651 INFO guardrails.execution request=32576dd9-aa50-4fbb-a325-f04a844d80e4 step=1/3 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-05T20:54:04.644914 end=2026-09-05T20:54:04.645275 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-05 20:54:04,654 INFO guardrails.execution request=32576dd9-aa50-4fbb-a325-f04a844d80e4 step=2/3 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-05T20:54:04.645280 end=2026-09-05T20:54:04.646374 duration_ms=1 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-05 20:54:04,657 INFO guardrails.execution request=32576dd9-aa50-4fbb-a325-f04a844d80e4 step=3/3 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-05T20:54:04.646379 end=2026-09-05T20:54:04.646447 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-05 20:54:04,661 INFO http_request_logger POST /api/v1/guardrails/ - 200 [39.11ms] +2026-09-05 20:54:04,677 INFO guardrails.execution request=3413e423-0aee-42f2-a8ba-b7410b676738 starting guardrails execution (validators=['ban_list', 'uli_slur_match']) input='this contains badword' +2026-09-05 20:54:04,678 INFO guardrails.execution request=3413e423-0aee-42f2-a8ba-b7410b676738 guardrails execution finished (passed=True) output='this contains b' +2026-09-05 20:54:04,681 INFO guardrails.execution request=3413e423-0aee-42f2-a8ba-b7410b676738 step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-05T20:54:04.677601 end=2026-09-05T20:54:04.677714 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-05 20:54:04,683 INFO guardrails.execution request=3413e423-0aee-42f2-a8ba-b7410b676738 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-05T20:54:04.677720 end=2026-09-05T20:54:04.677910 duration_ms=0 input='this contains b' output='this contains b' +2026-09-05 20:54:04,687 INFO http_request_logger POST /api/v1/guardrails/ - 200 [21.79ms] +2026-09-05 20:54:04,701 ERROR app.api.routes.guardrails [run_guardrails] config resolution failed for request_log 714ef337-1d9f-494b-82da-55de53e9d213: 404: Ban list not found +2026-09-05 20:54:04,704 INFO http_request_logger POST /api/v1/guardrails/ - 404 [7.00ms] +2026-09-05 20:54:04,711 INFO guardrails.execution request=de8ff63d-bfb8-4cf9-a5e5-707c72e2629b starting guardrails execution (validators=['ban_list']) input='hello' +2026-09-05 20:54:04,712 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log de8ff63d-bfb8-4cf9-a5e5-707c72e2629b: boom +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 360, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +RuntimeError: boom +2026-09-05 20:54:04,713 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.48ms] +2026-09-05 20:54:04,718 WARNING app.api.routes.guardrails [run_guardrails] invalid request_id 'not-a-uuid' (org=1 project=1), no request log written +2026-09-05 20:54:04,718 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1.11ms] +2026-09-05 20:54:04,729 INFO app.crud.llm_prompt_config created llm prompt config id=06d319b6-1017-43e3-bbef-831e74f334ad org=1 project=1 +2026-09-05 20:54:04,730 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [8.77ms] +2026-09-05 20:54:04,736 INFO app.crud.llm_prompt_config created llm prompt config id=3700cecb-8fea-43d0-900b-8a385951bb7a org=1 project=1 +2026-09-05 20:54:04,737 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.97ms] +2026-09-05 20:54:04,742 INFO app.crud.llm_prompt_config created llm prompt config id=5f04fb80-e9f3-4771-82a0-a5beed8a8542 org=1 project=1 +2026-09-05 20:54:04,743 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.03ms] +2026-09-05 20:54:04,747 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.95ms] +2026-09-05 20:54:04,752 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.87ms] +2026-09-05 20:54:04,756 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.88ms] +2026-09-05 20:54:04,760 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [1.38ms] +2026-09-05 20:54:04,768 INFO app.crud.llm_prompt_config created llm prompt config id=171fe78d-3244-4e95-8d37-1719677893b3 org=1 project=1 +2026-09-05 20:54:04,768 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.19ms] +2026-09-05 20:54:04,772 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.76ms] +2026-09-05 20:54:04,776 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.74ms] +2026-09-05 20:54:04,783 INFO app.crud.llm_prompt_config created llm prompt config id=08cafc17-ba28-458b-adfe-f24fa20b9cce org=1 project=1 +2026-09-05 20:54:04,783 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.68ms] +2026-09-05 20:54:04,786 INFO app.crud.llm_prompt_config created llm prompt config id=b2303b2b-10e7-4de9-9df2-cfb53c58a904 org=1 project=1 +2026-09-05 20:54:04,787 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.42ms] +2026-09-05 20:54:04,790 INFO app.crud.llm_prompt_config created llm prompt config id=7c06e000-f1a0-45c1-a08c-1721d65a5247 org=1 project=1 +2026-09-05 20:54:04,791 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.17ms] +2026-09-05 20:54:04,794 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [3.09ms] +2026-09-05 20:54:04,801 INFO app.crud.llm_prompt_config created llm prompt config id=3a0a6a49-9a8a-4b33-bf7a-fe512a394457 org=1 project=1 +2026-09-05 20:54:04,802 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.55ms] +2026-09-05 20:54:04,805 INFO app.crud.llm_prompt_config created llm prompt config id=db3f42c1-99cf-4ba2-b93a-5e00f680bf67 org=1 project=1 +2026-09-05 20:54:04,805 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.27ms] +2026-09-05 20:54:04,809 INFO app.crud.llm_prompt_config created llm prompt config id=56cbfdb7-f47c-4cb4-9422-ac3e70429204 org=1 project=1 +2026-09-05 20:54:04,809 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.42ms] +2026-09-05 20:54:04,813 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [3.29ms] +2026-09-05 20:54:04,820 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.29ms] +2026-09-05 20:54:04,827 INFO app.crud.llm_prompt_config created llm prompt config id=bbf4eeb9-4f32-4229-8088-b24468503989 org=1 project=1 +2026-09-05 20:54:04,827 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.86ms] +2026-09-05 20:54:04,830 INFO app.crud.llm_prompt_config created llm prompt config id=d9aca35a-f05e-4010-9ccf-c6f2b11fccc0 org=1 project=1 +2026-09-05 20:54:04,831 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.09ms] +2026-09-05 20:54:04,834 INFO app.crud.llm_prompt_config created llm prompt config id=44b7205e-4d21-422e-b968-18fb8d831192 org=1 project=1 +2026-09-05 20:54:04,834 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.28ms] +2026-09-05 20:54:04,837 INFO app.crud.llm_prompt_config created llm prompt config id=816be8f5-b1e5-4e88-aefd-1c2b32914cd9 org=1 project=1 +2026-09-05 20:54:04,837 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.49ms] +2026-09-05 20:54:04,840 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.09ms] +2026-09-05 20:54:04,846 INFO app.crud.llm_prompt_config created llm prompt config id=e6306402-f473-4c22-b32e-462ad1580e0f org=1 project=1 +2026-09-05 20:54:04,847 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.77ms] +2026-09-05 20:54:04,849 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.47ms] +2026-09-05 20:54:04,854 INFO app.crud.llm_prompt_config created llm prompt config id=40f044f6-8a82-467c-a89b-f2e8ffa206c5 org=1 project=1 +2026-09-05 20:54:04,855 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.63ms] +2026-09-05 20:54:04,857 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/40f044f6-8a82-467c-a89b-f2e8ffa206c5 - 200 [1.72ms] +2026-09-05 20:54:04,862 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/17c00bf2-60c5-46c3-ae5a-4b1079580edd - 404 [2.24ms] +2026-09-05 20:54:04,870 INFO app.crud.llm_prompt_config created llm prompt config id=6447fb6b-91c7-40a6-bc94-cbb83800e716 org=1 project=1 +2026-09-05 20:54:04,871 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.59ms] +2026-09-05 20:54:04,874 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/6447fb6b-91c7-40a6-bc94-cbb83800e716 - 404 [2.34ms] +2026-09-05 20:54:04,880 INFO app.crud.llm_prompt_config created llm prompt config id=1778615c-bfc3-44ca-a2fa-6b682664f4c5 org=1 project=1 +2026-09-05 20:54:04,881 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.91ms] +2026-09-05 20:54:04,887 INFO app.crud.llm_prompt_config updated llm prompt config id=1778615c-bfc3-44ca-a2fa-6b682664f4c5 +2026-09-05 20:54:04,887 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/1778615c-bfc3-44ca-a2fa-6b682664f4c5 - 200 [6.06ms] +2026-09-05 20:54:04,893 INFO app.crud.llm_prompt_config created llm prompt config id=74d3b9ce-69b6-4de4-94a7-fe3b463aa006 org=1 project=1 +2026-09-05 20:54:04,893 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.56ms] +2026-09-05 20:54:04,896 INFO app.crud.llm_prompt_config updated llm prompt config id=74d3b9ce-69b6-4de4-94a7-fe3b463aa006 +2026-09-05 20:54:04,896 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/74d3b9ce-69b6-4de4-94a7-fe3b463aa006 - 200 [2.73ms] +2026-09-05 20:54:04,901 INFO app.crud.llm_prompt_config created llm prompt config id=21750674-724b-4738-b799-f4308fa3a7e6 org=1 project=1 +2026-09-05 20:54:04,902 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.43ms] +2026-09-05 20:54:04,906 INFO app.crud.llm_prompt_config updated llm prompt config id=21750674-724b-4738-b799-f4308fa3a7e6 +2026-09-05 20:54:04,907 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/21750674-724b-4738-b799-f4308fa3a7e6 - 200 [4.62ms] +2026-09-05 20:54:04,908 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/21750674-724b-4738-b799-f4308fa3a7e6 - 200 [1.34ms] +2026-09-05 20:54:04,913 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/56f90ae5-17e4-484a-9b8a-781928ed47d3 - 404 [1.61ms] +2026-09-05 20:54:04,918 INFO app.crud.llm_prompt_config created llm prompt config id=d3a7bb48-d3c6-4258-b138-4d723780b005 org=1 project=1 +2026-09-05 20:54:04,918 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.54ms] +2026-09-05 20:54:04,920 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/d3a7bb48-d3c6-4258-b138-4d723780b005 - 404 [1.69ms] +2026-09-05 20:54:04,926 INFO app.crud.llm_prompt_config created llm prompt config id=1e7f5c4c-5bdf-462a-82cd-cdeec1918584 org=1 project=1 +2026-09-05 20:54:04,927 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.44ms] +2026-09-05 20:54:04,929 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/1e7f5c4c-5bdf-462a-82cd-cdeec1918584 - 422 [1.40ms] +2026-09-05 20:54:04,934 INFO app.crud.llm_prompt_config created llm prompt config id=45ce161f-0bfe-400e-9f14-5cd938a5adc5 org=1 project=1 +2026-09-05 20:54:04,934 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.78ms] +2026-09-05 20:54:04,936 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/45ce161f-0bfe-400e-9f14-5cd938a5adc5 - 422 [1.36ms] +2026-09-05 20:54:04,943 INFO app.crud.llm_prompt_config created llm prompt config id=ed3d4335-876c-42cd-a692-ed74fbf6ccbf org=1 project=1 +2026-09-05 20:54:04,944 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.44ms] +2026-09-05 20:54:04,946 INFO app.crud.llm_prompt_config updated llm prompt config id=ed3d4335-876c-42cd-a692-ed74fbf6ccbf +2026-09-05 20:54:04,947 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/ed3d4335-876c-42cd-a692-ed74fbf6ccbf - 200 [2.85ms] +2026-09-05 20:54:04,952 INFO app.crud.llm_prompt_config created llm prompt config id=55f77ca3-2692-40c8-9885-cc63782e5e5c org=1 project=1 +2026-09-05 20:54:04,953 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.63ms] +2026-09-05 20:54:04,955 INFO app.crud.llm_prompt_config updated llm prompt config id=55f77ca3-2692-40c8-9885-cc63782e5e5c +2026-09-05 20:54:04,956 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/55f77ca3-2692-40c8-9885-cc63782e5e5c - 200 [2.67ms] +2026-09-05 20:54:04,963 INFO app.crud.llm_prompt_config created llm prompt config id=df265439-9b59-471e-91f7-78e322b8c86b org=1 project=1 +2026-09-05 20:54:04,964 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.96ms] +2026-09-05 20:54:04,966 INFO app.crud.llm_prompt_config deleted llm prompt config id=df265439-9b59-471e-91f7-78e322b8c86b +2026-09-05 20:54:04,966 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/df265439-9b59-471e-91f7-78e322b8c86b - 200 [2.10ms] +2026-09-05 20:54:04,971 INFO app.crud.llm_prompt_config created llm prompt config id=e49268fd-3dde-4970-967a-49a16f498d9c org=1 project=1 +2026-09-05 20:54:04,972 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.66ms] +2026-09-05 20:54:04,974 INFO app.crud.llm_prompt_config deleted llm prompt config id=e49268fd-3dde-4970-967a-49a16f498d9c +2026-09-05 20:54:04,974 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/e49268fd-3dde-4970-967a-49a16f498d9c - 200 [1.87ms] +2026-09-05 20:54:04,976 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.55ms] +2026-09-05 20:54:04,982 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/80fac674-fc70-49b4-a137-a280e9c93839 - 404 [3.08ms] +2026-09-05 20:54:04,991 INFO app.crud.llm_prompt_config created llm prompt config id=ecf25ded-33b9-40c2-8000-8a37084b87ac org=1 project=1 +2026-09-05 20:54:04,991 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [5.53ms] +2026-09-05 20:54:04,993 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/ecf25ded-33b9-40c2-8000-8a37084b87ac - 404 [1.76ms] +2026-09-05 20:54:05,101 INFO guardrails.execution request=468f709a-11bf-4029-99a5-7c7e7bb20ab3 starting guardrails execution (validators=[]) input='hello' +2026-09-05 20:54:05,101 INFO guardrails.execution request=468f709a-11bf-4029-99a5-7c7e7bb20ab3 guardrails execution finished (passed=True) output='clean text' +2026-09-05 20:54:05,103 INFO guardrails.execution request=468f709a-11bf-4029-99a5-7c7e7bb20ab3 starting guardrails execution (validators=[]) input='bad text' +2026-09-05 20:54:05,103 INFO guardrails.execution request=468f709a-11bf-4029-99a5-7c7e7bb20ab3 guardrails execution finished (passed=False) output=None +2026-09-05 20:54:05,105 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 468f709a-11bf-4029-99a5-7c7e7bb20ab3: Invalid config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid config +2026-09-05 20:54:05,108 INFO guardrails.execution request=468f709a-11bf-4029-99a5-7c7e7bb20ab3 starting guardrails execution (validators=[]) input='bad text' +2026-09-05 20:54:05,108 INFO guardrails.execution request=468f709a-11bf-4029-99a5-7c7e7bb20ab3 guardrails execution finished (passed=False) output=None +2026-09-05 20:54:05,111 INFO guardrails.execution request=468f709a-11bf-4029-99a5-7c7e7bb20ab3 starting guardrails execution (validators=[]) input='bad text' +2026-09-05 20:54:05,111 INFO guardrails.execution request=468f709a-11bf-4029-99a5-7c7e7bb20ab3 guardrails execution finished (passed=False) output=None +2026-09-05 20:54:05,137 INFO guardrails.execution request=468f709a-11bf-4029-99a5-7c7e7bb20ab3 starting guardrails execution (validators=[]) input='this is some unsafe content' +2026-09-05 20:54:05,137 INFO guardrails.execution request=468f709a-11bf-4029-99a5-7c7e7bb20ab3 guardrails execution finished (passed=False) output=None +2026-09-05 20:54:05,139 INFO guardrails.execution request=468f709a-11bf-4029-99a5-7c7e7bb20ab3 starting guardrails execution (validators=[]) input='some input text' +2026-09-05 20:54:05,139 INFO guardrails.execution request=468f709a-11bf-4029-99a5-7c7e7bb20ab3 guardrails execution finished (passed=False) output=None +2026-09-05 20:54:05,142 INFO guardrails.execution request=468f709a-11bf-4029-99a5-7c7e7bb20ab3 starting guardrails execution (validators=[]) input='this contains profane words' +2026-09-05 20:54:05,142 INFO guardrails.execution request=468f709a-11bf-4029-99a5-7c7e7bb20ab3 guardrails execution finished (passed=False) output=None +2026-09-05 20:54:05,144 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 468f709a-11bf-4029-99a5-7c7e7bb20ab3: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +2026-09-05 20:54:05,147 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 468f709a-11bf-4029-99a5-7c7e7bb20ab3: Validation failed for field with errors: Profanity detected in: this contains profane words +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 344, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: Profanity detected in: this contains profane words +2026-09-05 20:54:05,166 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-05 20:54:05,168 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-05 20:54:05,171 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-05 20:54:05,185 INFO app.crud.validator_config created validator config id=545860c9-1b6f-4f03-8f1d-6931be50ba5d org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-05 20:54:05,186 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [6.20ms] +2026-09-05 20:54:05,196 INFO app.crud.validator_config created validator config id=7792abab-40bc-4490-8609-77cdccc1a3d0 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-05 20:54:05,196 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [5.89ms] +2026-09-05 20:54:05,199 WARNING app.crud.validator_config create validator config failed: duplicate name (org=1 project=1) +2026-09-05 20:54:05,199 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 400 [2.30ms] +2026-09-05 20:54:05,205 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 422 [1.16ms] +2026-09-05 20:54:05,211 INFO app.crud.validator_config created validator config id=8196733e-0d9f-417c-b309-2b8e4e69912e org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-05 20:54:05,212 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.38ms] +2026-09-05 20:54:05,215 INFO app.crud.validator_config created validator config id=5b3dbc92-3160-4b10-8b4a-a5d77c216c40 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-05 20:54:05,215 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.94ms] +2026-09-05 20:54:05,218 INFO app.crud.validator_config created validator config id=8f26fa50-9d7b-4c8c-9cfa-e4a3a64935db org=1 project=1 type=ValidatorType.PIIRemover +2026-09-05 20:54:05,219 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.06ms] +2026-09-05 20:54:05,221 INFO app.crud.validator_config created validator config id=03117131-c6ce-4c22-bbb8-5f2c6459b177 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-05 20:54:05,222 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.87ms] +2026-09-05 20:54:05,225 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.45ms] +2026-09-05 20:54:05,226 INFO http_request_logger GET /api/v1/guardrails/validators/configs/8196733e-0d9f-417c-b309-2b8e4e69912e/ - 307 [0.15ms] +2026-09-05 20:54:05,228 INFO http_request_logger GET /api/v1/guardrails/validators/configs/8196733e-0d9f-417c-b309-2b8e4e69912e - 200 [1.79ms] +2026-09-05 20:54:05,228 INFO http_request_logger GET /api/v1/guardrails/validators/configs/5b3dbc92-3160-4b10-8b4a-a5d77c216c40/ - 307 [0.11ms] +2026-09-05 20:54:05,230 INFO http_request_logger GET /api/v1/guardrails/validators/configs/5b3dbc92-3160-4b10-8b4a-a5d77c216c40 - 200 [1.72ms] +2026-09-05 20:54:05,231 INFO http_request_logger GET /api/v1/guardrails/validators/configs/8f26fa50-9d7b-4c8c-9cfa-e4a3a64935db/ - 307 [0.14ms] +2026-09-05 20:54:05,233 INFO http_request_logger GET /api/v1/guardrails/validators/configs/8f26fa50-9d7b-4c8c-9cfa-e4a3a64935db - 200 [1.70ms] +2026-09-05 20:54:05,234 INFO http_request_logger GET /api/v1/guardrails/validators/configs/03117131-c6ce-4c22-bbb8-5f2c6459b177/ - 307 [0.13ms] +2026-09-05 20:54:05,236 INFO http_request_logger GET /api/v1/guardrails/validators/configs/03117131-c6ce-4c22-bbb8-5f2c6459b177 - 200 [1.70ms] +2026-09-05 20:54:05,243 INFO app.crud.validator_config created validator config id=fed88e20-6122-469c-809f-f62f73db39dc org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-05 20:54:05,244 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.64ms] +2026-09-05 20:54:05,246 INFO app.crud.validator_config created validator config id=33d9e91a-7398-4a74-9eab-0fc010f46f4b org=1 project=1 type=ValidatorType.PIIRemover +2026-09-05 20:54:05,247 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.65ms] +2026-09-05 20:54:05,249 INFO app.crud.validator_config created validator config id=3bc3acd5-7e81-42e0-a601-ab72e9378f06 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-05 20:54:05,250 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.63ms] +2026-09-05 20:54:05,250 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/fed88e20-6122-469c-809f-f62f73db39dc/ - 307 [0.12ms] +2026-09-05 20:54:05,254 INFO app.crud.validator_config updated validator config id=fed88e20-6122-469c-809f-f62f73db39dc +2026-09-05 20:54:05,255 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/fed88e20-6122-469c-809f-f62f73db39dc - 200 [3.89ms] +2026-09-05 20:54:05,255 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/33d9e91a-7398-4a74-9eab-0fc010f46f4b/ - 307 [0.12ms] +2026-09-05 20:54:05,258 INFO app.crud.validator_config updated validator config id=33d9e91a-7398-4a74-9eab-0fc010f46f4b +2026-09-05 20:54:05,259 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/33d9e91a-7398-4a74-9eab-0fc010f46f4b - 200 [3.29ms] +2026-09-05 20:54:05,259 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/3bc3acd5-7e81-42e0-a601-ab72e9378f06/ - 307 [0.13ms] +2026-09-05 20:54:05,263 INFO app.crud.validator_config updated validator config id=3bc3acd5-7e81-42e0-a601-ab72e9378f06 +2026-09-05 20:54:05,263 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/3bc3acd5-7e81-42e0-a601-ab72e9378f06 - 200 [3.69ms] +2026-09-05 20:54:05,266 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.06ms] +2026-09-05 20:54:05,274 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.02ms] +2026-09-05 20:54:05,283 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.52ms] +2026-09-05 20:54:05,291 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.16ms] +2026-09-05 20:54:05,297 INFO app.crud.validator_config created validator config id=2512be76-8861-49cc-ae27-6422013c39e8 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-05 20:54:05,297 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.26ms] +2026-09-05 20:54:05,300 INFO app.crud.validator_config created validator config id=d1040015-fc84-4d6b-a261-82188e77d77d org=1 project=1 type=ValidatorType.PIIRemover +2026-09-05 20:54:05,300 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.60ms] +2026-09-05 20:54:05,303 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.18ms] +2026-09-05 20:54:05,309 INFO app.crud.validator_config created validator config id=676f2eeb-4516-4688-9513-d8d666922a09 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-05 20:54:05,310 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.01ms] +2026-09-05 20:54:05,313 INFO app.crud.validator_config created validator config id=1a2554d0-ea3f-490c-ac9f-e7a012567745 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-05 20:54:05,313 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.23ms] +2026-09-05 20:54:05,315 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.75ms] +2026-09-05 20:54:05,321 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 422 [1.07ms] +2026-09-05 20:54:05,326 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.76ms] +2026-09-05 20:54:05,332 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.62ms] +2026-09-05 20:54:05,333 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ee6a4821-36cf-450b-acec-eee7ca4e678f/ - 307 [0.09ms] +2026-09-05 20:54:05,335 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ee6a4821-36cf-450b-acec-eee7ca4e678f - 200 [1.35ms] +2026-09-05 20:54:05,338 INFO http_request_logger GET /api/v1/guardrails/validators/configs/f6edaaef-a0d5-4fba-a346-65c9ad76452f/ - 307 [0.09ms] +2026-09-05 20:54:05,339 INFO http_request_logger GET /api/v1/guardrails/validators/configs/f6edaaef-a0d5-4fba-a346-65c9ad76452f - 404 [1.38ms] +2026-09-05 20:54:05,342 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid/ - 307 [0.10ms] +2026-09-05 20:54:05,344 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid - 422 [1.10ms] +2026-09-05 20:54:05,348 INFO app.crud.validator_config created validator config id=0d1671b0-0820-41d2-9192-6b4b2263a395 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-05 20:54:05,349 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.47ms] +2026-09-05 20:54:05,349 INFO http_request_logger GET /api/v1/guardrails/validators/configs/0d1671b0-0820-41d2-9192-6b4b2263a395/ - 307 [0.08ms] +2026-09-05 20:54:05,351 INFO http_request_logger GET /api/v1/guardrails/validators/configs/0d1671b0-0820-41d2-9192-6b4b2263a395 - 404 [1.19ms] +2026-09-05 20:54:05,357 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.78ms] +2026-09-05 20:54:05,357 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/5b4fc3c0-da74-4d48-bb0e-75b87d4c05e0/ - 307 [0.08ms] +2026-09-05 20:54:05,360 INFO app.crud.validator_config updated validator config id=5b4fc3c0-da74-4d48-bb0e-75b87d4c05e0 +2026-09-05 20:54:05,360 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/5b4fc3c0-da74-4d48-bb0e-75b87d4c05e0 - 200 [2.65ms] +2026-09-05 20:54:05,366 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.65ms] +2026-09-05 20:54:05,367 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/8536d03f-910a-4144-9e51-e7da84571671/ - 307 [0.09ms] +2026-09-05 20:54:05,369 INFO app.crud.validator_config updated validator config id=8536d03f-910a-4144-9e51-e7da84571671 +2026-09-05 20:54:05,370 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/8536d03f-910a-4144-9e51-e7da84571671 - 200 [2.50ms] +2026-09-05 20:54:05,372 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/94705e4e-334a-4fd7-b77a-e3ddf0cff969/ - 307 [0.09ms] +2026-09-05 20:54:05,374 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/94705e4e-334a-4fd7-b77a-e3ddf0cff969 - 404 [1.47ms] +2026-09-05 20:54:05,380 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.55ms] +2026-09-05 20:54:05,381 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/6d8210d8-6783-4e86-ae9b-0858fe7e34b0/ - 307 [0.09ms] +2026-09-05 20:54:05,382 INFO app.crud.validator_config deleted validator config id=6d8210d8-6783-4e86-ae9b-0858fe7e34b0 +2026-09-05 20:54:05,383 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/6d8210d8-6783-4e86-ae9b-0858fe7e34b0 - 200 [1.76ms] +2026-09-05 20:54:05,383 INFO http_request_logger GET /api/v1/guardrails/validators/configs/6d8210d8-6783-4e86-ae9b-0858fe7e34b0/ - 307 [0.08ms] +2026-09-05 20:54:05,384 INFO http_request_logger GET /api/v1/guardrails/validators/configs/6d8210d8-6783-4e86-ae9b-0858fe7e34b0 - 404 [1.15ms] +2026-09-05 20:54:05,387 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/140f3f5b-b940-4fdc-bd90-583c408e7a1a/ - 307 [0.20ms] +2026-09-05 20:54:05,389 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/140f3f5b-b940-4fdc-bd90-583c408e7a1a - 404 [1.26ms] +2026-09-05 20:54:05,395 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.65ms] +2026-09-05 20:54:05,395 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/6eef8418-9a70-44a4-9bc6-c4ef3cc0f885/ - 307 [0.09ms] +2026-09-05 20:54:05,397 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/6eef8418-9a70-44a4-9bc6-c4ef3cc0f885 - 404 [1.40ms] +2026-09-05 20:54:05,397 INFO http_request_logger GET /api/v1/guardrails/validators/configs/6eef8418-9a70-44a4-9bc6-c4ef3cc0f885/ - 307 [0.08ms] +2026-09-05 20:54:05,399 INFO http_request_logger GET /api/v1/guardrails/validators/configs/6eef8418-9a70-44a4-9bc6-c4ef3cc0f885 - 200 [1.21ms] +2026-09-05 20:54:05,491 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-05 20:54:05,492 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-05 20:54:05,558 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:54:07,365 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:54:07,377 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:54:08,626 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:54:08,640 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:54:10,070 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:54:10,083 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:54:11,578 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:54:11,589 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:54:12,758 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:54:12,766 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:54:13,931 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:54:13,934 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-05 20:54:15,271 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-05 20:54:15,397 INFO watchfiles.main 4 changes detected +2026-09-05 20:54:19,708 INFO watchfiles.main 6 changes detected +2026-09-05 21:02:32,207 INFO watchfiles.main 3 changes detected +2026-09-05 21:03:17,651 INFO watchfiles.main 3 changes detected +2026-09-06 09:25:19,102 INFO watchfiles.main 3 changes detected +2026-09-06 09:28:12,801 INFO watchfiles.main 3 changes detected +2026-09-06 09:28:16,902 INFO watchfiles.main 3 changes detected +2026-09-06 09:37:32,830 INFO watchfiles.main 2 changes detected +2026-09-08 14:18:24,240 INFO presidio-analyzer Using device of type: cpu +2026-09-08 14:18:25,500 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-08 14:18:25,529 INFO uvicorn.error Will watch for changes in these directories: ['/Users/prajna/Desktop/t4d/kaapi-guardrails/backend'] +2026-09-08 14:18:25,529 ERROR uvicorn.error [Errno 48] Address already in use +2026-09-08 14:19:00,940 INFO presidio-analyzer Using device of type: cpu +2026-09-08 14:19:01,834 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-08 14:19:01,866 INFO uvicorn.error Will watch for changes in these directories: ['/Users/prajna/Desktop/t4d/kaapi-guardrails/backend'] +2026-09-08 14:19:01,867 INFO uvicorn.error Uvicorn running on http://127.0.0.1:8001 (Press CTRL+C to quit) +2026-09-08 14:19:01,867 INFO uvicorn.error Started reloader process [31730] using WatchFiles +2026-09-08 14:19:06,431 INFO presidio-analyzer Using device of type: cpu +2026-09-08 14:19:07,166 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-08 14:19:07,167 INFO uvicorn.error Started server process [31737] +2026-09-08 14:19:07,167 INFO uvicorn.error Waiting for application startup. +2026-09-08 14:19:07,170 INFO uvicorn.error Application startup complete. +2026-09-08 14:21:09,244 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [91.86ms] +2026-09-08 14:21:09,990 INFO presidio-analyzer Created NLP engine: spacy. Loaded models: ['en'] +2026-09-08 14:21:09,990 INFO presidio-analyzer registry not provided, creating default. +2026-09-08 14:21:09,996 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-08 14:21:09,997 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-08 14:21:09,997 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-08 14:21:09,997 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-08 14:21:09,997 INFO presidio-analyzer Loaded recognizer: UsBankRecognizer +2026-09-08 14:21:09,997 INFO presidio-analyzer Loaded recognizer: UsLicenseRecognizer +2026-09-08 14:21:09,997 INFO presidio-analyzer Loaded recognizer: UsItinRecognizer +2026-09-08 14:21:09,997 INFO presidio-analyzer Loaded recognizer: UsPassportRecognizer +2026-09-08 14:21:09,997 INFO presidio-analyzer Loaded recognizer: UsSsnRecognizer +2026-09-08 14:21:09,997 INFO presidio-analyzer Loaded recognizer: NhsRecognizer +2026-09-08 14:21:09,997 INFO presidio-analyzer Loaded recognizer: EsNifRecognizer +2026-09-08 14:21:09,997 INFO presidio-analyzer Loaded recognizer: EsNieRecognizer +2026-09-08 14:21:09,997 INFO presidio-analyzer Loaded recognizer: ItDriverLicenseRecognizer +2026-09-08 14:21:09,997 INFO presidio-analyzer Loaded recognizer: ItFiscalCodeRecognizer +2026-09-08 14:21:09,998 INFO presidio-analyzer Loaded recognizer: ItVatCodeRecognizer +2026-09-08 14:21:09,998 INFO presidio-analyzer Loaded recognizer: ItIdentityCardRecognizer +2026-09-08 14:21:09,998 INFO presidio-analyzer Loaded recognizer: ItPassportRecognizer +2026-09-08 14:21:09,998 INFO presidio-analyzer Loaded recognizer: PlPeselRecognizer +2026-09-08 14:21:09,998 INFO presidio-analyzer Loaded recognizer: CryptoRecognizer +2026-09-08 14:21:09,998 INFO presidio-analyzer Loaded recognizer: DateRecognizer +2026-09-08 14:21:09,998 INFO presidio-analyzer Loaded recognizer: EmailRecognizer +2026-09-08 14:21:09,998 INFO presidio-analyzer Loaded recognizer: IbanRecognizer +2026-09-08 14:21:09,999 INFO presidio-analyzer Loaded recognizer: IpRecognizer +2026-09-08 14:21:09,999 INFO presidio-analyzer Loaded recognizer: MedicalLicenseRecognizer +2026-09-08 14:21:09,999 INFO presidio-analyzer Loaded recognizer: MacAddressRecognizer +2026-09-08 14:21:09,999 INFO presidio-analyzer Loaded recognizer: PhoneRecognizer +2026-09-08 14:21:09,999 INFO presidio-analyzer Loaded recognizer: UrlRecognizer +2026-09-08 14:21:09,999 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: es, registry supported languages: en +2026-09-08 14:21:09,999 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: it, registry supported languages: en +2026-09-08 14:21:10,000 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: pl, registry supported languages: en +2026-09-08 14:21:10,000 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - EsNifRecognizer supported languages: es, registry supported languages: en +2026-09-08 14:21:10,000 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - EsNieRecognizer supported languages: es, registry supported languages: en +2026-09-08 14:21:10,000 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItDriverLicenseRecognizer supported languages: it, registry supported languages: en +2026-09-08 14:21:10,000 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItFiscalCodeRecognizer supported languages: it, registry supported languages: en +2026-09-08 14:21:10,000 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItVatCodeRecognizer supported languages: it, registry supported languages: en +2026-09-08 14:21:10,000 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItIdentityCardRecognizer supported languages: it, registry supported languages: en +2026-09-08 14:21:10,000 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItPassportRecognizer supported languages: it, registry supported languages: en +2026-09-08 14:21:10,000 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - PlPeselRecognizer supported languages: pl, registry supported languages: en +2026-09-08 14:21:10,000 INFO presidio-analyzer Loaded recognizer: SpacyRecognizer +2026-09-08 14:21:10,000 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-08 14:21:10,000 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-08 14:21:10,000 INFO presidio-analyzer Loaded recognizer: InPassportRecognizer +2026-09-08 14:21:10,000 INFO presidio-analyzer Loaded recognizer: InVehicleRegistrationRecognizer +2026-09-08 14:21:10,000 INFO presidio-analyzer Loaded recognizer: InVoterRecognizer +2026-09-08 14:21:10,018 INFO guardrails.execution request=0334d02b-f3ea-4c0b-bb77-6c4975921d90 starting guardrails execution (validators=['pii_remover']) input='Amit Gupta phone number is 919611188278' +2026-09-08 14:21:10,034 WARNING presidio-analyzer Entity CARDINAL is not mapped to a Presidio entity, but keeping anyway. Add to `NerModelConfiguration.labels_to_ignore` to remove. +2026-09-08 14:21:10,090 INFO guardrails.execution request=0334d02b-f3ea-4c0b-bb77-6c4975921d90 guardrails execution finished (passed=True) output=' phone number is ' +2026-09-08 14:21:10,099 INFO guardrails.execution request=0334d02b-f3ea-4c0b-bb77-6c4975921d90 step=1/1 validator=PIIRemover stage=output outcome=Outcome.FAIL start=2026-09-08T14:21:10.020994 end=2026-09-08T14:21:10.090001 duration_ms=69 input='Amit Gupta phone number is 919611188278' output=' phone number is ' +2026-09-08 14:21:10,110 INFO http_request_logger POST /api/v1/guardrails/ - 200 [853.22ms] +2026-09-08 17:48:49,995 INFO watchfiles.main 3 changes detected +2026-09-08 17:48:50,043 WARNING uvicorn.error WatchFiles detected changes in 'app/schemas/guardrail_config.py'. Reloading... +2026-09-08 17:48:50,124 INFO uvicorn.error Shutting down +2026-09-08 17:48:50,232 INFO uvicorn.error Waiting for application shutdown. +2026-09-08 17:48:50,236 INFO uvicorn.error Application shutdown complete. +2026-09-08 17:48:50,237 INFO uvicorn.error Finished server process [31737] +2026-09-08 17:48:50,675 INFO watchfiles.main 1 change detected +2026-09-08 17:48:51,032 INFO watchfiles.main 3 changes detected +2026-09-08 17:48:54,010 INFO watchfiles.main 3 changes detected +2026-09-08 17:48:54,011 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-08 17:48:56,518 INFO presidio-analyzer Using device of type: cpu +2026-09-08 17:48:57,389 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-08 17:48:57,390 INFO uvicorn.error Started server process [35896] +2026-09-08 17:48:57,390 INFO uvicorn.error Waiting for application startup. +2026-09-08 17:48:57,391 INFO uvicorn.error Application startup complete. +2026-09-08 17:48:57,392 INFO uvicorn.error Shutting down +2026-09-08 17:48:57,493 INFO uvicorn.error Waiting for application shutdown. +2026-09-08 17:48:57,493 INFO uvicorn.error Application shutdown complete. +2026-09-08 17:48:57,493 INFO uvicorn.error Finished server process [35896] +2026-09-08 17:48:57,880 INFO watchfiles.main 4 changes detected +2026-09-08 17:49:01,243 INFO watchfiles.main 3 changes detected +2026-09-08 17:49:01,245 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-08 17:49:01,697 INFO presidio-analyzer Using device of type: cpu +2026-09-08 17:49:02,380 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-08 17:49:02,380 INFO uvicorn.error Started server process [35914] +2026-09-08 17:49:02,381 INFO uvicorn.error Waiting for application startup. +2026-09-08 17:49:02,381 INFO uvicorn.error Application startup complete. +2026-09-08 17:49:02,381 INFO uvicorn.error Shutting down +2026-09-08 17:49:02,483 INFO uvicorn.error Waiting for application shutdown. +2026-09-08 17:49:02,483 INFO uvicorn.error Application shutdown complete. +2026-09-08 17:49:02,483 INFO uvicorn.error Finished server process [35914] +2026-09-08 17:49:02,866 INFO watchfiles.main 4 changes detected +2026-09-08 17:49:06,711 INFO presidio-analyzer Using device of type: cpu +2026-09-08 17:49:07,420 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-08 17:49:07,421 INFO uvicorn.error Started server process [35924] +2026-09-08 17:49:07,421 INFO uvicorn.error Waiting for application startup. +2026-09-08 17:49:07,422 INFO uvicorn.error Application startup complete. +2026-09-08 17:49:09,308 INFO watchfiles.main 3 changes detected +2026-09-08 17:49:09,309 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-08 17:49:09,341 INFO uvicorn.error Shutting down +2026-09-08 17:49:09,443 INFO uvicorn.error Waiting for application shutdown. +2026-09-08 17:49:09,446 INFO uvicorn.error Application shutdown complete. +2026-09-08 17:49:09,447 INFO uvicorn.error Finished server process [35924] +2026-09-08 17:49:09,842 INFO watchfiles.main 1 change detected +2026-09-08 17:49:13,425 INFO presidio-analyzer Using device of type: cpu +2026-09-08 17:49:14,010 INFO watchfiles.main 3 changes detected +2026-09-08 17:49:14,300 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-08 17:49:14,301 INFO uvicorn.error Started server process [35935] +2026-09-08 17:49:14,301 INFO uvicorn.error Waiting for application startup. +2026-09-08 17:49:14,302 INFO uvicorn.error Application startup complete. +2026-09-08 17:49:14,369 INFO watchfiles.main 6 changes detected +2026-09-08 17:49:27,831 INFO presidio-analyzer Using device of type: cpu +2026-09-08 17:49:28,664 INFO guardrails.execution request=1420d1f9-c415-4a9e-b8e0-f1a6bd686402 starting guardrails execution (validators=[]) input='hello world' +2026-09-08 17:49:28,664 INFO guardrails.execution request=1420d1f9-c415-4a9e-b8e0-f1a6bd686402 guardrails execution finished (passed=True) output='clean text' +2026-09-08 17:49:28,666 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.63ms] +2026-09-08 17:49:28,673 INFO guardrails.execution request=cc61585d-57db-43cf-bdc6-60f66fac76d7 starting guardrails execution (validators=[]) input='my phone is 999999' +2026-09-08 17:49:28,673 INFO guardrails.execution request=cc61585d-57db-43cf-bdc6-60f66fac76d7 guardrails execution finished (passed=False) output=None +2026-09-08 17:49:28,675 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.34ms] +2026-09-08 17:49:28,681 INFO guardrails.execution request=ccb28745-9b2c-4206-86d5-77473136d98b starting guardrails execution (validators=[]) input='tell me about buildings' +2026-09-08 17:49:28,681 INFO guardrails.execution request=ccb28745-9b2c-4206-86d5-77473136d98b guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Input is outside the allowed topic scope.' +2026-09-08 17:49:28,682 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.24ms] +2026-09-08 17:49:28,688 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log b1d2ae44-5cd1-440f-a060-047bf3557a67: Invalid validator config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 350, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid validator config +2026-09-08 17:49:28,691 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.40ms] +2026-09-08 17:49:28,710 INFO guardrails.execution request=82acdca4-eb1e-47f6-9435-6494af3ff7e4 starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-08 17:49:28,712 INFO guardrails.execution request=82acdca4-eb1e-47f6-9435-6494af3ff7e4 guardrails execution finished (passed=True) output='this contains b' +2026-09-08 17:49:28,714 INFO guardrails.execution request=82acdca4-eb1e-47f6-9435-6494af3ff7e4 step=1/1 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:28.711538 end=2026-09-08T17:49:28.711692 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-08 17:49:28,718 INFO http_request_logger POST /api/v1/guardrails/ - 200 [22.77ms] +2026-09-08 17:49:28,733 INFO guardrails.execution request=0ba61832-7177-4d88-adba-24f47b1b5dc2 starting guardrails execution (validators=['ban_list']) input='this is clean' +2026-09-08 17:49:28,734 INFO guardrails.execution request=0ba61832-7177-4d88-adba-24f47b1b5dc2 guardrails execution finished (passed=True) output='this is clean' +2026-09-08 17:49:28,735 INFO guardrails.execution request=0ba61832-7177-4d88-adba-24f47b1b5dc2 step=1/1 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-08T17:49:28.733588 end=2026-09-08T17:49:28.733666 duration_ms=0 input='this is clean' output='this is clean' +2026-09-08 17:49:28,738 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.62ms] +2026-09-08 17:49:28,760 INFO guardrails.execution request=b49c302b-d8e7-4f6d-ab25-a2f0f038e8a5 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-08 17:49:28,763 INFO guardrails.execution request=b49c302b-d8e7-4f6d-ab25-a2f0f038e8a5 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR].' +2026-09-08 17:49:28,765 INFO guardrails.execution request=b49c302b-d8e7-4f6d-ab25-a2f0f038e8a5 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:28.761433 end=2026-09-08T17:49:28.763159 duration_ms=1 input='This sentence contains chakki.' output='this sentence contains [REDACTED_SLUR].' +2026-09-08 17:49:28,768 INFO http_request_logger POST /api/v1/guardrails/ - 200 [26.54ms] +2026-09-08 17:49:28,781 INFO guardrails.execution request=21dc9c34-3088-42aa-a824-3e26ea2a11e0 starting guardrails execution (validators=['uli_slur_match']) input='This is a completely safe sentence' +2026-09-08 17:49:28,782 INFO guardrails.execution request=21dc9c34-3088-42aa-a824-3e26ea2a11e0 guardrails execution finished (passed=True) output='This is a completely safe sentence' +2026-09-08 17:49:28,784 INFO guardrails.execution request=21dc9c34-3088-42aa-a824-3e26ea2a11e0 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-08T17:49:28.782071 end=2026-09-08T17:49:28.782328 duration_ms=0 input='This is a completely safe sentence' output='This is a completely safe sentence' +2026-09-08 17:49:28,787 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.48ms] +2026-09-08 17:49:28,799 INFO guardrails.execution request=e8e66cb2-fa3d-424d-a149-8c33d622ab81 starting guardrails execution (validators=['uli_slur_match', 'ban_list']) input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' +2026-09-08 17:49:28,801 INFO guardrails.execution request=e8e66cb2-fa3d-424d-a149-8c33d622ab81 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-08 17:49:28,802 INFO guardrails.execution request=e8e66cb2-fa3d-424d-a149-8c33d622ab81 step=1/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:28.800361 end=2026-09-08T17:49:28.800832 duration_ms=0 input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' +2026-09-08 17:49:28,804 INFO guardrails.execution request=e8e66cb2-fa3d-424d-a149-8c33d622ab81 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:28.800838 end=2026-09-08T17:49:28.800929 duration_ms=0 input='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-08 17:49:28,806 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.23ms] +2026-09-08 17:49:28,811 INFO http_request_logger POST /api/v1/guardrails/ - 422 [1.23ms] +2026-09-08 17:49:28,823 INFO guardrails.execution request=59206fd3-46e3-455d-a035-124ec6a0bc75 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-08 17:49:28,824 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 59206fd3-46e3-455d-a035-124ec6a0bc75: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-08 17:49:28,827 INFO guardrails.execution request=59206fd3-46e3-455d-a035-124ec6a0bc75 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:28.823802 end=2026-09-08T17:49:28.824077 duration_ms=0 input='This sentence contains chakki.' output=None +2026-09-08 17:49:28,829 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.78ms] +2026-09-08 17:49:28,844 INFO guardrails.execution request=90079be8-d0e2-463f-ad13-54e3e711a8f3 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-08 17:49:28,846 INFO guardrails.execution request=90079be8-d0e2-463f-ad13-54e3e711a8f3 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-08 17:49:28,849 INFO guardrails.execution request=90079be8-d0e2-463f-ad13-54e3e711a8f3 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:28.845707 end=2026-09-08T17:49:28.846070 duration_ms=0 input='This sentence contains chakki.' output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-08 17:49:28,852 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.60ms] +2026-09-08 17:49:28,867 INFO guardrails.execution request=c968396c-882e-47f6-acfe-a4aa1ec89f5d starting guardrails execution (validators=['profanity_free']) input='This is a damn fucking mess.' +2026-09-08 17:49:28,871 INFO guardrails.execution request=c968396c-882e-47f6-acfe-a4aa1ec89f5d guardrails execution finished (passed=True) output='' +2026-09-08 17:49:28,872 INFO guardrails.execution request=c968396c-882e-47f6-acfe-a4aa1ec89f5d step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:28.867447 end=2026-09-08T17:49:28.870500 duration_ms=3 input='This is a damn fucking mess.' output='' +2026-09-08 17:49:28,875 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.39ms] +2026-09-08 17:49:28,888 INFO guardrails.execution request=14d01254-ea80-49e4-8acd-62504195d3bf starting guardrails execution (validators=['profanity_free']) input='This is a completely clean sentence.' +2026-09-08 17:49:28,890 INFO guardrails.execution request=14d01254-ea80-49e4-8acd-62504195d3bf guardrails execution finished (passed=True) output='This is a completely clean sentence.' +2026-09-08 17:49:28,891 INFO guardrails.execution request=14d01254-ea80-49e4-8acd-62504195d3bf step=1/1 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-08T17:49:28.888411 end=2026-09-08T17:49:28.889956 duration_ms=1 input='This is a completely clean sentence.' output='This is a completely clean sentence.' +2026-09-08 17:49:28,894 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.61ms] +2026-09-08 17:49:28,906 INFO guardrails.execution request=c07721b5-8cdf-483a-9ab9-92d295c55c10 starting guardrails execution (validators=['profanity_free']) input='What the fuck is going on?' +2026-09-08 17:49:28,907 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log c07721b5-8cdf-483a-9ab9-92d295c55c10: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +2026-09-08 17:49:28,909 INFO guardrails.execution request=c07721b5-8cdf-483a-9ab9-92d295c55c10 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:28.906458 end=2026-09-08T17:49:28.907261 duration_ms=0 input='What the fuck is going on?' output=None +2026-09-08 17:49:28,911 INFO http_request_logger POST /api/v1/guardrails/ - 200 [13.57ms] +2026-09-08 17:49:28,925 INFO guardrails.execution request=e03c8f9e-addb-4d07-80b7-32642fd3754e starting guardrails execution (validators=['profanity_free']) input='This is absolute bullshit.' +2026-09-08 17:49:28,927 INFO guardrails.execution request=e03c8f9e-addb-4d07-80b7-32642fd3754e guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-08 17:49:28,930 INFO guardrails.execution request=e03c8f9e-addb-4d07-80b7-32642fd3754e step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:28.926031 end=2026-09-08T17:49:28.926897 duration_ms=0 input='This is absolute bullshit.' output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-08 17:49:28,933 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.11ms] +2026-09-08 17:49:28,939 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 793860ee-a0e9-4af8-a3a5-3a3b2f9ece9f: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 350, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-08 17:49:28,941 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.75ms] +2026-09-08 17:49:29,754 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-08 17:49:31,870 INFO guardrails.execution request=79e4b898-effb-4842-bbff-9c4bcfc18212 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-08 17:49:32,073 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 79e4b898-effb-4842-bbff-9c4bcfc18212: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-08 17:49:32,081 INFO guardrails.execution request=79e4b898-effb-4842-bbff-9c4bcfc18212 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:31.872071 end=2026-09-08T17:49:32.072900 duration_ms=200 input='She slowly undressed and they had explicit sex.' output=None +2026-09-08 17:49:32,087 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3142.70ms] +2026-09-08 17:49:34,404 INFO guardrails.execution request=34244fde-dc0d-45c0-87c4-0eca831eba63 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-08 17:49:34,419 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 34244fde-dc0d-45c0-87c4-0eca831eba63: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-08 17:49:34,425 INFO guardrails.execution request=34244fde-dc0d-45c0-87c4-0eca831eba63 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:34.405508 end=2026-09-08T17:49:34.419607 duration_ms=14 input='She slowly undressed and they had explicit sex.' output=None +2026-09-08 17:49:34,428 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2332.03ms] +2026-09-08 17:49:36,632 INFO guardrails.execution request=d98407da-aacf-49c4-9b5d-bf33272a5101 starting guardrails execution (validators=['nsfw_text']) input='Explicit sexual content goes here.' +2026-09-08 17:49:36,659 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log d98407da-aacf-49c4-9b5d-bf33272a5101: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +2026-09-08 17:49:36,670 INFO guardrails.execution request=d98407da-aacf-49c4-9b5d-bf33272a5101 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:36.633074 end=2026-09-08T17:49:36.659706 duration_ms=26 input='Explicit sexual content goes here.' output=None +2026-09-08 17:49:36,674 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2241.90ms] +2026-09-08 17:49:36,698 INFO guardrails.execution request=2dbf61ac-50d5-438a-9419-6927e275a0e4 starting guardrails execution (validators=['profanity_free', 'uli_slur_match']) input='This fucking chakki should leave.' +2026-09-08 17:49:36,702 INFO guardrails.execution request=2dbf61ac-50d5-438a-9419-6927e275a0e4 guardrails execution finished (passed=True) output='' +2026-09-08 17:49:36,707 INFO guardrails.execution request=2dbf61ac-50d5-438a-9419-6927e275a0e4 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:36.698717 end=2026-09-08T17:49:36.700947 duration_ms=2 input='This fucking chakki should leave.' output='' +2026-09-08 17:49:36,709 INFO guardrails.execution request=2dbf61ac-50d5-438a-9419-6927e275a0e4 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-08T17:49:36.700971 end=2026-09-08T17:49:36.701237 duration_ms=0 input='' output='' +2026-09-08 17:49:36,712 INFO http_request_logger POST /api/v1/guardrails/ - 200 [32.53ms] +2026-09-08 17:49:36,725 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 14c363b5-8bb5-46b5-b7df-9b9091f107af: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 350, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-08 17:49:36,727 INFO http_request_logger POST /api/v1/guardrails/ - 200 [10.37ms] +2026-09-08 17:49:38,773 INFO guardrails.execution request=d1652cde-abd6-456b-9410-beddd05bdd70 starting guardrails execution (validators=['profanity_free', 'nsfw_text']) input='What the fuck, this is explicit adult sexual content.' +2026-09-08 17:49:38,775 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log d1652cde-abd6-456b-9410-beddd05bdd70: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +2026-09-08 17:49:38,784 INFO guardrails.execution request=d1652cde-abd6-456b-9410-beddd05bdd70 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:38.774314 end=2026-09-08T17:49:38.775788 duration_ms=1 input='What the fuck, this is explicit adult sexual content.' output=None +2026-09-08 17:49:38,789 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2058.33ms] +2026-09-08 17:49:40,955 INFO guardrails.execution request=ecb86329-ef2c-4a29-8711-730b3d94cfae starting guardrails execution (validators=['uli_slur_match', 'nsfw_text']) input='This chakki has explicit sexual content.' +2026-09-08 17:49:40,957 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log ecb86329-ef2c-4a29-8711-730b3d94cfae: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-08 17:49:40,963 INFO guardrails.execution request=ecb86329-ef2c-4a29-8711-730b3d94cfae step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:40.956319 end=2026-09-08T17:49:40.956840 duration_ms=0 input='This chakki has explicit sexual content.' output=None +2026-09-08 17:49:40,968 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2172.05ms] +2026-09-08 17:49:40,989 INFO guardrails.execution request=288b8c3a-4391-46c9-97db-abaad0bad31a starting guardrails execution (validators=['profanity_free', 'ban_list']) input='Tell me about renewable energy sources.' +2026-09-08 17:49:40,994 INFO guardrails.execution request=288b8c3a-4391-46c9-97db-abaad0bad31a guardrails execution finished (passed=True) output='Tell me about renewable energy sources.' +2026-09-08 17:49:40,999 INFO guardrails.execution request=288b8c3a-4391-46c9-97db-abaad0bad31a step=1/2 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-08T17:49:40.990239 end=2026-09-08T17:49:40.992154 duration_ms=1 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-08 17:49:41,001 INFO guardrails.execution request=288b8c3a-4391-46c9-97db-abaad0bad31a step=2/2 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-08T17:49:40.992161 end=2026-09-08T17:49:40.992854 duration_ms=0 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-08 17:49:41,005 INFO http_request_logger POST /api/v1/guardrails/ - 200 [30.37ms] +2026-09-08 17:49:41,034 INFO guardrails.execution request=050fb7c6-b280-433f-9c6a-6646d3fe324a starting guardrails execution (validators=['uli_slur_match', 'profanity_free', 'ban_list']) input='What are some healthy breakfast options?' +2026-09-08 17:49:41,037 INFO guardrails.execution request=050fb7c6-b280-433f-9c6a-6646d3fe324a guardrails execution finished (passed=True) output='What are some healthy breakfast options?' +2026-09-08 17:49:41,042 INFO guardrails.execution request=050fb7c6-b280-433f-9c6a-6646d3fe324a step=1/3 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-08T17:49:41.034931 end=2026-09-08T17:49:41.035298 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-08 17:49:41,045 INFO guardrails.execution request=050fb7c6-b280-433f-9c6a-6646d3fe324a step=2/3 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-08T17:49:41.035304 end=2026-09-08T17:49:41.036297 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-08 17:49:41,049 INFO guardrails.execution request=050fb7c6-b280-433f-9c6a-6646d3fe324a step=3/3 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-08T17:49:41.036302 end=2026-09-08T17:49:41.036365 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-08 17:49:41,053 INFO http_request_logger POST /api/v1/guardrails/ - 200 [44.54ms] +2026-09-08 17:49:41,071 INFO guardrails.execution request=a5fe0cb2-c34b-4c82-868e-ce346b9268ce starting guardrails execution (validators=['ban_list', 'uli_slur_match']) input='this contains badword' +2026-09-08 17:49:41,072 INFO guardrails.execution request=a5fe0cb2-c34b-4c82-868e-ce346b9268ce guardrails execution finished (passed=True) output='this contains b' +2026-09-08 17:49:41,076 INFO guardrails.execution request=a5fe0cb2-c34b-4c82-868e-ce346b9268ce step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:41.071745 end=2026-09-08T17:49:41.071863 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-08 17:49:41,080 INFO guardrails.execution request=a5fe0cb2-c34b-4c82-868e-ce346b9268ce step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-08T17:49:41.071869 end=2026-09-08T17:49:41.072057 duration_ms=0 input='this contains b' output='this contains b' +2026-09-08 17:49:41,084 INFO http_request_logger POST /api/v1/guardrails/ - 200 [25.42ms] +2026-09-08 17:49:41,098 ERROR app.api.routes.guardrails [run_guardrails] config resolution failed for request_log 4b9c0b8b-0204-4e6c-ab5e-91af5babed3e: 404: Ban list not found +2026-09-08 17:49:41,101 INFO http_request_logger POST /api/v1/guardrails/ - 404 [7.08ms] +2026-09-08 17:49:41,109 INFO guardrails.execution request=17031fe1-d2a2-410e-a454-b237ade22aef starting guardrails execution (validators=['ban_list']) input='hello' +2026-09-08 17:49:41,109 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 17031fe1-d2a2-410e-a454-b237ade22aef: boom +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +RuntimeError: boom +2026-09-08 17:49:41,111 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.13ms] +2026-09-08 17:49:41,116 WARNING app.api.routes.guardrails [run_guardrails] invalid request_id 'not-a-uuid' (org=1 project=1), no request log written +2026-09-08 17:49:41,117 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1.62ms] +2026-09-08 17:49:41,267 INFO watchfiles.main 3 changes detected +2026-09-08 17:49:52,361 INFO presidio-analyzer Using device of type: cpu +2026-09-08 17:49:53,119 INFO guardrails.execution request=fdbaacd9-5d46-460d-8b2a-d8fb18f562fe starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-08 17:49:53,120 INFO guardrails.execution request=fdbaacd9-5d46-460d-8b2a-d8fb18f562fe guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-08 17:49:53,122 INFO guardrails.execution request=fdbaacd9-5d46-460d-8b2a-d8fb18f562fe step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-08T17:49:53.119660 end=2026-09-08T17:49:53.119778 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-08 17:49:53,127 INFO http_request_logger POST /api/v1/guardrails/ - 200 [32.52ms] +2026-09-08 17:49:53,141 INFO guardrails.execution request=a539d7cf-5f15-422e-b676-3219817aef91 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-08 17:49:53,142 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log a539d7cf-5f15-422e-b676-3219817aef91: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-08 17:49:53,146 INFO guardrails.execution request=a539d7cf-5f15-422e-b676-3219817aef91 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-08T17:49:53.142371 end=2026-09-08T17:49:53.142444 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-08 17:49:53,147 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.87ms] +2026-09-08 17:49:53,161 INFO guardrails.execution request=b244fe9a-129c-4e73-807e-2709ec71930b starting guardrails execution (validators=['answer_relevance_custom_llm']) input='' +2026-09-08 17:49:53,161 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log b244fe9a-129c-4e73-807e-2709ec71930b: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +2026-09-08 17:49:53,163 INFO guardrails.execution request=b244fe9a-129c-4e73-807e-2709ec71930b step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-08T17:49:53.161601 end=2026-09-08T17:49:53.161645 duration_ms=0 input='' output=None +2026-09-08 17:49:53,165 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.40ms] +2026-09-08 17:49:53,180 INFO guardrails.execution request=8027475f-be46-4ffd-a1c0-42df2ff43b29 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-08 17:49:53,182 INFO guardrails.execution request=8027475f-be46-4ffd-a1c0-42df2ff43b29 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-08 17:49:53,183 INFO guardrails.execution request=8027475f-be46-4ffd-a1c0-42df2ff43b29 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-08T17:49:53.181274 end=2026-09-08T17:49:53.181337 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-08 17:49:53,186 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.52ms] +2026-09-08 17:49:53,199 INFO guardrails.execution request=04163dcc-4f49-4988-b500-90381015c349 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-08 17:49:53,199 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 04163dcc-4f49-4988-b500-90381015c349: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-08 17:49:53,202 INFO guardrails.execution request=04163dcc-4f49-4988-b500-90381015c349 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-08T17:49:53.199593 end=2026-09-08T17:49:53.199663 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-08 17:49:53,204 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.73ms] +2026-09-08 17:49:53,221 INFO guardrails.execution request=5881b311-e9d5-446f-8240-71140977e6be starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-08 17:49:53,223 INFO guardrails.execution request=5881b311-e9d5-446f-8240-71140977e6be guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-08 17:49:53,225 INFO guardrails.execution request=5881b311-e9d5-446f-8240-71140977e6be step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-08T17:49:53.222356 end=2026-09-08T17:49:53.222438 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-08 17:49:53,226 INFO guardrails.execution request=5881b311-e9d5-446f-8240-71140977e6be step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:53.222443 end=2026-09-08T17:49:53.222552 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-08 17:49:53,229 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.25ms] +2026-09-08 17:49:53,243 INFO guardrails.execution request=38ad2a59-24bf-4c58-ab38-3cd4a2765698 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Diabetes symptoms include fuck fatigue.' +2026-09-08 17:49:53,246 INFO guardrails.execution request=38ad2a59-24bf-4c58-ab38-3cd4a2765698 guardrails execution finished (passed=True) output='' +2026-09-08 17:49:53,249 INFO guardrails.execution request=38ad2a59-24bf-4c58-ab38-3cd4a2765698 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-08T17:49:53.244387 end=2026-09-08T17:49:53.244467 duration_ms=0 input='Diabetes symptoms include fuck fatigue.' output='Diabetes symptoms include fuck fatigue.' +2026-09-08 17:49:53,251 INFO guardrails.execution request=38ad2a59-24bf-4c58-ab38-3cd4a2765698 step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:53.244472 end=2026-09-08T17:49:53.245950 duration_ms=1 input='Diabetes symptoms include fuck fatigue.' output='' +2026-09-08 17:49:53,254 INFO http_request_logger POST /api/v1/guardrails/ - 200 [21.30ms] +2026-09-08 17:49:53,276 INFO guardrails.execution request=07b06a07-777a-459f-8ded-e51792117900 starting guardrails execution (validators=['answer_relevance_custom_llm', 'uli_slur_match']) input='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-08 17:49:53,280 INFO guardrails.execution request=07b06a07-777a-459f-8ded-e51792117900 guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-08 17:49:53,284 INFO guardrails.execution request=07b06a07-777a-459f-8ded-e51792117900 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-08T17:49:53.277635 end=2026-09-08T17:49:53.277716 duration_ms=0 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-08 17:49:53,287 INFO guardrails.execution request=07b06a07-777a-459f-8ded-e51792117900 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:53.277721 end=2026-09-08T17:49:53.280016 duration_ms=2 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-08 17:49:53,291 INFO http_request_logger POST /api/v1/guardrails/ - 200 [32.12ms] +2026-09-08 17:49:53,309 INFO guardrails.execution request=c79214cf-097b-43f5-bbfa-74d6b8d9cece starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-08 17:49:53,311 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log c79214cf-097b-43f5-bbfa-74d6b8d9cece: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +2026-09-08 17:49:53,315 INFO guardrails.execution request=c79214cf-097b-43f5-bbfa-74d6b8d9cece step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-08T17:49:53.310106 end=2026-09-08T17:49:53.310183 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-08 17:49:53,319 INFO guardrails.execution request=c79214cf-097b-43f5-bbfa-74d6b8d9cece step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:53.310188 end=2026-09-08T17:49:53.311129 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output=None +2026-09-08 17:49:53,322 INFO http_request_logger POST /api/v1/guardrails/ - 200 [24.96ms] +2026-09-08 17:49:53,344 INFO guardrails.execution request=97e7bb20-3d62-4c33-8657-0670188b3e26 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list', 'profanity_free', 'uli_slur_match', 'gender_assumption_bias']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-08 17:49:53,348 INFO guardrails.execution request=97e7bb20-3d62-4c33-8657-0670188b3e26 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-08 17:49:53,352 INFO guardrails.execution request=97e7bb20-3d62-4c33-8657-0670188b3e26 step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-08T17:49:53.345488 end=2026-09-08T17:49:53.345560 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-08 17:49:53,354 INFO guardrails.execution request=97e7bb20-3d62-4c33-8657-0670188b3e26 step=2/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-08T17:49:53.345566 end=2026-09-08T17:49:53.345634 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-08 17:49:53,356 INFO guardrails.execution request=97e7bb20-3d62-4c33-8657-0670188b3e26 step=3/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-08T17:49:53.345638 end=2026-09-08T17:49:53.346585 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-08 17:49:53,358 INFO guardrails.execution request=97e7bb20-3d62-4c33-8657-0670188b3e26 step=4/5 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-08T17:49:53.346590 end=2026-09-08T17:49:53.347182 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-08 17:49:53,360 INFO guardrails.execution request=97e7bb20-3d62-4c33-8657-0670188b3e26 step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.PASS start=2026-09-08T17:49:53.347186 end=2026-09-08T17:49:53.347813 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-08 17:49:53,362 INFO http_request_logger POST /api/v1/guardrails/ - 200 [33.38ms] +2026-09-08 17:49:53,383 INFO guardrails.execution request=ada03bfd-f662-4dff-a0f9-c43c85a60af8 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free', 'uli_slur_match', 'ban_list', 'gender_assumption_bias']) input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-08 17:49:53,387 INFO guardrails.execution request=ada03bfd-f662-4dff-a0f9-c43c85a60af8 guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-08 17:49:53,391 INFO guardrails.execution request=ada03bfd-f662-4dff-a0f9-c43c85a60af8 step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-08T17:49:53.384298 end=2026-09-08T17:49:53.384369 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-08 17:49:53,394 INFO guardrails.execution request=ada03bfd-f662-4dff-a0f9-c43c85a60af8 step=2/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-08T17:49:53.384373 end=2026-09-08T17:49:53.385322 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-08 17:49:53,396 INFO guardrails.execution request=ada03bfd-f662-4dff-a0f9-c43c85a60af8 step=3/5 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:53.385327 end=2026-09-08T17:49:53.385823 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-08 17:49:53,397 INFO guardrails.execution request=ada03bfd-f662-4dff-a0f9-c43c85a60af8 step=4/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-08T17:49:53.385828 end=2026-09-08T17:49:53.385886 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-08 17:49:53,399 INFO guardrails.execution request=ada03bfd-f662-4dff-a0f9-c43c85a60af8 step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:53.385890 end=2026-09-08T17:49:53.386475 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-08 17:49:53,402 INFO http_request_logger POST /api/v1/guardrails/ - 200 [35.03ms] +2026-09-08 17:49:53,423 INFO app.crud.ban_list created ban list id=49953591-4542-4877-aa19-2345bb54d718 org=1 project=1 +2026-09-08 17:49:53,424 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [6.24ms] +2026-09-08 17:49:53,428 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.95ms] +2026-09-08 17:49:53,433 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [1.00ms] +2026-09-08 17:49:53,438 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [1.18ms] +2026-09-08 17:49:53,443 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.80ms] +2026-09-08 17:49:53,447 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.80ms] +2026-09-08 17:49:53,462 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [5.94ms] +2026-09-08 17:49:53,474 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [3.43ms] +2026-09-08 17:49:53,479 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.75ms] +2026-09-08 17:49:53,487 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.18ms] +2026-09-08 17:49:53,494 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.71ms] +2026-09-08 17:49:53,496 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.92ms] +2026-09-08 17:49:53,505 INFO app.crud.ban_list created ban list id=8bf0caff-36c2-4b45-87fc-a78a121e0d18 org=1 project=1 +2026-09-08 17:49:53,505 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [4.16ms] +2026-09-08 17:49:53,506 INFO http_request_logger GET /api/v1/guardrails/ban_lists/8bf0caff-36c2-4b45-87fc-a78a121e0d18/ - 307 [0.10ms] +2026-09-08 17:49:53,508 INFO http_request_logger GET /api/v1/guardrails/ban_lists/8bf0caff-36c2-4b45-87fc-a78a121e0d18 - 200 [2.01ms] +2026-09-08 17:49:53,517 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.93ms] +2026-09-08 17:49:53,517 INFO http_request_logger GET /api/v1/guardrails/ban_lists/af56df70-6912-44de-993c-9e86318cd8e2/ - 307 [0.08ms] +2026-09-08 17:49:53,520 INFO http_request_logger GET /api/v1/guardrails/ban_lists/af56df70-6912-44de-993c-9e86318cd8e2 - 200 [2.26ms] +2026-09-08 17:49:53,524 INFO http_request_logger GET /api/v1/guardrails/ban_lists/fccf0de4-cd1f-495c-8ffe-d1472c251ada/ - 307 [0.09ms] +2026-09-08 17:49:53,527 INFO http_request_logger GET /api/v1/guardrails/ban_lists/fccf0de4-cd1f-495c-8ffe-d1472c251ada - 404 [2.47ms] +2026-09-08 17:49:53,538 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [4.75ms] +2026-09-08 17:49:53,539 INFO http_request_logger GET /api/v1/guardrails/ban_lists/80c837a4-6304-4ae1-918b-8686399b5f27/ - 307 [0.08ms] +2026-09-08 17:49:53,541 INFO http_request_logger GET /api/v1/guardrails/ban_lists/80c837a4-6304-4ae1-918b-8686399b5f27 - 403 [2.24ms] +2026-09-08 17:49:53,551 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.76ms] +2026-09-08 17:49:53,552 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/26c78625-f2a6-4ca6-b86a-4a930ea69b45/ - 307 [0.10ms] +2026-09-08 17:49:53,557 INFO app.crud.ban_list updated ban list id=26c78625-f2a6-4ca6-b86a-4a930ea69b45 +2026-09-08 17:49:53,558 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/26c78625-f2a6-4ca6-b86a-4a930ea69b45 - 200 [5.81ms] +2026-09-08 17:49:53,568 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.77ms] +2026-09-08 17:49:53,568 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/ae28397d-d769-4fcf-be18-923bee804833/ - 307 [0.10ms] +2026-09-08 17:49:53,572 INFO app.crud.ban_list updated ban list id=ae28397d-d769-4fcf-be18-923bee804833 +2026-09-08 17:49:53,573 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/ae28397d-d769-4fcf-be18-923bee804833 - 200 [4.42ms] +2026-09-08 17:49:53,577 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/7853a93b-fd0e-4311-9daf-7b4ac5cbffe3/ - 307 [0.10ms] +2026-09-08 17:49:53,580 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/7853a93b-fd0e-4311-9daf-7b4ac5cbffe3 - 404 [3.08ms] +2026-09-08 17:49:53,587 INFO app.crud.ban_list created ban list id=0c4ed433-f128-4376-bb06-b39dac18e544 org=1 project=1 +2026-09-08 17:49:53,588 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [4.09ms] +2026-09-08 17:49:53,588 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/0c4ed433-f128-4376-bb06-b39dac18e544/ - 307 [0.10ms] +2026-09-08 17:49:53,593 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/0c4ed433-f128-4376-bb06-b39dac18e544 - 403 [4.40ms] +2026-09-08 17:49:53,601 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.21ms] +2026-09-08 17:49:53,602 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/6e2a1209-3d17-4e43-877f-178e3105c19b/ - 307 [0.09ms] +2026-09-08 17:49:53,604 INFO app.crud.ban_list deleted ban list id=6e2a1209-3d17-4e43-877f-178e3105c19b +2026-09-08 17:49:53,605 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/6e2a1209-3d17-4e43-877f-178e3105c19b - 200 [2.59ms] +2026-09-08 17:49:53,609 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/ab4063fb-f029-402c-b04b-01fd0e12c3a9/ - 307 [0.11ms] +2026-09-08 17:49:53,613 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/ab4063fb-f029-402c-b04b-01fd0e12c3a9 - 404 [2.78ms] +2026-09-08 17:49:53,624 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.70ms] +2026-09-08 17:49:53,625 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/b4891b93-aded-4ea0-a599-8970433c5838/ - 307 [0.10ms] +2026-09-08 17:49:53,627 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/b4891b93-aded-4ea0-a599-8970433c5838 - 403 [1.69ms] +2026-09-08 17:49:53,635 INFO app.crud.ban_list created ban list id=de662fe6-e74b-409c-9fa7-1780c72be0ce org=1 project=1 +2026-09-08 17:49:53,635 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [4.45ms] +2026-09-08 17:49:53,636 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/de662fe6-e74b-409c-9fa7-1780c72be0ce/ - 307 [0.10ms] +2026-09-08 17:49:53,638 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/de662fe6-e74b-409c-9fa7-1780c72be0ce - 403 [1.68ms] +2026-09-08 17:49:53,731 INFO guardrails.execution request=7c1914f5-d819-4824-9c1c-6eb844472c2a starting guardrails execution (validators=[]) input='hello world' +2026-09-08 17:49:53,731 INFO guardrails.execution request=7c1914f5-d819-4824-9c1c-6eb844472c2a guardrails execution finished (passed=True) output='clean text' +2026-09-08 17:49:53,735 INFO http_request_logger POST /api/v1/guardrails/ - 200 [8.74ms] +2026-09-08 17:49:53,741 INFO guardrails.execution request=ee0d2176-b35a-495f-a7d9-b0edd7ac5f98 starting guardrails execution (validators=[]) input='my phone is 999999' +2026-09-08 17:49:53,741 INFO guardrails.execution request=ee0d2176-b35a-495f-a7d9-b0edd7ac5f98 guardrails execution finished (passed=False) output=None +2026-09-08 17:49:53,743 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.29ms] +2026-09-08 17:49:53,750 INFO guardrails.execution request=2210d403-4f25-49f0-8729-e0c1a4a92bcb starting guardrails execution (validators=[]) input='tell me about buildings' +2026-09-08 17:49:53,750 INFO guardrails.execution request=2210d403-4f25-49f0-8729-e0c1a4a92bcb guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Input is outside the allowed topic scope.' +2026-09-08 17:49:53,752 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.15ms] +2026-09-08 17:49:53,758 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 0257543d-2430-42e5-9de1-7d2dde4f1191: Invalid validator config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 350, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid validator config +2026-09-08 17:49:53,761 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.64ms] +2026-09-08 17:49:53,775 INFO guardrails.execution request=44b46f60-238b-4e93-9539-f3d1ce919147 starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-08 17:49:53,776 INFO guardrails.execution request=44b46f60-238b-4e93-9539-f3d1ce919147 guardrails execution finished (passed=True) output='this contains b' +2026-09-08 17:49:53,779 INFO guardrails.execution request=44b46f60-238b-4e93-9539-f3d1ce919147 step=1/1 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:53.776035 end=2026-09-08T17:49:53.776142 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-08 17:49:53,783 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.89ms] +2026-09-08 17:49:53,799 INFO guardrails.execution request=d767005e-a4c4-4197-bcc0-d5f55e0d9b6b starting guardrails execution (validators=['ban_list']) input='this is clean' +2026-09-08 17:49:53,800 INFO guardrails.execution request=d767005e-a4c4-4197-bcc0-d5f55e0d9b6b guardrails execution finished (passed=True) output='this is clean' +2026-09-08 17:49:53,802 INFO guardrails.execution request=d767005e-a4c4-4197-bcc0-d5f55e0d9b6b step=1/1 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-08T17:49:53.799741 end=2026-09-08T17:49:53.799817 duration_ms=0 input='this is clean' output='this is clean' +2026-09-08 17:49:53,807 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.37ms] +2026-09-08 17:49:53,828 INFO guardrails.execution request=2fd56765-6512-40d6-bcd1-617e2b1c8a10 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-08 17:49:53,829 INFO guardrails.execution request=2fd56765-6512-40d6-bcd1-617e2b1c8a10 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR].' +2026-09-08 17:49:53,835 INFO guardrails.execution request=2fd56765-6512-40d6-bcd1-617e2b1c8a10 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:53.828699 end=2026-09-08T17:49:53.829048 duration_ms=0 input='This sentence contains chakki.' output='this sentence contains [REDACTED_SLUR].' +2026-09-08 17:49:53,839 INFO http_request_logger POST /api/v1/guardrails/ - 200 [27.43ms] +2026-09-08 17:49:53,854 INFO guardrails.execution request=5e82a183-5cf3-4938-b39a-af0884b75849 starting guardrails execution (validators=['uli_slur_match']) input='This is a completely safe sentence' +2026-09-08 17:49:53,856 INFO guardrails.execution request=5e82a183-5cf3-4938-b39a-af0884b75849 guardrails execution finished (passed=True) output='This is a completely safe sentence' +2026-09-08 17:49:53,858 INFO guardrails.execution request=5e82a183-5cf3-4938-b39a-af0884b75849 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-08T17:49:53.855304 end=2026-09-08T17:49:53.855565 duration_ms=0 input='This is a completely safe sentence' output='This is a completely safe sentence' +2026-09-08 17:49:53,862 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.57ms] +2026-09-08 17:49:53,878 INFO guardrails.execution request=987463d0-1cf4-470e-90c2-c08868809e02 starting guardrails execution (validators=['uli_slur_match', 'ban_list']) input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' +2026-09-08 17:49:53,880 INFO guardrails.execution request=987463d0-1cf4-470e-90c2-c08868809e02 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-08 17:49:53,884 INFO guardrails.execution request=987463d0-1cf4-470e-90c2-c08868809e02 step=1/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:53.879386 end=2026-09-08T17:49:53.879870 duration_ms=0 input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' +2026-09-08 17:49:53,886 INFO guardrails.execution request=987463d0-1cf4-470e-90c2-c08868809e02 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:53.879876 end=2026-09-08T17:49:53.879955 duration_ms=0 input='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-08 17:49:53,889 INFO http_request_logger POST /api/v1/guardrails/ - 200 [21.40ms] +2026-09-08 17:49:53,895 INFO http_request_logger POST /api/v1/guardrails/ - 422 [0.91ms] +2026-09-08 17:49:53,909 INFO guardrails.execution request=583c149a-b6c9-4642-8438-d84d7e7dbe07 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-08 17:49:53,910 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 583c149a-b6c9-4642-8438-d84d7e7dbe07: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-08 17:49:53,918 INFO guardrails.execution request=583c149a-b6c9-4642-8438-d84d7e7dbe07 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:53.909882 end=2026-09-08T17:49:53.910143 duration_ms=0 input='This sentence contains chakki.' output=None +2026-09-08 17:49:53,920 INFO http_request_logger POST /api/v1/guardrails/ - 200 [21.78ms] +2026-09-08 17:49:53,936 INFO guardrails.execution request=3ce0a707-210a-48ae-8c75-a848a5b07995 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-08 17:49:53,938 INFO guardrails.execution request=3ce0a707-210a-48ae-8c75-a848a5b07995 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-08 17:49:53,941 INFO guardrails.execution request=3ce0a707-210a-48ae-8c75-a848a5b07995 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:53.937330 end=2026-09-08T17:49:53.937599 duration_ms=0 input='This sentence contains chakki.' output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-08 17:49:53,945 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.98ms] +2026-09-08 17:49:53,960 INFO guardrails.execution request=f50658bc-7206-40bf-ae84-e7d0438e17ca starting guardrails execution (validators=['profanity_free']) input='This is a damn fucking mess.' +2026-09-08 17:49:53,962 INFO guardrails.execution request=f50658bc-7206-40bf-ae84-e7d0438e17ca guardrails execution finished (passed=True) output='' +2026-09-08 17:49:53,965 INFO guardrails.execution request=f50658bc-7206-40bf-ae84-e7d0438e17ca step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:53.960375 end=2026-09-08T17:49:53.961403 duration_ms=1 input='This is a damn fucking mess.' output='' +2026-09-08 17:49:53,969 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.63ms] +2026-09-08 17:49:53,984 INFO guardrails.execution request=134ded0d-0f3a-44cd-ad50-b46f1a8072fa starting guardrails execution (validators=['profanity_free']) input='This is a completely clean sentence.' +2026-09-08 17:49:53,986 INFO guardrails.execution request=134ded0d-0f3a-44cd-ad50-b46f1a8072fa guardrails execution finished (passed=True) output='This is a completely clean sentence.' +2026-09-08 17:49:53,989 INFO guardrails.execution request=134ded0d-0f3a-44cd-ad50-b46f1a8072fa step=1/1 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-08T17:49:53.984586 end=2026-09-08T17:49:53.985449 duration_ms=0 input='This is a completely clean sentence.' output='This is a completely clean sentence.' +2026-09-08 17:49:53,993 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.17ms] +2026-09-08 17:49:54,008 INFO guardrails.execution request=8ee307b7-c526-4d19-b068-4587e8fa12c8 starting guardrails execution (validators=['profanity_free']) input='What the fuck is going on?' +2026-09-08 17:49:54,009 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 8ee307b7-c526-4d19-b068-4587e8fa12c8: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +2026-09-08 17:49:54,013 INFO guardrails.execution request=8ee307b7-c526-4d19-b068-4587e8fa12c8 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:54.008521 end=2026-09-08T17:49:54.009417 duration_ms=0 input='What the fuck is going on?' output=None +2026-09-08 17:49:54,017 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.32ms] +2026-09-08 17:49:54,035 INFO guardrails.execution request=71922289-8a7e-418a-b1ed-77df8140158e starting guardrails execution (validators=['profanity_free']) input='This is absolute bullshit.' +2026-09-08 17:49:54,037 INFO guardrails.execution request=71922289-8a7e-418a-b1ed-77df8140158e guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-08 17:49:54,042 INFO guardrails.execution request=71922289-8a7e-418a-b1ed-77df8140158e step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:54.035461 end=2026-09-08T17:49:54.036283 duration_ms=0 input='This is absolute bullshit.' output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-08 17:49:54,047 INFO http_request_logger POST /api/v1/guardrails/ - 200 [25.23ms] +2026-09-08 17:49:54,054 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log e8297c76-d97b-4339-a231-faedcfa29fe5: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 350, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-08 17:49:54,058 INFO http_request_logger POST /api/v1/guardrails/ - 200 [6.77ms] +2026-09-08 17:49:54,738 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-08 17:49:56,727 INFO guardrails.execution request=a47f2750-b411-44db-aeaa-53f4c2fe65c8 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-08 17:49:56,816 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log a47f2750-b411-44db-aeaa-53f4c2fe65c8: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-08 17:49:56,826 INFO guardrails.execution request=a47f2750-b411-44db-aeaa-53f4c2fe65c8 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:56.728839 end=2026-09-08T17:49:56.815988 duration_ms=87 input='She slowly undressed and they had explicit sex.' output=None +2026-09-08 17:49:56,831 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2769.50ms] +2026-09-08 17:49:58,874 INFO guardrails.execution request=164c53cb-7084-41d2-815d-b97dcc28ec66 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-08 17:49:58,893 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 164c53cb-7084-41d2-815d-b97dcc28ec66: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-08 17:49:58,898 INFO guardrails.execution request=164c53cb-7084-41d2-815d-b97dcc28ec66 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-08T17:49:58.875530 end=2026-09-08T17:49:58.893315 duration_ms=17 input='She slowly undressed and they had explicit sex.' output=None +2026-09-08 17:49:58,902 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2064.18ms] +2026-09-08 17:50:01,092 INFO guardrails.execution request=afc86a2e-3d87-4602-9e31-75cc1c79734f starting guardrails execution (validators=['nsfw_text']) input='Explicit sexual content goes here.' +2026-09-08 17:50:01,117 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log afc86a2e-3d87-4602-9e31-75cc1c79734f: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +2026-09-08 17:50:01,124 INFO guardrails.execution request=afc86a2e-3d87-4602-9e31-75cc1c79734f step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-08T17:50:01.093131 end=2026-09-08T17:50:01.117644 duration_ms=24 input='Explicit sexual content goes here.' output=None +2026-09-08 17:50:01,126 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2216.82ms] +2026-09-08 17:50:01,146 INFO guardrails.execution request=4facef83-15ea-4ae4-8766-7c7bd2c096d1 starting guardrails execution (validators=['profanity_free', 'uli_slur_match']) input='This fucking chakki should leave.' +2026-09-08 17:50:01,149 INFO guardrails.execution request=4facef83-15ea-4ae4-8766-7c7bd2c096d1 guardrails execution finished (passed=True) output='' +2026-09-08 17:50:01,153 INFO guardrails.execution request=4facef83-15ea-4ae4-8766-7c7bd2c096d1 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-08T17:50:01.146786 end=2026-09-08T17:50:01.148200 duration_ms=1 input='This fucking chakki should leave.' output='' +2026-09-08 17:50:01,156 INFO guardrails.execution request=4facef83-15ea-4ae4-8766-7c7bd2c096d1 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-08T17:50:01.148221 end=2026-09-08T17:50:01.148414 duration_ms=0 input='' output='' +2026-09-08 17:50:01,161 INFO http_request_logger POST /api/v1/guardrails/ - 200 [31.23ms] +2026-09-08 17:50:01,171 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 6ac7c1e2-3787-4864-987d-457fbbfa5994: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 350, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-08 17:50:01,174 INFO http_request_logger POST /api/v1/guardrails/ - 200 [7.13ms] +2026-09-08 17:50:03,453 INFO guardrails.execution request=a7d598d0-926f-4e36-bc26-6bc01e326475 starting guardrails execution (validators=['profanity_free', 'nsfw_text']) input='What the fuck, this is explicit adult sexual content.' +2026-09-08 17:50:03,455 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log a7d598d0-926f-4e36-bc26-6bc01e326475: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +2026-09-08 17:50:03,462 INFO guardrails.execution request=a7d598d0-926f-4e36-bc26-6bc01e326475 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-08T17:50:03.454306 end=2026-09-08T17:50:03.455723 duration_ms=1 input='What the fuck, this is explicit adult sexual content.' output=None +2026-09-08 17:50:03,466 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2288.40ms] +2026-09-08 17:50:05,491 INFO guardrails.execution request=a38a5fbd-62f7-4a4a-bcce-77a2efa3442f starting guardrails execution (validators=['uli_slur_match', 'nsfw_text']) input='This chakki has explicit sexual content.' +2026-09-08 17:50:05,493 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log a38a5fbd-62f7-4a4a-bcce-77a2efa3442f: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-08 17:50:05,501 INFO guardrails.execution request=a38a5fbd-62f7-4a4a-bcce-77a2efa3442f step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-08T17:50:05.492648 end=2026-09-08T17:50:05.493124 duration_ms=0 input='This chakki has explicit sexual content.' output=None +2026-09-08 17:50:05,504 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2031.31ms] +2026-09-08 17:50:05,520 INFO guardrails.execution request=e4f23806-cebb-4a91-914c-fe53a0e58d7f starting guardrails execution (validators=['profanity_free', 'ban_list']) input='Tell me about renewable energy sources.' +2026-09-08 17:50:05,522 INFO guardrails.execution request=e4f23806-cebb-4a91-914c-fe53a0e58d7f guardrails execution finished (passed=True) output='Tell me about renewable energy sources.' +2026-09-08 17:50:05,525 INFO guardrails.execution request=e4f23806-cebb-4a91-914c-fe53a0e58d7f step=1/2 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-08T17:50:05.520953 end=2026-09-08T17:50:05.521977 duration_ms=1 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-08 17:50:05,527 INFO guardrails.execution request=e4f23806-cebb-4a91-914c-fe53a0e58d7f step=2/2 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-08T17:50:05.521985 end=2026-09-08T17:50:05.522071 duration_ms=0 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-08 17:50:05,531 INFO http_request_logger POST /api/v1/guardrails/ - 200 [22.00ms] +2026-09-08 17:50:05,554 INFO guardrails.execution request=b2a7138f-fab4-4f1b-a4d9-6e47b182aeee starting guardrails execution (validators=['uli_slur_match', 'profanity_free', 'ban_list']) input='What are some healthy breakfast options?' +2026-09-08 17:50:05,557 INFO guardrails.execution request=b2a7138f-fab4-4f1b-a4d9-6e47b182aeee guardrails execution finished (passed=True) output='What are some healthy breakfast options?' +2026-09-08 17:50:05,561 INFO guardrails.execution request=b2a7138f-fab4-4f1b-a4d9-6e47b182aeee step=1/3 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-08T17:50:05.555193 end=2026-09-08T17:50:05.555540 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-08 17:50:05,563 INFO guardrails.execution request=b2a7138f-fab4-4f1b-a4d9-6e47b182aeee step=2/3 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-08T17:50:05.555545 end=2026-09-08T17:50:05.556548 duration_ms=1 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-08 17:50:05,566 INFO guardrails.execution request=b2a7138f-fab4-4f1b-a4d9-6e47b182aeee step=3/3 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-08T17:50:05.556555 end=2026-09-08T17:50:05.556613 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-08 17:50:05,570 INFO http_request_logger POST /api/v1/guardrails/ - 200 [33.61ms] +2026-09-08 17:50:05,586 INFO guardrails.execution request=9d6ffeb7-62a3-4dd3-9279-cb7be1cbe5b6 starting guardrails execution (validators=['ban_list', 'uli_slur_match']) input='this contains badword' +2026-09-08 17:50:05,588 INFO guardrails.execution request=9d6ffeb7-62a3-4dd3-9279-cb7be1cbe5b6 guardrails execution finished (passed=True) output='this contains b' +2026-09-08 17:50:05,590 INFO guardrails.execution request=9d6ffeb7-62a3-4dd3-9279-cb7be1cbe5b6 step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-08T17:50:05.586979 end=2026-09-08T17:50:05.587100 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-08 17:50:05,592 INFO guardrails.execution request=9d6ffeb7-62a3-4dd3-9279-cb7be1cbe5b6 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-08T17:50:05.587107 end=2026-09-08T17:50:05.587308 duration_ms=0 input='this contains b' output='this contains b' +2026-09-08 17:50:05,596 INFO http_request_logger POST /api/v1/guardrails/ - 200 [21.57ms] +2026-09-08 17:50:05,610 ERROR app.api.routes.guardrails [run_guardrails] config resolution failed for request_log 36c5bd9b-d210-47f7-a633-e8bce442a298: 404: Ban list not found +2026-09-08 17:50:05,615 INFO http_request_logger POST /api/v1/guardrails/ - 404 [8.80ms] +2026-09-08 17:50:05,624 INFO guardrails.execution request=d4835bfd-a58f-4dee-9ec6-4bb4a55d940d starting guardrails execution (validators=['ban_list']) input='hello' +2026-09-08 17:50:05,625 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log d4835bfd-a58f-4dee-9ec6-4bb4a55d940d: boom +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 366, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +RuntimeError: boom +2026-09-08 17:50:05,627 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.96ms] +2026-09-08 17:50:05,632 WARNING app.api.routes.guardrails [run_guardrails] invalid request_id 'not-a-uuid' (org=1 project=1), no request log written +2026-09-08 17:50:05,633 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1.19ms] +2026-09-08 17:50:05,641 INFO app.crud.llm_prompt_config created llm prompt config id=54d59c7b-b969-4ed5-91d7-b8815b27255a org=1 project=1 +2026-09-08 17:50:05,642 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [5.55ms] +2026-09-08 17:50:05,648 INFO app.crud.llm_prompt_config created llm prompt config id=04dbc08e-d395-4532-b7c7-bfede8b96665 org=1 project=1 +2026-09-08 17:50:05,648 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.64ms] +2026-09-08 17:50:05,654 INFO app.crud.llm_prompt_config created llm prompt config id=73b42011-f3a6-49a9-823e-721ff3fe7b0c org=1 project=1 +2026-09-08 17:50:05,655 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.61ms] +2026-09-08 17:50:05,659 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [1.31ms] +2026-09-08 17:50:05,664 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.84ms] +2026-09-08 17:50:05,667 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.75ms] +2026-09-08 17:50:05,672 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.75ms] +2026-09-08 17:50:05,678 INFO app.crud.llm_prompt_config created llm prompt config id=86095041-b457-42fd-a051-dea1790f328e org=1 project=1 +2026-09-08 17:50:05,678 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.83ms] +2026-09-08 17:50:05,683 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.79ms] +2026-09-08 17:50:05,687 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.70ms] +2026-09-08 17:50:05,693 INFO app.crud.llm_prompt_config created llm prompt config id=f7520e83-f931-4ff2-9011-d6f228ffbe10 org=1 project=1 +2026-09-08 17:50:05,693 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.53ms] +2026-09-08 17:50:05,696 INFO app.crud.llm_prompt_config created llm prompt config id=78ef2000-85fb-4992-85d0-59ae6d4dc979 org=1 project=1 +2026-09-08 17:50:05,696 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.24ms] +2026-09-08 17:50:05,699 INFO app.crud.llm_prompt_config created llm prompt config id=2f6fc4b8-e1da-4605-9eab-7245559afb98 org=1 project=1 +2026-09-08 17:50:05,699 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.92ms] +2026-09-08 17:50:05,703 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [3.11ms] +2026-09-08 17:50:05,709 INFO app.crud.llm_prompt_config created llm prompt config id=0352aabf-ec51-4b0d-b97d-6554112bf007 org=1 project=1 +2026-09-08 17:50:05,709 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.47ms] +2026-09-08 17:50:05,711 INFO app.crud.llm_prompt_config created llm prompt config id=ca56d802-5f24-41f5-b014-3a31103bd426 org=1 project=1 +2026-09-08 17:50:05,712 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.31ms] +2026-09-08 17:50:05,714 INFO app.crud.llm_prompt_config created llm prompt config id=cf333af6-d746-42ed-a407-00ebb570b248 org=1 project=1 +2026-09-08 17:50:05,715 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.70ms] +2026-09-08 17:50:05,718 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.93ms] +2026-09-08 17:50:05,724 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.66ms] +2026-09-08 17:50:05,729 INFO app.crud.llm_prompt_config created llm prompt config id=50fbf559-baaa-4cb3-81e7-b2b8d7501aec org=1 project=1 +2026-09-08 17:50:05,730 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.92ms] +2026-09-08 17:50:05,732 INFO app.crud.llm_prompt_config created llm prompt config id=cbf78d46-154b-43f9-8d64-b7e90055de04 org=1 project=1 +2026-09-08 17:50:05,732 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.33ms] +2026-09-08 17:50:05,735 INFO app.crud.llm_prompt_config created llm prompt config id=30e38503-1828-4d5e-a4d8-f2b06dbb1b99 org=1 project=1 +2026-09-08 17:50:05,735 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.67ms] +2026-09-08 17:50:05,739 INFO app.crud.llm_prompt_config created llm prompt config id=092b187c-5258-47e5-a01e-e4ea995d55fa org=1 project=1 +2026-09-08 17:50:05,740 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.68ms] +2026-09-08 17:50:05,742 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.30ms] +2026-09-08 17:50:05,747 INFO app.crud.llm_prompt_config created llm prompt config id=7f73b5ec-1911-4175-9caa-90c26b01f57c org=1 project=1 +2026-09-08 17:50:05,748 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.52ms] +2026-09-08 17:50:05,750 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.28ms] +2026-09-08 17:50:05,756 INFO app.crud.llm_prompt_config created llm prompt config id=ce5dc2b9-db29-432e-b785-8966c54c6212 org=1 project=1 +2026-09-08 17:50:05,757 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.46ms] +2026-09-08 17:50:05,759 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ce5dc2b9-db29-432e-b785-8966c54c6212 - 200 [1.57ms] +2026-09-08 17:50:05,763 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/eba9155b-3b8d-49a8-bc2c-4597e74504d6 - 404 [1.49ms] +2026-09-08 17:50:05,768 INFO app.crud.llm_prompt_config created llm prompt config id=300d8b34-2bfa-44d2-b299-e4cef84c2416 org=1 project=1 +2026-09-08 17:50:05,769 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.98ms] +2026-09-08 17:50:05,771 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/300d8b34-2bfa-44d2-b299-e4cef84c2416 - 404 [1.86ms] +2026-09-08 17:50:05,777 INFO app.crud.llm_prompt_config created llm prompt config id=1cd1dc71-e651-4dd7-8c21-40aa3b3a28bc org=1 project=1 +2026-09-08 17:50:05,778 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.66ms] +2026-09-08 17:50:05,783 INFO app.crud.llm_prompt_config updated llm prompt config id=1cd1dc71-e651-4dd7-8c21-40aa3b3a28bc +2026-09-08 17:50:05,783 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/1cd1dc71-e651-4dd7-8c21-40aa3b3a28bc - 200 [5.33ms] +2026-09-08 17:50:05,789 INFO app.crud.llm_prompt_config created llm prompt config id=84575454-9ca2-416c-8c01-c8084ce1d2ea org=1 project=1 +2026-09-08 17:50:05,790 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.76ms] +2026-09-08 17:50:05,793 INFO app.crud.llm_prompt_config updated llm prompt config id=84575454-9ca2-416c-8c01-c8084ce1d2ea +2026-09-08 17:50:05,793 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/84575454-9ca2-416c-8c01-c8084ce1d2ea - 200 [3.06ms] +2026-09-08 17:50:05,799 INFO app.crud.llm_prompt_config created llm prompt config id=5039c213-7fe6-4064-9548-311673aefe02 org=1 project=1 +2026-09-08 17:50:05,799 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.70ms] +2026-09-08 17:50:05,802 INFO app.crud.llm_prompt_config updated llm prompt config id=5039c213-7fe6-4064-9548-311673aefe02 +2026-09-08 17:50:05,802 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/5039c213-7fe6-4064-9548-311673aefe02 - 200 [2.61ms] +2026-09-08 17:50:05,804 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/5039c213-7fe6-4064-9548-311673aefe02 - 200 [1.36ms] +2026-09-08 17:50:05,809 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/ac641560-53ce-4c23-b082-2f07a02900da - 404 [1.55ms] +2026-09-08 17:50:05,815 INFO app.crud.llm_prompt_config created llm prompt config id=96eea726-575c-4c5b-a8a7-275a5e7d6f51 org=1 project=1 +2026-09-08 17:50:05,816 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.05ms] +2026-09-08 17:50:05,817 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/96eea726-575c-4c5b-a8a7-275a5e7d6f51 - 404 [1.34ms] +2026-09-08 17:50:05,822 INFO app.crud.llm_prompt_config created llm prompt config id=ca3fd247-24f1-4d6c-845f-f31318b186bb org=1 project=1 +2026-09-08 17:50:05,823 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.50ms] +2026-09-08 17:50:05,827 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/ca3fd247-24f1-4d6c-845f-f31318b186bb - 422 [1.39ms] +2026-09-08 17:50:05,836 INFO app.crud.llm_prompt_config created llm prompt config id=485c25d5-6ea8-4836-95c4-17ec482f7cf7 org=1 project=1 +2026-09-08 17:50:05,836 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [6.78ms] +2026-09-08 17:50:05,838 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/485c25d5-6ea8-4836-95c4-17ec482f7cf7 - 422 [1.39ms] +2026-09-08 17:50:05,844 INFO app.crud.llm_prompt_config created llm prompt config id=1e9931ae-43cc-4f6d-be2d-184870c739ab org=1 project=1 +2026-09-08 17:50:05,845 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.65ms] +2026-09-08 17:50:05,847 INFO app.crud.llm_prompt_config updated llm prompt config id=1e9931ae-43cc-4f6d-be2d-184870c739ab +2026-09-08 17:50:05,848 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/1e9931ae-43cc-4f6d-be2d-184870c739ab - 200 [2.88ms] +2026-09-08 17:50:05,853 INFO app.crud.llm_prompt_config created llm prompt config id=43a870e8-b3dd-489a-8426-76877458bc20 org=1 project=1 +2026-09-08 17:50:05,854 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.67ms] +2026-09-08 17:50:05,856 INFO app.crud.llm_prompt_config updated llm prompt config id=43a870e8-b3dd-489a-8426-76877458bc20 +2026-09-08 17:50:05,857 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/43a870e8-b3dd-489a-8426-76877458bc20 - 200 [2.53ms] +2026-09-08 17:50:05,862 INFO app.crud.llm_prompt_config created llm prompt config id=ce1cfcef-b773-461f-a98b-619ee060fa80 org=1 project=1 +2026-09-08 17:50:05,863 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.94ms] +2026-09-08 17:50:05,865 INFO app.crud.llm_prompt_config deleted llm prompt config id=ce1cfcef-b773-461f-a98b-619ee060fa80 +2026-09-08 17:50:05,865 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/ce1cfcef-b773-461f-a98b-619ee060fa80 - 200 [2.28ms] +2026-09-08 17:50:05,874 INFO app.crud.llm_prompt_config created llm prompt config id=fea5ec10-a6ba-44fa-8b1b-7f1994d725f1 org=1 project=1 +2026-09-08 17:50:05,874 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.92ms] +2026-09-08 17:50:05,877 INFO app.crud.llm_prompt_config deleted llm prompt config id=fea5ec10-a6ba-44fa-8b1b-7f1994d725f1 +2026-09-08 17:50:05,877 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/fea5ec10-a6ba-44fa-8b1b-7f1994d725f1 - 200 [2.56ms] +2026-09-08 17:50:05,880 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.04ms] +2026-09-08 17:50:05,888 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/1393dd6e-875a-4455-a290-9c6f41277b5c - 404 [2.23ms] +2026-09-08 17:50:05,895 INFO app.crud.llm_prompt_config created llm prompt config id=95015d6d-baa6-4b34-b5fb-16c49def15db org=1 project=1 +2026-09-08 17:50:05,895 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.56ms] +2026-09-08 17:50:05,898 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/95015d6d-baa6-4b34-b5fb-16c49def15db - 404 [1.80ms] +2026-09-08 17:50:05,991 INFO guardrails.execution request=64befc34-fd5e-4b01-bf5d-3b17a64d8818 starting guardrails execution (validators=[]) input='hello' +2026-09-08 17:50:05,991 INFO guardrails.execution request=64befc34-fd5e-4b01-bf5d-3b17a64d8818 guardrails execution finished (passed=True) output='clean text' +2026-09-08 17:50:05,994 INFO guardrails.execution request=64befc34-fd5e-4b01-bf5d-3b17a64d8818 starting guardrails execution (validators=[]) input='bad text' +2026-09-08 17:50:05,994 INFO guardrails.execution request=64befc34-fd5e-4b01-bf5d-3b17a64d8818 guardrails execution finished (passed=False) output=None +2026-09-08 17:50:05,996 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 64befc34-fd5e-4b01-bf5d-3b17a64d8818: Invalid config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 350, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid config +2026-09-08 17:50:05,999 INFO guardrails.execution request=64befc34-fd5e-4b01-bf5d-3b17a64d8818 starting guardrails execution (validators=[]) input='bad text' +2026-09-08 17:50:05,999 INFO guardrails.execution request=64befc34-fd5e-4b01-bf5d-3b17a64d8818 guardrails execution finished (passed=False) output=None +2026-09-08 17:50:06,001 INFO guardrails.execution request=64befc34-fd5e-4b01-bf5d-3b17a64d8818 starting guardrails execution (validators=[]) input='bad text' +2026-09-08 17:50:06,002 INFO guardrails.execution request=64befc34-fd5e-4b01-bf5d-3b17a64d8818 guardrails execution finished (passed=False) output=None +2026-09-08 17:50:06,027 INFO guardrails.execution request=64befc34-fd5e-4b01-bf5d-3b17a64d8818 starting guardrails execution (validators=[]) input='this is some unsafe content' +2026-09-08 17:50:06,027 INFO guardrails.execution request=64befc34-fd5e-4b01-bf5d-3b17a64d8818 guardrails execution finished (passed=False) output=None +2026-09-08 17:50:06,029 INFO guardrails.execution request=64befc34-fd5e-4b01-bf5d-3b17a64d8818 starting guardrails execution (validators=[]) input='some input text' +2026-09-08 17:50:06,030 INFO guardrails.execution request=64befc34-fd5e-4b01-bf5d-3b17a64d8818 guardrails execution finished (passed=False) output=None +2026-09-08 17:50:06,032 INFO guardrails.execution request=64befc34-fd5e-4b01-bf5d-3b17a64d8818 starting guardrails execution (validators=[]) input='this contains profane words' +2026-09-08 17:50:06,032 INFO guardrails.execution request=64befc34-fd5e-4b01-bf5d-3b17a64d8818 guardrails execution finished (passed=False) output=None +2026-09-08 17:50:06,035 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 64befc34-fd5e-4b01-bf5d-3b17a64d8818: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 350, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +2026-09-08 17:50:06,037 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 64befc34-fd5e-4b01-bf5d-3b17a64d8818: Validation failed for field with errors: Profanity detected in: this contains profane words +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 350, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: Profanity detected in: this contains profane words +2026-09-08 17:50:06,053 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-08 17:50:06,056 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-08 17:50:06,058 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-08 17:50:06,071 INFO app.crud.validator_config created validator config id=144d2995-d688-407b-986d-7bc5a7f7f7a8 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-08 17:50:06,072 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [5.97ms] +2026-09-08 17:50:06,079 INFO app.crud.validator_config created validator config id=379fb560-e936-420b-a55d-5681efae1b7d org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-08 17:50:06,080 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.31ms] +2026-09-08 17:50:06,082 WARNING app.crud.validator_config create validator config failed: duplicate name (org=1 project=1) +2026-09-08 17:50:06,082 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 400 [1.97ms] +2026-09-08 17:50:06,087 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 422 [1.12ms] +2026-09-08 17:50:06,093 INFO app.crud.validator_config created validator config id=3d61e8ae-43d9-4ab1-9cb7-3a6bbfb72285 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-08 17:50:06,093 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.06ms] +2026-09-08 17:50:06,096 INFO app.crud.validator_config created validator config id=f67e876e-88da-4399-82bf-b884129652d0 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-08 17:50:06,096 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.55ms] +2026-09-08 17:50:06,098 INFO app.crud.validator_config created validator config id=9aa697d1-179b-4cf9-ab5a-c266b77f48d1 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-08 17:50:06,099 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.20ms] +2026-09-08 17:50:06,101 INFO app.crud.validator_config created validator config id=42e004d2-82a9-484a-b21e-7b6aed11d75d org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-08 17:50:06,101 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.36ms] +2026-09-08 17:50:06,104 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.93ms] +2026-09-08 17:50:06,104 INFO http_request_logger GET /api/v1/guardrails/validators/configs/3d61e8ae-43d9-4ab1-9cb7-3a6bbfb72285/ - 307 [0.11ms] +2026-09-08 17:50:06,106 INFO http_request_logger GET /api/v1/guardrails/validators/configs/3d61e8ae-43d9-4ab1-9cb7-3a6bbfb72285 - 200 [1.75ms] +2026-09-08 17:50:06,107 INFO http_request_logger GET /api/v1/guardrails/validators/configs/f67e876e-88da-4399-82bf-b884129652d0/ - 307 [0.10ms] +2026-09-08 17:50:06,108 INFO http_request_logger GET /api/v1/guardrails/validators/configs/f67e876e-88da-4399-82bf-b884129652d0 - 200 [1.37ms] +2026-09-08 17:50:06,109 INFO http_request_logger GET /api/v1/guardrails/validators/configs/9aa697d1-179b-4cf9-ab5a-c266b77f48d1/ - 307 [0.09ms] +2026-09-08 17:50:06,111 INFO http_request_logger GET /api/v1/guardrails/validators/configs/9aa697d1-179b-4cf9-ab5a-c266b77f48d1 - 200 [1.59ms] +2026-09-08 17:50:06,111 INFO http_request_logger GET /api/v1/guardrails/validators/configs/42e004d2-82a9-484a-b21e-7b6aed11d75d/ - 307 [0.09ms] +2026-09-08 17:50:06,113 INFO http_request_logger GET /api/v1/guardrails/validators/configs/42e004d2-82a9-484a-b21e-7b6aed11d75d - 200 [1.38ms] +2026-09-08 17:50:06,119 INFO app.crud.validator_config created validator config id=0236ef17-8d00-44b1-ae6c-79954594e5f8 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-08 17:50:06,120 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.05ms] +2026-09-08 17:50:06,122 INFO app.crud.validator_config created validator config id=998da283-b05a-4a64-a752-5bfea33bc7c1 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-08 17:50:06,123 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.50ms] +2026-09-08 17:50:06,125 INFO app.crud.validator_config created validator config id=965e4f2c-b923-4163-b093-136fec613162 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-08 17:50:06,126 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.78ms] +2026-09-08 17:50:06,126 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/0236ef17-8d00-44b1-ae6c-79954594e5f8/ - 307 [0.09ms] +2026-09-08 17:50:06,130 INFO app.crud.validator_config updated validator config id=0236ef17-8d00-44b1-ae6c-79954594e5f8 +2026-09-08 17:50:06,130 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/0236ef17-8d00-44b1-ae6c-79954594e5f8 - 200 [3.68ms] +2026-09-08 17:50:06,131 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/998da283-b05a-4a64-a752-5bfea33bc7c1/ - 307 [0.09ms] +2026-09-08 17:50:06,134 INFO app.crud.validator_config updated validator config id=998da283-b05a-4a64-a752-5bfea33bc7c1 +2026-09-08 17:50:06,135 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/998da283-b05a-4a64-a752-5bfea33bc7c1 - 200 [3.30ms] +2026-09-08 17:50:06,135 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/965e4f2c-b923-4163-b093-136fec613162/ - 307 [0.09ms] +2026-09-08 17:50:06,138 INFO app.crud.validator_config updated validator config id=965e4f2c-b923-4163-b093-136fec613162 +2026-09-08 17:50:06,139 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/965e4f2c-b923-4163-b093-136fec613162 - 200 [3.27ms] +2026-09-08 17:50:06,141 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.88ms] +2026-09-08 17:50:06,149 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.99ms] +2026-09-08 17:50:06,157 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.29ms] +2026-09-08 17:50:06,166 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.30ms] +2026-09-08 17:50:06,173 INFO app.crud.validator_config created validator config id=572c81c3-e6ef-48a9-bbc2-f04e464faa01 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-08 17:50:06,173 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.44ms] +2026-09-08 17:50:06,176 INFO app.crud.validator_config created validator config id=1de57c6c-9ef2-45d1-870c-7121ba55c4cb org=1 project=1 type=ValidatorType.PIIRemover +2026-09-08 17:50:06,176 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.61ms] +2026-09-08 17:50:06,179 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.02ms] +2026-09-08 17:50:06,185 INFO app.crud.validator_config created validator config id=e7e4f7dc-2ffb-4f00-8f2c-d39399a61ff1 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-08 17:50:06,186 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.99ms] +2026-09-08 17:50:06,188 INFO app.crud.validator_config created validator config id=e624cfc8-ed49-4ceb-8c68-79cd6c3ff0a0 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-08 17:50:06,189 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.00ms] +2026-09-08 17:50:06,191 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.04ms] +2026-09-08 17:50:06,196 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 422 [0.94ms] +2026-09-08 17:50:06,202 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.85ms] +2026-09-08 17:50:06,209 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.08ms] +2026-09-08 17:50:06,209 INFO http_request_logger GET /api/v1/guardrails/validators/configs/fc744519-96ed-47cf-8803-01938054e5d1/ - 307 [0.09ms] +2026-09-08 17:50:06,211 INFO http_request_logger GET /api/v1/guardrails/validators/configs/fc744519-96ed-47cf-8803-01938054e5d1 - 200 [1.55ms] +2026-09-08 17:50:06,215 INFO http_request_logger GET /api/v1/guardrails/validators/configs/70bb88df-aed1-4cf2-8292-275f91eafc92/ - 307 [0.09ms] +2026-09-08 17:50:06,217 INFO http_request_logger GET /api/v1/guardrails/validators/configs/70bb88df-aed1-4cf2-8292-275f91eafc92 - 404 [1.68ms] +2026-09-08 17:50:06,220 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid/ - 307 [0.09ms] +2026-09-08 17:50:06,221 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid - 422 [0.79ms] +2026-09-08 17:50:06,227 INFO app.crud.validator_config created validator config id=d146f175-cb61-4823-86c0-cc4990c49547 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-08 17:50:06,228 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.20ms] +2026-09-08 17:50:06,228 INFO http_request_logger GET /api/v1/guardrails/validators/configs/d146f175-cb61-4823-86c0-cc4990c49547/ - 307 [0.10ms] +2026-09-08 17:50:06,230 INFO http_request_logger GET /api/v1/guardrails/validators/configs/d146f175-cb61-4823-86c0-cc4990c49547 - 404 [1.47ms] +2026-09-08 17:50:06,237 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.84ms] +2026-09-08 17:50:06,238 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/8d34a377-87b7-43e8-a24f-4dca52a8a445/ - 307 [0.09ms] +2026-09-08 17:50:06,241 INFO app.crud.validator_config updated validator config id=8d34a377-87b7-43e8-a24f-4dca52a8a445 +2026-09-08 17:50:06,241 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/8d34a377-87b7-43e8-a24f-4dca52a8a445 - 200 [3.31ms] +2026-09-08 17:50:06,249 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.04ms] +2026-09-08 17:50:06,250 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/96a4dd5e-0bf2-45b1-af3e-f8cf72714f3f/ - 307 [0.09ms] +2026-09-08 17:50:06,252 INFO app.crud.validator_config updated validator config id=96a4dd5e-0bf2-45b1-af3e-f8cf72714f3f +2026-09-08 17:50:06,253 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/96a4dd5e-0bf2-45b1-af3e-f8cf72714f3f - 200 [2.96ms] +2026-09-08 17:50:06,257 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/ee75e93e-8c7f-4999-8aa6-cb6f11efd199/ - 307 [0.10ms] +2026-09-08 17:50:06,260 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/ee75e93e-8c7f-4999-8aa6-cb6f11efd199 - 404 [2.29ms] +2026-09-08 17:50:06,270 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.65ms] +2026-09-08 17:50:06,271 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/d40e3153-08aa-4318-87d8-1e68cfa5cbf9/ - 307 [0.10ms] +2026-09-08 17:50:06,274 INFO app.crud.validator_config deleted validator config id=d40e3153-08aa-4318-87d8-1e68cfa5cbf9 +2026-09-08 17:50:06,274 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/d40e3153-08aa-4318-87d8-1e68cfa5cbf9 - 200 [2.94ms] +2026-09-08 17:50:06,275 INFO http_request_logger GET /api/v1/guardrails/validators/configs/d40e3153-08aa-4318-87d8-1e68cfa5cbf9/ - 307 [0.10ms] +2026-09-08 17:50:06,277 INFO http_request_logger GET /api/v1/guardrails/validators/configs/d40e3153-08aa-4318-87d8-1e68cfa5cbf9 - 404 [1.80ms] +2026-09-08 17:50:06,281 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/41e7d6ca-de97-40a8-92d4-cf87b96bd13c/ - 307 [0.30ms] +2026-09-08 17:50:06,284 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/41e7d6ca-de97-40a8-92d4-cf87b96bd13c - 404 [1.87ms] +2026-09-08 17:50:06,291 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.91ms] +2026-09-08 17:50:06,291 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/3f6745c2-34a5-4f80-9b9c-0beda5d4a0c3/ - 307 [0.10ms] +2026-09-08 17:50:06,293 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/3f6745c2-34a5-4f80-9b9c-0beda5d4a0c3 - 404 [1.34ms] +2026-09-08 17:50:06,293 INFO http_request_logger GET /api/v1/guardrails/validators/configs/3f6745c2-34a5-4f80-9b9c-0beda5d4a0c3/ - 307 [0.09ms] +2026-09-08 17:50:06,295 INFO http_request_logger GET /api/v1/guardrails/validators/configs/3f6745c2-34a5-4f80-9b9c-0beda5d4a0c3 - 200 [1.43ms] +2026-09-08 17:50:06,387 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-08 17:50:06,388 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-08 17:50:06,452 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-08 17:50:09,255 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-08 17:50:09,269 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-08 17:50:10,824 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-08 17:50:10,836 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-08 17:50:12,275 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-08 17:50:12,286 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-08 17:50:13,373 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-08 17:50:13,387 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-08 17:50:14,977 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-08 17:50:14,988 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-08 17:50:17,686 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-08 17:50:17,687 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-08 17:50:18,971 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-08 17:50:19,130 INFO watchfiles.main 3 changes detected +2026-09-09 10:03:42,525 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [201.62ms] +2026-09-09 10:03:43,834 INFO presidio-analyzer Created NLP engine: spacy. Loaded models: ['en'] +2026-09-09 10:03:43,835 INFO presidio-analyzer registry not provided, creating default. +2026-09-09 10:03:43,851 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 10:03:43,852 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 10:03:43,852 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 10:03:43,852 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 10:03:43,852 INFO presidio-analyzer Loaded recognizer: UsBankRecognizer +2026-09-09 10:03:43,852 INFO presidio-analyzer Loaded recognizer: UsLicenseRecognizer +2026-09-09 10:03:43,852 INFO presidio-analyzer Loaded recognizer: UsItinRecognizer +2026-09-09 10:03:43,852 INFO presidio-analyzer Loaded recognizer: UsPassportRecognizer +2026-09-09 10:03:43,852 INFO presidio-analyzer Loaded recognizer: UsSsnRecognizer +2026-09-09 10:03:43,852 INFO presidio-analyzer Loaded recognizer: NhsRecognizer +2026-09-09 10:03:43,853 INFO presidio-analyzer Loaded recognizer: EsNifRecognizer +2026-09-09 10:03:43,853 INFO presidio-analyzer Loaded recognizer: EsNieRecognizer +2026-09-09 10:03:43,853 INFO presidio-analyzer Loaded recognizer: ItDriverLicenseRecognizer +2026-09-09 10:03:43,853 INFO presidio-analyzer Loaded recognizer: ItFiscalCodeRecognizer +2026-09-09 10:03:43,853 INFO presidio-analyzer Loaded recognizer: ItVatCodeRecognizer +2026-09-09 10:03:43,853 INFO presidio-analyzer Loaded recognizer: ItIdentityCardRecognizer +2026-09-09 10:03:43,853 INFO presidio-analyzer Loaded recognizer: ItPassportRecognizer +2026-09-09 10:03:43,853 INFO presidio-analyzer Loaded recognizer: PlPeselRecognizer +2026-09-09 10:03:43,853 INFO presidio-analyzer Loaded recognizer: CryptoRecognizer +2026-09-09 10:03:43,853 INFO presidio-analyzer Loaded recognizer: DateRecognizer +2026-09-09 10:03:43,853 INFO presidio-analyzer Loaded recognizer: EmailRecognizer +2026-09-09 10:03:43,853 INFO presidio-analyzer Loaded recognizer: IbanRecognizer +2026-09-09 10:03:43,853 INFO presidio-analyzer Loaded recognizer: IpRecognizer +2026-09-09 10:03:43,853 INFO presidio-analyzer Loaded recognizer: MedicalLicenseRecognizer +2026-09-09 10:03:43,853 INFO presidio-analyzer Loaded recognizer: MacAddressRecognizer +2026-09-09 10:03:43,853 INFO presidio-analyzer Loaded recognizer: PhoneRecognizer +2026-09-09 10:03:43,854 INFO presidio-analyzer Loaded recognizer: UrlRecognizer +2026-09-09 10:03:43,854 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: es, registry supported languages: en +2026-09-09 10:03:43,854 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:03:43,854 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: pl, registry supported languages: en +2026-09-09 10:03:43,854 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - EsNifRecognizer supported languages: es, registry supported languages: en +2026-09-09 10:03:43,854 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - EsNieRecognizer supported languages: es, registry supported languages: en +2026-09-09 10:03:43,854 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItDriverLicenseRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:03:43,854 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItFiscalCodeRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:03:43,854 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItVatCodeRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:03:43,854 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItIdentityCardRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:03:43,854 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItPassportRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:03:43,855 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - PlPeselRecognizer supported languages: pl, registry supported languages: en +2026-09-09 10:03:43,855 INFO presidio-analyzer Loaded recognizer: SpacyRecognizer +2026-09-09 10:03:43,855 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-09 10:03:43,855 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-09 10:03:43,855 INFO presidio-analyzer Loaded recognizer: InPassportRecognizer +2026-09-09 10:03:43,855 INFO presidio-analyzer Loaded recognizer: InVehicleRegistrationRecognizer +2026-09-09 10:03:43,855 INFO presidio-analyzer Loaded recognizer: InVoterRecognizer +2026-09-09 10:03:43,891 INFO guardrails.execution request=e261f98f-0626-42c7-aa16-00ce7653a15d starting guardrails execution (validators=['pii_remover']) input='Amit Gupta phone number is 919611188278' +2026-09-09 10:03:43,942 WARNING presidio-analyzer Entity CARDINAL is not mapped to a Presidio entity, but keeping anyway. Add to `NerModelConfiguration.labels_to_ignore` to remove. +2026-09-09 10:03:44,016 INFO guardrails.execution request=e261f98f-0626-42c7-aa16-00ce7653a15d guardrails execution finished (passed=True) output=' phone number is ' +2026-09-09 10:03:44,030 INFO guardrails.execution request=e261f98f-0626-42c7-aa16-00ce7653a15d step=1/1 validator=PIIRemover stage=output outcome=Outcome.FAIL start=2026-09-09T10:03:43.899463 end=2026-09-09T10:03:44.014551 duration_ms=115 input='Amit Gupta phone number is 919611188278' output=' phone number is ' +2026-09-09 10:03:44,060 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1489.23ms] +2026-09-09 10:05:30,092 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [25.82ms] +2026-09-09 10:05:30,127 INFO guardrails.execution request=fb25899f-cd16-41c3-87c5-b57d8ec8a6ab starting guardrails execution (validators=['pii_remover']) input='Amit Gupta phone number is 919611188278. He is a doctor' +2026-09-09 10:05:30,171 WARNING presidio-analyzer Entity CARDINAL is not mapped to a Presidio entity, but keeping anyway. Add to `NerModelConfiguration.labels_to_ignore` to remove. +2026-09-09 10:05:30,176 INFO guardrails.execution request=fb25899f-cd16-41c3-87c5-b57d8ec8a6ab guardrails execution finished (passed=True) output=' phone number is . He is a doctor' +2026-09-09 10:05:30,182 INFO guardrails.execution request=fb25899f-cd16-41c3-87c5-b57d8ec8a6ab step=1/1 validator=PIIRemover stage=output outcome=Outcome.FAIL start=2026-09-09T10:05:30.128849 end=2026-09-09T10:05:30.174376 duration_ms=45 input='Amit Gupta phone number is 919611188278. He is a doctor' output=' phone number is . He is a doctor' +2026-09-09 10:05:30,188 INFO http_request_logger POST /api/v1/guardrails/ - 200 [87.56ms] +2026-09-09 10:05:35,435 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [5.16ms] +2026-09-09 10:05:35,517 INFO guardrails.execution request=826123bb-c883-4425-b48e-faf4b0beba05 starting guardrails execution (validators=['gender_assumption_bias']) input='Amit Gupta phone number is 919611188278. He is a doctor' +2026-09-09 10:05:35,532 INFO guardrails.execution request=826123bb-c883-4425-b48e-faf4b0beba05 guardrails execution finished (passed=True) output='Amit Gupta phone number is 919611188278. they is a doctor' +2026-09-09 10:05:35,537 INFO guardrails.execution request=826123bb-c883-4425-b48e-faf4b0beba05 step=1/1 validator=GenderAssumptionBias stage=output outcome=Outcome.FAIL start=2026-09-09T10:05:35.518079 end=2026-09-09T10:05:35.531413 duration_ms=13 input='Amit Gupta phone number is 919611188278. He is a doctor' output='Amit Gupta phone number is 919611188278. they is a doctor' +2026-09-09 10:05:35,543 INFO http_request_logger POST /api/v1/guardrails/ - 200 [101.68ms] +2026-09-09 10:07:43,362 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [19.52ms] +2026-09-09 10:07:43,387 INFO guardrails.execution request=5cec79cb-43c7-4a78-9726-b86feadd5ac1 starting guardrails execution (validators=['pii_remover']) input='Amit Gupta phone number is 919611188278. He is a doctor' +2026-09-09 10:07:43,406 WARNING presidio-analyzer Entity CARDINAL is not mapped to a Presidio entity, but keeping anyway. Add to `NerModelConfiguration.labels_to_ignore` to remove. +2026-09-09 10:07:43,408 INFO guardrails.execution request=5cec79cb-43c7-4a78-9726-b86feadd5ac1 guardrails execution finished (passed=True) output=' phone number is . He is a doctor' +2026-09-09 10:07:43,412 INFO guardrails.execution request=5cec79cb-43c7-4a78-9726-b86feadd5ac1 step=1/1 validator=PIIRemover stage=output outcome=Outcome.FAIL start=2026-09-09T10:07:43.393795 end=2026-09-09T10:07:43.407812 duration_ms=14 input='Amit Gupta phone number is 919611188278. He is a doctor' output=' phone number is . He is a doctor' +2026-09-09 10:07:43,418 INFO http_request_logger POST /api/v1/guardrails/ - 200 [48.65ms] +2026-09-09 10:08:07,681 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [14.25ms] +2026-09-09 10:08:07,714 INFO guardrails.execution request=d3b9087c-d753-4b70-8d50-0acb6174e3ea starting guardrails execution (validators=['pii_remover']) input='Amit Gupta phone number is 919611188278. He is a doctor' +2026-09-09 10:08:07,734 WARNING presidio-analyzer Entity CARDINAL is not mapped to a Presidio entity, but keeping anyway. Add to `NerModelConfiguration.labels_to_ignore` to remove. +2026-09-09 10:08:07,737 INFO guardrails.execution request=d3b9087c-d753-4b70-8d50-0acb6174e3ea guardrails execution finished (passed=True) output=' phone number is . He is a doctor' +2026-09-09 10:08:07,743 INFO guardrails.execution request=d3b9087c-d753-4b70-8d50-0acb6174e3ea step=1/1 validator=PIIRemover stage=output outcome=Outcome.FAIL start=2026-09-09T10:08:07.717786 end=2026-09-09T10:08:07.736304 duration_ms=18 input='Amit Gupta phone number is 919611188278. He is a doctor' output=' phone number is . He is a doctor' +2026-09-09 10:08:07,748 INFO http_request_logger POST /api/v1/guardrails/ - 200 [58.64ms] +2026-09-09 10:08:10,663 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [6.42ms] +2026-09-09 10:08:10,689 INFO guardrails.execution request=b902ac7d-9f28-460f-9de7-ba77ddf2bb26 starting guardrails execution (validators=['gender_assumption_bias']) input='Amit Gupta phone number is 919611188278. He is a doctor' +2026-09-09 10:08:10,690 INFO guardrails.execution request=b902ac7d-9f28-460f-9de7-ba77ddf2bb26 guardrails execution finished (passed=True) output='Amit Gupta phone number is 919611188278. they is a doctor' +2026-09-09 10:08:10,693 INFO guardrails.execution request=b902ac7d-9f28-460f-9de7-ba77ddf2bb26 step=1/1 validator=GenderAssumptionBias stage=output outcome=Outcome.FAIL start=2026-09-09T10:08:10.689796 end=2026-09-09T10:08:10.690040 duration_ms=0 input='Amit Gupta phone number is 919611188278. He is a doctor' output='Amit Gupta phone number is 919611188278. they is a doctor' +2026-09-09 10:08:10,696 INFO http_request_logger POST /api/v1/guardrails/ - 200 [25.49ms] +2026-09-09 10:11:28,923 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [12.69ms] +2026-09-09 10:11:28,958 INFO guardrails.execution request=c718fd92-4f2d-4b68-9872-23dc9049597a starting guardrails execution (validators=['gender_assumption_bias']) input='Amit Gupta phone number is 919611188278. He is a doctor' +2026-09-09 10:11:28,961 INFO guardrails.execution request=c718fd92-4f2d-4b68-9872-23dc9049597a guardrails execution finished (passed=True) output='Amit Gupta phone number is 919611188278. they is a doctor' +2026-09-09 10:11:28,968 INFO guardrails.execution request=c718fd92-4f2d-4b68-9872-23dc9049597a step=1/1 validator=GenderAssumptionBias stage=output outcome=Outcome.FAIL start=2026-09-09T10:11:28.959878 end=2026-09-09T10:11:28.960138 duration_ms=0 input='Amit Gupta phone number is 919611188278. He is a doctor' output='Amit Gupta phone number is 919611188278. they is a doctor' +2026-09-09 10:11:28,974 INFO http_request_logger POST /api/v1/guardrails/ - 200 [42.13ms] +2026-09-09 10:13:05,160 INFO watchfiles.main 3 changes detected +2026-09-09 10:13:05,176 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 10:13:05,229 INFO uvicorn.error Shutting down +2026-09-09 10:13:05,335 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 10:13:05,337 INFO uvicorn.error Application shutdown complete. +2026-09-09 10:13:05,338 INFO uvicorn.error Finished server process [35935] +2026-09-09 10:13:05,751 INFO watchfiles.main 1 change detected +2026-09-09 10:13:11,542 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:13:12,106 INFO watchfiles.main 3 changes detected +2026-09-09 10:13:12,441 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 10:13:12,441 INFO uvicorn.error Started server process [45484] +2026-09-09 10:13:12,442 INFO uvicorn.error Waiting for application startup. +2026-09-09 10:13:12,442 INFO uvicorn.error Application startup complete. +2026-09-09 10:13:14,385 INFO watchfiles.main 3 changes detected +2026-09-09 10:13:19,059 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:13:19,750 INFO guardrails.execution request=336a5824-b8b9-4ae2-b11f-6c9c83fd791b starting guardrails execution (validators=[]) input='hello world' +2026-09-09 10:13:19,751 INFO guardrails.execution request=336a5824-b8b9-4ae2-b11f-6c9c83fd791b guardrails execution finished (passed=True) output='clean text' +2026-09-09 10:13:19,753 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.18ms] +2026-09-09 10:13:19,759 INFO guardrails.execution request=ee69ff6d-2d2c-49a3-8c34-796bcd6c8901 starting guardrails execution (validators=[]) input='my phone is 999999' +2026-09-09 10:13:19,759 INFO guardrails.execution request=ee69ff6d-2d2c-49a3-8c34-796bcd6c8901 guardrails execution finished (passed=False) output=None +2026-09-09 10:13:19,761 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.09ms] +2026-09-09 10:13:19,766 INFO guardrails.execution request=74c8848f-16f4-40f5-ae70-74eec86751ea starting guardrails execution (validators=[]) input='tell me about buildings' +2026-09-09 10:13:19,767 INFO guardrails.execution request=74c8848f-16f4-40f5-ae70-74eec86751ea guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Input is outside the allowed topic scope.' +2026-09-09 10:13:19,768 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3.75ms] +2026-09-09 10:13:19,773 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 0efe1a02-910a-41be-8424-e4c357cf9943: Invalid validator config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 353, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid validator config +2026-09-09 10:13:19,776 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.59ms] +2026-09-09 10:13:19,791 INFO guardrails.execution request=ed41ccfc-c94c-4ba4-adbd-07e260e704fa starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-09 10:13:19,793 INFO guardrails.execution request=ed41ccfc-c94c-4ba4-adbd-07e260e704fa guardrails execution finished (passed=True) output='this contains b' +2026-09-09 10:13:19,795 INFO guardrails.execution request=ed41ccfc-c94c-4ba4-adbd-07e260e704fa step=1/1 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:13:19.792487 end=2026-09-09T10:13:19.792623 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 10:13:19,799 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.88ms] +2026-09-09 10:13:19,813 INFO guardrails.execution request=3308d3f7-e49a-436b-ba45-66a61b620008 starting guardrails execution (validators=['ban_list']) input='this is clean' +2026-09-09 10:13:19,814 INFO guardrails.execution request=3308d3f7-e49a-436b-ba45-66a61b620008 guardrails execution finished (passed=True) output='this is clean' +2026-09-09 10:13:19,815 INFO guardrails.execution request=3308d3f7-e49a-436b-ba45-66a61b620008 step=1/1 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:13:19.813626 end=2026-09-09T10:13:19.813705 duration_ms=0 input='this is clean' output='this is clean' +2026-09-09 10:13:19,818 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.19ms] +2026-09-09 10:13:19,837 INFO guardrails.execution request=5a32cbdf-fa3b-4f12-8563-f4768d1813b6 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 10:13:19,840 INFO guardrails.execution request=5a32cbdf-fa3b-4f12-8563-f4768d1813b6 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR].' +2026-09-09 10:13:19,841 INFO guardrails.execution request=5a32cbdf-fa3b-4f12-8563-f4768d1813b6 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:13:19.837734 end=2026-09-09T10:13:19.839457 duration_ms=1 input='This sentence contains chakki.' output='this sentence contains [REDACTED_SLUR].' +2026-09-09 10:13:19,844 INFO http_request_logger POST /api/v1/guardrails/ - 200 [22.29ms] +2026-09-09 10:13:19,857 INFO guardrails.execution request=e1cfcaa3-b924-4511-b10b-3a5995d82655 starting guardrails execution (validators=['uli_slur_match']) input='This is a completely safe sentence' +2026-09-09 10:13:19,858 INFO guardrails.execution request=e1cfcaa3-b924-4511-b10b-3a5995d82655 guardrails execution finished (passed=True) output='This is a completely safe sentence' +2026-09-09 10:13:19,860 INFO guardrails.execution request=e1cfcaa3-b924-4511-b10b-3a5995d82655 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:13:19.857725 end=2026-09-09T10:13:19.857981 duration_ms=0 input='This is a completely safe sentence' output='This is a completely safe sentence' +2026-09-09 10:13:19,862 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.95ms] +2026-09-09 10:13:19,875 INFO guardrails.execution request=c08982d7-c2ff-47b1-9b8b-36661cb73e97 starting guardrails execution (validators=['uli_slur_match', 'ban_list']) input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' +2026-09-09 10:13:19,876 INFO guardrails.execution request=c08982d7-c2ff-47b1-9b8b-36661cb73e97 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-09 10:13:19,878 INFO guardrails.execution request=c08982d7-c2ff-47b1-9b8b-36661cb73e97 step=1/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:13:19.875650 end=2026-09-09T10:13:19.876098 duration_ms=0 input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' +2026-09-09 10:13:19,879 INFO guardrails.execution request=c08982d7-c2ff-47b1-9b8b-36661cb73e97 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:13:19.876103 end=2026-09-09T10:13:19.876185 duration_ms=0 input='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-09 10:13:19,882 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.43ms] +2026-09-09 10:13:19,886 INFO http_request_logger POST /api/v1/guardrails/ - 422 [1.29ms] +2026-09-09 10:13:19,899 INFO guardrails.execution request=2fa375ae-08eb-496e-a572-bcd8967e4ede starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 10:13:19,899 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 2fa375ae-08eb-496e-a572-bcd8967e4ede: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 369, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-09 10:13:19,903 INFO guardrails.execution request=2fa375ae-08eb-496e-a572-bcd8967e4ede step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:13:19.899568 end=2026-09-09T10:13:19.899809 duration_ms=0 input='This sentence contains chakki.' output=None +2026-09-09 10:13:19,905 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.05ms] +2026-09-09 10:13:19,918 INFO guardrails.execution request=4c42ab0e-54a6-4f8e-b075-dfeeb613cf29 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 10:13:19,919 INFO guardrails.execution request=4c42ab0e-54a6-4f8e-b075-dfeeb613cf29 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-09 10:13:19,921 INFO guardrails.execution request=4c42ab0e-54a6-4f8e-b075-dfeeb613cf29 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:13:19.918839 end=2026-09-09T10:13:19.919127 duration_ms=0 input='This sentence contains chakki.' output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-09 10:13:19,923 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.80ms] +2026-09-09 10:13:19,935 INFO guardrails.execution request=eb6ce5f5-77d4-49e3-83a8-d44cbd7249af starting guardrails execution (validators=['profanity_free']) input='This is a damn fucking mess.' +2026-09-09 10:13:19,939 INFO guardrails.execution request=eb6ce5f5-77d4-49e3-83a8-d44cbd7249af guardrails execution finished (passed=True) output='' +2026-09-09 10:13:19,942 INFO guardrails.execution request=eb6ce5f5-77d4-49e3-83a8-d44cbd7249af step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:13:19.936148 end=2026-09-09T10:13:19.938969 duration_ms=2 input='This is a damn fucking mess.' output='' +2026-09-09 10:13:19,945 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.03ms] +2026-09-09 10:13:19,956 INFO guardrails.execution request=48bcab69-c712-484b-8a9f-ed69d8a96926 starting guardrails execution (validators=['profanity_free']) input='This is a completely clean sentence.' +2026-09-09 10:13:19,959 INFO guardrails.execution request=48bcab69-c712-484b-8a9f-ed69d8a96926 guardrails execution finished (passed=True) output='This is a completely clean sentence.' +2026-09-09 10:13:19,960 INFO guardrails.execution request=48bcab69-c712-484b-8a9f-ed69d8a96926 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:13:19.957045 end=2026-09-09T10:13:19.958510 duration_ms=1 input='This is a completely clean sentence.' output='This is a completely clean sentence.' +2026-09-09 10:13:19,962 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.81ms] +2026-09-09 10:13:19,978 INFO guardrails.execution request=414205b8-c15a-4030-ab41-7f208f9cc706 starting guardrails execution (validators=['profanity_free']) input='What the fuck is going on?' +2026-09-09 10:13:19,979 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 414205b8-c15a-4030-ab41-7f208f9cc706: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 369, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +2026-09-09 10:13:19,983 INFO guardrails.execution request=414205b8-c15a-4030-ab41-7f208f9cc706 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:13:19.978888 end=2026-09-09T10:13:19.979802 duration_ms=0 input='What the fuck is going on?' output=None +2026-09-09 10:13:19,985 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.27ms] +2026-09-09 10:13:19,998 INFO guardrails.execution request=995f2c78-ba19-4149-9ef3-903e47c6c74f starting guardrails execution (validators=['profanity_free']) input='This is absolute bullshit.' +2026-09-09 10:13:20,000 INFO guardrails.execution request=995f2c78-ba19-4149-9ef3-903e47c6c74f guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-09 10:13:20,003 INFO guardrails.execution request=995f2c78-ba19-4149-9ef3-903e47c6c74f step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:13:19.999148 end=2026-09-09T10:13:19.999980 duration_ms=0 input='This is absolute bullshit.' output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-09 10:13:20,007 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.12ms] +2026-09-09 10:13:20,014 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 5a385138-8b08-417d-adc9-d5115ee54bec: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 353, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-09 10:13:20,017 INFO http_request_logger POST /api/v1/guardrails/ - 200 [6.09ms] +2026-09-09 10:13:22,847 INFO guardrails.execution request=04fa782d-c693-4261-a4de-059d4e73d191 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-09 10:13:23,043 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 04fa782d-c693-4261-a4de-059d4e73d191: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 369, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-09 10:13:23,052 INFO guardrails.execution request=04fa782d-c693-4261-a4de-059d4e73d191 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T10:13:22.848373 end=2026-09-09T10:13:23.042939 duration_ms=194 input='She slowly undressed and they had explicit sex.' output=None +2026-09-09 10:13:23,055 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3034.49ms] +2026-09-09 10:13:23,634 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-09 10:13:25,320 INFO guardrails.execution request=5b0e3e34-87e0-453a-a9c1-06e9c1ff6268 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-09 10:13:25,336 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 5b0e3e34-87e0-453a-a9c1-06e9c1ff6268: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 369, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-09 10:13:25,341 INFO guardrails.execution request=5b0e3e34-87e0-453a-a9c1-06e9c1ff6268 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T10:13:25.321452 end=2026-09-09T10:13:25.335889 duration_ms=14 input='She slowly undressed and they had explicit sex.' output=None +2026-09-09 10:13:25,345 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2283.59ms] +2026-09-09 10:13:27,423 INFO guardrails.execution request=5f0be790-acb9-4f60-90f0-be3b4e718ab1 starting guardrails execution (validators=['nsfw_text']) input='Explicit sexual content goes here.' +2026-09-09 10:13:27,447 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 5f0be790-acb9-4f60-90f0-be3b4e718ab1: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 369, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +2026-09-09 10:13:27,453 INFO guardrails.execution request=5f0be790-acb9-4f60-90f0-be3b4e718ab1 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T10:13:27.424448 end=2026-09-09T10:13:27.447110 duration_ms=22 input='Explicit sexual content goes here.' output=None +2026-09-09 10:13:27,458 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2107.00ms] +2026-09-09 10:13:27,481 INFO guardrails.execution request=89970f87-dcf7-4352-a6c0-932d6bfb0406 starting guardrails execution (validators=['profanity_free', 'uli_slur_match']) input='This fucking chakki should leave.' +2026-09-09 10:13:27,484 INFO guardrails.execution request=89970f87-dcf7-4352-a6c0-932d6bfb0406 guardrails execution finished (passed=True) output='' +2026-09-09 10:13:27,489 INFO guardrails.execution request=89970f87-dcf7-4352-a6c0-932d6bfb0406 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:13:27.482033 end=2026-09-09T10:13:27.483570 duration_ms=1 input='This fucking chakki should leave.' output='' +2026-09-09 10:13:27,492 INFO guardrails.execution request=89970f87-dcf7-4352-a6c0-932d6bfb0406 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:13:27.483588 end=2026-09-09T10:13:27.483783 duration_ms=0 input='' output='' +2026-09-09 10:13:27,496 INFO http_request_logger POST /api/v1/guardrails/ - 200 [32.54ms] +2026-09-09 10:13:27,509 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 5b8d1cb1-11e5-4048-8c44-a4cdfec53cc6: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 353, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-09 10:13:27,513 INFO http_request_logger POST /api/v1/guardrails/ - 200 [11.71ms] +2026-09-09 10:13:29,627 INFO guardrails.execution request=0a236f1b-8835-42bc-9c70-25e5975a8057 starting guardrails execution (validators=['profanity_free', 'nsfw_text']) input='What the fuck, this is explicit adult sexual content.' +2026-09-09 10:13:29,629 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 0a236f1b-8835-42bc-9c70-25e5975a8057: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 369, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +2026-09-09 10:13:29,634 INFO guardrails.execution request=0a236f1b-8835-42bc-9c70-25e5975a8057 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:13:29.628099 end=2026-09-09T10:13:29.629529 duration_ms=1 input='What the fuck, this is explicit adult sexual content.' output=None +2026-09-09 10:13:29,637 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2120.04ms] +2026-09-09 10:13:31,743 INFO guardrails.execution request=1067d450-392b-4552-8868-7fff018721b9 starting guardrails execution (validators=['uli_slur_match', 'nsfw_text']) input='This chakki has explicit sexual content.' +2026-09-09 10:13:31,744 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 1067d450-392b-4552-8868-7fff018721b9: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 369, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-09 10:13:31,748 INFO guardrails.execution request=1067d450-392b-4552-8868-7fff018721b9 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:13:31.744114 end=2026-09-09T10:13:31.744547 duration_ms=0 input='This chakki has explicit sexual content.' output=None +2026-09-09 10:13:31,751 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2108.34ms] +2026-09-09 10:13:31,766 INFO guardrails.execution request=32f704e3-d4c7-4944-acd8-2496874747c7 starting guardrails execution (validators=['profanity_free', 'ban_list']) input='Tell me about renewable energy sources.' +2026-09-09 10:13:31,769 INFO guardrails.execution request=32f704e3-d4c7-4944-acd8-2496874747c7 guardrails execution finished (passed=True) output='Tell me about renewable energy sources.' +2026-09-09 10:13:31,770 INFO guardrails.execution request=32f704e3-d4c7-4944-acd8-2496874747c7 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:13:31.767091 end=2026-09-09T10:13:31.768232 duration_ms=1 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-09 10:13:31,772 INFO guardrails.execution request=32f704e3-d4c7-4944-acd8-2496874747c7 step=2/2 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:13:31.768239 end=2026-09-09T10:13:31.768314 duration_ms=0 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-09 10:13:31,774 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.61ms] +2026-09-09 10:13:31,793 INFO guardrails.execution request=8cdf563f-e9cf-4067-86fe-d0f0cea56e06 starting guardrails execution (validators=['uli_slur_match', 'profanity_free', 'ban_list']) input='What are some healthy breakfast options?' +2026-09-09 10:13:31,795 INFO guardrails.execution request=8cdf563f-e9cf-4067-86fe-d0f0cea56e06 guardrails execution finished (passed=True) output='What are some healthy breakfast options?' +2026-09-09 10:13:31,799 INFO guardrails.execution request=8cdf563f-e9cf-4067-86fe-d0f0cea56e06 step=1/3 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:13:31.793811 end=2026-09-09T10:13:31.794114 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 10:13:31,801 INFO guardrails.execution request=8cdf563f-e9cf-4067-86fe-d0f0cea56e06 step=2/3 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:13:31.794119 end=2026-09-09T10:13:31.795049 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 10:13:31,804 INFO guardrails.execution request=8cdf563f-e9cf-4067-86fe-d0f0cea56e06 step=3/3 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:13:31.795054 end=2026-09-09T10:13:31.795111 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 10:13:31,807 INFO http_request_logger POST /api/v1/guardrails/ - 200 [29.41ms] +2026-09-09 10:13:31,823 INFO guardrails.execution request=0c3cba17-dc82-4567-a253-02bcc2827f48 starting guardrails execution (validators=['ban_list', 'uli_slur_match']) input='this contains badword' +2026-09-09 10:13:31,825 INFO guardrails.execution request=0c3cba17-dc82-4567-a253-02bcc2827f48 guardrails execution finished (passed=True) output='this contains b' +2026-09-09 10:13:31,827 INFO guardrails.execution request=0c3cba17-dc82-4567-a253-02bcc2827f48 step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:13:31.823991 end=2026-09-09T10:13:31.824094 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 10:13:31,829 INFO guardrails.execution request=0c3cba17-dc82-4567-a253-02bcc2827f48 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:13:31.824100 end=2026-09-09T10:13:31.824274 duration_ms=0 input='this contains b' output='this contains b' +2026-09-09 10:13:31,833 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.77ms] +2026-09-09 10:13:31,847 ERROR app.api.routes.guardrails [run_guardrails] config resolution failed for request_log b68c015f-0951-482c-8051-bd9231531622: 404: Ban list not found +2026-09-09 10:13:31,850 INFO http_request_logger POST /api/v1/guardrails/ - 404 [7.30ms] +2026-09-09 10:13:31,858 INFO guardrails.execution request=65d3a985-4887-4fb9-8c17-f2d9e6f15cab starting guardrails execution (validators=['ban_list']) input='hello' +2026-09-09 10:13:31,859 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 65d3a985-4887-4fb9-8c17-f2d9e6f15cab: boom +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 369, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +RuntimeError: boom +2026-09-09 10:13:31,861 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.73ms] +2026-09-09 10:13:31,868 WARNING app.api.routes.guardrails [run_guardrails] invalid request_id 'not-a-uuid' (org=1 project=1), no request log written +2026-09-09 10:13:31,868 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1.46ms] +2026-09-09 10:13:31,966 INFO watchfiles.main 3 changes detected +2026-09-09 10:13:43,015 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:13:43,184 INFO watchfiles.main 1 change detected +2026-09-09 10:14:55,231 INFO watchfiles.main 3 changes detected +2026-09-09 10:14:55,233 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 10:14:55,249 INFO uvicorn.error Shutting down +2026-09-09 10:14:55,354 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 10:14:55,355 INFO uvicorn.error Application shutdown complete. +2026-09-09 10:14:55,356 INFO uvicorn.error Finished server process [45484] +2026-09-09 10:14:55,753 INFO watchfiles.main 1 change detected +2026-09-09 10:15:00,612 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:15:01,372 INFO watchfiles.main 3 changes detected +2026-09-09 10:15:01,423 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 10:15:01,424 INFO uvicorn.error Started server process [45635] +2026-09-09 10:15:01,424 INFO uvicorn.error Waiting for application startup. +2026-09-09 10:15:01,425 INFO uvicorn.error Application startup complete. +2026-09-09 10:15:10,731 INFO watchfiles.main 3 changes detected +2026-09-09 10:15:10,731 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 10:15:10,814 INFO uvicorn.error Shutting down +2026-09-09 10:15:10,917 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 10:15:10,918 INFO uvicorn.error Application shutdown complete. +2026-09-09 10:15:10,919 INFO uvicorn.error Finished server process [45635] +2026-09-09 10:15:11,303 INFO watchfiles.main 1 change detected +2026-09-09 10:15:15,371 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:15:15,896 INFO watchfiles.main 3 changes detected +2026-09-09 10:15:16,148 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 10:15:16,148 INFO uvicorn.error Started server process [45662] +2026-09-09 10:15:16,149 INFO uvicorn.error Waiting for application startup. +2026-09-09 10:15:16,149 INFO uvicorn.error Application startup complete. +2026-09-09 10:15:19,311 INFO watchfiles.main 3 changes detected +2026-09-09 10:15:19,312 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 10:15:19,378 INFO uvicorn.error Shutting down +2026-09-09 10:15:19,479 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 10:15:19,481 INFO uvicorn.error Application shutdown complete. +2026-09-09 10:15:19,482 INFO uvicorn.error Finished server process [45662] +2026-09-09 10:15:19,897 INFO watchfiles.main 1 change detected +2026-09-09 10:15:23,714 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:15:24,241 INFO watchfiles.main 3 changes detected +2026-09-09 10:15:24,503 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 10:15:24,504 INFO uvicorn.error Started server process [45677] +2026-09-09 10:15:24,504 INFO uvicorn.error Waiting for application startup. +2026-09-09 10:15:24,505 INFO uvicorn.error Application startup complete. +2026-09-09 10:16:48,290 INFO watchfiles.main 3 changes detected +2026-09-09 10:16:58,697 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:16:59,466 INFO guardrails.execution request=fda7a091-94f3-4935-b3d7-6f9b6ad94d2d starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:16:59,468 INFO guardrails.execution request=fda7a091-94f3-4935-b3d7-6f9b6ad94d2d guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:16:59,471 INFO guardrails.execution request=fda7a091-94f3-4935-b3d7-6f9b6ad94d2d step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:16:59.467423 end=2026-09-09T10:16:59.467528 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:16:59,475 INFO http_request_logger POST /api/v1/guardrails/ - 200 [34.62ms] +2026-09-09 10:16:59,489 INFO guardrails.execution request=882c378d-0de6-4142-b8b0-1e61a17ddd99 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-09 10:16:59,490 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 882c378d-0de6-4142-b8b0-1e61a17ddd99: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-09 10:16:59,494 INFO guardrails.execution request=882c378d-0de6-4142-b8b0-1e61a17ddd99 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-09T10:16:59.490373 end=2026-09-09T10:16:59.490453 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-09 10:16:59,496 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.48ms] +2026-09-09 10:16:59,511 INFO guardrails.execution request=3d8ba3d0-c6e6-40e0-8846-58192ed88865 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='' +2026-09-09 10:16:59,512 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 3d8ba3d0-c6e6-40e0-8846-58192ed88865: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +2026-09-09 10:16:59,514 INFO guardrails.execution request=3d8ba3d0-c6e6-40e0-8846-58192ed88865 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-09T10:16:59.512011 end=2026-09-09T10:16:59.512062 duration_ms=0 input='' output=None +2026-09-09 10:16:59,516 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.81ms] +2026-09-09 10:16:59,531 INFO guardrails.execution request=2abdbb0f-0d19-4edf-becd-e6fd6c376156 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:16:59,533 INFO guardrails.execution request=2abdbb0f-0d19-4edf-becd-e6fd6c376156 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:16:59,534 INFO guardrails.execution request=2abdbb0f-0d19-4edf-becd-e6fd6c376156 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:16:59.532220 end=2026-09-09T10:16:59.532287 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:16:59,537 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.50ms] +2026-09-09 10:16:59,549 INFO guardrails.execution request=30f6cd3b-01db-430e-8c41-e017b8a89ad2 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-09 10:16:59,550 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 30f6cd3b-01db-430e-8c41-e017b8a89ad2: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-09 10:16:59,552 INFO guardrails.execution request=30f6cd3b-01db-430e-8c41-e017b8a89ad2 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-09T10:16:59.549903 end=2026-09-09T10:16:59.549975 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-09 10:16:59,554 INFO http_request_logger POST /api/v1/guardrails/ - 200 [13.68ms] +2026-09-09 10:16:59,574 INFO guardrails.execution request=a24af8ea-a2a8-4df8-8e0d-76e24db8ea73 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-09 10:16:59,576 INFO guardrails.execution request=a24af8ea-a2a8-4df8-8e0d-76e24db8ea73 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-09 10:16:59,578 INFO guardrails.execution request=a24af8ea-a2a8-4df8-8e0d-76e24db8ea73 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:16:59.575403 end=2026-09-09T10:16:59.575476 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-09 10:16:59,579 INFO guardrails.execution request=a24af8ea-a2a8-4df8-8e0d-76e24db8ea73 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:16:59.575480 end=2026-09-09T10:16:59.575578 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-09 10:16:59,582 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.24ms] +2026-09-09 10:16:59,595 INFO guardrails.execution request=46ae3952-f686-4e37-84af-9078c16a27a9 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Diabetes symptoms include fuck fatigue.' +2026-09-09 10:16:59,598 INFO guardrails.execution request=46ae3952-f686-4e37-84af-9078c16a27a9 guardrails execution finished (passed=True) output='' +2026-09-09 10:16:59,600 INFO guardrails.execution request=46ae3952-f686-4e37-84af-9078c16a27a9 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:16:59.596486 end=2026-09-09T10:16:59.596558 duration_ms=0 input='Diabetes symptoms include fuck fatigue.' output='Diabetes symptoms include fuck fatigue.' +2026-09-09 10:16:59,601 INFO guardrails.execution request=46ae3952-f686-4e37-84af-9078c16a27a9 step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:16:59.596562 end=2026-09-09T10:16:59.597908 duration_ms=1 input='Diabetes symptoms include fuck fatigue.' output='' +2026-09-09 10:16:59,604 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.02ms] +2026-09-09 10:16:59,625 INFO guardrails.execution request=64f32217-fd9e-4c61-a03e-b9ca91bb6df4 starting guardrails execution (validators=['answer_relevance_custom_llm', 'uli_slur_match']) input='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-09 10:16:59,629 INFO guardrails.execution request=64f32217-fd9e-4c61-a03e-b9ca91bb6df4 guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-09 10:16:59,633 INFO guardrails.execution request=64f32217-fd9e-4c61-a03e-b9ca91bb6df4 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:16:59.626359 end=2026-09-09T10:16:59.626425 duration_ms=0 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-09 10:16:59,634 INFO guardrails.execution request=64f32217-fd9e-4c61-a03e-b9ca91bb6df4 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:16:59.626430 end=2026-09-09T10:16:59.628756 duration_ms=2 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-09 10:16:59,637 INFO http_request_logger POST /api/v1/guardrails/ - 200 [29.17ms] +2026-09-09 10:16:59,650 INFO guardrails.execution request=53bc8048-d7a2-4a32-ad3b-a4022aab75bf starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-09 10:16:59,651 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 53bc8048-d7a2-4a32-ad3b-a4022aab75bf: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +2026-09-09 10:16:59,653 INFO guardrails.execution request=53bc8048-d7a2-4a32-ad3b-a4022aab75bf step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:16:59.650641 end=2026-09-09T10:16:59.650699 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-09 10:16:59,656 INFO guardrails.execution request=53bc8048-d7a2-4a32-ad3b-a4022aab75bf step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:16:59.650703 end=2026-09-09T10:16:59.651598 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output=None +2026-09-09 10:16:59,657 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.34ms] +2026-09-09 10:16:59,672 INFO guardrails.execution request=c204154d-ccf5-4733-b6bd-4ad6a1b95bb5 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list', 'profanity_free', 'uli_slur_match', 'gender_assumption_bias']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:16:59,675 INFO guardrails.execution request=c204154d-ccf5-4733-b6bd-4ad6a1b95bb5 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:16:59,679 INFO guardrails.execution request=c204154d-ccf5-4733-b6bd-4ad6a1b95bb5 step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:16:59.672773 end=2026-09-09T10:16:59.672833 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:16:59,681 INFO guardrails.execution request=c204154d-ccf5-4733-b6bd-4ad6a1b95bb5 step=2/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:16:59.672837 end=2026-09-09T10:16:59.672894 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:16:59,682 INFO guardrails.execution request=c204154d-ccf5-4733-b6bd-4ad6a1b95bb5 step=3/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:16:59.672897 end=2026-09-09T10:16:59.673768 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:16:59,683 INFO guardrails.execution request=c204154d-ccf5-4733-b6bd-4ad6a1b95bb5 step=4/5 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:16:59.673773 end=2026-09-09T10:16:59.674339 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:16:59,684 INFO guardrails.execution request=c204154d-ccf5-4733-b6bd-4ad6a1b95bb5 step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.PASS start=2026-09-09T10:16:59.674343 end=2026-09-09T10:16:59.674955 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:16:59,687 INFO http_request_logger POST /api/v1/guardrails/ - 200 [26.20ms] +2026-09-09 10:16:59,705 INFO guardrails.execution request=ad260ea3-b91a-4863-9887-d46523438ffd starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free', 'uli_slur_match', 'ban_list', 'gender_assumption_bias']) input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-09 10:16:59,709 INFO guardrails.execution request=ad260ea3-b91a-4863-9887-d46523438ffd guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-09 10:16:59,715 INFO guardrails.execution request=ad260ea3-b91a-4863-9887-d46523438ffd step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:16:59.706423 end=2026-09-09T10:16:59.706500 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-09 10:16:59,718 INFO guardrails.execution request=ad260ea3-b91a-4863-9887-d46523438ffd step=2/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:16:59.706505 end=2026-09-09T10:16:59.707416 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-09 10:16:59,720 INFO guardrails.execution request=ad260ea3-b91a-4863-9887-d46523438ffd step=3/5 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:16:59.707422 end=2026-09-09T10:16:59.707946 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-09 10:16:59,721 INFO guardrails.execution request=ad260ea3-b91a-4863-9887-d46523438ffd step=4/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:16:59.707952 end=2026-09-09T10:16:59.708012 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-09 10:16:59,724 INFO guardrails.execution request=ad260ea3-b91a-4863-9887-d46523438ffd step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.FAIL start=2026-09-09T10:16:59.708015 end=2026-09-09T10:16:59.708616 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-09 10:16:59,728 INFO http_request_logger POST /api/v1/guardrails/ - 200 [36.88ms] +2026-09-09 10:16:59,749 INFO app.crud.ban_list created ban list id=efa86567-3e33-4e3a-a7c1-bf676216241f org=1 project=1 +2026-09-09 10:16:59,750 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [5.27ms] +2026-09-09 10:16:59,754 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.85ms] +2026-09-09 10:16:59,759 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.78ms] +2026-09-09 10:16:59,763 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [1.17ms] +2026-09-09 10:16:59,767 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.72ms] +2026-09-09 10:16:59,772 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.70ms] +2026-09-09 10:16:59,781 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.67ms] +2026-09-09 10:16:59,788 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.64ms] +2026-09-09 10:16:59,793 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.61ms] +2026-09-09 10:16:59,799 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.79ms] +2026-09-09 10:16:59,807 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.94ms] +2026-09-09 10:16:59,809 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.31ms] +2026-09-09 10:16:59,817 INFO app.crud.ban_list created ban list id=df220878-ce51-4619-834f-356de0a3b95b org=1 project=1 +2026-09-09 10:16:59,818 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [4.46ms] +2026-09-09 10:16:59,818 INFO http_request_logger GET /api/v1/guardrails/ban_lists/df220878-ce51-4619-834f-356de0a3b95b/ - 307 [0.10ms] +2026-09-09 10:16:59,820 INFO http_request_logger GET /api/v1/guardrails/ban_lists/df220878-ce51-4619-834f-356de0a3b95b - 200 [2.10ms] +2026-09-09 10:16:59,829 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.99ms] +2026-09-09 10:16:59,830 INFO http_request_logger GET /api/v1/guardrails/ban_lists/505dcef1-4e0d-4004-b173-dca968f3748b/ - 307 [0.09ms] +2026-09-09 10:16:59,833 INFO http_request_logger GET /api/v1/guardrails/ban_lists/505dcef1-4e0d-4004-b173-dca968f3748b - 200 [2.98ms] +2026-09-09 10:16:59,839 INFO http_request_logger GET /api/v1/guardrails/ban_lists/4a17f1d6-5e05-44d4-a8c2-eb1a6da9440f/ - 307 [0.08ms] +2026-09-09 10:16:59,841 INFO http_request_logger GET /api/v1/guardrails/ban_lists/4a17f1d6-5e05-44d4-a8c2-eb1a6da9440f - 404 [1.67ms] +2026-09-09 10:16:59,853 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [3.17ms] +2026-09-09 10:16:59,854 INFO http_request_logger GET /api/v1/guardrails/ban_lists/9b09c5ae-ded5-48f9-b01d-299c136d1825/ - 307 [0.11ms] +2026-09-09 10:16:59,856 INFO http_request_logger GET /api/v1/guardrails/ban_lists/9b09c5ae-ded5-48f9-b01d-299c136d1825 - 403 [2.08ms] +2026-09-09 10:16:59,865 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.20ms] +2026-09-09 10:16:59,865 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/950a843e-e4dd-43b6-b735-bf956c55019b/ - 307 [0.10ms] +2026-09-09 10:16:59,869 INFO app.crud.ban_list updated ban list id=950a843e-e4dd-43b6-b735-bf956c55019b +2026-09-09 10:16:59,869 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/950a843e-e4dd-43b6-b735-bf956c55019b - 200 [3.74ms] +2026-09-09 10:16:59,877 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.88ms] +2026-09-09 10:16:59,877 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/29e9035d-5a4a-4a9e-857e-07303f270d4c/ - 307 [0.09ms] +2026-09-09 10:16:59,882 INFO app.crud.ban_list updated ban list id=29e9035d-5a4a-4a9e-857e-07303f270d4c +2026-09-09 10:16:59,882 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/29e9035d-5a4a-4a9e-857e-07303f270d4c - 200 [5.11ms] +2026-09-09 10:16:59,887 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/1871533b-31e8-4e02-b0c0-fd360043e3b4/ - 307 [0.10ms] +2026-09-09 10:16:59,890 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/1871533b-31e8-4e02-b0c0-fd360043e3b4 - 404 [2.55ms] +2026-09-09 10:16:59,896 INFO app.crud.ban_list created ban list id=43866aa0-2625-4e2c-85ba-3974a0a2bec2 org=1 project=1 +2026-09-09 10:16:59,896 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [3.49ms] +2026-09-09 10:16:59,897 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/43866aa0-2625-4e2c-85ba-3974a0a2bec2/ - 307 [0.10ms] +2026-09-09 10:16:59,899 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/43866aa0-2625-4e2c-85ba-3974a0a2bec2 - 403 [1.46ms] +2026-09-09 10:16:59,905 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.65ms] +2026-09-09 10:16:59,906 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/013dec79-2d59-402a-961e-95511c084620/ - 307 [0.08ms] +2026-09-09 10:16:59,907 INFO app.crud.ban_list deleted ban list id=013dec79-2d59-402a-961e-95511c084620 +2026-09-09 10:16:59,908 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/013dec79-2d59-402a-961e-95511c084620 - 200 [1.77ms] +2026-09-09 10:16:59,912 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/39b6bcb0-8f06-4f35-8316-887aa0f42882/ - 307 [0.08ms] +2026-09-09 10:16:59,914 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/39b6bcb0-8f06-4f35-8316-887aa0f42882 - 404 [1.38ms] +2026-09-09 10:16:59,920 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.63ms] +2026-09-09 10:16:59,920 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/904d05b9-655f-488f-84d9-83b0cab996ad/ - 307 [0.09ms] +2026-09-09 10:16:59,922 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/904d05b9-655f-488f-84d9-83b0cab996ad - 403 [1.27ms] +2026-09-09 10:16:59,926 INFO app.crud.ban_list created ban list id=a06b5efd-6128-417d-9703-f2283223004f org=1 project=1 +2026-09-09 10:16:59,927 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [2.36ms] +2026-09-09 10:16:59,927 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/a06b5efd-6128-417d-9703-f2283223004f/ - 307 [0.08ms] +2026-09-09 10:16:59,930 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/a06b5efd-6128-417d-9703-f2283223004f - 403 [2.43ms] +2026-09-09 10:17:00,017 INFO guardrails.execution request=4311eab8-2e20-4b78-8fa9-2ed87f3fd74b starting guardrails execution (validators=[]) input='hello world' +2026-09-09 10:17:00,017 INFO guardrails.execution request=4311eab8-2e20-4b78-8fa9-2ed87f3fd74b guardrails execution finished (passed=True) output='clean text' +2026-09-09 10:17:00,019 INFO http_request_logger POST /api/v1/guardrails/ - 200 [6.23ms] +2026-09-09 10:17:00,025 INFO guardrails.execution request=731f0cb3-c706-4be3-9adb-df47fc5fa85d starting guardrails execution (validators=[]) input='my phone is 999999' +2026-09-09 10:17:00,025 INFO guardrails.execution request=731f0cb3-c706-4be3-9adb-df47fc5fa85d guardrails execution finished (passed=False) output=None +2026-09-09 10:17:00,026 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.13ms] +2026-09-09 10:17:00,032 INFO guardrails.execution request=86ac0a68-4f0c-4dae-9645-fff7f400e4f5 starting guardrails execution (validators=[]) input='tell me about buildings' +2026-09-09 10:17:00,032 INFO guardrails.execution request=86ac0a68-4f0c-4dae-9645-fff7f400e4f5 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Input is outside the allowed topic scope.' +2026-09-09 10:17:00,034 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.15ms] +2026-09-09 10:17:00,041 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log a59c7416-9742-4e3e-b209-1f7ffe7a5ef8: Invalid validator config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 354, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid validator config +2026-09-09 10:17:00,046 INFO http_request_logger POST /api/v1/guardrails/ - 200 [8.76ms] +2026-09-09 10:17:00,059 INFO guardrails.execution request=9b75d576-5fe8-4576-99c6-4d23095ba15c starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-09 10:17:00,060 INFO guardrails.execution request=9b75d576-5fe8-4576-99c6-4d23095ba15c guardrails execution finished (passed=True) output='this contains b' +2026-09-09 10:17:00,062 INFO guardrails.execution request=9b75d576-5fe8-4576-99c6-4d23095ba15c step=1/1 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:17:00.059538 end=2026-09-09T10:17:00.059641 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 10:17:00,066 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.55ms] +2026-09-09 10:17:00,079 INFO guardrails.execution request=6bcf3b1d-9de6-4a78-a678-aa877a4d4526 starting guardrails execution (validators=['ban_list']) input='this is clean' +2026-09-09 10:17:00,080 INFO guardrails.execution request=6bcf3b1d-9de6-4a78-a678-aa877a4d4526 guardrails execution finished (passed=True) output='this is clean' +2026-09-09 10:17:00,083 INFO guardrails.execution request=6bcf3b1d-9de6-4a78-a678-aa877a4d4526 step=1/1 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:17:00.079846 end=2026-09-09T10:17:00.079916 duration_ms=0 input='this is clean' output='this is clean' +2026-09-09 10:17:00,086 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.29ms] +2026-09-09 10:17:00,103 INFO guardrails.execution request=2edc3eb7-89e5-43a6-afcc-be53bbcfee7c starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 10:17:00,104 INFO guardrails.execution request=2edc3eb7-89e5-43a6-afcc-be53bbcfee7c guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR].' +2026-09-09 10:17:00,108 INFO guardrails.execution request=2edc3eb7-89e5-43a6-afcc-be53bbcfee7c step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:17:00.103582 end=2026-09-09T10:17:00.103921 duration_ms=0 input='This sentence contains chakki.' output='this sentence contains [REDACTED_SLUR].' +2026-09-09 10:17:00,113 INFO http_request_logger POST /api/v1/guardrails/ - 200 [23.82ms] +2026-09-09 10:17:00,127 INFO guardrails.execution request=0120c21b-8917-4678-ac9b-bdc314dbc2fa starting guardrails execution (validators=['uli_slur_match']) input='This is a completely safe sentence' +2026-09-09 10:17:00,128 INFO guardrails.execution request=0120c21b-8917-4678-ac9b-bdc314dbc2fa guardrails execution finished (passed=True) output='This is a completely safe sentence' +2026-09-09 10:17:00,132 INFO guardrails.execution request=0120c21b-8917-4678-ac9b-bdc314dbc2fa step=1/1 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:17:00.127552 end=2026-09-09T10:17:00.127814 duration_ms=0 input='This is a completely safe sentence' output='This is a completely safe sentence' +2026-09-09 10:17:00,135 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.94ms] +2026-09-09 10:17:00,147 INFO guardrails.execution request=9800949e-e0a0-4005-bcd6-6a07f9d99326 starting guardrails execution (validators=['uli_slur_match', 'ban_list']) input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' +2026-09-09 10:17:00,149 INFO guardrails.execution request=9800949e-e0a0-4005-bcd6-6a07f9d99326 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-09 10:17:00,150 INFO guardrails.execution request=9800949e-e0a0-4005-bcd6-6a07f9d99326 step=1/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:17:00.148111 end=2026-09-09T10:17:00.148578 duration_ms=0 input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' +2026-09-09 10:17:00,152 INFO guardrails.execution request=9800949e-e0a0-4005-bcd6-6a07f9d99326 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:17:00.148583 end=2026-09-09T10:17:00.148660 duration_ms=0 input='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-09 10:17:00,154 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.59ms] +2026-09-09 10:17:00,161 INFO http_request_logger POST /api/v1/guardrails/ - 422 [0.92ms] +2026-09-09 10:17:00,173 INFO guardrails.execution request=33dadb99-1278-44a5-93a1-df86567563d1 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 10:17:00,174 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 33dadb99-1278-44a5-93a1-df86567563d1: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-09 10:17:00,178 INFO guardrails.execution request=33dadb99-1278-44a5-93a1-df86567563d1 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:17:00.173989 end=2026-09-09T10:17:00.174248 duration_ms=0 input='This sentence contains chakki.' output=None +2026-09-09 10:17:00,180 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.98ms] +2026-09-09 10:17:00,194 INFO guardrails.execution request=fc1fac14-e252-492b-85ce-723e3ca3894f starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 10:17:00,196 INFO guardrails.execution request=fc1fac14-e252-492b-85ce-723e3ca3894f guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-09 10:17:00,199 INFO guardrails.execution request=fc1fac14-e252-492b-85ce-723e3ca3894f step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:17:00.195138 end=2026-09-09T10:17:00.195411 duration_ms=0 input='This sentence contains chakki.' output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-09 10:17:00,202 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.59ms] +2026-09-09 10:17:00,215 INFO guardrails.execution request=dd12e5b6-9a6d-42e8-b34d-b3551a8211d1 starting guardrails execution (validators=['profanity_free']) input='This is a damn fucking mess.' +2026-09-09 10:17:00,218 INFO guardrails.execution request=dd12e5b6-9a6d-42e8-b34d-b3551a8211d1 guardrails execution finished (passed=True) output='' +2026-09-09 10:17:00,221 INFO guardrails.execution request=dd12e5b6-9a6d-42e8-b34d-b3551a8211d1 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:17:00.216290 end=2026-09-09T10:17:00.217277 duration_ms=0 input='This is a damn fucking mess.' output='' +2026-09-09 10:17:00,226 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.66ms] +2026-09-09 10:17:00,239 INFO guardrails.execution request=0e364de3-c1d4-4031-994c-48e3f34c99d4 starting guardrails execution (validators=['profanity_free']) input='This is a completely clean sentence.' +2026-09-09 10:17:00,241 INFO guardrails.execution request=0e364de3-c1d4-4031-994c-48e3f34c99d4 guardrails execution finished (passed=True) output='This is a completely clean sentence.' +2026-09-09 10:17:00,243 INFO guardrails.execution request=0e364de3-c1d4-4031-994c-48e3f34c99d4 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:17:00.239559 end=2026-09-09T10:17:00.240420 duration_ms=0 input='This is a completely clean sentence.' output='This is a completely clean sentence.' +2026-09-09 10:17:00,246 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.96ms] +2026-09-09 10:17:00,258 INFO guardrails.execution request=fc862780-e1f9-4286-aa2a-8225c9cc5abc starting guardrails execution (validators=['profanity_free']) input='What the fuck is going on?' +2026-09-09 10:17:00,259 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log fc862780-e1f9-4286-aa2a-8225c9cc5abc: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +2026-09-09 10:17:00,264 INFO guardrails.execution request=fc862780-e1f9-4286-aa2a-8225c9cc5abc step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:17:00.258687 end=2026-09-09T10:17:00.259560 duration_ms=0 input='What the fuck is going on?' output=None +2026-09-09 10:17:00,267 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.82ms] +2026-09-09 10:17:00,281 INFO guardrails.execution request=2ef4b76a-ac3a-4dcb-99d0-156c627d2d34 starting guardrails execution (validators=['profanity_free']) input='This is absolute bullshit.' +2026-09-09 10:17:00,283 INFO guardrails.execution request=2ef4b76a-ac3a-4dcb-99d0-156c627d2d34 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-09 10:17:00,286 INFO guardrails.execution request=2ef4b76a-ac3a-4dcb-99d0-156c627d2d34 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:17:00.282003 end=2026-09-09T10:17:00.282785 duration_ms=0 input='This is absolute bullshit.' output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-09 10:17:00,290 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.20ms] +2026-09-09 10:17:00,298 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 6211654c-f78d-4542-91f0-11423a3be7f8: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 354, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-09 10:17:00,302 INFO http_request_logger POST /api/v1/guardrails/ - 200 [7.80ms] +2026-09-09 10:17:00,883 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-09 10:17:02,696 INFO guardrails.execution request=9a93ddcc-f349-4946-9485-1bc221707399 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-09 10:17:02,807 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 9a93ddcc-f349-4946-9485-1bc221707399: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-09 10:17:02,814 INFO guardrails.execution request=9a93ddcc-f349-4946-9485-1bc221707399 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T10:17:02.697547 end=2026-09-09T10:17:02.807678 duration_ms=110 input='She slowly undressed and they had explicit sex.' output=None +2026-09-09 10:17:02,819 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2512.66ms] +2026-09-09 10:17:04,819 INFO guardrails.execution request=f6970dd0-fd55-40f4-9fe5-cfda7c798da1 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-09 10:17:04,833 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log f6970dd0-fd55-40f4-9fe5-cfda7c798da1: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-09 10:17:04,838 INFO guardrails.execution request=f6970dd0-fd55-40f4-9fe5-cfda7c798da1 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T10:17:04.820121 end=2026-09-09T10:17:04.833458 duration_ms=13 input='She slowly undressed and they had explicit sex.' output=None +2026-09-09 10:17:04,844 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2018.78ms] +2026-09-09 10:17:06,824 INFO guardrails.execution request=49acb067-cfba-40b3-9b21-76defad86035 starting guardrails execution (validators=['nsfw_text']) input='Explicit sexual content goes here.' +2026-09-09 10:17:06,849 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 49acb067-cfba-40b3-9b21-76defad86035: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +2026-09-09 10:17:06,852 INFO guardrails.execution request=49acb067-cfba-40b3-9b21-76defad86035 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T10:17:06.825551 end=2026-09-09T10:17:06.849051 duration_ms=23 input='Explicit sexual content goes here.' output=None +2026-09-09 10:17:06,855 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2006.13ms] +2026-09-09 10:17:06,877 INFO guardrails.execution request=1692bcdd-9ba2-4d20-aa55-5917a65a4a10 starting guardrails execution (validators=['profanity_free', 'uli_slur_match']) input='This fucking chakki should leave.' +2026-09-09 10:17:06,881 INFO guardrails.execution request=1692bcdd-9ba2-4d20-aa55-5917a65a4a10 guardrails execution finished (passed=True) output='' +2026-09-09 10:17:06,883 INFO guardrails.execution request=1692bcdd-9ba2-4d20-aa55-5917a65a4a10 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:17:06.878223 end=2026-09-09T10:17:06.879759 duration_ms=1 input='This fucking chakki should leave.' output='' +2026-09-09 10:17:06,885 INFO guardrails.execution request=1692bcdd-9ba2-4d20-aa55-5917a65a4a10 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:17:06.879777 end=2026-09-09T10:17:06.880002 duration_ms=0 input='' output='' +2026-09-09 10:17:06,888 INFO http_request_logger POST /api/v1/guardrails/ - 200 [27.14ms] +2026-09-09 10:17:06,895 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log c4bed2e7-e3b6-4497-88fe-b54365703279: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 354, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-09 10:17:06,897 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.34ms] +2026-09-09 10:17:08,912 INFO guardrails.execution request=83d3fa47-81a7-4fb9-a7c9-82843e7015b8 starting guardrails execution (validators=['profanity_free', 'nsfw_text']) input='What the fuck, this is explicit adult sexual content.' +2026-09-09 10:17:08,914 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 83d3fa47-81a7-4fb9-a7c9-82843e7015b8: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +2026-09-09 10:17:08,921 INFO guardrails.execution request=83d3fa47-81a7-4fb9-a7c9-82843e7015b8 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:17:08.913244 end=2026-09-09T10:17:08.914363 duration_ms=1 input='What the fuck, this is explicit adult sexual content.' output=None +2026-09-09 10:17:08,925 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2024.49ms] +2026-09-09 10:17:10,953 INFO guardrails.execution request=db9a953a-e4ce-4289-a4f6-9499036b3108 starting guardrails execution (validators=['uli_slur_match', 'nsfw_text']) input='This chakki has explicit sexual content.' +2026-09-09 10:17:10,955 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log db9a953a-e4ce-4289-a4f6-9499036b3108: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-09 10:17:10,960 INFO guardrails.execution request=db9a953a-e4ce-4289-a4f6-9499036b3108 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:17:10.954730 end=2026-09-09T10:17:10.955163 duration_ms=0 input='This chakki has explicit sexual content.' output=None +2026-09-09 10:17:10,964 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2033.03ms] +2026-09-09 10:17:10,982 INFO guardrails.execution request=764866d7-0234-4979-aef1-317be20b404d starting guardrails execution (validators=['profanity_free', 'ban_list']) input='Tell me about renewable energy sources.' +2026-09-09 10:17:10,985 INFO guardrails.execution request=764866d7-0234-4979-aef1-317be20b404d guardrails execution finished (passed=True) output='Tell me about renewable energy sources.' +2026-09-09 10:17:10,989 INFO guardrails.execution request=764866d7-0234-4979-aef1-317be20b404d step=1/2 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:17:10.982737 end=2026-09-09T10:17:10.984173 duration_ms=1 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-09 10:17:10,991 INFO guardrails.execution request=764866d7-0234-4979-aef1-317be20b404d step=2/2 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:17:10.984180 end=2026-09-09T10:17:10.984262 duration_ms=0 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-09 10:17:10,995 INFO http_request_logger POST /api/v1/guardrails/ - 200 [25.01ms] +2026-09-09 10:17:11,016 INFO guardrails.execution request=131b2149-a061-462e-95ae-e82f94e97079 starting guardrails execution (validators=['uli_slur_match', 'profanity_free', 'ban_list']) input='What are some healthy breakfast options?' +2026-09-09 10:17:11,019 INFO guardrails.execution request=131b2149-a061-462e-95ae-e82f94e97079 guardrails execution finished (passed=True) output='What are some healthy breakfast options?' +2026-09-09 10:17:11,023 INFO guardrails.execution request=131b2149-a061-462e-95ae-e82f94e97079 step=1/3 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:17:11.017554 end=2026-09-09T10:17:11.017868 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 10:17:11,025 INFO guardrails.execution request=131b2149-a061-462e-95ae-e82f94e97079 step=2/3 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:17:11.017873 end=2026-09-09T10:17:11.018765 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 10:17:11,027 INFO guardrails.execution request=131b2149-a061-462e-95ae-e82f94e97079 step=3/3 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:17:11.018770 end=2026-09-09T10:17:11.018825 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 10:17:11,031 INFO http_request_logger POST /api/v1/guardrails/ - 200 [30.96ms] +2026-09-09 10:17:11,047 INFO guardrails.execution request=3f1e4a4a-fc9c-4435-b4a6-db68eddbfd7f starting guardrails execution (validators=['ban_list', 'uli_slur_match']) input='this contains badword' +2026-09-09 10:17:11,049 INFO guardrails.execution request=3f1e4a4a-fc9c-4435-b4a6-db68eddbfd7f guardrails execution finished (passed=True) output='this contains b' +2026-09-09 10:17:11,052 INFO guardrails.execution request=3f1e4a4a-fc9c-4435-b4a6-db68eddbfd7f step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:17:11.048234 end=2026-09-09T10:17:11.048348 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 10:17:11,055 INFO guardrails.execution request=3f1e4a4a-fc9c-4435-b4a6-db68eddbfd7f step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:17:11.048355 end=2026-09-09T10:17:11.048563 duration_ms=0 input='this contains b' output='this contains b' +2026-09-09 10:17:11,060 INFO http_request_logger POST /api/v1/guardrails/ - 200 [24.77ms] +2026-09-09 10:17:11,077 ERROR app.api.routes.guardrails [run_guardrails] config resolution failed for request_log 51bb1633-7974-4d8a-b97a-a3ec2a439d8b: 404: Ban list not found +2026-09-09 10:17:11,080 INFO http_request_logger POST /api/v1/guardrails/ - 404 [7.74ms] +2026-09-09 10:17:11,093 INFO guardrails.execution request=f9ae854f-8887-4628-99a5-d96ab59c55df starting guardrails execution (validators=['ban_list']) input='hello' +2026-09-09 10:17:11,093 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log f9ae854f-8887-4628-99a5-d96ab59c55df: boom +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +RuntimeError: boom +2026-09-09 10:17:11,095 INFO http_request_logger POST /api/v1/guardrails/ - 200 [6.31ms] +2026-09-09 10:17:11,101 WARNING app.api.routes.guardrails [run_guardrails] invalid request_id 'not-a-uuid' (org=1 project=1), no request log written +2026-09-09 10:17:11,101 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1.31ms] +2026-09-09 10:17:11,110 INFO app.crud.llm_prompt_config created llm prompt config id=74fa6679-fd53-47fe-ae84-7d7ced94ac80 org=1 project=1 +2026-09-09 10:17:11,111 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [6.84ms] +2026-09-09 10:17:11,117 INFO app.crud.llm_prompt_config created llm prompt config id=2d8b9450-94fd-4211-8395-6392dc59bf8d org=1 project=1 +2026-09-09 10:17:11,118 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.98ms] +2026-09-09 10:17:11,123 INFO app.crud.llm_prompt_config created llm prompt config id=a61073f7-df22-4cda-9b95-704664439c6b org=1 project=1 +2026-09-09 10:17:11,124 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.83ms] +2026-09-09 10:17:11,128 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.98ms] +2026-09-09 10:17:11,132 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.84ms] +2026-09-09 10:17:11,136 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.80ms] +2026-09-09 10:17:11,139 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.86ms] +2026-09-09 10:17:11,146 INFO app.crud.llm_prompt_config created llm prompt config id=7b46c74a-dd47-461e-9249-bdc18fce1f9d org=1 project=1 +2026-09-09 10:17:11,146 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.19ms] +2026-09-09 10:17:11,150 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.85ms] +2026-09-09 10:17:11,153 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.78ms] +2026-09-09 10:17:11,158 INFO app.crud.llm_prompt_config created llm prompt config id=1c79cf40-3509-4237-ac43-790189e4c375 org=1 project=1 +2026-09-09 10:17:11,159 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.57ms] +2026-09-09 10:17:11,161 INFO app.crud.llm_prompt_config created llm prompt config id=941c2a54-e6b7-41b2-8c42-5d0373b1d13f org=1 project=1 +2026-09-09 10:17:11,161 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.31ms] +2026-09-09 10:17:11,163 INFO app.crud.llm_prompt_config created llm prompt config id=77e80a2c-5945-48fb-a81f-a352431e7493 org=1 project=1 +2026-09-09 10:17:11,164 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.13ms] +2026-09-09 10:17:11,166 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.93ms] +2026-09-09 10:17:11,171 INFO app.crud.llm_prompt_config created llm prompt config id=fcf2e706-43de-4239-b6e3-0ab03751e997 org=1 project=1 +2026-09-09 10:17:11,172 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.92ms] +2026-09-09 10:17:11,174 INFO app.crud.llm_prompt_config created llm prompt config id=19fc6a91-8418-4391-ae7c-266d3b428e49 org=1 project=1 +2026-09-09 10:17:11,174 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.22ms] +2026-09-09 10:17:11,176 INFO app.crud.llm_prompt_config created llm prompt config id=801e6bba-3999-4200-ae8f-e9078eb5fbc3 org=1 project=1 +2026-09-09 10:17:11,177 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.11ms] +2026-09-09 10:17:11,179 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.79ms] +2026-09-09 10:17:11,183 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.58ms] +2026-09-09 10:17:11,188 INFO app.crud.llm_prompt_config created llm prompt config id=cf5647c2-52ff-4c4c-a35e-6ec58bb531ac org=1 project=1 +2026-09-09 10:17:11,189 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.42ms] +2026-09-09 10:17:11,191 INFO app.crud.llm_prompt_config created llm prompt config id=a1198016-96fe-4557-af95-e62a01c63f11 org=1 project=1 +2026-09-09 10:17:11,191 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.12ms] +2026-09-09 10:17:11,193 INFO app.crud.llm_prompt_config created llm prompt config id=819918b8-4a04-4361-afbf-322f95bbeef8 org=1 project=1 +2026-09-09 10:17:11,193 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.18ms] +2026-09-09 10:17:11,196 INFO app.crud.llm_prompt_config created llm prompt config id=5185405e-7b96-4cdb-ad2e-fd070091906a org=1 project=1 +2026-09-09 10:17:11,196 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.19ms] +2026-09-09 10:17:11,198 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.66ms] +2026-09-09 10:17:11,203 INFO app.crud.llm_prompt_config created llm prompt config id=61c39ff9-0b64-471b-8a41-a3464a7cb2e3 org=1 project=1 +2026-09-09 10:17:11,203 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.55ms] +2026-09-09 10:17:11,205 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.33ms] +2026-09-09 10:17:11,210 INFO app.crud.llm_prompt_config created llm prompt config id=b9261a9d-bdf5-43c8-be5e-73ca5b953300 org=1 project=1 +2026-09-09 10:17:11,211 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.73ms] +2026-09-09 10:17:11,213 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/b9261a9d-bdf5-43c8-be5e-73ca5b953300 - 200 [1.65ms] +2026-09-09 10:17:11,217 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/fc97e11d-db8e-42fa-ab6e-8093f90f099f - 404 [1.50ms] +2026-09-09 10:17:11,222 INFO app.crud.llm_prompt_config created llm prompt config id=379ee09a-df47-4be4-ab55-a3bf5ca1d3e1 org=1 project=1 +2026-09-09 10:17:11,223 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.55ms] +2026-09-09 10:17:11,224 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/379ee09a-df47-4be4-ab55-a3bf5ca1d3e1 - 404 [1.31ms] +2026-09-09 10:17:11,229 INFO app.crud.llm_prompt_config created llm prompt config id=16c706a0-033e-4a90-99db-983da51f9c77 org=1 project=1 +2026-09-09 10:17:11,230 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.52ms] +2026-09-09 10:17:11,233 INFO app.crud.llm_prompt_config updated llm prompt config id=16c706a0-033e-4a90-99db-983da51f9c77 +2026-09-09 10:17:11,233 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/16c706a0-033e-4a90-99db-983da51f9c77 - 200 [3.30ms] +2026-09-09 10:17:11,239 INFO app.crud.llm_prompt_config created llm prompt config id=e4497935-72db-44ce-b7c7-c8f88d9e6018 org=1 project=1 +2026-09-09 10:17:11,239 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.58ms] +2026-09-09 10:17:11,242 INFO app.crud.llm_prompt_config updated llm prompt config id=e4497935-72db-44ce-b7c7-c8f88d9e6018 +2026-09-09 10:17:11,242 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/e4497935-72db-44ce-b7c7-c8f88d9e6018 - 200 [3.00ms] +2026-09-09 10:17:11,247 INFO app.crud.llm_prompt_config created llm prompt config id=2353adbf-20de-4482-aa74-20ecc7454417 org=1 project=1 +2026-09-09 10:17:11,248 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.47ms] +2026-09-09 10:17:11,250 INFO app.crud.llm_prompt_config updated llm prompt config id=2353adbf-20de-4482-aa74-20ecc7454417 +2026-09-09 10:17:11,251 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/2353adbf-20de-4482-aa74-20ecc7454417 - 200 [2.64ms] +2026-09-09 10:17:11,253 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/2353adbf-20de-4482-aa74-20ecc7454417 - 200 [1.42ms] +2026-09-09 10:17:11,257 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/d8651c72-bcac-4600-a3b3-44b4f9f84214 - 404 [1.64ms] +2026-09-09 10:17:11,262 INFO app.crud.llm_prompt_config created llm prompt config id=69ee6054-4d50-4aad-b4c4-75be34956021 org=1 project=1 +2026-09-09 10:17:11,263 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.79ms] +2026-09-09 10:17:11,264 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/69ee6054-4d50-4aad-b4c4-75be34956021 - 404 [1.38ms] +2026-09-09 10:17:11,269 INFO app.crud.llm_prompt_config created llm prompt config id=5a775ab8-d3bc-4bad-8b2c-e5baa4a75955 org=1 project=1 +2026-09-09 10:17:11,270 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.51ms] +2026-09-09 10:17:11,271 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/5a775ab8-d3bc-4bad-8b2c-e5baa4a75955 - 422 [1.36ms] +2026-09-09 10:17:11,276 INFO app.crud.llm_prompt_config created llm prompt config id=5207a616-f04d-4d0a-993a-27ff6a063de6 org=1 project=1 +2026-09-09 10:17:11,277 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.37ms] +2026-09-09 10:17:11,278 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/5207a616-f04d-4d0a-993a-27ff6a063de6 - 422 [1.29ms] +2026-09-09 10:17:11,283 INFO app.crud.llm_prompt_config created llm prompt config id=ff07eb9e-a3dc-478f-a4f0-d528f895e6ba org=1 project=1 +2026-09-09 10:17:11,283 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.42ms] +2026-09-09 10:17:11,286 INFO app.crud.llm_prompt_config updated llm prompt config id=ff07eb9e-a3dc-478f-a4f0-d528f895e6ba +2026-09-09 10:17:11,286 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/ff07eb9e-a3dc-478f-a4f0-d528f895e6ba - 200 [2.57ms] +2026-09-09 10:17:11,291 INFO app.crud.llm_prompt_config created llm prompt config id=89966a6c-af0b-4f67-baf4-01189cd46df1 org=1 project=1 +2026-09-09 10:17:11,291 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.40ms] +2026-09-09 10:17:11,294 INFO app.crud.llm_prompt_config updated llm prompt config id=89966a6c-af0b-4f67-baf4-01189cd46df1 +2026-09-09 10:17:11,294 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/89966a6c-af0b-4f67-baf4-01189cd46df1 - 200 [2.48ms] +2026-09-09 10:17:11,299 INFO app.crud.llm_prompt_config created llm prompt config id=a19d46f3-03a8-439c-aebb-77758ce34eb8 org=1 project=1 +2026-09-09 10:17:11,299 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.34ms] +2026-09-09 10:17:11,301 INFO app.crud.llm_prompt_config deleted llm prompt config id=a19d46f3-03a8-439c-aebb-77758ce34eb8 +2026-09-09 10:17:11,302 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/a19d46f3-03a8-439c-aebb-77758ce34eb8 - 200 [2.01ms] +2026-09-09 10:17:11,307 INFO app.crud.llm_prompt_config created llm prompt config id=d52a4c98-6f23-475b-ba29-ef7d6454a4dd org=1 project=1 +2026-09-09 10:17:11,307 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.82ms] +2026-09-09 10:17:11,309 INFO app.crud.llm_prompt_config deleted llm prompt config id=d52a4c98-6f23-475b-ba29-ef7d6454a4dd +2026-09-09 10:17:11,309 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/d52a4c98-6f23-475b-ba29-ef7d6454a4dd - 200 [1.71ms] +2026-09-09 10:17:11,311 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.30ms] +2026-09-09 10:17:11,315 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/d7c6e07b-d3c0-46bf-a0e6-b2727b206ff5 - 404 [1.36ms] +2026-09-09 10:17:11,319 INFO app.crud.llm_prompt_config created llm prompt config id=e94e4701-c8a5-4219-8157-6109f6ff1d5a org=1 project=1 +2026-09-09 10:17:11,320 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.33ms] +2026-09-09 10:17:11,321 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/e94e4701-c8a5-4219-8157-6109f6ff1d5a - 404 [1.16ms] +2026-09-09 10:17:11,409 INFO guardrails.execution request=f49aa837-e8df-4a4d-b2f8-ba154537c772 starting guardrails execution (validators=[]) input='hello' +2026-09-09 10:17:11,409 INFO guardrails.execution request=f49aa837-e8df-4a4d-b2f8-ba154537c772 guardrails execution finished (passed=True) output='clean text' +2026-09-09 10:17:11,412 INFO guardrails.execution request=f49aa837-e8df-4a4d-b2f8-ba154537c772 starting guardrails execution (validators=[]) input='bad text' +2026-09-09 10:17:11,412 INFO guardrails.execution request=f49aa837-e8df-4a4d-b2f8-ba154537c772 guardrails execution finished (passed=False) output=None +2026-09-09 10:17:11,414 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log f49aa837-e8df-4a4d-b2f8-ba154537c772: Invalid config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 354, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid config +2026-09-09 10:17:11,416 INFO guardrails.execution request=f49aa837-e8df-4a4d-b2f8-ba154537c772 starting guardrails execution (validators=[]) input='bad text' +2026-09-09 10:17:11,416 INFO guardrails.execution request=f49aa837-e8df-4a4d-b2f8-ba154537c772 guardrails execution finished (passed=False) output=None +2026-09-09 10:17:11,418 INFO guardrails.execution request=f49aa837-e8df-4a4d-b2f8-ba154537c772 starting guardrails execution (validators=[]) input='bad text' +2026-09-09 10:17:11,418 INFO guardrails.execution request=f49aa837-e8df-4a4d-b2f8-ba154537c772 guardrails execution finished (passed=False) output=None +2026-09-09 10:17:11,441 INFO guardrails.execution request=f49aa837-e8df-4a4d-b2f8-ba154537c772 starting guardrails execution (validators=[]) input='this is some unsafe content' +2026-09-09 10:17:11,441 INFO guardrails.execution request=f49aa837-e8df-4a4d-b2f8-ba154537c772 guardrails execution finished (passed=False) output=None +2026-09-09 10:17:11,443 INFO guardrails.execution request=f49aa837-e8df-4a4d-b2f8-ba154537c772 starting guardrails execution (validators=[]) input='some input text' +2026-09-09 10:17:11,443 INFO guardrails.execution request=f49aa837-e8df-4a4d-b2f8-ba154537c772 guardrails execution finished (passed=False) output=None +2026-09-09 10:17:11,446 INFO guardrails.execution request=f49aa837-e8df-4a4d-b2f8-ba154537c772 starting guardrails execution (validators=[]) input='this contains profane words' +2026-09-09 10:17:11,446 INFO guardrails.execution request=f49aa837-e8df-4a4d-b2f8-ba154537c772 guardrails execution finished (passed=False) output=None +2026-09-09 10:17:11,448 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log f49aa837-e8df-4a4d-b2f8-ba154537c772: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 354, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +2026-09-09 10:17:11,449 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log f49aa837-e8df-4a4d-b2f8-ba154537c772: Validation failed for field with errors: Profanity detected in: this contains profane words +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 354, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: Profanity detected in: this contains profane words +2026-09-09 10:17:11,466 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 10:17:11,469 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 10:17:11,472 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 10:17:11,483 INFO app.crud.validator_config created validator config id=50e40a25-e447-4e3c-b7ba-109213fcc68a org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:17:11,484 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [5.87ms] +2026-09-09 10:17:11,491 INFO app.crud.validator_config created validator config id=274eae16-1ddb-48c7-9710-8c42e69d6869 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:17:11,491 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.32ms] +2026-09-09 10:17:11,493 WARNING app.crud.validator_config create validator config failed: duplicate name (org=1 project=1) +2026-09-09 10:17:11,494 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 400 [1.73ms] +2026-09-09 10:17:11,498 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 422 [0.95ms] +2026-09-09 10:17:11,502 INFO app.crud.validator_config created validator config id=60b9cdf1-cf82-4855-881d-3ffc8ee06220 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:17:11,503 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.62ms] +2026-09-09 10:17:11,505 INFO app.crud.validator_config created validator config id=5dac4e80-d596-4aec-b53b-f908eaac1f08 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:17:11,506 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.31ms] +2026-09-09 10:17:11,508 INFO app.crud.validator_config created validator config id=4aca4bcf-0f2f-4c5c-91ab-9bb3d2ba2e8c org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:17:11,508 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.39ms] +2026-09-09 10:17:11,510 INFO app.crud.validator_config created validator config id=e643d695-a592-4eba-aa5d-821979232ca1 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:17:11,511 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.20ms] +2026-09-09 10:17:11,513 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.94ms] +2026-09-09 10:17:11,514 INFO http_request_logger GET /api/v1/guardrails/validators/configs/60b9cdf1-cf82-4855-881d-3ffc8ee06220/ - 307 [0.10ms] +2026-09-09 10:17:11,516 INFO http_request_logger GET /api/v1/guardrails/validators/configs/60b9cdf1-cf82-4855-881d-3ffc8ee06220 - 200 [1.61ms] +2026-09-09 10:17:11,516 INFO http_request_logger GET /api/v1/guardrails/validators/configs/5dac4e80-d596-4aec-b53b-f908eaac1f08/ - 307 [0.09ms] +2026-09-09 10:17:11,518 INFO http_request_logger GET /api/v1/guardrails/validators/configs/5dac4e80-d596-4aec-b53b-f908eaac1f08 - 200 [1.28ms] +2026-09-09 10:17:11,518 INFO http_request_logger GET /api/v1/guardrails/validators/configs/4aca4bcf-0f2f-4c5c-91ab-9bb3d2ba2e8c/ - 307 [0.09ms] +2026-09-09 10:17:11,520 INFO http_request_logger GET /api/v1/guardrails/validators/configs/4aca4bcf-0f2f-4c5c-91ab-9bb3d2ba2e8c - 200 [1.63ms] +2026-09-09 10:17:11,520 INFO http_request_logger GET /api/v1/guardrails/validators/configs/e643d695-a592-4eba-aa5d-821979232ca1/ - 307 [0.09ms] +2026-09-09 10:17:11,522 INFO http_request_logger GET /api/v1/guardrails/validators/configs/e643d695-a592-4eba-aa5d-821979232ca1 - 200 [1.36ms] +2026-09-09 10:17:11,528 INFO app.crud.validator_config created validator config id=cffadce5-6fdf-4f9d-aca4-e37c85c4fcf7 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:17:11,528 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.67ms] +2026-09-09 10:17:11,530 INFO app.crud.validator_config created validator config id=b5cf6cc0-7319-458b-892a-2a163a0e4f12 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:17:11,531 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.13ms] +2026-09-09 10:17:11,533 INFO app.crud.validator_config created validator config id=9c227e9c-16a9-4b66-8b18-49e1118311f1 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:17:11,533 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.13ms] +2026-09-09 10:17:11,533 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/cffadce5-6fdf-4f9d-aca4-e37c85c4fcf7/ - 307 [0.09ms] +2026-09-09 10:17:11,536 INFO app.crud.validator_config updated validator config id=cffadce5-6fdf-4f9d-aca4-e37c85c4fcf7 +2026-09-09 10:17:11,537 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/cffadce5-6fdf-4f9d-aca4-e37c85c4fcf7 - 200 [3.08ms] +2026-09-09 10:17:11,537 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/b5cf6cc0-7319-458b-892a-2a163a0e4f12/ - 307 [0.09ms] +2026-09-09 10:17:11,541 INFO app.crud.validator_config updated validator config id=b5cf6cc0-7319-458b-892a-2a163a0e4f12 +2026-09-09 10:17:11,542 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/b5cf6cc0-7319-458b-892a-2a163a0e4f12 - 200 [4.13ms] +2026-09-09 10:17:11,542 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/9c227e9c-16a9-4b66-8b18-49e1118311f1/ - 307 [0.08ms] +2026-09-09 10:17:11,544 INFO app.crud.validator_config updated validator config id=9c227e9c-16a9-4b66-8b18-49e1118311f1 +2026-09-09 10:17:11,545 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/9c227e9c-16a9-4b66-8b18-49e1118311f1 - 200 [2.51ms] +2026-09-09 10:17:11,547 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.44ms] +2026-09-09 10:17:11,553 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.02ms] +2026-09-09 10:17:11,561 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.95ms] +2026-09-09 10:17:11,567 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.83ms] +2026-09-09 10:17:11,572 INFO app.crud.validator_config created validator config id=63d6c8e0-4f6c-4923-914b-173f77424b31 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:17:11,573 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.51ms] +2026-09-09 10:17:11,576 INFO app.crud.validator_config created validator config id=dc46ec0e-2830-43c2-bcb2-67df69e36ef2 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:17:11,576 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.31ms] +2026-09-09 10:17:11,578 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.65ms] +2026-09-09 10:17:11,583 INFO app.crud.validator_config created validator config id=f48c9d19-7d1c-41cf-976e-bb43bd19453b org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:17:11,584 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.62ms] +2026-09-09 10:17:11,586 INFO app.crud.validator_config created validator config id=22840628-0b78-4e5b-bee2-556c33426b3f org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:17:11,586 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.13ms] +2026-09-09 10:17:11,588 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.48ms] +2026-09-09 10:17:11,592 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 422 [0.75ms] +2026-09-09 10:17:11,598 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.93ms] +2026-09-09 10:17:11,604 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.54ms] +2026-09-09 10:17:11,604 INFO http_request_logger GET /api/v1/guardrails/validators/configs/e64dce44-2dc9-4de4-bc5c-c07028eb183c/ - 307 [0.09ms] +2026-09-09 10:17:11,606 INFO http_request_logger GET /api/v1/guardrails/validators/configs/e64dce44-2dc9-4de4-bc5c-c07028eb183c - 200 [1.31ms] +2026-09-09 10:17:11,610 INFO http_request_logger GET /api/v1/guardrails/validators/configs/875f9fa8-9b3a-4861-b63b-79d3c810b4ab/ - 307 [0.08ms] +2026-09-09 10:17:11,611 INFO http_request_logger GET /api/v1/guardrails/validators/configs/875f9fa8-9b3a-4861-b63b-79d3c810b4ab - 404 [1.29ms] +2026-09-09 10:17:11,614 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid/ - 307 [0.08ms] +2026-09-09 10:17:11,615 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid - 422 [0.67ms] +2026-09-09 10:17:11,619 INFO app.crud.validator_config created validator config id=50d2634a-2074-4b7e-b285-695478c4cca8 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:17:11,620 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.43ms] +2026-09-09 10:17:11,620 INFO http_request_logger GET /api/v1/guardrails/validators/configs/50d2634a-2074-4b7e-b285-695478c4cca8/ - 307 [0.08ms] +2026-09-09 10:17:11,623 INFO http_request_logger GET /api/v1/guardrails/validators/configs/50d2634a-2074-4b7e-b285-695478c4cca8 - 404 [2.26ms] +2026-09-09 10:17:11,630 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.69ms] +2026-09-09 10:17:11,631 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/bc3a6a8a-7b8f-4135-9478-dadd0ac1ccda/ - 307 [0.09ms] +2026-09-09 10:17:11,633 INFO app.crud.validator_config updated validator config id=bc3a6a8a-7b8f-4135-9478-dadd0ac1ccda +2026-09-09 10:17:11,634 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/bc3a6a8a-7b8f-4135-9478-dadd0ac1ccda - 200 [2.64ms] +2026-09-09 10:17:11,640 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.10ms] +2026-09-09 10:17:11,641 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/80e9fc3a-16c1-4a38-9720-2ba2e9883220/ - 307 [0.08ms] +2026-09-09 10:17:11,645 INFO app.crud.validator_config updated validator config id=80e9fc3a-16c1-4a38-9720-2ba2e9883220 +2026-09-09 10:17:11,645 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/80e9fc3a-16c1-4a38-9720-2ba2e9883220 - 200 [4.36ms] +2026-09-09 10:17:11,648 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/f04e173e-c639-4b7e-8c35-bfd048010f0d/ - 307 [0.08ms] +2026-09-09 10:17:11,650 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/f04e173e-c639-4b7e-8c35-bfd048010f0d - 404 [1.52ms] +2026-09-09 10:17:11,656 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.53ms] +2026-09-09 10:17:11,657 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/5a39184c-2ace-4d59-8b64-09a0210a1c3f/ - 307 [0.08ms] +2026-09-09 10:17:11,660 INFO app.crud.validator_config deleted validator config id=5a39184c-2ace-4d59-8b64-09a0210a1c3f +2026-09-09 10:17:11,660 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/5a39184c-2ace-4d59-8b64-09a0210a1c3f - 200 [3.29ms] +2026-09-09 10:17:11,661 INFO http_request_logger GET /api/v1/guardrails/validators/configs/5a39184c-2ace-4d59-8b64-09a0210a1c3f/ - 307 [0.08ms] +2026-09-09 10:17:11,662 INFO http_request_logger GET /api/v1/guardrails/validators/configs/5a39184c-2ace-4d59-8b64-09a0210a1c3f - 404 [1.20ms] +2026-09-09 10:17:11,665 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/e6e1507e-afd2-4b13-8a2c-934081c97e0e/ - 307 [0.19ms] +2026-09-09 10:17:11,666 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/e6e1507e-afd2-4b13-8a2c-934081c97e0e - 404 [1.33ms] +2026-09-09 10:17:11,672 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.74ms] +2026-09-09 10:17:11,673 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/3714fc70-a042-49a2-84dd-0c1ab8920ecc/ - 307 [0.08ms] +2026-09-09 10:17:11,676 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/3714fc70-a042-49a2-84dd-0c1ab8920ecc - 404 [2.74ms] +2026-09-09 10:17:11,676 INFO http_request_logger GET /api/v1/guardrails/validators/configs/3714fc70-a042-49a2-84dd-0c1ab8920ecc/ - 307 [0.08ms] +2026-09-09 10:17:11,678 INFO http_request_logger GET /api/v1/guardrails/validators/configs/3714fc70-a042-49a2-84dd-0c1ab8920ecc - 200 [1.33ms] +2026-09-09 10:17:11,787 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-09 10:17:11,787 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-09 10:17:11,865 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:17:14,486 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:17:14,499 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:17:15,934 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:17:15,950 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:17:17,066 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:17:17,078 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:17:18,770 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:17:18,779 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:17:19,758 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:17:19,769 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:17:20,994 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:17:20,996 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:17:22,118 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:17:22,271 INFO watchfiles.main 3 changes detected +2026-09-09 10:20:54,040 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [28.88ms] +2026-09-09 10:20:54,923 INFO presidio-analyzer Created NLP engine: spacy. Loaded models: ['en'] +2026-09-09 10:20:54,924 INFO presidio-analyzer registry not provided, creating default. +2026-09-09 10:20:54,940 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 10:20:54,941 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 10:20:54,941 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 10:20:54,944 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 10:20:54,945 INFO presidio-analyzer Loaded recognizer: UsBankRecognizer +2026-09-09 10:20:54,945 INFO presidio-analyzer Loaded recognizer: UsLicenseRecognizer +2026-09-09 10:20:54,946 INFO presidio-analyzer Loaded recognizer: UsItinRecognizer +2026-09-09 10:20:54,948 INFO presidio-analyzer Loaded recognizer: UsPassportRecognizer +2026-09-09 10:20:54,949 INFO presidio-analyzer Loaded recognizer: UsSsnRecognizer +2026-09-09 10:20:54,949 INFO presidio-analyzer Loaded recognizer: NhsRecognizer +2026-09-09 10:20:54,949 INFO presidio-analyzer Loaded recognizer: EsNifRecognizer +2026-09-09 10:20:54,950 INFO presidio-analyzer Loaded recognizer: EsNieRecognizer +2026-09-09 10:20:54,950 INFO presidio-analyzer Loaded recognizer: ItDriverLicenseRecognizer +2026-09-09 10:20:54,950 INFO presidio-analyzer Loaded recognizer: ItFiscalCodeRecognizer +2026-09-09 10:20:54,950 INFO presidio-analyzer Loaded recognizer: ItVatCodeRecognizer +2026-09-09 10:20:54,950 INFO presidio-analyzer Loaded recognizer: ItIdentityCardRecognizer +2026-09-09 10:20:54,951 INFO presidio-analyzer Loaded recognizer: ItPassportRecognizer +2026-09-09 10:20:54,951 INFO presidio-analyzer Loaded recognizer: PlPeselRecognizer +2026-09-09 10:20:54,951 INFO presidio-analyzer Loaded recognizer: CryptoRecognizer +2026-09-09 10:20:54,951 INFO presidio-analyzer Loaded recognizer: DateRecognizer +2026-09-09 10:20:54,951 INFO presidio-analyzer Loaded recognizer: EmailRecognizer +2026-09-09 10:20:54,951 INFO presidio-analyzer Loaded recognizer: IbanRecognizer +2026-09-09 10:20:54,952 INFO presidio-analyzer Loaded recognizer: IpRecognizer +2026-09-09 10:20:54,952 INFO presidio-analyzer Loaded recognizer: MedicalLicenseRecognizer +2026-09-09 10:20:54,953 INFO presidio-analyzer Loaded recognizer: MacAddressRecognizer +2026-09-09 10:20:54,953 INFO presidio-analyzer Loaded recognizer: PhoneRecognizer +2026-09-09 10:20:54,953 INFO presidio-analyzer Loaded recognizer: UrlRecognizer +2026-09-09 10:20:54,954 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: es, registry supported languages: en +2026-09-09 10:20:54,954 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:20:54,954 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: pl, registry supported languages: en +2026-09-09 10:20:54,954 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - EsNifRecognizer supported languages: es, registry supported languages: en +2026-09-09 10:20:54,954 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - EsNieRecognizer supported languages: es, registry supported languages: en +2026-09-09 10:20:54,954 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItDriverLicenseRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:20:54,954 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItFiscalCodeRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:20:54,954 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItVatCodeRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:20:54,954 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItIdentityCardRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:20:54,956 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItPassportRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:20:54,956 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - PlPeselRecognizer supported languages: pl, registry supported languages: en +2026-09-09 10:20:54,957 INFO presidio-analyzer Loaded recognizer: SpacyRecognizer +2026-09-09 10:20:54,958 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-09 10:20:54,958 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-09 10:20:54,958 INFO presidio-analyzer Loaded recognizer: InPassportRecognizer +2026-09-09 10:20:54,958 INFO presidio-analyzer Loaded recognizer: InVehicleRegistrationRecognizer +2026-09-09 10:20:54,958 INFO presidio-analyzer Loaded recognizer: InVoterRecognizer +2026-09-09 10:20:54,982 INFO guardrails.execution request=0977d8b5-2f93-4563-ad2b-6d9cfd0bbb3e starting guardrails execution (validators=['pii_remover']) input='' +2026-09-09 10:20:55,027 INFO guardrails.execution request=0977d8b5-2f93-4563-ad2b-6d9cfd0bbb3e guardrails execution finished (passed=False) output=None +2026-09-09 10:20:55,038 INFO guardrails.execution request=0977d8b5-2f93-4563-ad2b-6d9cfd0bbb3e step=1/1 validator=PIIRemover stage=output outcome=Outcome.PASS start=2026-09-09T10:20:54.984401 end=2026-09-09T10:20:55.026815 duration_ms=42 input='' output='' +2026-09-09 10:20:55,048 INFO http_request_logger POST /api/v1/guardrails/ - 200 [994.36ms] +2026-09-09 10:21:30,745 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [13.72ms] +2026-09-09 10:21:30,776 INFO guardrails.execution request=b46f5462-715e-463c-8c6b-48380ec0f1c0 starting guardrails execution (validators=['pii_remover']) input='' +2026-09-09 10:21:30,783 INFO guardrails.execution request=b46f5462-715e-463c-8c6b-48380ec0f1c0 guardrails execution finished (passed=False) output=None +2026-09-09 10:21:30,787 INFO guardrails.execution request=b46f5462-715e-463c-8c6b-48380ec0f1c0 step=1/1 validator=PIIRemover stage=output outcome=Outcome.PASS start=2026-09-09T10:21:30.780490 end=2026-09-09T10:21:30.781920 duration_ms=1 input='' output='' +2026-09-09 10:21:30,793 INFO http_request_logger POST /api/v1/guardrails/ - 200 [37.48ms] +2026-09-09 10:36:47,335 INFO watchfiles.main 3 changes detected +2026-09-09 10:36:47,342 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 10:36:47,444 INFO uvicorn.error Shutting down +2026-09-09 10:36:47,550 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 10:36:47,556 INFO uvicorn.error Application shutdown complete. +2026-09-09 10:36:47,557 INFO uvicorn.error Finished server process [45677] +2026-09-09 10:36:47,996 INFO watchfiles.main 1 change detected +2026-09-09 10:36:52,960 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:36:53,663 INFO watchfiles.main 3 changes detected +2026-09-09 10:36:53,813 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 10:36:53,814 INFO uvicorn.error Started server process [47981] +2026-09-09 10:36:53,815 INFO uvicorn.error Waiting for application startup. +2026-09-09 10:36:53,815 INFO uvicorn.error Application startup complete. +2026-09-09 10:36:57,579 INFO watchfiles.main 3 changes detected +2026-09-09 10:36:57,581 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 10:36:57,651 INFO uvicorn.error Shutting down +2026-09-09 10:36:57,752 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 10:36:57,753 INFO uvicorn.error Application shutdown complete. +2026-09-09 10:36:57,754 INFO uvicorn.error Finished server process [47981] +2026-09-09 10:36:58,143 INFO watchfiles.main 1 change detected +2026-09-09 10:37:02,292 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:37:02,824 INFO watchfiles.main 3 changes detected +2026-09-09 10:37:03,087 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 10:37:03,087 INFO uvicorn.error Started server process [47994] +2026-09-09 10:37:03,088 INFO uvicorn.error Waiting for application startup. +2026-09-09 10:37:03,088 INFO uvicorn.error Application startup complete. +2026-09-09 10:37:07,135 INFO watchfiles.main 3 changes detected +2026-09-09 10:37:07,136 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 10:37:07,229 INFO uvicorn.error Shutting down +2026-09-09 10:37:07,331 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 10:37:07,333 INFO uvicorn.error Application shutdown complete. +2026-09-09 10:37:07,334 INFO uvicorn.error Finished server process [47994] +2026-09-09 10:37:07,748 INFO watchfiles.main 1 change detected +2026-09-09 10:37:11,869 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:37:12,384 INFO watchfiles.main 3 changes detected +2026-09-09 10:37:12,639 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 10:37:12,639 INFO uvicorn.error Started server process [48011] +2026-09-09 10:37:12,640 INFO uvicorn.error Waiting for application startup. +2026-09-09 10:37:12,640 INFO uvicorn.error Application startup complete. +2026-09-09 10:37:17,064 INFO watchfiles.main 3 changes detected +2026-09-09 10:37:21,659 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:37:22,751 INFO guardrails.execution request=ca02112a-fc3b-4358-8ddf-7cb65d52451c starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:37:22,753 INFO guardrails.execution request=ca02112a-fc3b-4358-8ddf-7cb65d52451c guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:37:22,756 INFO guardrails.execution request=ca02112a-fc3b-4358-8ddf-7cb65d52451c step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:37:22.752026 end=2026-09-09T10:37:22.752143 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:37:22,761 INFO http_request_logger POST /api/v1/guardrails/ - 200 [36.03ms] +2026-09-09 10:37:22,777 INFO guardrails.execution request=b7c6b477-f4d3-472d-b93f-a99a7cefda33 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-09 10:37:22,777 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log b7c6b477-f4d3-472d-b93f-a99a7cefda33: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-09 10:37:22,781 INFO guardrails.execution request=b7c6b477-f4d3-472d-b93f-a99a7cefda33 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-09T10:37:22.777528 end=2026-09-09T10:37:22.777633 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-09 10:37:22,783 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.10ms] +2026-09-09 10:37:22,797 INFO guardrails.execution request=0c7f0f11-33cc-4cf8-b78d-bd8cef2d97f9 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='' +2026-09-09 10:37:22,798 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 0c7f0f11-33cc-4cf8-b78d-bd8cef2d97f9: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +2026-09-09 10:37:22,800 INFO guardrails.execution request=0c7f0f11-33cc-4cf8-b78d-bd8cef2d97f9 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-09T10:37:22.798034 end=2026-09-09T10:37:22.798084 duration_ms=0 input='' output=None +2026-09-09 10:37:22,802 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.74ms] +2026-09-09 10:37:22,817 INFO guardrails.execution request=dc7747a9-f95a-4bf9-913c-682b9be69732 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:37:22,818 INFO guardrails.execution request=dc7747a9-f95a-4bf9-913c-682b9be69732 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:37:22,820 INFO guardrails.execution request=dc7747a9-f95a-4bf9-913c-682b9be69732 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:37:22.818029 end=2026-09-09T10:37:22.818099 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:37:22,823 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.06ms] +2026-09-09 10:37:22,846 INFO guardrails.execution request=8e00a706-fb30-41df-9e8c-a0f31f341d5b starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-09 10:37:22,847 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 8e00a706-fb30-41df-9e8c-a0f31f341d5b: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-09 10:37:22,853 INFO guardrails.execution request=8e00a706-fb30-41df-9e8c-a0f31f341d5b step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-09T10:37:22.846985 end=2026-09-09T10:37:22.847131 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-09 10:37:22,862 INFO http_request_logger POST /api/v1/guardrails/ - 200 [35.05ms] +2026-09-09 10:37:22,925 INFO guardrails.execution request=ad94702d-e88b-46df-b400-76fd87a349bb starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-09 10:37:22,927 INFO guardrails.execution request=ad94702d-e88b-46df-b400-76fd87a349bb guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-09 10:37:22,932 INFO guardrails.execution request=ad94702d-e88b-46df-b400-76fd87a349bb step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:37:22.925737 end=2026-09-09T10:37:22.925832 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-09 10:37:22,935 INFO guardrails.execution request=ad94702d-e88b-46df-b400-76fd87a349bb step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:22.925838 end=2026-09-09T10:37:22.925971 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-09 10:37:22,940 INFO http_request_logger POST /api/v1/guardrails/ - 200 [40.97ms] +2026-09-09 10:37:22,957 INFO guardrails.execution request=23c6a3cf-f96c-41d1-8b6e-483176eaeda4 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Diabetes symptoms include fuck fatigue.' +2026-09-09 10:37:22,960 INFO guardrails.execution request=23c6a3cf-f96c-41d1-8b6e-483176eaeda4 guardrails execution finished (passed=True) output='' +2026-09-09 10:37:22,963 INFO guardrails.execution request=23c6a3cf-f96c-41d1-8b6e-483176eaeda4 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:37:22.958371 end=2026-09-09T10:37:22.958442 duration_ms=0 input='Diabetes symptoms include fuck fatigue.' output='Diabetes symptoms include fuck fatigue.' +2026-09-09 10:37:22,965 INFO guardrails.execution request=23c6a3cf-f96c-41d1-8b6e-483176eaeda4 step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:22.958447 end=2026-09-09T10:37:22.959799 duration_ms=1 input='Diabetes symptoms include fuck fatigue.' output='' +2026-09-09 10:37:22,969 INFO http_request_logger POST /api/v1/guardrails/ - 200 [23.74ms] +2026-09-09 10:37:22,993 INFO guardrails.execution request=99c30a5b-7dac-4e39-b477-902635273126 starting guardrails execution (validators=['answer_relevance_custom_llm', 'uli_slur_match']) input='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-09 10:37:22,997 INFO guardrails.execution request=99c30a5b-7dac-4e39-b477-902635273126 guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-09 10:37:22,999 INFO guardrails.execution request=99c30a5b-7dac-4e39-b477-902635273126 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:37:22.994261 end=2026-09-09T10:37:22.994337 duration_ms=0 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-09 10:37:23,001 INFO guardrails.execution request=99c30a5b-7dac-4e39-b477-902635273126 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:22.994342 end=2026-09-09T10:37:22.996601 duration_ms=2 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-09 10:37:23,004 INFO http_request_logger POST /api/v1/guardrails/ - 200 [29.23ms] +2026-09-09 10:37:23,021 INFO guardrails.execution request=571df08b-0532-492d-9378-a830169d478d starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-09 10:37:23,023 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 571df08b-0532-492d-9378-a830169d478d: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +2026-09-09 10:37:23,026 INFO guardrails.execution request=571df08b-0532-492d-9378-a830169d478d step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:37:23.022415 end=2026-09-09T10:37:23.022487 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-09 10:37:23,028 INFO guardrails.execution request=571df08b-0532-492d-9378-a830169d478d step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:23.022492 end=2026-09-09T10:37:23.023479 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output=None +2026-09-09 10:37:23,030 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.42ms] +2026-09-09 10:37:23,048 INFO guardrails.execution request=064d6980-0866-4db3-ac9a-1ae340194189 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list', 'profanity_free', 'uli_slur_match', 'gender_assumption_bias']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:37:23,051 INFO guardrails.execution request=064d6980-0866-4db3-ac9a-1ae340194189 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:37:23,054 INFO guardrails.execution request=064d6980-0866-4db3-ac9a-1ae340194189 step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:37:23.048902 end=2026-09-09T10:37:23.048966 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:37:23,055 INFO guardrails.execution request=064d6980-0866-4db3-ac9a-1ae340194189 step=2/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:37:23.048970 end=2026-09-09T10:37:23.049027 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:37:23,056 INFO guardrails.execution request=064d6980-0866-4db3-ac9a-1ae340194189 step=3/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:37:23.049030 end=2026-09-09T10:37:23.049837 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:37:23,058 INFO guardrails.execution request=064d6980-0866-4db3-ac9a-1ae340194189 step=4/5 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:37:23.049841 end=2026-09-09T10:37:23.050383 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:37:23,059 INFO guardrails.execution request=064d6980-0866-4db3-ac9a-1ae340194189 step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.PASS start=2026-09-09T10:37:23.050387 end=2026-09-09T10:37:23.050999 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:37:23,061 INFO http_request_logger POST /api/v1/guardrails/ - 200 [27.24ms] +2026-09-09 10:37:23,080 INFO guardrails.execution request=b94893d8-3139-47ea-8b7c-a0ec93bc4781 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free', 'uli_slur_match', 'ban_list', 'gender_assumption_bias']) input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-09 10:37:23,084 INFO guardrails.execution request=b94893d8-3139-47ea-8b7c-a0ec93bc4781 guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-09 10:37:23,087 INFO guardrails.execution request=b94893d8-3139-47ea-8b7c-a0ec93bc4781 step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:37:23.081273 end=2026-09-09T10:37:23.081333 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-09 10:37:23,090 INFO guardrails.execution request=b94893d8-3139-47ea-8b7c-a0ec93bc4781 step=2/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:37:23.081338 end=2026-09-09T10:37:23.082189 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-09 10:37:23,092 INFO guardrails.execution request=b94893d8-3139-47ea-8b7c-a0ec93bc4781 step=3/5 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:23.082194 end=2026-09-09T10:37:23.082686 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-09 10:37:23,094 INFO guardrails.execution request=b94893d8-3139-47ea-8b7c-a0ec93bc4781 step=4/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:37:23.082691 end=2026-09-09T10:37:23.082757 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-09 10:37:23,096 INFO guardrails.execution request=b94893d8-3139-47ea-8b7c-a0ec93bc4781 step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:23.082760 end=2026-09-09T10:37:23.083394 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-09 10:37:23,099 INFO http_request_logger POST /api/v1/guardrails/ - 200 [33.44ms] +2026-09-09 10:37:23,121 INFO app.crud.ban_list created ban list id=ca1f0a14-3bd3-444c-ae0c-e090ec1c9fdc org=1 project=1 +2026-09-09 10:37:23,122 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [5.09ms] +2026-09-09 10:37:23,128 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.88ms] +2026-09-09 10:37:23,131 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.82ms] +2026-09-09 10:37:23,136 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [1.27ms] +2026-09-09 10:37:23,140 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.76ms] +2026-09-09 10:37:23,145 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.78ms] +2026-09-09 10:37:23,155 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [3.24ms] +2026-09-09 10:37:23,164 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.71ms] +2026-09-09 10:37:23,169 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.62ms] +2026-09-09 10:37:23,176 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.85ms] +2026-09-09 10:37:23,183 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.57ms] +2026-09-09 10:37:23,186 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.77ms] +2026-09-09 10:37:23,191 INFO app.crud.ban_list created ban list id=e377e176-86b0-404f-b92b-eacc873f6ec9 org=1 project=1 +2026-09-09 10:37:23,191 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [2.52ms] +2026-09-09 10:37:23,192 INFO http_request_logger GET /api/v1/guardrails/ban_lists/e377e176-86b0-404f-b92b-eacc873f6ec9/ - 307 [0.09ms] +2026-09-09 10:37:23,195 INFO http_request_logger GET /api/v1/guardrails/ban_lists/e377e176-86b0-404f-b92b-eacc873f6ec9 - 200 [3.22ms] +2026-09-09 10:37:23,204 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.95ms] +2026-09-09 10:37:23,205 INFO http_request_logger GET /api/v1/guardrails/ban_lists/cbecfb4a-8ef5-4623-a18b-253383ae741a/ - 307 [0.10ms] +2026-09-09 10:37:23,207 INFO http_request_logger GET /api/v1/guardrails/ban_lists/cbecfb4a-8ef5-4623-a18b-253383ae741a - 200 [1.49ms] +2026-09-09 10:37:23,210 INFO http_request_logger GET /api/v1/guardrails/ban_lists/55ae439c-cf3f-4df6-aabe-44d6bfa6e872/ - 307 [0.09ms] +2026-09-09 10:37:23,213 INFO http_request_logger GET /api/v1/guardrails/ban_lists/55ae439c-cf3f-4df6-aabe-44d6bfa6e872 - 404 [2.53ms] +2026-09-09 10:37:23,221 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.08ms] +2026-09-09 10:37:23,221 INFO http_request_logger GET /api/v1/guardrails/ban_lists/7642d1e9-f430-4f07-b6b1-e780966411a1/ - 307 [0.11ms] +2026-09-09 10:37:23,223 INFO http_request_logger GET /api/v1/guardrails/ban_lists/7642d1e9-f430-4f07-b6b1-e780966411a1 - 403 [1.65ms] +2026-09-09 10:37:23,234 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.90ms] +2026-09-09 10:37:23,235 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/139c2668-3689-4c3d-815c-2ba14deb6d82/ - 307 [0.10ms] +2026-09-09 10:37:23,240 INFO app.crud.ban_list updated ban list id=139c2668-3689-4c3d-815c-2ba14deb6d82 +2026-09-09 10:37:23,241 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/139c2668-3689-4c3d-815c-2ba14deb6d82 - 200 [5.36ms] +2026-09-09 10:37:23,250 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.50ms] +2026-09-09 10:37:23,250 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/a481d36a-55fe-453f-ac44-103162ae144f/ - 307 [0.09ms] +2026-09-09 10:37:23,255 INFO app.crud.ban_list updated ban list id=a481d36a-55fe-453f-ac44-103162ae144f +2026-09-09 10:37:23,256 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/a481d36a-55fe-453f-ac44-103162ae144f - 200 [5.20ms] +2026-09-09 10:37:23,261 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/f1ca7f1f-dc4c-43bb-a6c0-3e33c1f2d3f0/ - 307 [0.19ms] +2026-09-09 10:37:23,264 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/f1ca7f1f-dc4c-43bb-a6c0-3e33c1f2d3f0 - 404 [2.45ms] +2026-09-09 10:37:23,270 INFO app.crud.ban_list created ban list id=b77f5eda-d0a4-40f5-9faa-dd50bb8b8453 org=1 project=1 +2026-09-09 10:37:23,271 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [3.74ms] +2026-09-09 10:37:23,271 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/b77f5eda-d0a4-40f5-9faa-dd50bb8b8453/ - 307 [0.11ms] +2026-09-09 10:37:23,273 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/b77f5eda-d0a4-40f5-9faa-dd50bb8b8453 - 403 [1.34ms] +2026-09-09 10:37:23,279 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.62ms] +2026-09-09 10:37:23,280 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/4bf03e5b-5d9a-4083-8c54-5f9b99fb7e8b/ - 307 [0.09ms] +2026-09-09 10:37:23,282 INFO app.crud.ban_list deleted ban list id=4bf03e5b-5d9a-4083-8c54-5f9b99fb7e8b +2026-09-09 10:37:23,283 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/4bf03e5b-5d9a-4083-8c54-5f9b99fb7e8b - 200 [2.49ms] +2026-09-09 10:37:23,286 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/ecf01a0d-a53c-4f02-aeac-e33be86b7625/ - 307 [0.08ms] +2026-09-09 10:37:23,288 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/ecf01a0d-a53c-4f02-aeac-e33be86b7625 - 404 [1.53ms] +2026-09-09 10:37:23,294 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.68ms] +2026-09-09 10:37:23,295 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/d920cd31-c800-4c9e-9cb0-25c918e0c22c/ - 307 [0.09ms] +2026-09-09 10:37:23,297 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/d920cd31-c800-4c9e-9cb0-25c918e0c22c - 403 [1.37ms] +2026-09-09 10:37:23,302 INFO app.crud.ban_list created ban list id=0e367c3a-953d-4ae2-9a83-9326c19b5acb org=1 project=1 +2026-09-09 10:37:23,303 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [3.25ms] +2026-09-09 10:37:23,303 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/0e367c3a-953d-4ae2-9a83-9326c19b5acb/ - 307 [0.08ms] +2026-09-09 10:37:23,305 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/0e367c3a-953d-4ae2-9a83-9326c19b5acb - 403 [1.63ms] +2026-09-09 10:37:23,393 INFO guardrails.execution request=5a9d3fea-30d8-48ba-a1ef-5a4c0471ef85 starting guardrails execution (validators=[]) input='hello world' +2026-09-09 10:37:23,393 INFO guardrails.execution request=5a9d3fea-30d8-48ba-a1ef-5a4c0471ef85 guardrails execution finished (passed=True) output='clean text' +2026-09-09 10:37:23,394 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.40ms] +2026-09-09 10:37:23,399 INFO guardrails.execution request=b4535805-e362-4342-8a7d-337bc56dc8e2 starting guardrails execution (validators=[]) input='my phone is 999999' +2026-09-09 10:37:23,399 INFO guardrails.execution request=b4535805-e362-4342-8a7d-337bc56dc8e2 guardrails execution finished (passed=False) output=None +2026-09-09 10:37:23,401 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3.70ms] +2026-09-09 10:37:23,407 INFO guardrails.execution request=7de97208-ad4b-4256-88e7-48631f6cdab3 starting guardrails execution (validators=[]) input='tell me about buildings' +2026-09-09 10:37:23,407 INFO guardrails.execution request=7de97208-ad4b-4256-88e7-48631f6cdab3 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Input is outside the allowed topic scope.' +2026-09-09 10:37:23,409 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.72ms] +2026-09-09 10:37:23,414 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 8985c341-fb30-48cc-8b7b-2618418a246c: Invalid validator config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 354, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid validator config +2026-09-09 10:37:23,416 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.56ms] +2026-09-09 10:37:23,433 INFO guardrails.execution request=38187d48-8396-4fc9-8575-43ac51cbc5e2 starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-09 10:37:23,436 INFO guardrails.execution request=38187d48-8396-4fc9-8575-43ac51cbc5e2 guardrails execution finished (passed=True) output='this contains b' +2026-09-09 10:37:23,442 INFO guardrails.execution request=38187d48-8396-4fc9-8575-43ac51cbc5e2 step=1/1 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:23.434757 end=2026-09-09T10:37:23.435257 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 10:37:23,448 INFO http_request_logger POST /api/v1/guardrails/ - 200 [28.68ms] +2026-09-09 10:37:23,464 INFO guardrails.execution request=5207e736-b1ba-47e7-9789-6798107e02d1 starting guardrails execution (validators=['ban_list']) input='this is clean' +2026-09-09 10:37:23,465 INFO guardrails.execution request=5207e736-b1ba-47e7-9789-6798107e02d1 guardrails execution finished (passed=True) output='this is clean' +2026-09-09 10:37:23,468 INFO guardrails.execution request=5207e736-b1ba-47e7-9789-6798107e02d1 step=1/1 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:37:23.464915 end=2026-09-09T10:37:23.464983 duration_ms=0 input='this is clean' output='this is clean' +2026-09-09 10:37:23,472 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.90ms] +2026-09-09 10:37:23,491 INFO guardrails.execution request=869b7330-5eba-4921-9546-632cfdb48a91 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 10:37:23,493 INFO guardrails.execution request=869b7330-5eba-4921-9546-632cfdb48a91 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR].' +2026-09-09 10:37:23,496 INFO guardrails.execution request=869b7330-5eba-4921-9546-632cfdb48a91 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:23.492090 end=2026-09-09T10:37:23.492471 duration_ms=0 input='This sentence contains chakki.' output='this sentence contains [REDACTED_SLUR].' +2026-09-09 10:37:23,499 INFO http_request_logger POST /api/v1/guardrails/ - 200 [23.16ms] +2026-09-09 10:37:23,515 INFO guardrails.execution request=e99f6c8b-2ac7-40c7-aff2-98c1adb91443 starting guardrails execution (validators=['uli_slur_match']) input='This is a completely safe sentence' +2026-09-09 10:37:23,516 INFO guardrails.execution request=e99f6c8b-2ac7-40c7-aff2-98c1adb91443 guardrails execution finished (passed=True) output='This is a completely safe sentence' +2026-09-09 10:37:23,518 INFO guardrails.execution request=e99f6c8b-2ac7-40c7-aff2-98c1adb91443 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:37:23.515973 end=2026-09-09T10:37:23.516242 duration_ms=0 input='This is a completely safe sentence' output='This is a completely safe sentence' +2026-09-09 10:37:23,522 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.19ms] +2026-09-09 10:37:23,535 INFO guardrails.execution request=a21b3d9b-36eb-469e-b577-9e0b6de92fd0 starting guardrails execution (validators=['uli_slur_match', 'ban_list']) input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' +2026-09-09 10:37:23,537 INFO guardrails.execution request=a21b3d9b-36eb-469e-b577-9e0b6de92fd0 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-09 10:37:23,539 INFO guardrails.execution request=a21b3d9b-36eb-469e-b577-9e0b6de92fd0 step=1/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:23.536359 end=2026-09-09T10:37:23.536823 duration_ms=0 input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' +2026-09-09 10:37:23,541 INFO guardrails.execution request=a21b3d9b-36eb-469e-b577-9e0b6de92fd0 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:23.536829 end=2026-09-09T10:37:23.536912 duration_ms=0 input='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-09 10:37:23,545 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.78ms] +2026-09-09 10:37:23,551 INFO http_request_logger POST /api/v1/guardrails/ - 422 [1.03ms] +2026-09-09 10:37:23,567 INFO guardrails.execution request=cb50386c-d798-416f-8e7a-df3d2ac74191 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 10:37:23,568 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log cb50386c-d798-416f-8e7a-df3d2ac74191: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-09 10:37:23,571 INFO guardrails.execution request=cb50386c-d798-416f-8e7a-df3d2ac74191 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:23.567736 end=2026-09-09T10:37:23.568017 duration_ms=0 input='This sentence contains chakki.' output=None +2026-09-09 10:37:23,574 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.66ms] +2026-09-09 10:37:23,591 INFO guardrails.execution request=e1e7f645-12f1-4e17-81e3-017f00ae6d43 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 10:37:23,593 INFO guardrails.execution request=e1e7f645-12f1-4e17-81e3-017f00ae6d43 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-09 10:37:23,596 INFO guardrails.execution request=e1e7f645-12f1-4e17-81e3-017f00ae6d43 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:23.592222 end=2026-09-09T10:37:23.592474 duration_ms=0 input='This sentence contains chakki.' output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-09 10:37:23,600 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.76ms] +2026-09-09 10:37:23,615 INFO guardrails.execution request=40b95d77-00d9-428c-8a8d-3f9854c7c7d5 starting guardrails execution (validators=['profanity_free']) input='This is a damn fucking mess.' +2026-09-09 10:37:23,617 INFO guardrails.execution request=40b95d77-00d9-428c-8a8d-3f9854c7c7d5 guardrails execution finished (passed=True) output='' +2026-09-09 10:37:23,622 INFO guardrails.execution request=40b95d77-00d9-428c-8a8d-3f9854c7c7d5 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:23.616063 end=2026-09-09T10:37:23.617135 duration_ms=1 input='This is a damn fucking mess.' output='' +2026-09-09 10:37:23,626 INFO http_request_logger POST /api/v1/guardrails/ - 200 [21.60ms] +2026-09-09 10:37:23,643 INFO guardrails.execution request=b2464892-c150-40e6-9d3c-14fb83ccf7cd starting guardrails execution (validators=['profanity_free']) input='This is a completely clean sentence.' +2026-09-09 10:37:23,645 INFO guardrails.execution request=b2464892-c150-40e6-9d3c-14fb83ccf7cd guardrails execution finished (passed=True) output='This is a completely clean sentence.' +2026-09-09 10:37:23,649 INFO guardrails.execution request=b2464892-c150-40e6-9d3c-14fb83ccf7cd step=1/1 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:37:23.643560 end=2026-09-09T10:37:23.644494 duration_ms=0 input='This is a completely clean sentence.' output='This is a completely clean sentence.' +2026-09-09 10:37:23,654 INFO http_request_logger POST /api/v1/guardrails/ - 200 [21.79ms] +2026-09-09 10:37:23,670 INFO guardrails.execution request=7be230fd-cc18-4b29-8499-5f6968d70696 starting guardrails execution (validators=['profanity_free']) input='What the fuck is going on?' +2026-09-09 10:37:23,671 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 7be230fd-cc18-4b29-8499-5f6968d70696: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +2026-09-09 10:37:23,675 INFO guardrails.execution request=7be230fd-cc18-4b29-8499-5f6968d70696 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:23.670674 end=2026-09-09T10:37:23.671597 duration_ms=0 input='What the fuck is going on?' output=None +2026-09-09 10:37:23,679 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.25ms] +2026-09-09 10:37:23,695 INFO guardrails.execution request=4f1066cd-b016-42c3-a503-7a63546c3620 starting guardrails execution (validators=['profanity_free']) input='This is absolute bullshit.' +2026-09-09 10:37:23,697 INFO guardrails.execution request=4f1066cd-b016-42c3-a503-7a63546c3620 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-09 10:37:23,700 INFO guardrails.execution request=4f1066cd-b016-42c3-a503-7a63546c3620 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:23.695801 end=2026-09-09T10:37:23.696677 duration_ms=0 input='This is absolute bullshit.' output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-09 10:37:23,703 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.38ms] +2026-09-09 10:37:23,712 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 536fba2d-eab5-4019-88bf-d663faa2663f: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 354, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-09 10:37:23,715 INFO http_request_logger POST /api/v1/guardrails/ - 200 [6.95ms] +2026-09-09 10:37:24,389 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-09 10:37:26,360 INFO guardrails.execution request=683a6cca-e1eb-489f-abc4-7028bfe24afc starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-09 10:37:26,451 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 683a6cca-e1eb-489f-abc4-7028bfe24afc: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-09 10:37:26,457 INFO guardrails.execution request=683a6cca-e1eb-489f-abc4-7028bfe24afc step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:26.361341 end=2026-09-09T10:37:26.451488 duration_ms=90 input='She slowly undressed and they had explicit sex.' output=None +2026-09-09 10:37:26,461 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2742.29ms] +2026-09-09 10:37:28,515 INFO guardrails.execution request=9e8135bd-f16a-4c5e-8db1-e6602f8175b7 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-09 10:37:28,535 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 9e8135bd-f16a-4c5e-8db1-e6602f8175b7: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-09 10:37:28,539 INFO guardrails.execution request=9e8135bd-f16a-4c5e-8db1-e6602f8175b7 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:28.516813 end=2026-09-09T10:37:28.534839 duration_ms=18 input='She slowly undressed and they had explicit sex.' output=None +2026-09-09 10:37:28,541 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2073.73ms] +2026-09-09 10:37:30,609 INFO guardrails.execution request=ab516617-6514-40e9-9409-63499697bff8 starting guardrails execution (validators=['nsfw_text']) input='Explicit sexual content goes here.' +2026-09-09 10:37:30,635 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log ab516617-6514-40e9-9409-63499697bff8: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +2026-09-09 10:37:30,640 INFO guardrails.execution request=ab516617-6514-40e9-9409-63499697bff8 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:30.610341 end=2026-09-09T10:37:30.635171 duration_ms=24 input='Explicit sexual content goes here.' output=None +2026-09-09 10:37:30,643 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2098.17ms] +2026-09-09 10:37:30,666 INFO guardrails.execution request=924f2ec7-3352-4949-b733-d6d6924d7ba4 starting guardrails execution (validators=['profanity_free', 'uli_slur_match']) input='This fucking chakki should leave.' +2026-09-09 10:37:30,670 INFO guardrails.execution request=924f2ec7-3352-4949-b733-d6d6924d7ba4 guardrails execution finished (passed=True) output='' +2026-09-09 10:37:30,675 INFO guardrails.execution request=924f2ec7-3352-4949-b733-d6d6924d7ba4 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:30.667288 end=2026-09-09T10:37:30.669504 duration_ms=2 input='This fucking chakki should leave.' output='' +2026-09-09 10:37:30,678 INFO guardrails.execution request=924f2ec7-3352-4949-b733-d6d6924d7ba4 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:37:30.669522 end=2026-09-09T10:37:30.669722 duration_ms=0 input='' output='' +2026-09-09 10:37:30,682 INFO http_request_logger POST /api/v1/guardrails/ - 200 [32.33ms] +2026-09-09 10:37:30,690 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 3f399452-2193-4554-ad59-eb75d488a139: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 354, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-09 10:37:30,693 INFO http_request_logger POST /api/v1/guardrails/ - 200 [6.00ms] +2026-09-09 10:37:32,722 INFO guardrails.execution request=3432e10b-f3a6-4ac8-999c-ab701691cb7c starting guardrails execution (validators=['profanity_free', 'nsfw_text']) input='What the fuck, this is explicit adult sexual content.' +2026-09-09 10:37:32,724 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 3432e10b-f3a6-4ac8-999c-ab701691cb7c: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +2026-09-09 10:37:32,732 INFO guardrails.execution request=3432e10b-f3a6-4ac8-999c-ab701691cb7c step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:32.722686 end=2026-09-09T10:37:32.723835 duration_ms=1 input='What the fuck, this is explicit adult sexual content.' output=None +2026-09-09 10:37:32,735 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2038.05ms] +2026-09-09 10:37:34,851 INFO guardrails.execution request=eb02e44f-4632-490c-a864-6230320cea98 starting guardrails execution (validators=['uli_slur_match', 'nsfw_text']) input='This chakki has explicit sexual content.' +2026-09-09 10:37:34,853 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log eb02e44f-4632-490c-a864-6230320cea98: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-09 10:37:34,858 INFO guardrails.execution request=eb02e44f-4632-490c-a864-6230320cea98 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:34.852253 end=2026-09-09T10:37:34.852880 duration_ms=0 input='This chakki has explicit sexual content.' output=None +2026-09-09 10:37:34,862 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2122.14ms] +2026-09-09 10:37:34,878 INFO guardrails.execution request=bac94e91-0fd5-484f-bfa2-d00b0847c487 starting guardrails execution (validators=['profanity_free', 'ban_list']) input='Tell me about renewable energy sources.' +2026-09-09 10:37:34,880 INFO guardrails.execution request=bac94e91-0fd5-484f-bfa2-d00b0847c487 guardrails execution finished (passed=True) output='Tell me about renewable energy sources.' +2026-09-09 10:37:34,884 INFO guardrails.execution request=bac94e91-0fd5-484f-bfa2-d00b0847c487 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:37:34.878816 end=2026-09-09T10:37:34.879816 duration_ms=1 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-09 10:37:34,886 INFO guardrails.execution request=bac94e91-0fd5-484f-bfa2-d00b0847c487 step=2/2 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:37:34.879823 end=2026-09-09T10:37:34.879949 duration_ms=0 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-09 10:37:34,889 INFO http_request_logger POST /api/v1/guardrails/ - 200 [22.37ms] +2026-09-09 10:37:34,910 INFO guardrails.execution request=5ac8bbf4-a559-4076-8935-f21f2dbb1da8 starting guardrails execution (validators=['uli_slur_match', 'profanity_free', 'ban_list']) input='What are some healthy breakfast options?' +2026-09-09 10:37:34,913 INFO guardrails.execution request=5ac8bbf4-a559-4076-8935-f21f2dbb1da8 guardrails execution finished (passed=True) output='What are some healthy breakfast options?' +2026-09-09 10:37:34,917 INFO guardrails.execution request=5ac8bbf4-a559-4076-8935-f21f2dbb1da8 step=1/3 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:37:34.911131 end=2026-09-09T10:37:34.911437 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 10:37:34,919 INFO guardrails.execution request=5ac8bbf4-a559-4076-8935-f21f2dbb1da8 step=2/3 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:37:34.911442 end=2026-09-09T10:37:34.912374 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 10:37:34,921 INFO guardrails.execution request=5ac8bbf4-a559-4076-8935-f21f2dbb1da8 step=3/3 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:37:34.912379 end=2026-09-09T10:37:34.912444 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 10:37:34,925 INFO http_request_logger POST /api/v1/guardrails/ - 200 [30.61ms] +2026-09-09 10:37:34,940 INFO guardrails.execution request=e66037a1-bb87-48b1-a992-434413835f43 starting guardrails execution (validators=['ban_list', 'uli_slur_match']) input='this contains badword' +2026-09-09 10:37:34,942 INFO guardrails.execution request=e66037a1-bb87-48b1-a992-434413835f43 guardrails execution finished (passed=True) output='this contains b' +2026-09-09 10:37:34,944 INFO guardrails.execution request=e66037a1-bb87-48b1-a992-434413835f43 step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:37:34.941106 end=2026-09-09T10:37:34.941216 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 10:37:34,946 INFO guardrails.execution request=e66037a1-bb87-48b1-a992-434413835f43 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:37:34.941222 end=2026-09-09T10:37:34.941410 duration_ms=0 input='this contains b' output='this contains b' +2026-09-09 10:37:34,950 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.00ms] +2026-09-09 10:37:34,964 ERROR app.api.routes.guardrails [run_guardrails] config resolution failed for request_log 48368309-7a5f-4ab3-ada7-0ec35737c608: 404: Ban list not found +2026-09-09 10:37:34,969 INFO http_request_logger POST /api/v1/guardrails/ - 404 [10.11ms] +2026-09-09 10:37:34,980 INFO guardrails.execution request=3257c968-c595-47a0-8200-ab7831a231d0 starting guardrails execution (validators=['ban_list']) input='hello' +2026-09-09 10:37:34,980 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 3257c968-c595-47a0-8200-ab7831a231d0: boom +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 370, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +RuntimeError: boom +2026-09-09 10:37:34,985 INFO http_request_logger POST /api/v1/guardrails/ - 200 [8.28ms] +2026-09-09 10:37:34,994 WARNING app.api.routes.guardrails [run_guardrails] invalid request_id 'not-a-uuid' (org=1 project=1), no request log written +2026-09-09 10:37:34,994 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1.31ms] +2026-09-09 10:37:35,006 INFO app.crud.llm_prompt_config created llm prompt config id=1f4bbeb3-578b-4894-8bab-1431ed250f93 org=1 project=1 +2026-09-09 10:37:35,008 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [9.24ms] +2026-09-09 10:37:35,014 INFO app.crud.llm_prompt_config created llm prompt config id=2c4258e1-403b-41ce-a27b-c556056bb67b org=1 project=1 +2026-09-09 10:37:35,014 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.79ms] +2026-09-09 10:37:35,020 INFO app.crud.llm_prompt_config created llm prompt config id=6a6be978-9f7f-4624-8583-8bac2ae6d699 org=1 project=1 +2026-09-09 10:37:35,021 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.88ms] +2026-09-09 10:37:35,025 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [1.39ms] +2026-09-09 10:37:35,030 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.87ms] +2026-09-09 10:37:35,035 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.82ms] +2026-09-09 10:37:35,040 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.81ms] +2026-09-09 10:37:35,046 INFO app.crud.llm_prompt_config created llm prompt config id=c31b0560-500e-4c70-a039-008f9f6bdcf8 org=1 project=1 +2026-09-09 10:37:35,047 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.18ms] +2026-09-09 10:37:35,052 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.87ms] +2026-09-09 10:37:35,055 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.74ms] +2026-09-09 10:37:35,060 INFO app.crud.llm_prompt_config created llm prompt config id=dea98eb9-8f1e-4fe5-a031-ae5dcda42232 org=1 project=1 +2026-09-09 10:37:35,061 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.96ms] +2026-09-09 10:37:35,064 INFO app.crud.llm_prompt_config created llm prompt config id=14d1bf2a-efbe-4714-9af5-0d4f90f0b438 org=1 project=1 +2026-09-09 10:37:35,064 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.16ms] +2026-09-09 10:37:35,067 INFO app.crud.llm_prompt_config created llm prompt config id=17dd96f6-2d27-4d8f-83d3-e7ed186908bf org=1 project=1 +2026-09-09 10:37:35,067 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.59ms] +2026-09-09 10:37:35,070 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.15ms] +2026-09-09 10:37:35,075 INFO app.crud.llm_prompt_config created llm prompt config id=81465ddc-e255-40df-9aeb-9e7a90914643 org=1 project=1 +2026-09-09 10:37:35,075 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.60ms] +2026-09-09 10:37:35,078 INFO app.crud.llm_prompt_config created llm prompt config id=7ab8a49d-7e3f-4edc-a6d9-ab48e8e4bee2 org=1 project=1 +2026-09-09 10:37:35,078 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.43ms] +2026-09-09 10:37:35,082 INFO app.crud.llm_prompt_config created llm prompt config id=fc6af957-3e93-4ed4-81ef-967c6a383efb org=1 project=1 +2026-09-09 10:37:35,082 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.64ms] +2026-09-09 10:37:35,085 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.41ms] +2026-09-09 10:37:35,090 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.68ms] +2026-09-09 10:37:35,097 INFO app.crud.llm_prompt_config created llm prompt config id=2b0bc895-6963-4136-b8b7-245b0bb28afb org=1 project=1 +2026-09-09 10:37:35,099 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [5.53ms] +2026-09-09 10:37:35,107 INFO app.crud.llm_prompt_config created llm prompt config id=3c35aa94-c510-459c-80c4-65c024ad457b org=1 project=1 +2026-09-09 10:37:35,109 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [9.25ms] +2026-09-09 10:37:35,113 INFO app.crud.llm_prompt_config created llm prompt config id=4649ff3a-03a3-4fd0-acda-2fe49ff82424 org=1 project=1 +2026-09-09 10:37:35,114 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.91ms] +2026-09-09 10:37:35,118 INFO app.crud.llm_prompt_config created llm prompt config id=e38de6bc-10c0-4e96-92a4-bdf21c834966 org=1 project=1 +2026-09-09 10:37:35,119 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.12ms] +2026-09-09 10:37:35,122 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.97ms] +2026-09-09 10:37:35,130 INFO app.crud.llm_prompt_config created llm prompt config id=06592241-06f1-4dae-80c9-258764c0b991 org=1 project=1 +2026-09-09 10:37:35,131 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.80ms] +2026-09-09 10:37:35,132 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.43ms] +2026-09-09 10:37:35,139 INFO app.crud.llm_prompt_config created llm prompt config id=5c5359f0-c16d-43db-aa3f-acc3d02871c9 org=1 project=1 +2026-09-09 10:37:35,139 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.72ms] +2026-09-09 10:37:35,141 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/5c5359f0-c16d-43db-aa3f-acc3d02871c9 - 200 [1.73ms] +2026-09-09 10:37:35,146 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/45d1037f-4418-47d2-ad3e-737a2c86b767 - 404 [1.66ms] +2026-09-09 10:37:35,152 INFO app.crud.llm_prompt_config created llm prompt config id=80c96094-53e4-4350-8660-2c398503f852 org=1 project=1 +2026-09-09 10:37:35,152 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.16ms] +2026-09-09 10:37:35,155 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/80c96094-53e4-4350-8660-2c398503f852 - 404 [1.91ms] +2026-09-09 10:37:35,162 INFO app.crud.llm_prompt_config created llm prompt config id=3db6a2ba-a086-4fcb-aa38-5a73d0bff444 org=1 project=1 +2026-09-09 10:37:35,162 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.69ms] +2026-09-09 10:37:35,167 INFO app.crud.llm_prompt_config updated llm prompt config id=3db6a2ba-a086-4fcb-aa38-5a73d0bff444 +2026-09-09 10:37:35,167 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/3db6a2ba-a086-4fcb-aa38-5a73d0bff444 - 200 [4.61ms] +2026-09-09 10:37:35,174 INFO app.crud.llm_prompt_config created llm prompt config id=5cb1eefd-f6bc-4bba-b143-9e3250935892 org=1 project=1 +2026-09-09 10:37:35,175 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.78ms] +2026-09-09 10:37:35,178 INFO app.crud.llm_prompt_config updated llm prompt config id=5cb1eefd-f6bc-4bba-b143-9e3250935892 +2026-09-09 10:37:35,179 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/5cb1eefd-f6bc-4bba-b143-9e3250935892 - 200 [3.34ms] +2026-09-09 10:37:35,184 INFO app.crud.llm_prompt_config created llm prompt config id=1c2c3762-c8d2-4ec1-9ebd-7e2074466598 org=1 project=1 +2026-09-09 10:37:35,184 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.60ms] +2026-09-09 10:37:35,187 INFO app.crud.llm_prompt_config updated llm prompt config id=1c2c3762-c8d2-4ec1-9ebd-7e2074466598 +2026-09-09 10:37:35,187 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/1c2c3762-c8d2-4ec1-9ebd-7e2074466598 - 200 [2.64ms] +2026-09-09 10:37:35,190 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/1c2c3762-c8d2-4ec1-9ebd-7e2074466598 - 200 [2.56ms] +2026-09-09 10:37:35,195 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/c66f7934-24a3-4015-886a-ee7fd01a83e6 - 404 [1.59ms] +2026-09-09 10:37:35,200 INFO app.crud.llm_prompt_config created llm prompt config id=9a4184e4-c988-43b7-835a-1dcd865bf3d5 org=1 project=1 +2026-09-09 10:37:35,200 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.81ms] +2026-09-09 10:37:35,202 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/9a4184e4-c988-43b7-835a-1dcd865bf3d5 - 404 [1.59ms] +2026-09-09 10:37:35,210 INFO app.crud.llm_prompt_config created llm prompt config id=3a417510-506e-4372-a270-5ef40dc84778 org=1 project=1 +2026-09-09 10:37:35,211 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.55ms] +2026-09-09 10:37:35,213 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/3a417510-506e-4372-a270-5ef40dc84778 - 422 [1.57ms] +2026-09-09 10:37:35,219 INFO app.crud.llm_prompt_config created llm prompt config id=ef8328e0-25bb-4883-afe7-6152c2e3d36b org=1 project=1 +2026-09-09 10:37:35,220 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.14ms] +2026-09-09 10:37:35,222 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/ef8328e0-25bb-4883-afe7-6152c2e3d36b - 422 [2.41ms] +2026-09-09 10:37:35,230 INFO app.crud.llm_prompt_config created llm prompt config id=0be91c97-dab8-4f2c-8cdd-c1a39dc5de47 org=1 project=1 +2026-09-09 10:37:35,231 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.07ms] +2026-09-09 10:37:35,234 INFO app.crud.llm_prompt_config updated llm prompt config id=0be91c97-dab8-4f2c-8cdd-c1a39dc5de47 +2026-09-09 10:37:35,235 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/0be91c97-dab8-4f2c-8cdd-c1a39dc5de47 - 200 [3.99ms] +2026-09-09 10:37:35,240 INFO app.crud.llm_prompt_config created llm prompt config id=feb68713-7460-4d80-a03f-cce0c0fbc30b org=1 project=1 +2026-09-09 10:37:35,241 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.65ms] +2026-09-09 10:37:35,243 INFO app.crud.llm_prompt_config updated llm prompt config id=feb68713-7460-4d80-a03f-cce0c0fbc30b +2026-09-09 10:37:35,244 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/feb68713-7460-4d80-a03f-cce0c0fbc30b - 200 [2.67ms] +2026-09-09 10:37:35,249 INFO app.crud.llm_prompt_config created llm prompt config id=7deef04b-1fba-4946-a84f-22600fdf528f org=1 project=1 +2026-09-09 10:37:35,250 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.58ms] +2026-09-09 10:37:35,252 INFO app.crud.llm_prompt_config deleted llm prompt config id=7deef04b-1fba-4946-a84f-22600fdf528f +2026-09-09 10:37:35,252 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/7deef04b-1fba-4946-a84f-22600fdf528f - 200 [2.18ms] +2026-09-09 10:37:35,259 INFO app.crud.llm_prompt_config created llm prompt config id=30760b22-3f75-494e-b577-5ed56ee1ec01 org=1 project=1 +2026-09-09 10:37:35,260 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.89ms] +2026-09-09 10:37:35,262 INFO app.crud.llm_prompt_config deleted llm prompt config id=30760b22-3f75-494e-b577-5ed56ee1ec01 +2026-09-09 10:37:35,262 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/30760b22-3f75-494e-b577-5ed56ee1ec01 - 200 [2.02ms] +2026-09-09 10:37:35,264 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.37ms] +2026-09-09 10:37:35,269 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/6a6fe335-c4cb-42ef-831c-194017a2d949 - 404 [1.55ms] +2026-09-09 10:37:35,275 INFO app.crud.llm_prompt_config created llm prompt config id=54b093a3-284b-439c-a7a5-6c5ad751de0e org=1 project=1 +2026-09-09 10:37:35,275 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.99ms] +2026-09-09 10:37:35,277 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/54b093a3-284b-439c-a7a5-6c5ad751de0e - 404 [1.32ms] +2026-09-09 10:37:35,367 INFO guardrails.execution request=e2aaf44d-a64a-4d0a-aa85-051076212a87 starting guardrails execution (validators=[]) input='hello' +2026-09-09 10:37:35,367 INFO guardrails.execution request=e2aaf44d-a64a-4d0a-aa85-051076212a87 guardrails execution finished (passed=True) output='clean text' +2026-09-09 10:37:35,369 INFO guardrails.execution request=e2aaf44d-a64a-4d0a-aa85-051076212a87 starting guardrails execution (validators=[]) input='bad text' +2026-09-09 10:37:35,369 INFO guardrails.execution request=e2aaf44d-a64a-4d0a-aa85-051076212a87 guardrails execution finished (passed=False) output=None +2026-09-09 10:37:35,371 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log e2aaf44d-a64a-4d0a-aa85-051076212a87: Invalid config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 354, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid config +2026-09-09 10:37:35,373 INFO guardrails.execution request=e2aaf44d-a64a-4d0a-aa85-051076212a87 starting guardrails execution (validators=[]) input='bad text' +2026-09-09 10:37:35,373 INFO guardrails.execution request=e2aaf44d-a64a-4d0a-aa85-051076212a87 guardrails execution finished (passed=False) output=None +2026-09-09 10:37:35,375 INFO guardrails.execution request=e2aaf44d-a64a-4d0a-aa85-051076212a87 starting guardrails execution (validators=[]) input='bad text' +2026-09-09 10:37:35,375 INFO guardrails.execution request=e2aaf44d-a64a-4d0a-aa85-051076212a87 guardrails execution finished (passed=False) output=None +2026-09-09 10:37:35,398 INFO guardrails.execution request=e2aaf44d-a64a-4d0a-aa85-051076212a87 starting guardrails execution (validators=[]) input='this is some unsafe content' +2026-09-09 10:37:35,398 INFO guardrails.execution request=e2aaf44d-a64a-4d0a-aa85-051076212a87 guardrails execution finished (passed=False) output=None +2026-09-09 10:37:35,400 INFO guardrails.execution request=e2aaf44d-a64a-4d0a-aa85-051076212a87 starting guardrails execution (validators=[]) input='some input text' +2026-09-09 10:37:35,400 INFO guardrails.execution request=e2aaf44d-a64a-4d0a-aa85-051076212a87 guardrails execution finished (passed=False) output=None +2026-09-09 10:37:35,402 INFO guardrails.execution request=e2aaf44d-a64a-4d0a-aa85-051076212a87 starting guardrails execution (validators=[]) input='this contains profane words' +2026-09-09 10:37:35,402 INFO guardrails.execution request=e2aaf44d-a64a-4d0a-aa85-051076212a87 guardrails execution finished (passed=False) output=None +2026-09-09 10:37:35,404 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log e2aaf44d-a64a-4d0a-aa85-051076212a87: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 354, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +2026-09-09 10:37:35,406 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log e2aaf44d-a64a-4d0a-aa85-051076212a87: Validation failed for field with errors: Profanity detected in: this contains profane words +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 354, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: Profanity detected in: this contains profane words +2026-09-09 10:37:35,420 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 10:37:35,423 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 10:37:35,425 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 10:37:35,437 INFO app.crud.validator_config created validator config id=3068e168-2451-4ee7-9687-958b854cc2c1 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:37:35,437 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [6.19ms] +2026-09-09 10:37:35,444 INFO app.crud.validator_config created validator config id=ef4024ed-9b32-4b2f-80de-70c4a236b173 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:37:35,445 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.87ms] +2026-09-09 10:37:35,447 WARNING app.crud.validator_config create validator config failed: duplicate name (org=1 project=1) +2026-09-09 10:37:35,447 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 400 [1.79ms] +2026-09-09 10:37:35,451 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 422 [0.98ms] +2026-09-09 10:37:35,458 INFO app.crud.validator_config created validator config id=80882602-2e8b-4ab6-8378-e747b134ae11 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:37:35,458 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.07ms] +2026-09-09 10:37:35,461 INFO app.crud.validator_config created validator config id=dab86b20-1b97-4793-94f3-f81ad506c84d org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:37:35,461 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.59ms] +2026-09-09 10:37:35,463 INFO app.crud.validator_config created validator config id=334c261f-c5d9-47b5-a3e8-516c1441d135 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:37:35,464 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.50ms] +2026-09-09 10:37:35,466 INFO app.crud.validator_config created validator config id=a2644b77-26db-4614-a593-e735cce858f8 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:37:35,467 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.44ms] +2026-09-09 10:37:35,470 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.53ms] +2026-09-09 10:37:35,470 INFO http_request_logger GET /api/v1/guardrails/validators/configs/80882602-2e8b-4ab6-8378-e747b134ae11/ - 307 [0.09ms] +2026-09-09 10:37:35,472 INFO http_request_logger GET /api/v1/guardrails/validators/configs/80882602-2e8b-4ab6-8378-e747b134ae11 - 200 [1.95ms] +2026-09-09 10:37:35,473 INFO http_request_logger GET /api/v1/guardrails/validators/configs/dab86b20-1b97-4793-94f3-f81ad506c84d/ - 307 [0.09ms] +2026-09-09 10:37:35,475 INFO http_request_logger GET /api/v1/guardrails/validators/configs/dab86b20-1b97-4793-94f3-f81ad506c84d - 200 [1.60ms] +2026-09-09 10:37:35,475 INFO http_request_logger GET /api/v1/guardrails/validators/configs/334c261f-c5d9-47b5-a3e8-516c1441d135/ - 307 [0.09ms] +2026-09-09 10:37:35,477 INFO http_request_logger GET /api/v1/guardrails/validators/configs/334c261f-c5d9-47b5-a3e8-516c1441d135 - 200 [1.69ms] +2026-09-09 10:37:35,477 INFO http_request_logger GET /api/v1/guardrails/validators/configs/a2644b77-26db-4614-a593-e735cce858f8/ - 307 [0.10ms] +2026-09-09 10:37:35,479 INFO http_request_logger GET /api/v1/guardrails/validators/configs/a2644b77-26db-4614-a593-e735cce858f8 - 200 [1.78ms] +2026-09-09 10:37:35,487 INFO app.crud.validator_config created validator config id=7239138a-f5d8-44af-be2f-80a85449cd9f org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:37:35,487 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.45ms] +2026-09-09 10:37:35,490 INFO app.crud.validator_config created validator config id=fccb8283-7edd-42fc-996d-fe904e8baab3 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:37:35,491 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.16ms] +2026-09-09 10:37:35,494 INFO app.crud.validator_config created validator config id=55cc1029-421e-442e-95e9-cc2164956190 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:37:35,494 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.09ms] +2026-09-09 10:37:35,495 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/7239138a-f5d8-44af-be2f-80a85449cd9f/ - 307 [0.09ms] +2026-09-09 10:37:35,498 INFO app.crud.validator_config updated validator config id=7239138a-f5d8-44af-be2f-80a85449cd9f +2026-09-09 10:37:35,499 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/7239138a-f5d8-44af-be2f-80a85449cd9f - 200 [4.06ms] +2026-09-09 10:37:35,499 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/fccb8283-7edd-42fc-996d-fe904e8baab3/ - 307 [0.08ms] +2026-09-09 10:37:35,503 INFO app.crud.validator_config updated validator config id=fccb8283-7edd-42fc-996d-fe904e8baab3 +2026-09-09 10:37:35,503 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/fccb8283-7edd-42fc-996d-fe904e8baab3 - 200 [3.75ms] +2026-09-09 10:37:35,504 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/55cc1029-421e-442e-95e9-cc2164956190/ - 307 [0.09ms] +2026-09-09 10:37:35,508 INFO app.crud.validator_config updated validator config id=55cc1029-421e-442e-95e9-cc2164956190 +2026-09-09 10:37:35,508 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/55cc1029-421e-442e-95e9-cc2164956190 - 200 [4.16ms] +2026-09-09 10:37:35,511 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.10ms] +2026-09-09 10:37:35,521 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.17ms] +2026-09-09 10:37:35,530 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [3.04ms] +2026-09-09 10:37:35,540 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.48ms] +2026-09-09 10:37:35,547 INFO app.crud.validator_config created validator config id=418350ea-c40c-45a7-bf91-ca84d90f9e43 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:37:35,547 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.64ms] +2026-09-09 10:37:35,550 INFO app.crud.validator_config created validator config id=51a8ee61-f567-4303-987a-ac514c1bdf3d org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:37:35,551 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.82ms] +2026-09-09 10:37:35,553 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.02ms] +2026-09-09 10:37:35,560 INFO app.crud.validator_config created validator config id=27e310e1-2375-464c-ab60-7ed06b0d9852 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:37:35,560 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.17ms] +2026-09-09 10:37:35,562 INFO app.crud.validator_config created validator config id=68389d1c-0b4e-401e-89ea-ef9e5afb94d6 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:37:35,563 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.35ms] +2026-09-09 10:37:35,565 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.59ms] +2026-09-09 10:37:35,569 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 422 [0.80ms] +2026-09-09 10:37:35,574 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.62ms] +2026-09-09 10:37:35,583 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [3.20ms] +2026-09-09 10:37:35,584 INFO http_request_logger GET /api/v1/guardrails/validators/configs/959d875d-5603-4faf-af81-799611161bd3/ - 307 [0.12ms] +2026-09-09 10:37:35,586 INFO http_request_logger GET /api/v1/guardrails/validators/configs/959d875d-5603-4faf-af81-799611161bd3 - 200 [2.10ms] +2026-09-09 10:37:35,591 INFO http_request_logger GET /api/v1/guardrails/validators/configs/4b0036c6-4e1e-4929-a1f3-60c2e0abebb7/ - 307 [0.09ms] +2026-09-09 10:37:35,594 INFO http_request_logger GET /api/v1/guardrails/validators/configs/4b0036c6-4e1e-4929-a1f3-60c2e0abebb7 - 404 [1.84ms] +2026-09-09 10:37:35,597 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid/ - 307 [0.09ms] +2026-09-09 10:37:35,598 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid - 422 [0.75ms] +2026-09-09 10:37:35,605 INFO app.crud.validator_config created validator config id=8a985f2b-21cf-4893-95ee-5b2598dff528 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:37:35,605 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.33ms] +2026-09-09 10:37:35,606 INFO http_request_logger GET /api/v1/guardrails/validators/configs/8a985f2b-21cf-4893-95ee-5b2598dff528/ - 307 [0.09ms] +2026-09-09 10:37:35,607 INFO http_request_logger GET /api/v1/guardrails/validators/configs/8a985f2b-21cf-4893-95ee-5b2598dff528 - 404 [1.31ms] +2026-09-09 10:37:35,614 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.80ms] +2026-09-09 10:37:35,615 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/3ce28622-ece6-44ee-8e0f-af3a55e8851a/ - 307 [0.10ms] +2026-09-09 10:37:35,618 INFO app.crud.validator_config updated validator config id=3ce28622-ece6-44ee-8e0f-af3a55e8851a +2026-09-09 10:37:35,619 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/3ce28622-ece6-44ee-8e0f-af3a55e8851a - 200 [3.62ms] +2026-09-09 10:37:35,627 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.12ms] +2026-09-09 10:37:35,627 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/75ab27c1-7db7-43a0-b70d-0df899ce0f10/ - 307 [0.10ms] +2026-09-09 10:37:35,630 INFO app.crud.validator_config updated validator config id=75ab27c1-7db7-43a0-b70d-0df899ce0f10 +2026-09-09 10:37:35,630 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/75ab27c1-7db7-43a0-b70d-0df899ce0f10 - 200 [2.85ms] +2026-09-09 10:37:35,634 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/39d54bd1-fb1d-471b-bf02-9f2d748c2943/ - 307 [0.09ms] +2026-09-09 10:37:35,636 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/39d54bd1-fb1d-471b-bf02-9f2d748c2943 - 404 [1.71ms] +2026-09-09 10:37:35,643 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.70ms] +2026-09-09 10:37:35,644 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/410097ca-3861-4f92-883c-6023a089fef9/ - 307 [0.09ms] +2026-09-09 10:37:35,646 INFO app.crud.validator_config deleted validator config id=410097ca-3861-4f92-883c-6023a089fef9 +2026-09-09 10:37:35,646 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/410097ca-3861-4f92-883c-6023a089fef9 - 200 [1.88ms] +2026-09-09 10:37:35,646 INFO http_request_logger GET /api/v1/guardrails/validators/configs/410097ca-3861-4f92-883c-6023a089fef9/ - 307 [0.08ms] +2026-09-09 10:37:35,648 INFO http_request_logger GET /api/v1/guardrails/validators/configs/410097ca-3861-4f92-883c-6023a089fef9 - 404 [1.15ms] +2026-09-09 10:37:35,651 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/f45babdf-5b84-48f3-91c5-45f218cee1a8/ - 307 [0.22ms] +2026-09-09 10:37:35,653 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/f45babdf-5b84-48f3-91c5-45f218cee1a8 - 404 [1.40ms] +2026-09-09 10:37:35,660 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.05ms] +2026-09-09 10:37:35,661 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/09784bf0-5b1e-4b7d-a4ae-d0060ecd2263/ - 307 [0.09ms] +2026-09-09 10:37:35,662 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/09784bf0-5b1e-4b7d-a4ae-d0060ecd2263 - 404 [1.19ms] +2026-09-09 10:37:35,663 INFO http_request_logger GET /api/v1/guardrails/validators/configs/09784bf0-5b1e-4b7d-a4ae-d0060ecd2263/ - 307 [0.08ms] +2026-09-09 10:37:35,664 INFO http_request_logger GET /api/v1/guardrails/validators/configs/09784bf0-5b1e-4b7d-a4ae-d0060ecd2263 - 200 [1.28ms] +2026-09-09 10:37:35,778 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-09 10:37:35,778 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-09 10:37:35,849 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:37:38,700 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:37:38,710 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:37:40,142 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:37:40,155 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:37:41,569 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:37:41,583 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:37:42,656 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:37:42,664 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:37:43,985 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:37:43,993 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:37:45,056 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:37:45,058 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:37:46,151 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:37:46,358 INFO watchfiles.main 3 changes detected +2026-09-09 10:38:39,989 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [40.11ms] +2026-09-09 10:38:40,676 INFO presidio-analyzer Created NLP engine: spacy. Loaded models: ['en'] +2026-09-09 10:38:40,677 INFO presidio-analyzer registry not provided, creating default. +2026-09-09 10:38:40,683 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 10:38:40,684 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 10:38:40,684 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 10:38:40,684 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 10:38:40,684 INFO presidio-analyzer Loaded recognizer: UsBankRecognizer +2026-09-09 10:38:40,684 INFO presidio-analyzer Loaded recognizer: UsLicenseRecognizer +2026-09-09 10:38:40,684 INFO presidio-analyzer Loaded recognizer: UsItinRecognizer +2026-09-09 10:38:40,684 INFO presidio-analyzer Loaded recognizer: UsPassportRecognizer +2026-09-09 10:38:40,684 INFO presidio-analyzer Loaded recognizer: UsSsnRecognizer +2026-09-09 10:38:40,684 INFO presidio-analyzer Loaded recognizer: NhsRecognizer +2026-09-09 10:38:40,684 INFO presidio-analyzer Loaded recognizer: EsNifRecognizer +2026-09-09 10:38:40,684 INFO presidio-analyzer Loaded recognizer: EsNieRecognizer +2026-09-09 10:38:40,684 INFO presidio-analyzer Loaded recognizer: ItDriverLicenseRecognizer +2026-09-09 10:38:40,684 INFO presidio-analyzer Loaded recognizer: ItFiscalCodeRecognizer +2026-09-09 10:38:40,684 INFO presidio-analyzer Loaded recognizer: ItVatCodeRecognizer +2026-09-09 10:38:40,684 INFO presidio-analyzer Loaded recognizer: ItIdentityCardRecognizer +2026-09-09 10:38:40,684 INFO presidio-analyzer Loaded recognizer: ItPassportRecognizer +2026-09-09 10:38:40,685 INFO presidio-analyzer Loaded recognizer: PlPeselRecognizer +2026-09-09 10:38:40,685 INFO presidio-analyzer Loaded recognizer: CryptoRecognizer +2026-09-09 10:38:40,685 INFO presidio-analyzer Loaded recognizer: DateRecognizer +2026-09-09 10:38:40,685 INFO presidio-analyzer Loaded recognizer: EmailRecognizer +2026-09-09 10:38:40,685 INFO presidio-analyzer Loaded recognizer: IbanRecognizer +2026-09-09 10:38:40,685 INFO presidio-analyzer Loaded recognizer: IpRecognizer +2026-09-09 10:38:40,685 INFO presidio-analyzer Loaded recognizer: MedicalLicenseRecognizer +2026-09-09 10:38:40,685 INFO presidio-analyzer Loaded recognizer: MacAddressRecognizer +2026-09-09 10:38:40,685 INFO presidio-analyzer Loaded recognizer: PhoneRecognizer +2026-09-09 10:38:40,685 INFO presidio-analyzer Loaded recognizer: UrlRecognizer +2026-09-09 10:38:40,685 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: es, registry supported languages: en +2026-09-09 10:38:40,685 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:38:40,685 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: pl, registry supported languages: en +2026-09-09 10:38:40,685 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - EsNifRecognizer supported languages: es, registry supported languages: en +2026-09-09 10:38:40,685 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - EsNieRecognizer supported languages: es, registry supported languages: en +2026-09-09 10:38:40,685 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItDriverLicenseRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:38:40,685 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItFiscalCodeRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:38:40,685 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItVatCodeRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:38:40,685 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItIdentityCardRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:38:40,686 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItPassportRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:38:40,686 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - PlPeselRecognizer supported languages: pl, registry supported languages: en +2026-09-09 10:38:40,686 INFO presidio-analyzer Loaded recognizer: SpacyRecognizer +2026-09-09 10:38:40,686 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-09 10:38:40,686 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-09 10:38:40,686 INFO presidio-analyzer Loaded recognizer: InPassportRecognizer +2026-09-09 10:38:40,686 INFO presidio-analyzer Loaded recognizer: InVehicleRegistrationRecognizer +2026-09-09 10:38:40,686 INFO presidio-analyzer Loaded recognizer: InVoterRecognizer +2026-09-09 10:38:40,705 INFO guardrails.execution request=048ff035-fcd9-473b-b505-521ea88f7615 starting guardrails execution (validators=['pii_remover']) input='' +2026-09-09 10:38:40,968 INFO guardrails.execution request=048ff035-fcd9-473b-b505-521ea88f7615 guardrails execution finished (passed=False) output=None +2026-09-09 10:38:40,989 INFO guardrails.execution request=048ff035-fcd9-473b-b505-521ea88f7615 step=1/1 validator=PIIRemover stage=output outcome=Outcome.PASS start=2026-09-09T10:38:40.741761 end=2026-09-09T10:38:40.963933 duration_ms=222 input='' output='' +2026-09-09 10:38:41,004 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1003.70ms] +2026-09-09 10:42:26,560 INFO watchfiles.main 3 changes detected +2026-09-09 10:42:26,569 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 10:42:26,608 INFO uvicorn.error Shutting down +2026-09-09 10:42:26,715 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 10:42:26,716 INFO uvicorn.error Application shutdown complete. +2026-09-09 10:42:26,716 INFO uvicorn.error Finished server process [48011] +2026-09-09 10:42:27,144 INFO watchfiles.main 1 change detected +2026-09-09 10:42:32,113 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:42:32,778 INFO watchfiles.main 3 changes detected +2026-09-09 10:42:32,935 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 10:42:32,935 INFO uvicorn.error Started server process [48587] +2026-09-09 10:42:32,936 INFO uvicorn.error Waiting for application startup. +2026-09-09 10:42:32,936 INFO uvicorn.error Application startup complete. +2026-09-09 10:42:38,408 INFO watchfiles.main 3 changes detected +2026-09-09 10:42:43,436 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:42:44,208 INFO guardrails.execution request=91e7d44c-aa18-41a5-9c64-479f28108893 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:42:44,210 INFO guardrails.execution request=91e7d44c-aa18-41a5-9c64-479f28108893 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:42:44,212 INFO guardrails.execution request=91e7d44c-aa18-41a5-9c64-479f28108893 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:42:44.209227 end=2026-09-09T10:42:44.209335 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:42:44,216 INFO http_request_logger POST /api/v1/guardrails/ - 200 [34.32ms] +2026-09-09 10:42:44,232 INFO guardrails.execution request=3d909703-0e9f-4044-a593-24a80c1849e2 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-09 10:42:44,233 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 3d909703-0e9f-4044-a593-24a80c1849e2: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-09 10:42:44,237 INFO guardrails.execution request=3d909703-0e9f-4044-a593-24a80c1849e2 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-09T10:42:44.233069 end=2026-09-09T10:42:44.233154 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-09 10:42:44,239 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.06ms] +2026-09-09 10:42:44,253 INFO guardrails.execution request=c34b3868-aec5-4957-9ae3-dca54bdbdcaa starting guardrails execution (validators=['answer_relevance_custom_llm']) input='What are the common symptoms of diabetes?' +2026-09-09 10:42:44,254 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log c34b3868-aec5-4957-9ae3-dca54bdbdcaa: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +2026-09-09 10:42:44,256 INFO guardrails.execution request=c34b3868-aec5-4957-9ae3-dca54bdbdcaa step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-09T10:42:44.254137 end=2026-09-09T10:42:44.254187 duration_ms=0 input='What are the common symptoms of diabetes?' output=None +2026-09-09 10:42:44,257 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.40ms] +2026-09-09 10:42:44,271 INFO guardrails.execution request=5929a07a-c3cc-4277-b116-25c79b73f482 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:42:44,272 INFO guardrails.execution request=5929a07a-c3cc-4277-b116-25c79b73f482 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:42:44,274 INFO guardrails.execution request=5929a07a-c3cc-4277-b116-25c79b73f482 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:42:44.271831 end=2026-09-09T10:42:44.271891 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:42:44,276 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.38ms] +2026-09-09 10:42:44,289 INFO guardrails.execution request=5e971bf0-9d16-47ac-832a-ca6255654814 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-09 10:42:44,289 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 5e971bf0-9d16-47ac-832a-ca6255654814: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-09 10:42:44,291 INFO guardrails.execution request=5e971bf0-9d16-47ac-832a-ca6255654814 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-09T10:42:44.289567 end=2026-09-09T10:42:44.289629 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-09 10:42:44,293 INFO http_request_logger POST /api/v1/guardrails/ - 200 [12.76ms] +2026-09-09 10:42:44,307 INFO guardrails.execution request=b02bfb0e-ee39-4228-97a8-95b763e204d8 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-09 10:42:44,309 INFO guardrails.execution request=b02bfb0e-ee39-4228-97a8-95b763e204d8 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-09 10:42:44,310 INFO guardrails.execution request=b02bfb0e-ee39-4228-97a8-95b763e204d8 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:42:44.308134 end=2026-09-09T10:42:44.308211 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-09 10:42:44,311 INFO guardrails.execution request=b02bfb0e-ee39-4228-97a8-95b763e204d8 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:44.308215 end=2026-09-09T10:42:44.308312 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-09 10:42:44,314 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.60ms] +2026-09-09 10:42:44,326 INFO guardrails.execution request=c7462277-1224-4dfd-bbb8-b4d4639ffe75 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Diabetes symptoms include fuck fatigue.' +2026-09-09 10:42:44,329 INFO guardrails.execution request=c7462277-1224-4dfd-bbb8-b4d4639ffe75 guardrails execution finished (passed=True) output='' +2026-09-09 10:42:44,332 INFO guardrails.execution request=c7462277-1224-4dfd-bbb8-b4d4639ffe75 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:42:44.327369 end=2026-09-09T10:42:44.327427 duration_ms=0 input='Diabetes symptoms include fuck fatigue.' output='Diabetes symptoms include fuck fatigue.' +2026-09-09 10:42:44,334 INFO guardrails.execution request=c7462277-1224-4dfd-bbb8-b4d4639ffe75 step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:44.327432 end=2026-09-09T10:42:44.328771 duration_ms=1 input='Diabetes symptoms include fuck fatigue.' output='' +2026-09-09 10:42:44,337 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.80ms] +2026-09-09 10:42:44,357 INFO guardrails.execution request=b21c6d24-2a64-46d7-bb84-327664710166 starting guardrails execution (validators=['answer_relevance_custom_llm', 'uli_slur_match']) input='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-09 10:42:44,361 INFO guardrails.execution request=b21c6d24-2a64-46d7-bb84-327664710166 guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-09 10:42:44,366 INFO guardrails.execution request=b21c6d24-2a64-46d7-bb84-327664710166 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:42:44.358064 end=2026-09-09T10:42:44.358123 duration_ms=0 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-09 10:42:44,369 INFO guardrails.execution request=b21c6d24-2a64-46d7-bb84-327664710166 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:44.358128 end=2026-09-09T10:42:44.360297 duration_ms=2 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-09 10:42:44,372 INFO http_request_logger POST /api/v1/guardrails/ - 200 [30.04ms] +2026-09-09 10:42:44,387 INFO guardrails.execution request=ce0a8524-0cb7-4856-af69-98c1c96f987c starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-09 10:42:44,388 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log ce0a8524-0cb7-4856-af69-98c1c96f987c: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +2026-09-09 10:42:44,391 INFO guardrails.execution request=ce0a8524-0cb7-4856-af69-98c1c96f987c step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:42:44.387522 end=2026-09-09T10:42:44.387579 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-09 10:42:44,393 INFO guardrails.execution request=ce0a8524-0cb7-4856-af69-98c1c96f987c step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:44.387584 end=2026-09-09T10:42:44.388506 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output=None +2026-09-09 10:42:44,394 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.70ms] +2026-09-09 10:42:44,409 INFO guardrails.execution request=984faae1-8a04-4755-a6ee-da8be55930eb starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list', 'profanity_free', 'uli_slur_match', 'gender_assumption_bias']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:42:44,413 INFO guardrails.execution request=984faae1-8a04-4755-a6ee-da8be55930eb guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:42:44,415 INFO guardrails.execution request=984faae1-8a04-4755-a6ee-da8be55930eb step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:42:44.410115 end=2026-09-09T10:42:44.410177 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:42:44,417 INFO guardrails.execution request=984faae1-8a04-4755-a6ee-da8be55930eb step=2/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:42:44.410181 end=2026-09-09T10:42:44.410244 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:42:44,418 INFO guardrails.execution request=984faae1-8a04-4755-a6ee-da8be55930eb step=3/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:42:44.410247 end=2026-09-09T10:42:44.411117 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:42:44,420 INFO guardrails.execution request=984faae1-8a04-4755-a6ee-da8be55930eb step=4/5 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:42:44.411122 end=2026-09-09T10:42:44.411665 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:42:44,421 INFO guardrails.execution request=984faae1-8a04-4755-a6ee-da8be55930eb step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.PASS start=2026-09-09T10:42:44.411670 end=2026-09-09T10:42:44.412254 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:42:44,424 INFO http_request_logger POST /api/v1/guardrails/ - 200 [25.83ms] +2026-09-09 10:42:44,443 INFO guardrails.execution request=360bf226-3e25-4c21-bac8-6348d6c6c115 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free', 'uli_slur_match', 'ban_list', 'gender_assumption_bias']) input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-09 10:42:44,446 INFO guardrails.execution request=360bf226-3e25-4c21-bac8-6348d6c6c115 guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-09 10:42:44,449 INFO guardrails.execution request=360bf226-3e25-4c21-bac8-6348d6c6c115 step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:42:44.443761 end=2026-09-09T10:42:44.443827 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-09 10:42:44,451 INFO guardrails.execution request=360bf226-3e25-4c21-bac8-6348d6c6c115 step=2/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:42:44.443832 end=2026-09-09T10:42:44.444714 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-09 10:42:44,453 INFO guardrails.execution request=360bf226-3e25-4c21-bac8-6348d6c6c115 step=3/5 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:44.444719 end=2026-09-09T10:42:44.445187 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-09 10:42:44,455 INFO guardrails.execution request=360bf226-3e25-4c21-bac8-6348d6c6c115 step=4/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:42:44.445192 end=2026-09-09T10:42:44.445251 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-09 10:42:44,457 INFO guardrails.execution request=360bf226-3e25-4c21-bac8-6348d6c6c115 step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:44.445254 end=2026-09-09T10:42:44.445858 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-09 10:42:44,459 INFO http_request_logger POST /api/v1/guardrails/ - 200 [31.85ms] +2026-09-09 10:42:44,482 INFO app.crud.ban_list created ban list id=4c6a60ca-32ba-4c05-aeb2-1aad8f6c3d38 org=1 project=1 +2026-09-09 10:42:44,483 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [5.88ms] +2026-09-09 10:42:44,487 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.86ms] +2026-09-09 10:42:44,491 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.81ms] +2026-09-09 10:42:44,494 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.74ms] +2026-09-09 10:42:44,498 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.76ms] +2026-09-09 10:42:44,503 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.82ms] +2026-09-09 10:42:44,512 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.74ms] +2026-09-09 10:42:44,520 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.30ms] +2026-09-09 10:42:44,524 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.68ms] +2026-09-09 10:42:44,531 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.49ms] +2026-09-09 10:42:44,539 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.82ms] +2026-09-09 10:42:44,542 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.86ms] +2026-09-09 10:42:44,546 INFO app.crud.ban_list created ban list id=ecf1fc9f-03a6-4c34-89e0-408169735bf4 org=1 project=1 +2026-09-09 10:42:44,547 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [2.45ms] +2026-09-09 10:42:44,547 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ecf1fc9f-03a6-4c34-89e0-408169735bf4/ - 307 [0.10ms] +2026-09-09 10:42:44,550 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ecf1fc9f-03a6-4c34-89e0-408169735bf4 - 200 [2.22ms] +2026-09-09 10:42:44,559 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.77ms] +2026-09-09 10:42:44,559 INFO http_request_logger GET /api/v1/guardrails/ban_lists/88d499c8-46fd-4eb4-bcc2-582374b9fa91/ - 307 [0.09ms] +2026-09-09 10:42:44,561 INFO http_request_logger GET /api/v1/guardrails/ban_lists/88d499c8-46fd-4eb4-bcc2-582374b9fa91 - 200 [1.62ms] +2026-09-09 10:42:44,565 INFO http_request_logger GET /api/v1/guardrails/ban_lists/75768de6-307d-402f-86a4-e5f56f11310b/ - 307 [0.09ms] +2026-09-09 10:42:44,568 INFO http_request_logger GET /api/v1/guardrails/ban_lists/75768de6-307d-402f-86a4-e5f56f11310b - 404 [2.10ms] +2026-09-09 10:42:44,576 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.20ms] +2026-09-09 10:42:44,577 INFO http_request_logger GET /api/v1/guardrails/ban_lists/15ea5a76-3006-4756-952a-bfa827dba39d/ - 307 [0.10ms] +2026-09-09 10:42:44,579 INFO http_request_logger GET /api/v1/guardrails/ban_lists/15ea5a76-3006-4756-952a-bfa827dba39d - 403 [1.65ms] +2026-09-09 10:42:44,587 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.93ms] +2026-09-09 10:42:44,587 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/62af1a97-9803-4b4c-b6d2-486ccc0c4c05/ - 307 [0.09ms] +2026-09-09 10:42:44,591 INFO app.crud.ban_list updated ban list id=62af1a97-9803-4b4c-b6d2-486ccc0c4c05 +2026-09-09 10:42:44,592 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/62af1a97-9803-4b4c-b6d2-486ccc0c4c05 - 200 [4.31ms] +2026-09-09 10:42:44,600 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.41ms] +2026-09-09 10:42:44,601 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/e14847ae-662a-4b93-9cad-90dd46c8dc4e/ - 307 [0.10ms] +2026-09-09 10:42:44,605 INFO app.crud.ban_list updated ban list id=e14847ae-662a-4b93-9cad-90dd46c8dc4e +2026-09-09 10:42:44,606 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/e14847ae-662a-4b93-9cad-90dd46c8dc4e - 200 [4.84ms] +2026-09-09 10:42:44,611 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/0d3de0dc-729a-4b68-998c-b108cf63673b/ - 307 [0.09ms] +2026-09-09 10:42:44,614 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/0d3de0dc-729a-4b68-998c-b108cf63673b - 404 [2.51ms] +2026-09-09 10:42:44,621 INFO app.crud.ban_list created ban list id=3640814a-a14e-4637-8499-51210b0009a6 org=1 project=1 +2026-09-09 10:42:44,621 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [3.38ms] +2026-09-09 10:42:44,622 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/3640814a-a14e-4637-8499-51210b0009a6/ - 307 [0.10ms] +2026-09-09 10:42:44,624 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/3640814a-a14e-4637-8499-51210b0009a6 - 403 [1.67ms] +2026-09-09 10:42:44,633 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.53ms] +2026-09-09 10:42:44,634 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/264805a8-29a7-45ba-be0a-34fc98a87091/ - 307 [0.10ms] +2026-09-09 10:42:44,637 INFO app.crud.ban_list deleted ban list id=264805a8-29a7-45ba-be0a-34fc98a87091 +2026-09-09 10:42:44,637 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/264805a8-29a7-45ba-be0a-34fc98a87091 - 200 [3.24ms] +2026-09-09 10:42:44,642 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/e4521dcc-5c72-46fb-92a2-e668fe1060dd/ - 307 [0.08ms] +2026-09-09 10:42:44,644 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/e4521dcc-5c72-46fb-92a2-e668fe1060dd - 404 [2.37ms] +2026-09-09 10:42:44,653 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.22ms] +2026-09-09 10:42:44,653 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/2a247373-7a50-40c8-826b-782d08151d26/ - 307 [0.08ms] +2026-09-09 10:42:44,655 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/2a247373-7a50-40c8-826b-782d08151d26 - 403 [1.92ms] +2026-09-09 10:42:44,663 INFO app.crud.ban_list created ban list id=7dce052b-27c6-44df-9cd7-438b77f54218 org=1 project=1 +2026-09-09 10:42:44,664 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [4.41ms] +2026-09-09 10:42:44,664 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/7dce052b-27c6-44df-9cd7-438b77f54218/ - 307 [0.09ms] +2026-09-09 10:42:44,666 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/7dce052b-27c6-44df-9cd7-438b77f54218 - 403 [1.56ms] +2026-09-09 10:42:44,751 INFO guardrails.execution request=df5ba3d1-ad38-429f-905f-e744240fc881 starting guardrails execution (validators=[]) input='hello world' +2026-09-09 10:42:44,751 INFO guardrails.execution request=df5ba3d1-ad38-429f-905f-e744240fc881 guardrails execution finished (passed=True) output='clean text' +2026-09-09 10:42:44,753 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.89ms] +2026-09-09 10:42:44,758 INFO guardrails.execution request=f993eacd-04da-431c-98ec-8595dd96b07b starting guardrails execution (validators=[]) input='my phone is 999999' +2026-09-09 10:42:44,758 INFO guardrails.execution request=f993eacd-04da-431c-98ec-8595dd96b07b guardrails execution finished (passed=False) output=None +2026-09-09 10:42:44,759 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3.50ms] +2026-09-09 10:42:44,765 INFO guardrails.execution request=5ce98eb1-3f2c-4dc5-a136-3968b45656ea starting guardrails execution (validators=[]) input='tell me about buildings' +2026-09-09 10:42:44,765 INFO guardrails.execution request=5ce98eb1-3f2c-4dc5-a136-3968b45656ea guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Input is outside the allowed topic scope.' +2026-09-09 10:42:44,766 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3.79ms] +2026-09-09 10:42:44,773 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 9e986e78-dd0e-4812-8c47-56b3586dee34: Invalid validator config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid validator config +2026-09-09 10:42:44,776 INFO http_request_logger POST /api/v1/guardrails/ - 200 [6.42ms] +2026-09-09 10:42:44,788 INFO guardrails.execution request=d6d6148d-9cfb-4487-bf65-ba9a228d0514 starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-09 10:42:44,789 INFO guardrails.execution request=d6d6148d-9cfb-4487-bf65-ba9a228d0514 guardrails execution finished (passed=True) output='this contains b' +2026-09-09 10:42:44,792 INFO guardrails.execution request=d6d6148d-9cfb-4487-bf65-ba9a228d0514 step=1/1 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:44.788693 end=2026-09-09T10:42:44.788815 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 10:42:44,795 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.38ms] +2026-09-09 10:42:44,809 INFO guardrails.execution request=6a995142-5217-4cac-b9e2-b863bd3a180b starting guardrails execution (validators=['ban_list']) input='this is clean' +2026-09-09 10:42:44,810 INFO guardrails.execution request=6a995142-5217-4cac-b9e2-b863bd3a180b guardrails execution finished (passed=True) output='this is clean' +2026-09-09 10:42:44,813 INFO guardrails.execution request=6a995142-5217-4cac-b9e2-b863bd3a180b step=1/1 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:42:44.809867 end=2026-09-09T10:42:44.809930 duration_ms=0 input='this is clean' output='this is clean' +2026-09-09 10:42:44,816 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.25ms] +2026-09-09 10:42:44,834 INFO guardrails.execution request=ba22a4fc-74a2-445c-95a1-5f0a3081399f starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 10:42:44,836 INFO guardrails.execution request=ba22a4fc-74a2-445c-95a1-5f0a3081399f guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR].' +2026-09-09 10:42:44,839 INFO guardrails.execution request=ba22a4fc-74a2-445c-95a1-5f0a3081399f step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:44.835321 end=2026-09-09T10:42:44.835784 duration_ms=0 input='This sentence contains chakki.' output='this sentence contains [REDACTED_SLUR].' +2026-09-09 10:42:44,843 INFO http_request_logger POST /api/v1/guardrails/ - 200 [22.99ms] +2026-09-09 10:42:44,859 INFO guardrails.execution request=44891363-f4f5-4ddd-8521-59b0b456eae9 starting guardrails execution (validators=['uli_slur_match']) input='This is a completely safe sentence' +2026-09-09 10:42:44,861 INFO guardrails.execution request=44891363-f4f5-4ddd-8521-59b0b456eae9 guardrails execution finished (passed=True) output='This is a completely safe sentence' +2026-09-09 10:42:44,864 INFO guardrails.execution request=44891363-f4f5-4ddd-8521-59b0b456eae9 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:42:44.860540 end=2026-09-09T10:42:44.860835 duration_ms=0 input='This is a completely safe sentence' output='This is a completely safe sentence' +2026-09-09 10:42:44,868 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.97ms] +2026-09-09 10:42:44,884 INFO guardrails.execution request=35bcb571-d90d-4b58-aa02-b7fd9bc33f8a starting guardrails execution (validators=['uli_slur_match', 'ban_list']) input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' +2026-09-09 10:42:44,886 INFO guardrails.execution request=35bcb571-d90d-4b58-aa02-b7fd9bc33f8a guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-09 10:42:44,889 INFO guardrails.execution request=35bcb571-d90d-4b58-aa02-b7fd9bc33f8a step=1/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:44.884892 end=2026-09-09T10:42:44.885379 duration_ms=0 input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' +2026-09-09 10:42:44,892 INFO guardrails.execution request=35bcb571-d90d-4b58-aa02-b7fd9bc33f8a step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:44.885385 end=2026-09-09T10:42:44.885464 duration_ms=0 input='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-09 10:42:44,897 INFO http_request_logger POST /api/v1/guardrails/ - 200 [23.93ms] +2026-09-09 10:42:44,902 INFO http_request_logger POST /api/v1/guardrails/ - 422 [0.92ms] +2026-09-09 10:42:44,918 INFO guardrails.execution request=32f4124e-bf00-4248-99a4-705073395f34 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 10:42:44,919 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 32f4124e-bf00-4248-99a4-705073395f34: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-09 10:42:44,922 INFO guardrails.execution request=32f4124e-bf00-4248-99a4-705073395f34 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:44.918947 end=2026-09-09T10:42:44.919207 duration_ms=0 input='This sentence contains chakki.' output=None +2026-09-09 10:42:44,926 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.42ms] +2026-09-09 10:42:44,945 INFO guardrails.execution request=5cf3d779-4115-4b2a-be03-5c71cffcec4c starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 10:42:44,947 INFO guardrails.execution request=5cf3d779-4115-4b2a-be03-5c71cffcec4c guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-09 10:42:44,951 INFO guardrails.execution request=5cf3d779-4115-4b2a-be03-5c71cffcec4c step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:44.946266 end=2026-09-09T10:42:44.946565 duration_ms=0 input='This sentence contains chakki.' output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-09 10:42:44,956 INFO http_request_logger POST /api/v1/guardrails/ - 200 [24.45ms] +2026-09-09 10:42:44,974 INFO guardrails.execution request=02b85d1f-d580-4e04-a474-999c1d3cdfc3 starting guardrails execution (validators=['profanity_free']) input='This is a damn fucking mess.' +2026-09-09 10:42:44,976 INFO guardrails.execution request=02b85d1f-d580-4e04-a474-999c1d3cdfc3 guardrails execution finished (passed=True) output='' +2026-09-09 10:42:44,979 INFO guardrails.execution request=02b85d1f-d580-4e04-a474-999c1d3cdfc3 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:44.974533 end=2026-09-09T10:42:44.975642 duration_ms=1 input='This is a damn fucking mess.' output='' +2026-09-09 10:42:44,984 INFO http_request_logger POST /api/v1/guardrails/ - 200 [21.95ms] +2026-09-09 10:42:45,002 INFO guardrails.execution request=2bf8ff30-fce0-443c-9db5-98541ba3706b starting guardrails execution (validators=['profanity_free']) input='This is a completely clean sentence.' +2026-09-09 10:42:45,004 INFO guardrails.execution request=2bf8ff30-fce0-443c-9db5-98541ba3706b guardrails execution finished (passed=True) output='This is a completely clean sentence.' +2026-09-09 10:42:45,007 INFO guardrails.execution request=2bf8ff30-fce0-443c-9db5-98541ba3706b step=1/1 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:42:45.002447 end=2026-09-09T10:42:45.003391 duration_ms=0 input='This is a completely clean sentence.' output='This is a completely clean sentence.' +2026-09-09 10:42:45,011 INFO http_request_logger POST /api/v1/guardrails/ - 200 [21.22ms] +2026-09-09 10:42:45,028 INFO guardrails.execution request=46a84f9b-05eb-47c8-bb00-b986dcf16b30 starting guardrails execution (validators=['profanity_free']) input='What the fuck is going on?' +2026-09-09 10:42:45,030 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 46a84f9b-05eb-47c8-bb00-b986dcf16b30: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +2026-09-09 10:42:45,033 INFO guardrails.execution request=46a84f9b-05eb-47c8-bb00-b986dcf16b30 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:45.028952 end=2026-09-09T10:42:45.030016 duration_ms=1 input='What the fuck is going on?' output=None +2026-09-09 10:42:45,036 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.58ms] +2026-09-09 10:42:45,055 INFO guardrails.execution request=d7487926-46e6-4306-baf9-50d3a6e972fd starting guardrails execution (validators=['profanity_free']) input='This is absolute bullshit.' +2026-09-09 10:42:45,058 INFO guardrails.execution request=d7487926-46e6-4306-baf9-50d3a6e972fd guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-09 10:42:45,062 INFO guardrails.execution request=d7487926-46e6-4306-baf9-50d3a6e972fd step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:45.056243 end=2026-09-09T10:42:45.057200 duration_ms=0 input='This is absolute bullshit.' output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-09 10:42:45,067 INFO http_request_logger POST /api/v1/guardrails/ - 200 [23.85ms] +2026-09-09 10:42:45,077 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 0eaa2062-98f2-41cf-af71-270000f8bc95: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-09 10:42:45,081 INFO http_request_logger POST /api/v1/guardrails/ - 200 [8.70ms] +2026-09-09 10:42:45,662 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-09 10:42:47,655 INFO guardrails.execution request=1a8a1336-cb0a-4fa0-8e36-f10938cd7adf starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-09 10:42:47,751 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 1a8a1336-cb0a-4fa0-8e36-f10938cd7adf: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-09 10:42:47,760 INFO guardrails.execution request=1a8a1336-cb0a-4fa0-8e36-f10938cd7adf step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:47.659976 end=2026-09-09T10:42:47.751073 duration_ms=91 input='She slowly undressed and they had explicit sex.' output=None +2026-09-09 10:42:47,765 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2679.42ms] +2026-09-09 10:42:49,811 INFO guardrails.execution request=4fec07f6-5b49-41b8-8ef9-1d3751d5f9a3 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-09 10:42:49,826 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 4fec07f6-5b49-41b8-8ef9-1d3751d5f9a3: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-09 10:42:49,833 INFO guardrails.execution request=4fec07f6-5b49-41b8-8ef9-1d3751d5f9a3 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:49.812174 end=2026-09-09T10:42:49.826531 duration_ms=14 input='She slowly undressed and they had explicit sex.' output=None +2026-09-09 10:42:49,836 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2063.20ms] +2026-09-09 10:42:51,900 INFO guardrails.execution request=cc8da080-ec5b-46f4-b743-99faaddfeb28 starting guardrails execution (validators=['nsfw_text']) input='Explicit sexual content goes here.' +2026-09-09 10:42:51,926 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log cc8da080-ec5b-46f4-b743-99faaddfeb28: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +2026-09-09 10:42:51,935 INFO guardrails.execution request=cc8da080-ec5b-46f4-b743-99faaddfeb28 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:51.901296 end=2026-09-09T10:42:51.926425 duration_ms=25 input='Explicit sexual content goes here.' output=None +2026-09-09 10:42:51,939 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2097.40ms] +2026-09-09 10:42:51,959 INFO guardrails.execution request=782cfba3-43f2-4a5e-8d1b-f218a4cd361c starting guardrails execution (validators=['profanity_free', 'uli_slur_match']) input='This fucking chakki should leave.' +2026-09-09 10:42:51,963 INFO guardrails.execution request=782cfba3-43f2-4a5e-8d1b-f218a4cd361c guardrails execution finished (passed=True) output='' +2026-09-09 10:42:51,967 INFO guardrails.execution request=782cfba3-43f2-4a5e-8d1b-f218a4cd361c step=1/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:51.960314 end=2026-09-09T10:42:51.962038 duration_ms=1 input='This fucking chakki should leave.' output='' +2026-09-09 10:42:51,969 INFO guardrails.execution request=782cfba3-43f2-4a5e-8d1b-f218a4cd361c step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:42:51.962055 end=2026-09-09T10:42:51.962223 duration_ms=0 input='' output='' +2026-09-09 10:42:51,973 INFO http_request_logger POST /api/v1/guardrails/ - 200 [29.56ms] +2026-09-09 10:42:51,981 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 0289c0ed-9bdf-4f04-9593-5acd023b5b3e: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-09 10:42:51,983 INFO http_request_logger POST /api/v1/guardrails/ - 200 [6.23ms] +2026-09-09 10:42:54,038 INFO guardrails.execution request=fbbf1767-ea01-4c4d-ac35-6bb97aca116c starting guardrails execution (validators=['profanity_free', 'nsfw_text']) input='What the fuck, this is explicit adult sexual content.' +2026-09-09 10:42:54,041 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log fbbf1767-ea01-4c4d-ac35-6bb97aca116c: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +2026-09-09 10:42:54,053 INFO guardrails.execution request=fbbf1767-ea01-4c4d-ac35-6bb97aca116c step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:54.039444 end=2026-09-09T10:42:54.041731 duration_ms=2 input='What the fuck, this is explicit adult sexual content.' output=None +2026-09-09 10:42:54,057 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2068.65ms] +2026-09-09 10:42:56,144 INFO guardrails.execution request=7c8adddf-3f5a-48bb-bb7c-789d83d29438 starting guardrails execution (validators=['uli_slur_match', 'nsfw_text']) input='This chakki has explicit sexual content.' +2026-09-09 10:42:56,146 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 7c8adddf-3f5a-48bb-bb7c-789d83d29438: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-09 10:42:56,151 INFO guardrails.execution request=7c8adddf-3f5a-48bb-bb7c-789d83d29438 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:56.145480 end=2026-09-09T10:42:56.145943 duration_ms=0 input='This chakki has explicit sexual content.' output=None +2026-09-09 10:42:56,154 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2089.43ms] +2026-09-09 10:42:56,169 INFO guardrails.execution request=3146ec2e-1292-4405-b818-027a7942b68d starting guardrails execution (validators=['profanity_free', 'ban_list']) input='Tell me about renewable energy sources.' +2026-09-09 10:42:56,172 INFO guardrails.execution request=3146ec2e-1292-4405-b818-027a7942b68d guardrails execution finished (passed=True) output='Tell me about renewable energy sources.' +2026-09-09 10:42:56,174 INFO guardrails.execution request=3146ec2e-1292-4405-b818-027a7942b68d step=1/2 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:42:56.170092 end=2026-09-09T10:42:56.171127 duration_ms=1 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-09 10:42:56,176 INFO guardrails.execution request=3146ec2e-1292-4405-b818-027a7942b68d step=2/2 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:42:56.171133 end=2026-09-09T10:42:56.171221 duration_ms=0 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-09 10:42:56,179 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.83ms] +2026-09-09 10:42:56,198 INFO guardrails.execution request=845ef2d4-7da8-4866-82da-a39b125e0f30 starting guardrails execution (validators=['uli_slur_match', 'profanity_free', 'ban_list']) input='What are some healthy breakfast options?' +2026-09-09 10:42:56,200 INFO guardrails.execution request=845ef2d4-7da8-4866-82da-a39b125e0f30 guardrails execution finished (passed=True) output='What are some healthy breakfast options?' +2026-09-09 10:42:56,204 INFO guardrails.execution request=845ef2d4-7da8-4866-82da-a39b125e0f30 step=1/3 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:42:56.198739 end=2026-09-09T10:42:56.199021 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 10:42:56,207 INFO guardrails.execution request=845ef2d4-7da8-4866-82da-a39b125e0f30 step=2/3 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:42:56.199025 end=2026-09-09T10:42:56.199950 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 10:42:56,209 INFO guardrails.execution request=845ef2d4-7da8-4866-82da-a39b125e0f30 step=3/3 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:42:56.199955 end=2026-09-09T10:42:56.200007 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 10:42:56,213 INFO http_request_logger POST /api/v1/guardrails/ - 200 [29.76ms] +2026-09-09 10:42:56,229 INFO guardrails.execution request=de482c1b-1328-413a-9552-795a32d95ef9 starting guardrails execution (validators=['ban_list', 'uli_slur_match']) input='this contains badword' +2026-09-09 10:42:56,230 INFO guardrails.execution request=de482c1b-1328-413a-9552-795a32d95ef9 guardrails execution finished (passed=True) output='this contains b' +2026-09-09 10:42:56,234 INFO guardrails.execution request=de482c1b-1328-413a-9552-795a32d95ef9 step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:42:56.229718 end=2026-09-09T10:42:56.229833 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 10:42:56,236 INFO guardrails.execution request=de482c1b-1328-413a-9552-795a32d95ef9 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:42:56.229839 end=2026-09-09T10:42:56.230026 duration_ms=0 input='this contains b' output='this contains b' +2026-09-09 10:42:56,240 INFO http_request_logger POST /api/v1/guardrails/ - 200 [21.76ms] +2026-09-09 10:42:56,252 ERROR app.api.routes.guardrails [run_guardrails] config resolution failed for request_log a3f47247-6227-427a-9367-cd61a0689bb7: 404: Ban list not found +2026-09-09 10:42:56,255 INFO http_request_logger POST /api/v1/guardrails/ - 404 [7.22ms] +2026-09-09 10:42:56,262 INFO guardrails.execution request=daacf2d2-6259-4701-ad0d-bfab7cd38c7c starting guardrails execution (validators=['ban_list']) input='hello' +2026-09-09 10:42:56,262 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log daacf2d2-6259-4701-ad0d-bfab7cd38c7c: boom +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +RuntimeError: boom +2026-09-09 10:42:56,264 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.11ms] +2026-09-09 10:42:56,269 WARNING app.api.routes.guardrails [run_guardrails] invalid request_id 'not-a-uuid' (org=1 project=1), no request log written +2026-09-09 10:42:56,272 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3.55ms] +2026-09-09 10:42:56,282 INFO app.crud.llm_prompt_config created llm prompt config id=e36cd9a0-023c-4fa7-a4d1-dce3f390c6a0 org=1 project=1 +2026-09-09 10:42:56,285 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [10.13ms] +2026-09-09 10:42:56,295 INFO app.crud.llm_prompt_config created llm prompt config id=90885e94-8dcd-4665-8623-4bec8f530f7d org=1 project=1 +2026-09-09 10:42:56,296 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.74ms] +2026-09-09 10:42:56,303 INFO app.crud.llm_prompt_config created llm prompt config id=8218f9a5-00f2-4afe-aea1-774b67b13d30 org=1 project=1 +2026-09-09 10:42:56,303 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.68ms] +2026-09-09 10:42:56,309 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [1.67ms] +2026-09-09 10:42:56,315 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.92ms] +2026-09-09 10:42:56,320 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.88ms] +2026-09-09 10:42:56,324 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.85ms] +2026-09-09 10:42:56,331 INFO app.crud.llm_prompt_config created llm prompt config id=1d43fd9f-5818-4508-b85b-7999a713fa6a org=1 project=1 +2026-09-09 10:42:56,332 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.69ms] +2026-09-09 10:42:56,337 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.94ms] +2026-09-09 10:42:56,341 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.91ms] +2026-09-09 10:42:56,348 INFO app.crud.llm_prompt_config created llm prompt config id=7a16aa8c-d255-41f3-a4e8-a803dade8f42 org=1 project=1 +2026-09-09 10:42:56,349 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.96ms] +2026-09-09 10:42:56,351 INFO app.crud.llm_prompt_config created llm prompt config id=58173251-8f43-4155-a0ea-96cf2394a86f org=1 project=1 +2026-09-09 10:42:56,352 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.71ms] +2026-09-09 10:42:56,354 INFO app.crud.llm_prompt_config created llm prompt config id=876f9a30-aa41-44bf-b92c-b13c56d6b129 org=1 project=1 +2026-09-09 10:42:56,355 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.49ms] +2026-09-09 10:42:56,357 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.12ms] +2026-09-09 10:42:56,364 INFO app.crud.llm_prompt_config created llm prompt config id=44f439e8-54d9-4304-aa43-6627881096d7 org=1 project=1 +2026-09-09 10:42:56,364 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.57ms] +2026-09-09 10:42:56,366 INFO app.crud.llm_prompt_config created llm prompt config id=fe9d9dc8-339f-4cb6-ac93-ca24f7cd7b7e org=1 project=1 +2026-09-09 10:42:56,367 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.21ms] +2026-09-09 10:42:56,369 INFO app.crud.llm_prompt_config created llm prompt config id=a6108b3e-216e-47b5-be18-340c6d377969 org=1 project=1 +2026-09-09 10:42:56,369 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.31ms] +2026-09-09 10:42:56,372 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.96ms] +2026-09-09 10:42:56,377 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.44ms] +2026-09-09 10:42:56,384 INFO app.crud.llm_prompt_config created llm prompt config id=9d9baff6-838c-487e-9d9a-a4d86c0b2e9c org=1 project=1 +2026-09-09 10:42:56,384 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.61ms] +2026-09-09 10:42:56,386 INFO app.crud.llm_prompt_config created llm prompt config id=6d119d41-4e13-4168-af01-080669f6282d org=1 project=1 +2026-09-09 10:42:56,387 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.45ms] +2026-09-09 10:42:56,389 INFO app.crud.llm_prompt_config created llm prompt config id=247fb1ee-fe67-4316-ac10-63ae1356b7da org=1 project=1 +2026-09-09 10:42:56,390 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.83ms] +2026-09-09 10:42:56,392 INFO app.crud.llm_prompt_config created llm prompt config id=dad0dc29-00a4-4ea0-970c-73ad57d692f9 org=1 project=1 +2026-09-09 10:42:56,393 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.37ms] +2026-09-09 10:42:56,397 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [3.79ms] +2026-09-09 10:42:56,402 INFO app.crud.llm_prompt_config created llm prompt config id=0257cc25-54f4-42a9-b28a-6c68b4029ff7 org=1 project=1 +2026-09-09 10:42:56,403 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.64ms] +2026-09-09 10:42:56,405 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.39ms] +2026-09-09 10:42:56,410 INFO app.crud.llm_prompt_config created llm prompt config id=1247e97a-b668-4bbc-8e52-a274d0dc4de0 org=1 project=1 +2026-09-09 10:42:56,410 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.52ms] +2026-09-09 10:42:56,413 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/1247e97a-b668-4bbc-8e52-a274d0dc4de0 - 200 [2.78ms] +2026-09-09 10:42:56,419 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/21e4765d-f41f-48c4-a841-0d3292922fda - 404 [1.50ms] +2026-09-09 10:42:56,425 INFO app.crud.llm_prompt_config created llm prompt config id=ea2848d5-83fe-493e-a99b-0993b2479f64 org=1 project=1 +2026-09-09 10:42:56,425 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.87ms] +2026-09-09 10:42:56,427 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ea2848d5-83fe-493e-a99b-0993b2479f64 - 404 [1.25ms] +2026-09-09 10:42:56,434 INFO app.crud.llm_prompt_config created llm prompt config id=bfb9df9d-e2c5-4ce2-94e8-be75a21fa4ca org=1 project=1 +2026-09-09 10:42:56,435 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.10ms] +2026-09-09 10:42:56,438 INFO app.crud.llm_prompt_config updated llm prompt config id=bfb9df9d-e2c5-4ce2-94e8-be75a21fa4ca +2026-09-09 10:42:56,439 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/bfb9df9d-e2c5-4ce2-94e8-be75a21fa4ca - 200 [3.63ms] +2026-09-09 10:42:56,444 INFO app.crud.llm_prompt_config created llm prompt config id=42b212d0-f637-4cd3-93a3-e895e6f6c6a5 org=1 project=1 +2026-09-09 10:42:56,445 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.67ms] +2026-09-09 10:42:56,449 INFO app.crud.llm_prompt_config updated llm prompt config id=42b212d0-f637-4cd3-93a3-e895e6f6c6a5 +2026-09-09 10:42:56,450 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/42b212d0-f637-4cd3-93a3-e895e6f6c6a5 - 200 [4.43ms] +2026-09-09 10:42:56,458 INFO app.crud.llm_prompt_config created llm prompt config id=59aa5f71-8a28-4e0b-a1f4-a50f841cd25c org=1 project=1 +2026-09-09 10:42:56,458 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.16ms] +2026-09-09 10:42:56,461 INFO app.crud.llm_prompt_config updated llm prompt config id=59aa5f71-8a28-4e0b-a1f4-a50f841cd25c +2026-09-09 10:42:56,461 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/59aa5f71-8a28-4e0b-a1f4-a50f841cd25c - 200 [2.78ms] +2026-09-09 10:42:56,463 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/59aa5f71-8a28-4e0b-a1f4-a50f841cd25c - 200 [1.48ms] +2026-09-09 10:42:56,469 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/81442c95-fd32-4a3e-ab1c-1309f95838d9 - 404 [2.68ms] +2026-09-09 10:42:56,477 INFO app.crud.llm_prompt_config created llm prompt config id=7080c87e-f984-4a48-befa-e8c18d8a3051 org=1 project=1 +2026-09-09 10:42:56,478 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.41ms] +2026-09-09 10:42:56,480 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/7080c87e-f984-4a48-befa-e8c18d8a3051 - 404 [2.10ms] +2026-09-09 10:42:56,486 INFO app.crud.llm_prompt_config created llm prompt config id=30db8781-7101-4637-a340-fbb143663f45 org=1 project=1 +2026-09-09 10:42:56,487 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.54ms] +2026-09-09 10:42:56,488 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/30db8781-7101-4637-a340-fbb143663f45 - 422 [1.39ms] +2026-09-09 10:42:56,496 INFO app.crud.llm_prompt_config created llm prompt config id=24399cdb-c793-4a89-9fa4-9768c803bb07 org=1 project=1 +2026-09-09 10:42:56,496 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.65ms] +2026-09-09 10:42:56,498 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/24399cdb-c793-4a89-9fa4-9768c803bb07 - 422 [1.44ms] +2026-09-09 10:42:56,503 INFO app.crud.llm_prompt_config created llm prompt config id=ddbb0fd4-6057-4d6a-a0ef-d7da299bc658 org=1 project=1 +2026-09-09 10:42:56,504 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.02ms] +2026-09-09 10:42:56,509 INFO app.crud.llm_prompt_config updated llm prompt config id=ddbb0fd4-6057-4d6a-a0ef-d7da299bc658 +2026-09-09 10:42:56,510 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/ddbb0fd4-6057-4d6a-a0ef-d7da299bc658 - 200 [5.42ms] +2026-09-09 10:42:56,517 INFO app.crud.llm_prompt_config created llm prompt config id=22847cce-5b67-405d-93d7-964c9bb17e2a org=1 project=1 +2026-09-09 10:42:56,517 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.66ms] +2026-09-09 10:42:56,520 INFO app.crud.llm_prompt_config updated llm prompt config id=22847cce-5b67-405d-93d7-964c9bb17e2a +2026-09-09 10:42:56,520 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/22847cce-5b67-405d-93d7-964c9bb17e2a - 200 [2.67ms] +2026-09-09 10:42:56,527 INFO app.crud.llm_prompt_config created llm prompt config id=ae5cc33e-9676-47fe-9ddd-e40bd71b5fa0 org=1 project=1 +2026-09-09 10:42:56,528 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.14ms] +2026-09-09 10:42:56,532 INFO app.crud.llm_prompt_config deleted llm prompt config id=ae5cc33e-9676-47fe-9ddd-e40bd71b5fa0 +2026-09-09 10:42:56,532 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/ae5cc33e-9676-47fe-9ddd-e40bd71b5fa0 - 200 [4.12ms] +2026-09-09 10:42:56,540 INFO app.crud.llm_prompt_config created llm prompt config id=0690a418-11f2-418e-8aa1-4bd39a785762 org=1 project=1 +2026-09-09 10:42:56,540 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.56ms] +2026-09-09 10:42:56,542 INFO app.crud.llm_prompt_config deleted llm prompt config id=0690a418-11f2-418e-8aa1-4bd39a785762 +2026-09-09 10:42:56,542 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/0690a418-11f2-418e-8aa1-4bd39a785762 - 200 [1.71ms] +2026-09-09 10:42:56,544 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.27ms] +2026-09-09 10:42:56,548 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/2980f1f2-3774-435b-a6b1-4b3962a95abb - 404 [1.55ms] +2026-09-09 10:42:56,555 INFO app.crud.llm_prompt_config created llm prompt config id=518f9175-d968-41ac-8b70-82317d0594fb org=1 project=1 +2026-09-09 10:42:56,556 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.76ms] +2026-09-09 10:42:56,557 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/518f9175-d968-41ac-8b70-82317d0594fb - 404 [1.35ms] +2026-09-09 10:42:56,655 INFO guardrails.execution request=29ad6a1a-2ee6-40f5-b188-5386df16221e starting guardrails execution (validators=[]) input='hello' +2026-09-09 10:42:56,655 INFO guardrails.execution request=29ad6a1a-2ee6-40f5-b188-5386df16221e guardrails execution finished (passed=True) output='clean text' +2026-09-09 10:42:56,657 INFO guardrails.execution request=29ad6a1a-2ee6-40f5-b188-5386df16221e starting guardrails execution (validators=[]) input='bad text' +2026-09-09 10:42:56,657 INFO guardrails.execution request=29ad6a1a-2ee6-40f5-b188-5386df16221e guardrails execution finished (passed=False) output=None +2026-09-09 10:42:56,659 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 29ad6a1a-2ee6-40f5-b188-5386df16221e: Invalid config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid config +2026-09-09 10:42:56,662 INFO guardrails.execution request=29ad6a1a-2ee6-40f5-b188-5386df16221e starting guardrails execution (validators=[]) input='bad text' +2026-09-09 10:42:56,662 INFO guardrails.execution request=29ad6a1a-2ee6-40f5-b188-5386df16221e guardrails execution finished (passed=False) output=None +2026-09-09 10:42:56,666 INFO guardrails.execution request=29ad6a1a-2ee6-40f5-b188-5386df16221e starting guardrails execution (validators=[]) input='bad text' +2026-09-09 10:42:56,666 INFO guardrails.execution request=29ad6a1a-2ee6-40f5-b188-5386df16221e guardrails execution finished (passed=False) output=None +2026-09-09 10:42:56,695 INFO guardrails.execution request=29ad6a1a-2ee6-40f5-b188-5386df16221e starting guardrails execution (validators=[]) input='this is some unsafe content' +2026-09-09 10:42:56,695 INFO guardrails.execution request=29ad6a1a-2ee6-40f5-b188-5386df16221e guardrails execution finished (passed=False) output=None +2026-09-09 10:42:56,698 INFO guardrails.execution request=29ad6a1a-2ee6-40f5-b188-5386df16221e starting guardrails execution (validators=[]) input='some input text' +2026-09-09 10:42:56,698 INFO guardrails.execution request=29ad6a1a-2ee6-40f5-b188-5386df16221e guardrails execution finished (passed=False) output=None +2026-09-09 10:42:56,700 INFO guardrails.execution request=29ad6a1a-2ee6-40f5-b188-5386df16221e starting guardrails execution (validators=[]) input='this contains profane words' +2026-09-09 10:42:56,700 INFO guardrails.execution request=29ad6a1a-2ee6-40f5-b188-5386df16221e guardrails execution finished (passed=False) output=None +2026-09-09 10:42:56,702 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 29ad6a1a-2ee6-40f5-b188-5386df16221e: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +2026-09-09 10:42:56,705 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 29ad6a1a-2ee6-40f5-b188-5386df16221e: Validation failed for field with errors: Profanity detected in: this contains profane words +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: Profanity detected in: this contains profane words +2026-09-09 10:42:56,718 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 10:42:56,720 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 10:42:56,723 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 10:42:56,734 INFO app.crud.validator_config created validator config id=ad617876-00c4-42bf-b51c-b56d1dc9f459 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:42:56,735 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [4.97ms] +2026-09-09 10:42:56,741 INFO app.crud.validator_config created validator config id=179035c4-0856-4326-8f86-961c5850c025 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:42:56,742 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.49ms] +2026-09-09 10:42:56,744 WARNING app.crud.validator_config create validator config failed: duplicate name (org=1 project=1) +2026-09-09 10:42:56,744 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 400 [1.92ms] +2026-09-09 10:42:56,748 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 422 [0.85ms] +2026-09-09 10:42:56,753 INFO app.crud.validator_config created validator config id=6768dea1-39ce-42f8-8826-47a166950f30 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:42:56,754 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.57ms] +2026-09-09 10:42:56,756 INFO app.crud.validator_config created validator config id=ba31ee51-2ebb-4f9a-bf46-ca4ef10f19ce org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:42:56,756 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.40ms] +2026-09-09 10:42:56,759 INFO app.crud.validator_config created validator config id=3dfe4895-7a81-4f94-8f64-fa5dda2a38c9 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:42:56,759 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.22ms] +2026-09-09 10:42:56,761 INFO app.crud.validator_config created validator config id=3bf28008-3362-4bb3-82f4-800ae1623836 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:42:56,761 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.20ms] +2026-09-09 10:42:56,764 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.93ms] +2026-09-09 10:42:56,764 INFO http_request_logger GET /api/v1/guardrails/validators/configs/6768dea1-39ce-42f8-8826-47a166950f30/ - 307 [0.09ms] +2026-09-09 10:42:56,766 INFO http_request_logger GET /api/v1/guardrails/validators/configs/6768dea1-39ce-42f8-8826-47a166950f30 - 200 [1.67ms] +2026-09-09 10:42:56,767 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ba31ee51-2ebb-4f9a-bf46-ca4ef10f19ce/ - 307 [0.09ms] +2026-09-09 10:42:56,768 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ba31ee51-2ebb-4f9a-bf46-ca4ef10f19ce - 200 [1.33ms] +2026-09-09 10:42:56,769 INFO http_request_logger GET /api/v1/guardrails/validators/configs/3dfe4895-7a81-4f94-8f64-fa5dda2a38c9/ - 307 [0.08ms] +2026-09-09 10:42:56,770 INFO http_request_logger GET /api/v1/guardrails/validators/configs/3dfe4895-7a81-4f94-8f64-fa5dda2a38c9 - 200 [1.35ms] +2026-09-09 10:42:56,771 INFO http_request_logger GET /api/v1/guardrails/validators/configs/3bf28008-3362-4bb3-82f4-800ae1623836/ - 307 [0.08ms] +2026-09-09 10:42:56,772 INFO http_request_logger GET /api/v1/guardrails/validators/configs/3bf28008-3362-4bb3-82f4-800ae1623836 - 200 [1.31ms] +2026-09-09 10:42:56,778 INFO app.crud.validator_config created validator config id=c7c32570-90d3-470b-9b00-30a7c7e3ee93 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:42:56,778 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.76ms] +2026-09-09 10:42:56,780 INFO app.crud.validator_config created validator config id=0584ebb4-6ed7-40be-a136-5ecbf86e22f2 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:42:56,781 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.32ms] +2026-09-09 10:42:56,784 INFO app.crud.validator_config created validator config id=109c7280-ab47-492d-a2fb-16f2fb567ced org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:42:56,785 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.31ms] +2026-09-09 10:42:56,785 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/c7c32570-90d3-470b-9b00-30a7c7e3ee93/ - 307 [0.10ms] +2026-09-09 10:42:56,790 INFO app.crud.validator_config updated validator config id=c7c32570-90d3-470b-9b00-30a7c7e3ee93 +2026-09-09 10:42:56,791 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/c7c32570-90d3-470b-9b00-30a7c7e3ee93 - 200 [5.03ms] +2026-09-09 10:42:56,791 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/0584ebb4-6ed7-40be-a136-5ecbf86e22f2/ - 307 [0.10ms] +2026-09-09 10:42:56,794 INFO app.crud.validator_config updated validator config id=0584ebb4-6ed7-40be-a136-5ecbf86e22f2 +2026-09-09 10:42:56,795 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/0584ebb4-6ed7-40be-a136-5ecbf86e22f2 - 200 [3.17ms] +2026-09-09 10:42:56,795 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/109c7280-ab47-492d-a2fb-16f2fb567ced/ - 307 [0.10ms] +2026-09-09 10:42:56,798 INFO app.crud.validator_config updated validator config id=109c7280-ab47-492d-a2fb-16f2fb567ced +2026-09-09 10:42:56,798 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/109c7280-ab47-492d-a2fb-16f2fb567ced - 200 [2.88ms] +2026-09-09 10:42:56,800 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.67ms] +2026-09-09 10:42:56,809 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.82ms] +2026-09-09 10:42:56,817 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.99ms] +2026-09-09 10:42:56,823 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.78ms] +2026-09-09 10:42:56,828 INFO app.crud.validator_config created validator config id=ec3d43f0-a63c-4b67-9925-f43c38247d72 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:42:56,829 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.57ms] +2026-09-09 10:42:56,831 INFO app.crud.validator_config created validator config id=382a5cdd-dac1-465b-8463-b8c360ad5747 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:42:56,831 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.24ms] +2026-09-09 10:42:56,834 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.72ms] +2026-09-09 10:42:56,839 INFO app.crud.validator_config created validator config id=e2770b93-c7f1-4395-8534-37c0843d3574 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:42:56,839 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.78ms] +2026-09-09 10:42:56,841 INFO app.crud.validator_config created validator config id=484840e7-e1ea-451b-9316-833a02340c71 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:42:56,842 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.23ms] +2026-09-09 10:42:56,844 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.48ms] +2026-09-09 10:42:56,847 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 422 [0.77ms] +2026-09-09 10:42:56,853 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.95ms] +2026-09-09 10:42:56,861 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [3.05ms] +2026-09-09 10:42:56,862 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ebdd720c-fadd-402f-adc3-48d4c372ca0e/ - 307 [0.13ms] +2026-09-09 10:42:56,864 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ebdd720c-fadd-402f-adc3-48d4c372ca0e - 200 [1.81ms] +2026-09-09 10:42:56,868 INFO http_request_logger GET /api/v1/guardrails/validators/configs/558b984c-a37c-4040-83ff-0bf49cdb88b7/ - 307 [0.10ms] +2026-09-09 10:42:56,869 INFO http_request_logger GET /api/v1/guardrails/validators/configs/558b984c-a37c-4040-83ff-0bf49cdb88b7 - 404 [1.56ms] +2026-09-09 10:42:56,872 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid/ - 307 [0.08ms] +2026-09-09 10:42:56,873 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid - 422 [0.68ms] +2026-09-09 10:42:56,879 INFO app.crud.validator_config created validator config id=392dd2dd-da54-4766-bbc6-59422eb7097c org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:42:56,879 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.15ms] +2026-09-09 10:42:56,880 INFO http_request_logger GET /api/v1/guardrails/validators/configs/392dd2dd-da54-4766-bbc6-59422eb7097c/ - 307 [0.10ms] +2026-09-09 10:42:56,882 INFO http_request_logger GET /api/v1/guardrails/validators/configs/392dd2dd-da54-4766-bbc6-59422eb7097c - 404 [1.69ms] +2026-09-09 10:42:56,891 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.16ms] +2026-09-09 10:42:56,891 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/b86d9140-2488-40a5-8a1f-763d01f5d6c1/ - 307 [0.10ms] +2026-09-09 10:42:56,894 INFO app.crud.validator_config updated validator config id=b86d9140-2488-40a5-8a1f-763d01f5d6c1 +2026-09-09 10:42:56,895 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/b86d9140-2488-40a5-8a1f-763d01f5d6c1 - 200 [3.34ms] +2026-09-09 10:42:56,906 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [3.30ms] +2026-09-09 10:42:56,907 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/4875ef44-5934-4c29-b94e-0ecea54bec9d/ - 307 [0.13ms] +2026-09-09 10:42:56,912 INFO app.crud.validator_config updated validator config id=4875ef44-5934-4c29-b94e-0ecea54bec9d +2026-09-09 10:42:56,913 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/4875ef44-5934-4c29-b94e-0ecea54bec9d - 200 [5.10ms] +2026-09-09 10:42:56,917 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/10334103-6360-4476-a874-f688d3bed965/ - 307 [0.10ms] +2026-09-09 10:42:56,921 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/10334103-6360-4476-a874-f688d3bed965 - 404 [2.73ms] +2026-09-09 10:42:56,930 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.29ms] +2026-09-09 10:42:56,930 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/a2bc9be3-1e87-4dfe-be6a-a6d6889a7a51/ - 307 [0.10ms] +2026-09-09 10:42:56,934 INFO app.crud.validator_config deleted validator config id=a2bc9be3-1e87-4dfe-be6a-a6d6889a7a51 +2026-09-09 10:42:56,934 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/a2bc9be3-1e87-4dfe-be6a-a6d6889a7a51 - 200 [3.22ms] +2026-09-09 10:42:56,934 INFO http_request_logger GET /api/v1/guardrails/validators/configs/a2bc9be3-1e87-4dfe-be6a-a6d6889a7a51/ - 307 [0.09ms] +2026-09-09 10:42:56,937 INFO http_request_logger GET /api/v1/guardrails/validators/configs/a2bc9be3-1e87-4dfe-be6a-a6d6889a7a51 - 404 [2.23ms] +2026-09-09 10:42:56,942 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/1783dbca-9e76-4217-a7c0-081f687c8215/ - 307 [0.28ms] +2026-09-09 10:42:56,945 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/1783dbca-9e76-4217-a7c0-081f687c8215 - 404 [2.56ms] +2026-09-09 10:42:56,956 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [3.41ms] +2026-09-09 10:42:56,956 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/9773cee2-9c49-44a7-bb4a-7e689f4fac3a/ - 307 [0.10ms] +2026-09-09 10:42:56,958 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/9773cee2-9c49-44a7-bb4a-7e689f4fac3a - 404 [1.82ms] +2026-09-09 10:42:56,959 INFO http_request_logger GET /api/v1/guardrails/validators/configs/9773cee2-9c49-44a7-bb4a-7e689f4fac3a/ - 307 [0.09ms] +2026-09-09 10:42:56,962 INFO http_request_logger GET /api/v1/guardrails/validators/configs/9773cee2-9c49-44a7-bb4a-7e689f4fac3a - 200 [2.74ms] +2026-09-09 10:42:57,108 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-09 10:42:57,108 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-09 10:42:57,181 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:42:58,977 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:42:58,986 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:43:00,529 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:43:00,541 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:43:01,664 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:43:01,676 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:43:02,665 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:43:02,676 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:43:03,643 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:43:03,653 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:43:04,792 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:43:04,794 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:43:05,792 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:43:05,970 INFO watchfiles.main 3 changes detected +2026-09-09 10:43:25,006 INFO watchfiles.main 3 changes detected +2026-09-09 10:43:25,008 WARNING uvicorn.error WatchFiles detected changes in 'app/tests/test_guardrails_api_integration.py'. Reloading... +2026-09-09 10:43:25,017 INFO uvicorn.error Shutting down +2026-09-09 10:43:25,121 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 10:43:25,123 INFO uvicorn.error Application shutdown complete. +2026-09-09 10:43:25,124 INFO uvicorn.error Finished server process [48587] +2026-09-09 10:43:25,521 INFO watchfiles.main 1 change detected +2026-09-09 10:43:30,518 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:43:31,373 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 10:43:31,373 INFO uvicorn.error Started server process [48683] +2026-09-09 10:43:31,374 INFO uvicorn.error Waiting for application startup. +2026-09-09 10:43:31,374 INFO uvicorn.error Application startup complete. +2026-09-09 10:43:35,471 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:43:36,151 INFO guardrails.execution request=909d9a2e-e973-42f4-bfe7-a170f18e645a starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-09 10:43:36,152 INFO guardrails.execution request=909d9a2e-e973-42f4-bfe7-a170f18e645a guardrails execution finished (passed=True) output='this contains b' +2026-09-09 10:43:36,155 INFO guardrails.execution request=909d9a2e-e973-42f4-bfe7-a170f18e645a step=1/1 validator=BanList stage=output outcome=Outcome.FAIL start=2026-09-09T10:43:36.151750 end=2026-09-09T10:43:36.151891 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 10:43:36,159 INFO http_request_logger POST /api/v1/guardrails/ - 200 [33.26ms] +2026-09-09 10:43:36,431 INFO watchfiles.main 6 changes detected +2026-09-09 10:43:42,994 INFO watchfiles.main 2 changes detected +2026-09-09 10:43:42,995 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 10:43:43,085 INFO uvicorn.error Shutting down +2026-09-09 10:43:43,187 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 10:43:43,187 INFO uvicorn.error Application shutdown complete. +2026-09-09 10:43:43,188 INFO uvicorn.error Finished server process [48683] +2026-09-09 10:43:43,566 INFO watchfiles.main 1 change detected +2026-09-09 10:43:47,946 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:43:47,946 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:43:48,500 INFO watchfiles.main 3 changes detected +2026-09-09 10:43:48,668 INFO guardrails.execution request=e238b16d-3ddf-48f5-8e8e-723bc9f1130a starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-09 10:43:48,670 INFO guardrails.execution request=e238b16d-3ddf-48f5-8e8e-723bc9f1130a guardrails execution finished (passed=True) output='this contains b' +2026-09-09 10:43:48,673 INFO guardrails.execution request=e238b16d-3ddf-48f5-8e8e-723bc9f1130a step=1/1 validator=BanList stage=output outcome=Outcome.FAIL start=2026-09-09T10:43:48.669051 end=2026-09-09T10:43:48.669196 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 10:43:48,677 INFO http_request_logger POST /api/v1/guardrails/ - 200 [34.70ms] +2026-09-09 10:43:48,788 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 10:43:48,789 INFO uvicorn.error Started server process [48725] +2026-09-09 10:43:48,790 INFO uvicorn.error Waiting for application startup. +2026-09-09 10:43:48,790 INFO uvicorn.error Application startup complete. +2026-09-09 10:43:48,866 INFO watchfiles.main 3 changes detected +2026-09-09 10:43:49,558 INFO watchfiles.main 2 changes detected +2026-09-09 10:43:49,558 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 10:43:49,597 INFO uvicorn.error Shutting down +2026-09-09 10:43:49,699 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 10:43:49,700 INFO uvicorn.error Application shutdown complete. +2026-09-09 10:43:49,700 INFO uvicorn.error Finished server process [48725] +2026-09-09 10:43:50,079 INFO watchfiles.main 1 change detected +2026-09-09 10:43:53,753 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:43:54,199 INFO watchfiles.main 3 changes detected +2026-09-09 10:43:54,507 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 10:43:54,507 INFO uvicorn.error Started server process [48744] +2026-09-09 10:43:54,508 INFO uvicorn.error Waiting for application startup. +2026-09-09 10:43:54,509 INFO uvicorn.error Application startup complete. +2026-09-09 10:44:08,265 INFO presidio-analyzer Using device of type: cpu +2026-09-09 10:44:09,021 INFO guardrails.execution request=fc3f6e69-9858-474e-8890-baf75e34fe4c starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:44:09,025 INFO guardrails.execution request=fc3f6e69-9858-474e-8890-baf75e34fe4c guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:44:09,032 INFO guardrails.execution request=fc3f6e69-9858-474e-8890-baf75e34fe4c step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:44:09.023701 end=2026-09-09T10:44:09.023835 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:44:09,042 INFO http_request_logger POST /api/v1/guardrails/ - 200 [62.37ms] +2026-09-09 10:44:09,076 INFO guardrails.execution request=6be9c16c-81b7-476d-97e9-f0998a739486 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-09 10:44:09,077 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 6be9c16c-81b7-476d-97e9-f0998a739486: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-09 10:44:09,089 INFO guardrails.execution request=6be9c16c-81b7-476d-97e9-f0998a739486 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-09T10:44:09.077081 end=2026-09-09T10:44:09.077174 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-09 10:44:09,093 INFO http_request_logger POST /api/v1/guardrails/ - 200 [42.30ms] +2026-09-09 10:44:09,111 INFO guardrails.execution request=22e1b4e8-8620-4bb3-b2dc-15e8feb5e9b9 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='What are the common symptoms of diabetes?' +2026-09-09 10:44:09,111 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 22e1b4e8-8620-4bb3-b2dc-15e8feb5e9b9: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +2026-09-09 10:44:09,116 INFO guardrails.execution request=22e1b4e8-8620-4bb3-b2dc-15e8feb5e9b9 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-09T10:44:09.111632 end=2026-09-09T10:44:09.111695 duration_ms=0 input='What are the common symptoms of diabetes?' output=None +2026-09-09 10:44:09,118 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.58ms] +2026-09-09 10:44:09,132 INFO guardrails.execution request=d15052a5-a8f7-4aa9-9c15-0c3cc5896093 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:44:09,134 INFO guardrails.execution request=d15052a5-a8f7-4aa9-9c15-0c3cc5896093 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:44:09,135 INFO guardrails.execution request=d15052a5-a8f7-4aa9-9c15-0c3cc5896093 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:44:09.133322 end=2026-09-09T10:44:09.133391 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:44:09,138 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.20ms] +2026-09-09 10:44:09,152 INFO guardrails.execution request=7228669b-50b6-44bc-a553-ef19df763b28 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-09 10:44:09,152 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 7228669b-50b6-44bc-a553-ef19df763b28: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-09 10:44:09,155 INFO guardrails.execution request=7228669b-50b6-44bc-a553-ef19df763b28 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-09T10:44:09.152707 end=2026-09-09T10:44:09.152779 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-09 10:44:09,158 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.90ms] +2026-09-09 10:44:09,175 INFO guardrails.execution request=9e991cba-6c20-47d4-905d-e0bcd0fbf874 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-09 10:44:09,176 INFO guardrails.execution request=9e991cba-6c20-47d4-905d-e0bcd0fbf874 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-09 10:44:09,178 INFO guardrails.execution request=9e991cba-6c20-47d4-905d-e0bcd0fbf874 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:44:09.175802 end=2026-09-09T10:44:09.175871 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-09 10:44:09,180 INFO guardrails.execution request=9e991cba-6c20-47d4-905d-e0bcd0fbf874 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:09.175876 end=2026-09-09T10:44:09.175973 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-09 10:44:09,182 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.65ms] +2026-09-09 10:44:09,195 INFO guardrails.execution request=f4bcbeb4-20c5-4696-bd81-d454bb5a3c31 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Diabetes symptoms include fuck fatigue.' +2026-09-09 10:44:09,198 INFO guardrails.execution request=f4bcbeb4-20c5-4696-bd81-d454bb5a3c31 guardrails execution finished (passed=True) output='' +2026-09-09 10:44:09,200 INFO guardrails.execution request=f4bcbeb4-20c5-4696-bd81-d454bb5a3c31 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:44:09.196177 end=2026-09-09T10:44:09.196249 duration_ms=0 input='Diabetes symptoms include fuck fatigue.' output='Diabetes symptoms include fuck fatigue.' +2026-09-09 10:44:09,201 INFO guardrails.execution request=f4bcbeb4-20c5-4696-bd81-d454bb5a3c31 step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:09.196253 end=2026-09-09T10:44:09.197649 duration_ms=1 input='Diabetes symptoms include fuck fatigue.' output='' +2026-09-09 10:44:09,204 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.44ms] +2026-09-09 10:44:09,223 INFO guardrails.execution request=414ec446-1a20-487f-84c2-e2a14623fb8b starting guardrails execution (validators=['answer_relevance_custom_llm', 'uli_slur_match']) input='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-09 10:44:09,227 INFO guardrails.execution request=414ec446-1a20-487f-84c2-e2a14623fb8b guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-09 10:44:09,229 INFO guardrails.execution request=414ec446-1a20-487f-84c2-e2a14623fb8b step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:44:09.224563 end=2026-09-09T10:44:09.224637 duration_ms=0 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-09 10:44:09,231 INFO guardrails.execution request=414ec446-1a20-487f-84c2-e2a14623fb8b step=2/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:09.224641 end=2026-09-09T10:44:09.226978 duration_ms=2 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-09 10:44:09,233 INFO http_request_logger POST /api/v1/guardrails/ - 200 [26.19ms] +2026-09-09 10:44:09,247 INFO guardrails.execution request=d24fd98d-12dd-4233-be29-58acebe9b557 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-09 10:44:09,248 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log d24fd98d-12dd-4233-be29-58acebe9b557: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +2026-09-09 10:44:09,250 INFO guardrails.execution request=d24fd98d-12dd-4233-be29-58acebe9b557 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:44:09.247509 end=2026-09-09T10:44:09.247574 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-09 10:44:09,252 INFO guardrails.execution request=d24fd98d-12dd-4233-be29-58acebe9b557 step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:09.247578 end=2026-09-09T10:44:09.248541 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output=None +2026-09-09 10:44:09,253 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.97ms] +2026-09-09 10:44:09,277 INFO guardrails.execution request=f6369292-704d-4226-bef4-94559ca6036a starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list', 'profanity_free', 'uli_slur_match', 'gender_assumption_bias']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:44:09,285 INFO guardrails.execution request=f6369292-704d-4226-bef4-94559ca6036a guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:44:09,290 INFO guardrails.execution request=f6369292-704d-4226-bef4-94559ca6036a step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:44:09.279143 end=2026-09-09T10:44:09.279284 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:44:09,292 INFO guardrails.execution request=f6369292-704d-4226-bef4-94559ca6036a step=2/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:44:09.279291 end=2026-09-09T10:44:09.279404 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:44:09,293 INFO guardrails.execution request=f6369292-704d-4226-bef4-94559ca6036a step=3/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:44:09.279413 end=2026-09-09T10:44:09.280496 duration_ms=1 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:44:09,295 INFO guardrails.execution request=f6369292-704d-4226-bef4-94559ca6036a step=4/5 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:44:09.280505 end=2026-09-09T10:44:09.281118 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:44:09,296 INFO guardrails.execution request=f6369292-704d-4226-bef4-94559ca6036a step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.PASS start=2026-09-09T10:44:09.281124 end=2026-09-09T10:44:09.283117 duration_ms=1 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 10:44:09,299 INFO http_request_logger POST /api/v1/guardrails/ - 200 [41.89ms] +2026-09-09 10:44:09,319 INFO guardrails.execution request=1ea0f443-3200-439f-bb55-b4246d2a652d starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free', 'uli_slur_match', 'ban_list', 'gender_assumption_bias']) input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-09 10:44:09,322 INFO guardrails.execution request=1ea0f443-3200-439f-bb55-b4246d2a652d guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-09 10:44:09,324 INFO guardrails.execution request=1ea0f443-3200-439f-bb55-b4246d2a652d step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T10:44:09.319645 end=2026-09-09T10:44:09.319712 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-09 10:44:09,326 INFO guardrails.execution request=1ea0f443-3200-439f-bb55-b4246d2a652d step=2/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:44:09.319716 end=2026-09-09T10:44:09.320615 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-09 10:44:09,327 INFO guardrails.execution request=1ea0f443-3200-439f-bb55-b4246d2a652d step=3/5 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:09.320620 end=2026-09-09T10:44:09.321118 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-09 10:44:09,328 INFO guardrails.execution request=1ea0f443-3200-439f-bb55-b4246d2a652d step=4/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:44:09.321123 end=2026-09-09T10:44:09.321181 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-09 10:44:09,329 INFO guardrails.execution request=1ea0f443-3200-439f-bb55-b4246d2a652d step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:09.321184 end=2026-09-09T10:44:09.321809 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-09 10:44:09,332 INFO http_request_logger POST /api/v1/guardrails/ - 200 [28.72ms] +2026-09-09 10:44:09,354 INFO app.crud.ban_list created ban list id=adbb936b-f6ce-48ef-a37d-5b8c5d30cef8 org=1 project=1 +2026-09-09 10:44:09,354 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [4.74ms] +2026-09-09 10:44:09,358 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.85ms] +2026-09-09 10:44:09,362 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.72ms] +2026-09-09 10:44:09,365 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.79ms] +2026-09-09 10:44:09,370 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.68ms] +2026-09-09 10:44:09,374 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.73ms] +2026-09-09 10:44:09,383 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.85ms] +2026-09-09 10:44:09,393 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.71ms] +2026-09-09 10:44:09,398 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.63ms] +2026-09-09 10:44:09,404 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.94ms] +2026-09-09 10:44:09,411 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.66ms] +2026-09-09 10:44:09,413 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.74ms] +2026-09-09 10:44:09,419 INFO app.crud.ban_list created ban list id=f6ef42c9-240b-4166-a0f2-88902ada53cd org=1 project=1 +2026-09-09 10:44:09,419 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [2.59ms] +2026-09-09 10:44:09,420 INFO http_request_logger GET /api/v1/guardrails/ban_lists/f6ef42c9-240b-4166-a0f2-88902ada53cd/ - 307 [0.10ms] +2026-09-09 10:44:09,422 INFO http_request_logger GET /api/v1/guardrails/ban_lists/f6ef42c9-240b-4166-a0f2-88902ada53cd - 200 [1.58ms] +2026-09-09 10:44:09,428 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.56ms] +2026-09-09 10:44:09,428 INFO http_request_logger GET /api/v1/guardrails/ban_lists/b631613d-ce20-40bd-937b-ae38b1f44eef/ - 307 [0.08ms] +2026-09-09 10:44:09,430 INFO http_request_logger GET /api/v1/guardrails/ban_lists/b631613d-ce20-40bd-937b-ae38b1f44eef - 200 [1.29ms] +2026-09-09 10:44:09,433 INFO http_request_logger GET /api/v1/guardrails/ban_lists/e2237745-e705-469f-8a60-89ad7f95c26b/ - 307 [0.10ms] +2026-09-09 10:44:09,435 INFO http_request_logger GET /api/v1/guardrails/ban_lists/e2237745-e705-469f-8a60-89ad7f95c26b - 404 [1.52ms] +2026-09-09 10:44:09,442 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.81ms] +2026-09-09 10:44:09,442 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ea777f00-32de-49fc-9a7e-9f44f438a725/ - 307 [0.08ms] +2026-09-09 10:44:09,444 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ea777f00-32de-49fc-9a7e-9f44f438a725 - 403 [1.24ms] +2026-09-09 10:44:09,450 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.74ms] +2026-09-09 10:44:09,450 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/8b642836-c93f-49b1-9b8c-22c9834254d2/ - 307 [0.08ms] +2026-09-09 10:44:09,454 INFO app.crud.ban_list updated ban list id=8b642836-c93f-49b1-9b8c-22c9834254d2 +2026-09-09 10:44:09,454 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/8b642836-c93f-49b1-9b8c-22c9834254d2 - 200 [3.53ms] +2026-09-09 10:44:09,460 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.62ms] +2026-09-09 10:44:09,462 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/04b64901-39c3-4e53-beb9-08c30f4bf011/ - 307 [0.09ms] +2026-09-09 10:44:09,464 INFO app.crud.ban_list updated ban list id=04b64901-39c3-4e53-beb9-08c30f4bf011 +2026-09-09 10:44:09,465 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/04b64901-39c3-4e53-beb9-08c30f4bf011 - 200 [3.21ms] +2026-09-09 10:44:09,469 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/dbf72c70-aba4-481f-938e-eca257b0ad0c/ - 307 [0.10ms] +2026-09-09 10:44:09,471 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/dbf72c70-aba4-481f-938e-eca257b0ad0c - 404 [2.04ms] +2026-09-09 10:44:09,476 INFO app.crud.ban_list created ban list id=a4b7a316-3a89-42a4-9425-11db182c22e9 org=1 project=1 +2026-09-09 10:44:09,477 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [2.67ms] +2026-09-09 10:44:09,477 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/a4b7a316-3a89-42a4-9425-11db182c22e9/ - 307 [0.09ms] +2026-09-09 10:44:09,479 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/a4b7a316-3a89-42a4-9425-11db182c22e9 - 403 [1.31ms] +2026-09-09 10:44:09,485 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.62ms] +2026-09-09 10:44:09,486 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/268bf11f-1751-4282-88a8-a23941465b28/ - 307 [0.09ms] +2026-09-09 10:44:09,488 INFO app.crud.ban_list deleted ban list id=268bf11f-1751-4282-88a8-a23941465b28 +2026-09-09 10:44:09,488 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/268bf11f-1751-4282-88a8-a23941465b28 - 200 [1.84ms] +2026-09-09 10:44:09,491 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/5fd41ff1-009d-4ff4-a762-0fdeeb906a56/ - 307 [0.09ms] +2026-09-09 10:44:09,493 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/5fd41ff1-009d-4ff4-a762-0fdeeb906a56 - 404 [1.45ms] +2026-09-09 10:44:09,499 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.76ms] +2026-09-09 10:44:09,499 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/b37bc83f-1726-46c9-a880-680467c87d2d/ - 307 [0.08ms] +2026-09-09 10:44:09,501 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/b37bc83f-1726-46c9-a880-680467c87d2d - 403 [1.25ms] +2026-09-09 10:44:09,506 INFO app.crud.ban_list created ban list id=8c9d9151-c90e-4a24-b523-a23d8d3298fa org=1 project=1 +2026-09-09 10:44:09,506 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [2.51ms] +2026-09-09 10:44:09,507 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/8c9d9151-c90e-4a24-b523-a23d8d3298fa/ - 307 [0.09ms] +2026-09-09 10:44:09,508 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/8c9d9151-c90e-4a24-b523-a23d8d3298fa - 403 [1.13ms] +2026-09-09 10:44:09,590 INFO guardrails.execution request=7715c9e2-b3a8-4678-84e4-42c973e06a79 starting guardrails execution (validators=[]) input='hello world' +2026-09-09 10:44:09,590 INFO guardrails.execution request=7715c9e2-b3a8-4678-84e4-42c973e06a79 guardrails execution finished (passed=True) output='clean text' +2026-09-09 10:44:09,592 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.76ms] +2026-09-09 10:44:09,598 INFO guardrails.execution request=5f62ae6c-8400-439c-913b-3b57bff8ef15 starting guardrails execution (validators=[]) input='my phone is 999999' +2026-09-09 10:44:09,598 INFO guardrails.execution request=5f62ae6c-8400-439c-913b-3b57bff8ef15 guardrails execution finished (passed=False) output=None +2026-09-09 10:44:09,601 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.06ms] +2026-09-09 10:44:09,608 INFO guardrails.execution request=feb74ed9-c54e-4728-b765-5b3b5c1b7f65 starting guardrails execution (validators=[]) input='tell me about buildings' +2026-09-09 10:44:09,608 INFO guardrails.execution request=feb74ed9-c54e-4728-b765-5b3b5c1b7f65 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Input is outside the allowed topic scope.' +2026-09-09 10:44:09,609 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3.79ms] +2026-09-09 10:44:09,614 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log f1b30739-cb0a-441c-ab8a-d57821051aad: Invalid validator config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid validator config +2026-09-09 10:44:09,617 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.68ms] +2026-09-09 10:44:09,629 INFO guardrails.execution request=79ffcbfd-8101-4676-a270-616c786e3ded starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-09 10:44:09,630 INFO guardrails.execution request=79ffcbfd-8101-4676-a270-616c786e3ded guardrails execution finished (passed=True) output='this contains b' +2026-09-09 10:44:09,634 INFO guardrails.execution request=79ffcbfd-8101-4676-a270-616c786e3ded step=1/1 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:09.629834 end=2026-09-09T10:44:09.629929 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 10:44:09,637 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.72ms] +2026-09-09 10:44:09,649 INFO guardrails.execution request=2366d8d6-abb7-4ccd-9ba1-df0f8c30abd1 starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-09 10:44:09,650 INFO guardrails.execution request=2366d8d6-abb7-4ccd-9ba1-df0f8c30abd1 guardrails execution finished (passed=True) output='this contains b' +2026-09-09 10:44:09,653 INFO guardrails.execution request=2366d8d6-abb7-4ccd-9ba1-df0f8c30abd1 step=1/1 validator=BanList stage=output outcome=Outcome.FAIL start=2026-09-09T10:44:09.649765 end=2026-09-09T10:44:09.649855 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 10:44:09,658 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.23ms] +2026-09-09 10:44:09,671 INFO guardrails.execution request=37da69d5-738a-4ed4-aea8-b20169e91553 starting guardrails execution (validators=['ban_list']) input='this is clean' +2026-09-09 10:44:09,672 INFO guardrails.execution request=37da69d5-738a-4ed4-aea8-b20169e91553 guardrails execution finished (passed=True) output='this is clean' +2026-09-09 10:44:09,675 INFO guardrails.execution request=37da69d5-738a-4ed4-aea8-b20169e91553 step=1/1 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:44:09.672142 end=2026-09-09T10:44:09.672207 duration_ms=0 input='this is clean' output='this is clean' +2026-09-09 10:44:09,678 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.42ms] +2026-09-09 10:44:09,695 INFO guardrails.execution request=f49e1660-58d3-425a-865a-b92be5fab6a6 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 10:44:09,697 INFO guardrails.execution request=f49e1660-58d3-425a-865a-b92be5fab6a6 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR].' +2026-09-09 10:44:09,701 INFO guardrails.execution request=f49e1660-58d3-425a-865a-b92be5fab6a6 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:09.695855 end=2026-09-09T10:44:09.696645 duration_ms=0 input='This sentence contains chakki.' output='this sentence contains [REDACTED_SLUR].' +2026-09-09 10:44:09,705 INFO http_request_logger POST /api/v1/guardrails/ - 200 [24.30ms] +2026-09-09 10:44:09,720 INFO guardrails.execution request=6a291387-2318-4343-bd12-211b0a93a3a9 starting guardrails execution (validators=['uli_slur_match']) input='This is a completely safe sentence' +2026-09-09 10:44:09,722 INFO guardrails.execution request=6a291387-2318-4343-bd12-211b0a93a3a9 guardrails execution finished (passed=True) output='This is a completely safe sentence' +2026-09-09 10:44:09,726 INFO guardrails.execution request=6a291387-2318-4343-bd12-211b0a93a3a9 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:44:09.721088 end=2026-09-09T10:44:09.721364 duration_ms=0 input='This is a completely safe sentence' output='This is a completely safe sentence' +2026-09-09 10:44:09,730 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.68ms] +2026-09-09 10:44:09,743 INFO guardrails.execution request=86483657-6d91-495b-8b91-da83b6767999 starting guardrails execution (validators=['uli_slur_match', 'ban_list']) input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' +2026-09-09 10:44:09,745 INFO guardrails.execution request=86483657-6d91-495b-8b91-da83b6767999 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-09 10:44:09,749 INFO guardrails.execution request=86483657-6d91-495b-8b91-da83b6767999 step=1/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:09.744139 end=2026-09-09T10:44:09.744641 duration_ms=0 input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' +2026-09-09 10:44:09,752 INFO guardrails.execution request=86483657-6d91-495b-8b91-da83b6767999 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:09.744647 end=2026-09-09T10:44:09.744729 duration_ms=0 input='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-09 10:44:09,755 INFO http_request_logger POST /api/v1/guardrails/ - 200 [21.12ms] +2026-09-09 10:44:09,759 INFO http_request_logger POST /api/v1/guardrails/ - 422 [0.95ms] +2026-09-09 10:44:09,772 INFO guardrails.execution request=2665f06f-b8cc-4c5f-935e-5d8c48fd3a2c starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 10:44:09,773 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 2665f06f-b8cc-4c5f-935e-5d8c48fd3a2c: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-09 10:44:09,777 INFO guardrails.execution request=2665f06f-b8cc-4c5f-935e-5d8c48fd3a2c step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:09.772711 end=2026-09-09T10:44:09.772987 duration_ms=0 input='This sentence contains chakki.' output=None +2026-09-09 10:44:09,780 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.78ms] +2026-09-09 10:44:09,794 INFO guardrails.execution request=c98758ff-6b36-490a-a3ab-cfe3b1e99c71 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 10:44:09,795 INFO guardrails.execution request=c98758ff-6b36-490a-a3ab-cfe3b1e99c71 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-09 10:44:09,799 INFO guardrails.execution request=c98758ff-6b36-490a-a3ab-cfe3b1e99c71 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:09.794994 end=2026-09-09T10:44:09.795263 duration_ms=0 input='This sentence contains chakki.' output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-09 10:44:09,802 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.63ms] +2026-09-09 10:44:09,816 INFO guardrails.execution request=93f9cb74-018f-46a2-8b38-0387e87d1a22 starting guardrails execution (validators=['profanity_free']) input='This is a damn fucking mess.' +2026-09-09 10:44:09,818 INFO guardrails.execution request=93f9cb74-018f-46a2-8b38-0387e87d1a22 guardrails execution finished (passed=True) output='' +2026-09-09 10:44:09,820 INFO guardrails.execution request=93f9cb74-018f-46a2-8b38-0387e87d1a22 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:09.816484 end=2026-09-09T10:44:09.817455 duration_ms=0 input='This is a damn fucking mess.' output='' +2026-09-09 10:44:09,823 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.46ms] +2026-09-09 10:44:09,837 INFO guardrails.execution request=d4be4fce-99c5-4863-97b9-78da51b76cdf starting guardrails execution (validators=['profanity_free']) input='This is a completely clean sentence.' +2026-09-09 10:44:09,839 INFO guardrails.execution request=d4be4fce-99c5-4863-97b9-78da51b76cdf guardrails execution finished (passed=True) output='This is a completely clean sentence.' +2026-09-09 10:44:09,841 INFO guardrails.execution request=d4be4fce-99c5-4863-97b9-78da51b76cdf step=1/1 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:44:09.837684 end=2026-09-09T10:44:09.838668 duration_ms=0 input='This is a completely clean sentence.' output='This is a completely clean sentence.' +2026-09-09 10:44:09,843 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.31ms] +2026-09-09 10:44:09,857 INFO guardrails.execution request=ba71d20a-3360-4650-a474-62a73c431859 starting guardrails execution (validators=['profanity_free']) input='What the fuck is going on?' +2026-09-09 10:44:09,858 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log ba71d20a-3360-4650-a474-62a73c431859: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +2026-09-09 10:44:09,860 INFO guardrails.execution request=ba71d20a-3360-4650-a474-62a73c431859 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:09.857438 end=2026-09-09T10:44:09.858400 duration_ms=0 input='What the fuck is going on?' output=None +2026-09-09 10:44:09,862 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.26ms] +2026-09-09 10:44:09,876 INFO guardrails.execution request=2177377b-81e1-4d59-9ef4-59d541b47356 starting guardrails execution (validators=['profanity_free']) input='This is absolute bullshit.' +2026-09-09 10:44:09,878 INFO guardrails.execution request=2177377b-81e1-4d59-9ef4-59d541b47356 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-09 10:44:09,880 INFO guardrails.execution request=2177377b-81e1-4d59-9ef4-59d541b47356 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:09.876815 end=2026-09-09T10:44:09.877736 duration_ms=0 input='This is absolute bullshit.' output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-09 10:44:09,882 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.39ms] +2026-09-09 10:44:09,888 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log a7c03655-3fa6-479b-b322-10101fabd473: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-09 10:44:09,891 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.07ms] +2026-09-09 10:44:10,518 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-09 10:44:12,421 INFO guardrails.execution request=31be8427-95ab-4617-8208-dab5b3cd1b67 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-09 10:44:12,524 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 31be8427-95ab-4617-8208-dab5b3cd1b67: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-09 10:44:12,537 INFO guardrails.execution request=31be8427-95ab-4617-8208-dab5b3cd1b67 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:12.423224 end=2026-09-09T10:44:12.524430 duration_ms=101 input='She slowly undressed and they had explicit sex.' output=None +2026-09-09 10:44:12,540 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2646.16ms] +2026-09-09 10:44:14,919 INFO guardrails.execution request=e4fd3eb8-8125-45a0-8fc6-7739a84ed9b4 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-09 10:44:14,935 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log e4fd3eb8-8125-45a0-8fc6-7739a84ed9b4: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-09 10:44:14,943 INFO guardrails.execution request=e4fd3eb8-8125-45a0-8fc6-7739a84ed9b4 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:14.919929 end=2026-09-09T10:44:14.935019 duration_ms=15 input='She slowly undressed and they had explicit sex.' output=None +2026-09-09 10:44:14,948 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2402.09ms] +2026-09-09 10:44:16,974 INFO guardrails.execution request=02039b8a-d576-4edb-b3e2-67f1a83234b0 starting guardrails execution (validators=['nsfw_text']) input='Explicit sexual content goes here.' +2026-09-09 10:44:16,998 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 02039b8a-d576-4edb-b3e2-67f1a83234b0: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +2026-09-09 10:44:17,005 INFO guardrails.execution request=02039b8a-d576-4edb-b3e2-67f1a83234b0 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:16.975098 end=2026-09-09T10:44:16.998504 duration_ms=23 input='Explicit sexual content goes here.' output=None +2026-09-09 10:44:17,007 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2053.53ms] +2026-09-09 10:44:17,029 INFO guardrails.execution request=0013ab9c-56a3-4256-b17c-2d5eedc10e56 starting guardrails execution (validators=['profanity_free', 'uli_slur_match']) input='This fucking chakki should leave.' +2026-09-09 10:44:17,034 INFO guardrails.execution request=0013ab9c-56a3-4256-b17c-2d5eedc10e56 guardrails execution finished (passed=True) output='' +2026-09-09 10:44:17,036 INFO guardrails.execution request=0013ab9c-56a3-4256-b17c-2d5eedc10e56 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:17.029999 end=2026-09-09T10:44:17.032855 duration_ms=2 input='This fucking chakki should leave.' output='' +2026-09-09 10:44:17,038 INFO guardrails.execution request=0013ab9c-56a3-4256-b17c-2d5eedc10e56 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:44:17.032884 end=2026-09-09T10:44:17.033197 duration_ms=0 input='' output='' +2026-09-09 10:44:17,041 INFO http_request_logger POST /api/v1/guardrails/ - 200 [29.22ms] +2026-09-09 10:44:17,049 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 68fef0d2-7d84-45ab-9777-ad448d0e48ae: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-09 10:44:17,051 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.76ms] +2026-09-09 10:44:19,092 INFO guardrails.execution request=cf3e10a9-93cb-4e2b-8db6-f69fe37d6754 starting guardrails execution (validators=['profanity_free', 'nsfw_text']) input='What the fuck, this is explicit adult sexual content.' +2026-09-09 10:44:19,095 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log cf3e10a9-93cb-4e2b-8db6-f69fe37d6754: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +2026-09-09 10:44:19,098 INFO guardrails.execution request=cf3e10a9-93cb-4e2b-8db6-f69fe37d6754 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:19.092898 end=2026-09-09T10:44:19.094878 duration_ms=1 input='What the fuck, this is explicit adult sexual content.' output=None +2026-09-09 10:44:19,100 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2046.08ms] +2026-09-09 10:44:21,160 INFO guardrails.execution request=74c5c92a-cefd-46ea-bb21-6162a12fb229 starting guardrails execution (validators=['uli_slur_match', 'nsfw_text']) input='This chakki has explicit sexual content.' +2026-09-09 10:44:21,161 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 74c5c92a-cefd-46ea-bb21-6162a12fb229: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-09 10:44:21,167 INFO guardrails.execution request=74c5c92a-cefd-46ea-bb21-6162a12fb229 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:21.161282 end=2026-09-09T10:44:21.161760 duration_ms=0 input='This chakki has explicit sexual content.' output=None +2026-09-09 10:44:21,170 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2065.93ms] +2026-09-09 10:44:21,188 INFO guardrails.execution request=d9c820f7-2338-4c71-82c1-4bee8152ccc4 starting guardrails execution (validators=['profanity_free', 'ban_list']) input='Tell me about renewable energy sources.' +2026-09-09 10:44:21,190 INFO guardrails.execution request=d9c820f7-2338-4c71-82c1-4bee8152ccc4 guardrails execution finished (passed=True) output='Tell me about renewable energy sources.' +2026-09-09 10:44:21,194 INFO guardrails.execution request=d9c820f7-2338-4c71-82c1-4bee8152ccc4 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:44:21.188425 end=2026-09-09T10:44:21.189538 duration_ms=1 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-09 10:44:21,198 INFO guardrails.execution request=d9c820f7-2338-4c71-82c1-4bee8152ccc4 step=2/2 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:44:21.189544 end=2026-09-09T10:44:21.189651 duration_ms=0 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-09 10:44:21,202 INFO http_request_logger POST /api/v1/guardrails/ - 200 [25.67ms] +2026-09-09 10:44:21,225 INFO guardrails.execution request=365558ae-59bc-4dc9-a1e8-9c8943d6fd07 starting guardrails execution (validators=['uli_slur_match', 'profanity_free', 'ban_list']) input='What are some healthy breakfast options?' +2026-09-09 10:44:21,228 INFO guardrails.execution request=365558ae-59bc-4dc9-a1e8-9c8943d6fd07 guardrails execution finished (passed=True) output='What are some healthy breakfast options?' +2026-09-09 10:44:21,233 INFO guardrails.execution request=365558ae-59bc-4dc9-a1e8-9c8943d6fd07 step=1/3 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:44:21.226348 end=2026-09-09T10:44:21.226803 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 10:44:21,236 INFO guardrails.execution request=365558ae-59bc-4dc9-a1e8-9c8943d6fd07 step=2/3 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:44:21.226816 end=2026-09-09T10:44:21.227892 duration_ms=1 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 10:44:21,238 INFO guardrails.execution request=365558ae-59bc-4dc9-a1e8-9c8943d6fd07 step=3/3 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:44:21.227899 end=2026-09-09T10:44:21.227982 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 10:44:21,243 INFO http_request_logger POST /api/v1/guardrails/ - 200 [35.26ms] +2026-09-09 10:44:21,261 INFO guardrails.execution request=1821effa-6f10-4354-909d-3af622edd477 starting guardrails execution (validators=['ban_list', 'uli_slur_match']) input='this contains badword' +2026-09-09 10:44:21,263 INFO guardrails.execution request=1821effa-6f10-4354-909d-3af622edd477 guardrails execution finished (passed=True) output='this contains b' +2026-09-09 10:44:21,266 INFO guardrails.execution request=1821effa-6f10-4354-909d-3af622edd477 step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:44:21.262358 end=2026-09-09T10:44:21.262490 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 10:44:21,268 INFO guardrails.execution request=1821effa-6f10-4354-909d-3af622edd477 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:44:21.262496 end=2026-09-09T10:44:21.262703 duration_ms=0 input='this contains b' output='this contains b' +2026-09-09 10:44:21,272 INFO http_request_logger POST /api/v1/guardrails/ - 200 [22.39ms] +2026-09-09 10:44:21,285 ERROR app.api.routes.guardrails [run_guardrails] config resolution failed for request_log 3560e203-7cb0-4d9b-a364-3be0da412132: 404: Ban list not found +2026-09-09 10:44:21,288 INFO http_request_logger POST /api/v1/guardrails/ - 404 [7.39ms] +2026-09-09 10:44:21,296 INFO guardrails.execution request=c2eec1c0-ded7-4a0d-b94f-0be6774b177c starting guardrails execution (validators=['ban_list']) input='hello' +2026-09-09 10:44:21,296 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log c2eec1c0-ded7-4a0d-b94f-0be6774b177c: boom +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +RuntimeError: boom +2026-09-09 10:44:21,299 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.51ms] +2026-09-09 10:44:21,304 WARNING app.api.routes.guardrails [run_guardrails] invalid request_id 'not-a-uuid' (org=1 project=1), no request log written +2026-09-09 10:44:21,304 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1.14ms] +2026-09-09 10:44:21,313 INFO app.crud.llm_prompt_config created llm prompt config id=3e010702-0b7c-4b15-8bbe-58e8b5c5061b org=1 project=1 +2026-09-09 10:44:21,314 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [6.31ms] +2026-09-09 10:44:21,319 INFO app.crud.llm_prompt_config created llm prompt config id=f18c55bf-e8c5-4694-85c3-2d509814fa20 org=1 project=1 +2026-09-09 10:44:21,320 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.71ms] +2026-09-09 10:44:21,325 INFO app.crud.llm_prompt_config created llm prompt config id=5a8389a1-dd8b-420e-b59e-6c2aa9964e96 org=1 project=1 +2026-09-09 10:44:21,326 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.58ms] +2026-09-09 10:44:21,331 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [1.39ms] +2026-09-09 10:44:21,337 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.75ms] +2026-09-09 10:44:21,340 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.78ms] +2026-09-09 10:44:21,344 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.80ms] +2026-09-09 10:44:21,350 INFO app.crud.llm_prompt_config created llm prompt config id=78d08806-63cb-4a5e-bf47-d8d74ea48e2f org=1 project=1 +2026-09-09 10:44:21,351 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.86ms] +2026-09-09 10:44:21,355 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.79ms] +2026-09-09 10:44:21,359 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.79ms] +2026-09-09 10:44:21,366 INFO app.crud.llm_prompt_config created llm prompt config id=0075af94-9194-47d2-8812-d3ff5bc50f4a org=1 project=1 +2026-09-09 10:44:21,366 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.80ms] +2026-09-09 10:44:21,370 INFO app.crud.llm_prompt_config created llm prompt config id=3f9701ad-23b7-4ab1-abc0-ea6a37858690 org=1 project=1 +2026-09-09 10:44:21,371 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.01ms] +2026-09-09 10:44:21,374 INFO app.crud.llm_prompt_config created llm prompt config id=1d96ea48-fc49-4bc5-b7c2-d8628f9ba5de org=1 project=1 +2026-09-09 10:44:21,375 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.77ms] +2026-09-09 10:44:21,378 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.87ms] +2026-09-09 10:44:21,385 INFO app.crud.llm_prompt_config created llm prompt config id=37a5bc5b-71d1-4ad4-8858-3637ec0d0c7b org=1 project=1 +2026-09-09 10:44:21,386 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.74ms] +2026-09-09 10:44:21,388 INFO app.crud.llm_prompt_config created llm prompt config id=2c1bb62c-2189-4e30-ab71-aaf9760f9c2f org=1 project=1 +2026-09-09 10:44:21,388 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.28ms] +2026-09-09 10:44:21,390 INFO app.crud.llm_prompt_config created llm prompt config id=65306597-8a77-4440-b356-5791a31ce9af org=1 project=1 +2026-09-09 10:44:21,391 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.17ms] +2026-09-09 10:44:21,393 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.91ms] +2026-09-09 10:44:21,398 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.63ms] +2026-09-09 10:44:21,404 INFO app.crud.llm_prompt_config created llm prompt config id=7905eba0-7aa9-4611-9ab8-a277bae1de91 org=1 project=1 +2026-09-09 10:44:21,405 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.52ms] +2026-09-09 10:44:21,407 INFO app.crud.llm_prompt_config created llm prompt config id=fdc93df4-2457-46e8-880d-4b00067a0bbd org=1 project=1 +2026-09-09 10:44:21,407 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.18ms] +2026-09-09 10:44:21,409 INFO app.crud.llm_prompt_config created llm prompt config id=95d54401-0559-482c-bb39-87d1cdfeefc8 org=1 project=1 +2026-09-09 10:44:21,410 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.21ms] +2026-09-09 10:44:21,412 INFO app.crud.llm_prompt_config created llm prompt config id=a34f433e-4d97-41ae-8341-942859feec59 org=1 project=1 +2026-09-09 10:44:21,412 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.15ms] +2026-09-09 10:44:21,415 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.27ms] +2026-09-09 10:44:21,422 INFO app.crud.llm_prompt_config created llm prompt config id=f970e81b-e241-4471-b42c-6cb9b6ac3a57 org=1 project=1 +2026-09-09 10:44:21,423 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.32ms] +2026-09-09 10:44:21,425 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.65ms] +2026-09-09 10:44:21,431 INFO app.crud.llm_prompt_config created llm prompt config id=2907efa4-7c5f-432d-b4db-3ec6eb888b72 org=1 project=1 +2026-09-09 10:44:21,432 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.12ms] +2026-09-09 10:44:21,434 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/2907efa4-7c5f-432d-b4db-3ec6eb888b72 - 200 [2.10ms] +2026-09-09 10:44:21,440 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/1423f371-cdf6-4333-93d0-68a370638457 - 404 [1.79ms] +2026-09-09 10:44:21,445 INFO app.crud.llm_prompt_config created llm prompt config id=ae0079f6-515d-483d-aeec-692a96ddbbc6 org=1 project=1 +2026-09-09 10:44:21,446 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.54ms] +2026-09-09 10:44:21,447 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ae0079f6-515d-483d-aeec-692a96ddbbc6 - 404 [1.19ms] +2026-09-09 10:44:21,453 INFO app.crud.llm_prompt_config created llm prompt config id=9d46c18d-f7e8-46a8-be7d-0e9b07b48300 org=1 project=1 +2026-09-09 10:44:21,454 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.51ms] +2026-09-09 10:44:21,458 INFO app.crud.llm_prompt_config updated llm prompt config id=9d46c18d-f7e8-46a8-be7d-0e9b07b48300 +2026-09-09 10:44:21,458 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/9d46c18d-f7e8-46a8-be7d-0e9b07b48300 - 200 [4.14ms] +2026-09-09 10:44:21,465 INFO app.crud.llm_prompt_config created llm prompt config id=79d11925-9286-4efb-af07-ac44388c951b org=1 project=1 +2026-09-09 10:44:21,465 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.66ms] +2026-09-09 10:44:21,468 INFO app.crud.llm_prompt_config updated llm prompt config id=79d11925-9286-4efb-af07-ac44388c951b +2026-09-09 10:44:21,468 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/79d11925-9286-4efb-af07-ac44388c951b - 200 [2.94ms] +2026-09-09 10:44:21,475 INFO app.crud.llm_prompt_config created llm prompt config id=33db0661-9938-4a08-8098-ddb2a15bfdae org=1 project=1 +2026-09-09 10:44:21,475 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.53ms] +2026-09-09 10:44:21,477 INFO app.crud.llm_prompt_config updated llm prompt config id=33db0661-9938-4a08-8098-ddb2a15bfdae +2026-09-09 10:44:21,478 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/33db0661-9938-4a08-8098-ddb2a15bfdae - 200 [2.58ms] +2026-09-09 10:44:21,480 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/33db0661-9938-4a08-8098-ddb2a15bfdae - 200 [1.36ms] +2026-09-09 10:44:21,485 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/8d41e175-4bfe-40d4-bafa-cd2cf20f45d0 - 404 [1.65ms] +2026-09-09 10:44:21,491 INFO app.crud.llm_prompt_config created llm prompt config id=dcc92a5f-f775-4e76-87e4-446d264a75cf org=1 project=1 +2026-09-09 10:44:21,491 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.66ms] +2026-09-09 10:44:21,493 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/dcc92a5f-f775-4e76-87e4-446d264a75cf - 404 [1.32ms] +2026-09-09 10:44:21,498 INFO app.crud.llm_prompt_config created llm prompt config id=e40800db-cbae-46ec-b0dc-dda312bb83fa org=1 project=1 +2026-09-09 10:44:21,499 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.69ms] +2026-09-09 10:44:21,500 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/e40800db-cbae-46ec-b0dc-dda312bb83fa - 422 [1.38ms] +2026-09-09 10:44:21,507 INFO app.crud.llm_prompt_config created llm prompt config id=d2606eaf-fa2c-4539-a4a4-b11c89106706 org=1 project=1 +2026-09-09 10:44:21,508 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.19ms] +2026-09-09 10:44:21,510 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/d2606eaf-fa2c-4539-a4a4-b11c89106706 - 422 [1.71ms] +2026-09-09 10:44:21,517 INFO app.crud.llm_prompt_config created llm prompt config id=595fc79e-f117-4c1f-a9b6-957b738d323c org=1 project=1 +2026-09-09 10:44:21,517 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.69ms] +2026-09-09 10:44:21,521 INFO app.crud.llm_prompt_config updated llm prompt config id=595fc79e-f117-4c1f-a9b6-957b738d323c +2026-09-09 10:44:21,522 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/595fc79e-f117-4c1f-a9b6-957b738d323c - 200 [4.19ms] +2026-09-09 10:44:21,528 INFO app.crud.llm_prompt_config created llm prompt config id=a3dc03ef-1939-47d2-8a77-06e17935b3c4 org=1 project=1 +2026-09-09 10:44:21,529 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.51ms] +2026-09-09 10:44:21,531 INFO app.crud.llm_prompt_config updated llm prompt config id=a3dc03ef-1939-47d2-8a77-06e17935b3c4 +2026-09-09 10:44:21,532 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/a3dc03ef-1939-47d2-8a77-06e17935b3c4 - 200 [2.57ms] +2026-09-09 10:44:21,538 INFO app.crud.llm_prompt_config created llm prompt config id=72d4e7aa-eadd-4d29-80a4-a240e908a68d org=1 project=1 +2026-09-09 10:44:21,538 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.64ms] +2026-09-09 10:44:21,541 INFO app.crud.llm_prompt_config deleted llm prompt config id=72d4e7aa-eadd-4d29-80a4-a240e908a68d +2026-09-09 10:44:21,541 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/72d4e7aa-eadd-4d29-80a4-a240e908a68d - 200 [2.36ms] +2026-09-09 10:44:21,548 INFO app.crud.llm_prompt_config created llm prompt config id=8e42cc3f-57a6-4f1b-8d5a-22720e224c2a org=1 project=1 +2026-09-09 10:44:21,548 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.31ms] +2026-09-09 10:44:21,551 INFO app.crud.llm_prompt_config deleted llm prompt config id=8e42cc3f-57a6-4f1b-8d5a-22720e224c2a +2026-09-09 10:44:21,551 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/8e42cc3f-57a6-4f1b-8d5a-22720e224c2a - 200 [2.68ms] +2026-09-09 10:44:21,553 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.86ms] +2026-09-09 10:44:21,559 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/67f3ec3f-5291-432a-96ed-886abfe2bea6 - 404 [1.98ms] +2026-09-09 10:44:21,565 INFO app.crud.llm_prompt_config created llm prompt config id=6a0dd379-e568-44a9-b38c-98a7472bf843 org=1 project=1 +2026-09-09 10:44:21,565 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.71ms] +2026-09-09 10:44:21,567 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/6a0dd379-e568-44a9-b38c-98a7472bf843 - 404 [1.25ms] +2026-09-09 10:44:21,669 INFO guardrails.execution request=9836e14f-7440-4192-81d4-fd94b2f119a5 starting guardrails execution (validators=[]) input='hello' +2026-09-09 10:44:21,669 INFO guardrails.execution request=9836e14f-7440-4192-81d4-fd94b2f119a5 guardrails execution finished (passed=True) output='clean text' +2026-09-09 10:44:21,671 INFO guardrails.execution request=9836e14f-7440-4192-81d4-fd94b2f119a5 starting guardrails execution (validators=[]) input='bad text' +2026-09-09 10:44:21,671 INFO guardrails.execution request=9836e14f-7440-4192-81d4-fd94b2f119a5 guardrails execution finished (passed=False) output=None +2026-09-09 10:44:21,673 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 9836e14f-7440-4192-81d4-fd94b2f119a5: Invalid config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid config +2026-09-09 10:44:21,676 INFO guardrails.execution request=9836e14f-7440-4192-81d4-fd94b2f119a5 starting guardrails execution (validators=[]) input='bad text' +2026-09-09 10:44:21,676 INFO guardrails.execution request=9836e14f-7440-4192-81d4-fd94b2f119a5 guardrails execution finished (passed=False) output=None +2026-09-09 10:44:21,678 INFO guardrails.execution request=9836e14f-7440-4192-81d4-fd94b2f119a5 starting guardrails execution (validators=[]) input='bad text' +2026-09-09 10:44:21,678 INFO guardrails.execution request=9836e14f-7440-4192-81d4-fd94b2f119a5 guardrails execution finished (passed=False) output=None +2026-09-09 10:44:21,702 INFO guardrails.execution request=9836e14f-7440-4192-81d4-fd94b2f119a5 starting guardrails execution (validators=[]) input='this is some unsafe content' +2026-09-09 10:44:21,702 INFO guardrails.execution request=9836e14f-7440-4192-81d4-fd94b2f119a5 guardrails execution finished (passed=False) output=None +2026-09-09 10:44:21,704 INFO guardrails.execution request=9836e14f-7440-4192-81d4-fd94b2f119a5 starting guardrails execution (validators=[]) input='some input text' +2026-09-09 10:44:21,704 INFO guardrails.execution request=9836e14f-7440-4192-81d4-fd94b2f119a5 guardrails execution finished (passed=False) output=None +2026-09-09 10:44:21,706 INFO guardrails.execution request=9836e14f-7440-4192-81d4-fd94b2f119a5 starting guardrails execution (validators=[]) input='this contains profane words' +2026-09-09 10:44:21,706 INFO guardrails.execution request=9836e14f-7440-4192-81d4-fd94b2f119a5 guardrails execution finished (passed=False) output=None +2026-09-09 10:44:21,708 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 9836e14f-7440-4192-81d4-fd94b2f119a5: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +2026-09-09 10:44:21,710 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 9836e14f-7440-4192-81d4-fd94b2f119a5: Validation failed for field with errors: Profanity detected in: this contains profane words +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: Profanity detected in: this contains profane words +2026-09-09 10:44:21,724 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 10:44:21,726 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 10:44:21,728 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 10:44:21,739 INFO app.crud.validator_config created validator config id=0fa56272-43d3-478f-a0d9-977f727c8bb9 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:44:21,739 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [4.77ms] +2026-09-09 10:44:21,745 INFO app.crud.validator_config created validator config id=73d99a92-07ab-4794-8bb7-8e3ce2628840 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:44:21,746 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.02ms] +2026-09-09 10:44:21,748 WARNING app.crud.validator_config create validator config failed: duplicate name (org=1 project=1) +2026-09-09 10:44:21,748 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 400 [1.81ms] +2026-09-09 10:44:21,752 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 422 [0.89ms] +2026-09-09 10:44:21,756 INFO app.crud.validator_config created validator config id=4fee9cd8-e87e-43cc-a884-eadc68cc63c1 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:44:21,757 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.36ms] +2026-09-09 10:44:21,759 INFO app.crud.validator_config created validator config id=66a94170-0f1a-401a-9051-b97ee83e9e66 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:44:21,759 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.01ms] +2026-09-09 10:44:21,761 INFO app.crud.validator_config created validator config id=5453b600-78c6-44dd-87da-1361a11b952d org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:44:21,761 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.08ms] +2026-09-09 10:44:21,763 INFO app.crud.validator_config created validator config id=19909c0a-56a9-4bb3-ad0b-93e5c0dcfe36 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:44:21,764 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.01ms] +2026-09-09 10:44:21,766 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.82ms] +2026-09-09 10:44:21,766 INFO http_request_logger GET /api/v1/guardrails/validators/configs/4fee9cd8-e87e-43cc-a884-eadc68cc63c1/ - 307 [0.10ms] +2026-09-09 10:44:21,768 INFO http_request_logger GET /api/v1/guardrails/validators/configs/4fee9cd8-e87e-43cc-a884-eadc68cc63c1 - 200 [1.45ms] +2026-09-09 10:44:21,768 INFO http_request_logger GET /api/v1/guardrails/validators/configs/66a94170-0f1a-401a-9051-b97ee83e9e66/ - 307 [0.09ms] +2026-09-09 10:44:21,770 INFO http_request_logger GET /api/v1/guardrails/validators/configs/66a94170-0f1a-401a-9051-b97ee83e9e66 - 200 [1.27ms] +2026-09-09 10:44:21,770 INFO http_request_logger GET /api/v1/guardrails/validators/configs/5453b600-78c6-44dd-87da-1361a11b952d/ - 307 [0.08ms] +2026-09-09 10:44:21,772 INFO http_request_logger GET /api/v1/guardrails/validators/configs/5453b600-78c6-44dd-87da-1361a11b952d - 200 [1.33ms] +2026-09-09 10:44:21,772 INFO http_request_logger GET /api/v1/guardrails/validators/configs/19909c0a-56a9-4bb3-ad0b-93e5c0dcfe36/ - 307 [0.08ms] +2026-09-09 10:44:21,774 INFO http_request_logger GET /api/v1/guardrails/validators/configs/19909c0a-56a9-4bb3-ad0b-93e5c0dcfe36 - 200 [1.18ms] +2026-09-09 10:44:21,779 INFO app.crud.validator_config created validator config id=ece63b65-6d59-4b4d-b26d-c4dbb66a7e5c org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:44:21,779 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.36ms] +2026-09-09 10:44:21,781 INFO app.crud.validator_config created validator config id=1ecc65ce-d08c-4a79-b387-35d03400df1c org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:44:21,781 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [1.96ms] +2026-09-09 10:44:21,783 INFO app.crud.validator_config created validator config id=4c0ce2e5-9f79-4350-8d61-9642756763ba org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:44:21,784 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.08ms] +2026-09-09 10:44:21,784 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/ece63b65-6d59-4b4d-b26d-c4dbb66a7e5c/ - 307 [0.08ms] +2026-09-09 10:44:21,787 INFO app.crud.validator_config updated validator config id=ece63b65-6d59-4b4d-b26d-c4dbb66a7e5c +2026-09-09 10:44:21,788 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/ece63b65-6d59-4b4d-b26d-c4dbb66a7e5c - 200 [3.13ms] +2026-09-09 10:44:21,788 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/1ecc65ce-d08c-4a79-b387-35d03400df1c/ - 307 [0.08ms] +2026-09-09 10:44:21,790 INFO app.crud.validator_config updated validator config id=1ecc65ce-d08c-4a79-b387-35d03400df1c +2026-09-09 10:44:21,791 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/1ecc65ce-d08c-4a79-b387-35d03400df1c - 200 [2.43ms] +2026-09-09 10:44:21,791 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/4c0ce2e5-9f79-4350-8d61-9642756763ba/ - 307 [0.09ms] +2026-09-09 10:44:21,793 INFO app.crud.validator_config updated validator config id=4c0ce2e5-9f79-4350-8d61-9642756763ba +2026-09-09 10:44:21,794 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/4c0ce2e5-9f79-4350-8d61-9642756763ba - 200 [2.52ms] +2026-09-09 10:44:21,796 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.44ms] +2026-09-09 10:44:21,802 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.58ms] +2026-09-09 10:44:21,809 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.94ms] +2026-09-09 10:44:21,816 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.82ms] +2026-09-09 10:44:21,821 INFO app.crud.validator_config created validator config id=28fea4c5-252f-4c3a-98a3-bfe1454c64ac org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:44:21,821 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.44ms] +2026-09-09 10:44:21,823 INFO app.crud.validator_config created validator config id=6ac10f07-5a67-447b-9133-3e0edb338457 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:44:21,824 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.08ms] +2026-09-09 10:44:21,826 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.65ms] +2026-09-09 10:44:21,831 INFO app.crud.validator_config created validator config id=b9f0c859-dbce-491a-ba1a-a516b39955e7 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:44:21,832 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.92ms] +2026-09-09 10:44:21,834 INFO app.crud.validator_config created validator config id=89ba2cfa-04b5-489a-ab85-fab2432a289f org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:44:21,834 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.39ms] +2026-09-09 10:44:21,836 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.53ms] +2026-09-09 10:44:21,840 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 422 [0.76ms] +2026-09-09 10:44:21,844 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.48ms] +2026-09-09 10:44:21,850 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.70ms] +2026-09-09 10:44:21,851 INFO http_request_logger GET /api/v1/guardrails/validators/configs/51f2e049-0d2b-4990-b371-6e63d45da458/ - 307 [0.09ms] +2026-09-09 10:44:21,852 INFO http_request_logger GET /api/v1/guardrails/validators/configs/51f2e049-0d2b-4990-b371-6e63d45da458 - 200 [1.23ms] +2026-09-09 10:44:21,855 INFO http_request_logger GET /api/v1/guardrails/validators/configs/8feb9243-a9f6-435d-82f1-93be3e3e3684/ - 307 [0.08ms] +2026-09-09 10:44:21,857 INFO http_request_logger GET /api/v1/guardrails/validators/configs/8feb9243-a9f6-435d-82f1-93be3e3e3684 - 404 [1.33ms] +2026-09-09 10:44:21,860 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid/ - 307 [0.08ms] +2026-09-09 10:44:21,861 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid - 422 [0.68ms] +2026-09-09 10:44:21,865 INFO app.crud.validator_config created validator config id=798fdc31-6b10-4fc6-a396-b2cbb460990e org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:44:21,865 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.35ms] +2026-09-09 10:44:21,866 INFO http_request_logger GET /api/v1/guardrails/validators/configs/798fdc31-6b10-4fc6-a396-b2cbb460990e/ - 307 [0.08ms] +2026-09-09 10:44:21,867 INFO http_request_logger GET /api/v1/guardrails/validators/configs/798fdc31-6b10-4fc6-a396-b2cbb460990e - 404 [1.12ms] +2026-09-09 10:44:21,873 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.62ms] +2026-09-09 10:44:21,873 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/f21300d9-df19-4bd9-8816-46ed5708151c/ - 307 [0.09ms] +2026-09-09 10:44:21,876 INFO app.crud.validator_config updated validator config id=f21300d9-df19-4bd9-8816-46ed5708151c +2026-09-09 10:44:21,876 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/f21300d9-df19-4bd9-8816-46ed5708151c - 200 [2.54ms] +2026-09-09 10:44:21,882 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.65ms] +2026-09-09 10:44:21,883 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/35c2c61e-bb4b-44ae-bf84-e994342202a0/ - 307 [0.08ms] +2026-09-09 10:44:21,885 INFO app.crud.validator_config updated validator config id=35c2c61e-bb4b-44ae-bf84-e994342202a0 +2026-09-09 10:44:21,885 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/35c2c61e-bb4b-44ae-bf84-e994342202a0 - 200 [2.48ms] +2026-09-09 10:44:21,888 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/c0930c27-d0e8-488a-b140-498f8a2d131e/ - 307 [0.08ms] +2026-09-09 10:44:21,890 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/c0930c27-d0e8-488a-b140-498f8a2d131e - 404 [1.47ms] +2026-09-09 10:44:21,896 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.49ms] +2026-09-09 10:44:21,896 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/1eb53441-8b91-4a64-9974-cc50366e81b4/ - 307 [0.08ms] +2026-09-09 10:44:21,898 INFO app.crud.validator_config deleted validator config id=1eb53441-8b91-4a64-9974-cc50366e81b4 +2026-09-09 10:44:21,898 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/1eb53441-8b91-4a64-9974-cc50366e81b4 - 200 [1.66ms] +2026-09-09 10:44:21,898 INFO http_request_logger GET /api/v1/guardrails/validators/configs/1eb53441-8b91-4a64-9974-cc50366e81b4/ - 307 [0.08ms] +2026-09-09 10:44:21,900 INFO http_request_logger GET /api/v1/guardrails/validators/configs/1eb53441-8b91-4a64-9974-cc50366e81b4 - 404 [1.07ms] +2026-09-09 10:44:21,903 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/0166b62d-3bf1-41be-8e18-254e7634aa6e/ - 307 [0.21ms] +2026-09-09 10:44:21,904 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/0166b62d-3bf1-41be-8e18-254e7634aa6e - 404 [1.23ms] +2026-09-09 10:44:21,910 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.88ms] +2026-09-09 10:44:21,911 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/239442ad-e166-481d-b556-f0f8a64800fe/ - 307 [0.08ms] +2026-09-09 10:44:21,912 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/239442ad-e166-481d-b556-f0f8a64800fe - 404 [1.16ms] +2026-09-09 10:44:21,913 INFO http_request_logger GET /api/v1/guardrails/validators/configs/239442ad-e166-481d-b556-f0f8a64800fe/ - 307 [0.08ms] +2026-09-09 10:44:21,914 INFO http_request_logger GET /api/v1/guardrails/validators/configs/239442ad-e166-481d-b556-f0f8a64800fe - 200 [1.28ms] +2026-09-09 10:44:22,006 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-09 10:44:22,006 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-09 10:44:22,068 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:44:23,539 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:44:23,549 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:44:24,874 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:44:24,887 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:44:26,326 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:44:26,338 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:44:27,442 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:44:27,452 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:44:28,488 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:44:28,495 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:44:29,609 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:44:29,611 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:44:30,744 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:44:30,908 INFO watchfiles.main 3 changes detected +2026-09-09 10:45:10,380 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [46.83ms] +2026-09-09 10:45:11,116 INFO presidio-analyzer Created NLP engine: spacy. Loaded models: ['en'] +2026-09-09 10:45:11,118 INFO presidio-analyzer registry not provided, creating default. +2026-09-09 10:45:11,127 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 10:45:11,127 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 10:45:11,127 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 10:45:11,127 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 10:45:11,127 INFO presidio-analyzer Loaded recognizer: UsBankRecognizer +2026-09-09 10:45:11,127 INFO presidio-analyzer Loaded recognizer: UsLicenseRecognizer +2026-09-09 10:45:11,127 INFO presidio-analyzer Loaded recognizer: UsItinRecognizer +2026-09-09 10:45:11,127 INFO presidio-analyzer Loaded recognizer: UsPassportRecognizer +2026-09-09 10:45:11,127 INFO presidio-analyzer Loaded recognizer: UsSsnRecognizer +2026-09-09 10:45:11,128 INFO presidio-analyzer Loaded recognizer: NhsRecognizer +2026-09-09 10:45:11,128 INFO presidio-analyzer Loaded recognizer: EsNifRecognizer +2026-09-09 10:45:11,128 INFO presidio-analyzer Loaded recognizer: EsNieRecognizer +2026-09-09 10:45:11,128 INFO presidio-analyzer Loaded recognizer: ItDriverLicenseRecognizer +2026-09-09 10:45:11,128 INFO presidio-analyzer Loaded recognizer: ItFiscalCodeRecognizer +2026-09-09 10:45:11,128 INFO presidio-analyzer Loaded recognizer: ItVatCodeRecognizer +2026-09-09 10:45:11,128 INFO presidio-analyzer Loaded recognizer: ItIdentityCardRecognizer +2026-09-09 10:45:11,128 INFO presidio-analyzer Loaded recognizer: ItPassportRecognizer +2026-09-09 10:45:11,128 INFO presidio-analyzer Loaded recognizer: PlPeselRecognizer +2026-09-09 10:45:11,128 INFO presidio-analyzer Loaded recognizer: CryptoRecognizer +2026-09-09 10:45:11,128 INFO presidio-analyzer Loaded recognizer: DateRecognizer +2026-09-09 10:45:11,128 INFO presidio-analyzer Loaded recognizer: EmailRecognizer +2026-09-09 10:45:11,128 INFO presidio-analyzer Loaded recognizer: IbanRecognizer +2026-09-09 10:45:11,128 INFO presidio-analyzer Loaded recognizer: IpRecognizer +2026-09-09 10:45:11,128 INFO presidio-analyzer Loaded recognizer: MedicalLicenseRecognizer +2026-09-09 10:45:11,129 INFO presidio-analyzer Loaded recognizer: MacAddressRecognizer +2026-09-09 10:45:11,129 INFO presidio-analyzer Loaded recognizer: PhoneRecognizer +2026-09-09 10:45:11,129 INFO presidio-analyzer Loaded recognizer: UrlRecognizer +2026-09-09 10:45:11,129 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: es, registry supported languages: en +2026-09-09 10:45:11,129 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:45:11,129 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: pl, registry supported languages: en +2026-09-09 10:45:11,129 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - EsNifRecognizer supported languages: es, registry supported languages: en +2026-09-09 10:45:11,129 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - EsNieRecognizer supported languages: es, registry supported languages: en +2026-09-09 10:45:11,129 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItDriverLicenseRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:45:11,129 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItFiscalCodeRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:45:11,129 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItVatCodeRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:45:11,129 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItIdentityCardRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:45:11,129 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItPassportRecognizer supported languages: it, registry supported languages: en +2026-09-09 10:45:11,129 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - PlPeselRecognizer supported languages: pl, registry supported languages: en +2026-09-09 10:45:11,129 INFO presidio-analyzer Loaded recognizer: SpacyRecognizer +2026-09-09 10:45:11,129 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-09 10:45:11,129 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-09 10:45:11,129 INFO presidio-analyzer Loaded recognizer: InPassportRecognizer +2026-09-09 10:45:11,129 INFO presidio-analyzer Loaded recognizer: InVehicleRegistrationRecognizer +2026-09-09 10:45:11,130 INFO presidio-analyzer Loaded recognizer: InVoterRecognizer +2026-09-09 10:45:11,145 INFO guardrails.execution request=76179c97-31ed-40a9-82f7-d54075fa402e starting guardrails execution (validators=['pii_remover']) input='Amit Gupta phone number is 919611188278. He is a doctor' +2026-09-09 10:45:11,162 WARNING presidio-analyzer Entity CARDINAL is not mapped to a Presidio entity, but keeping anyway. Add to `NerModelConfiguration.labels_to_ignore` to remove. +2026-09-09 10:45:11,218 INFO guardrails.execution request=76179c97-31ed-40a9-82f7-d54075fa402e guardrails execution finished (passed=True) output=' phone number is . He is a doctor' +2026-09-09 10:45:11,228 INFO guardrails.execution request=76179c97-31ed-40a9-82f7-d54075fa402e step=1/1 validator=PIIRemover stage=output outcome=Outcome.FAIL start=2026-09-09T10:45:11.146937 end=2026-09-09T10:45:11.217727 duration_ms=70 input='Amit Gupta phone number is 919611188278. He is a doctor' output=' phone number is . He is a doctor' +2026-09-09 10:45:11,236 INFO http_request_logger POST /api/v1/guardrails/ - 200 [841.50ms] +2026-09-09 10:45:15,020 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [8.12ms] +2026-09-09 10:45:15,048 INFO guardrails.execution request=34a48a14-e438-4acb-a75d-339d18900212 starting guardrails execution (validators=['gender_assumption_bias']) input='Understood. How would you like me to help with this information?' +2026-09-09 10:45:15,051 INFO guardrails.execution request=34a48a14-e438-4acb-a75d-339d18900212 guardrails execution finished (passed=True) output='Understood. How would you like me to help with this information?' +2026-09-09 10:45:15,057 INFO guardrails.execution request=34a48a14-e438-4acb-a75d-339d18900212 step=1/1 validator=GenderAssumptionBias stage=output outcome=Outcome.PASS start=2026-09-09T10:45:15.049307 end=2026-09-09T10:45:15.050551 duration_ms=1 input='Understood. How would you like me to help with this information?' output='Understood. How would you like me to help with this information?' +2026-09-09 10:45:15,062 INFO http_request_logger POST /api/v1/guardrails/ - 200 [34.71ms] +2026-09-09 10:46:28,007 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [9.89ms] +2026-09-09 10:46:28,049 INFO guardrails.execution request=9e652a1f-ca41-46eb-b364-8ed1b224e9e3 starting guardrails execution (validators=['pii_remover', 'uli_slur_match']) input='Amit Gupta phone number is 919611188278. He is a doctor. motherfucker' +2026-09-09 10:46:28,060 WARNING presidio-analyzer Entity CARDINAL is not mapped to a Presidio entity, but keeping anyway. Add to `NerModelConfiguration.labels_to_ignore` to remove. +2026-09-09 10:46:28,069 INFO guardrails.execution request=9e652a1f-ca41-46eb-b364-8ed1b224e9e3 guardrails execution finished (passed=True) output=' phone number is . he is a doctor. [REDACTED_SLUR]' +2026-09-09 10:46:28,074 INFO guardrails.execution request=9e652a1f-ca41-46eb-b364-8ed1b224e9e3 step=1/2 validator=PIIRemover stage=output outcome=Outcome.FAIL start=2026-09-09T10:46:28.051229 end=2026-09-09T10:46:28.065369 duration_ms=14 input='Amit Gupta phone number is 919611188278. He is a doctor. motherfucker' output=' phone number is . He is a doctor. motherfucker' +2026-09-09 10:46:28,078 INFO guardrails.execution request=9e652a1f-ca41-46eb-b364-8ed1b224e9e3 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:46:28.065386 end=2026-09-09T10:46:28.067769 duration_ms=2 input=' phone number is . He is a doctor. motherfucker' output=' phone number is . he is a doctor. [REDACTED_SLUR]' +2026-09-09 10:46:28,083 INFO http_request_logger POST /api/v1/guardrails/ - 200 [65.44ms] +2026-09-09 10:46:31,187 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [4.26ms] +2026-09-09 10:46:31,209 INFO guardrails.execution request=abeff211-1ccc-4018-9cbe-3c009d49fd2b starting guardrails execution (validators=['gender_assumption_bias']) input='Please avoid sharing someone’s phone number without consent or using derogatory language. A respectful version is: “/ +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-09 10:56:32,750 INFO http_request_logger POST /api/v1/guardrails/ - 200 [7.75ms] +2026-09-09 10:56:33,434 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-09 10:56:35,333 INFO guardrails.execution request=8e1304f6-15e0-407d-b9ca-2114f5279d46 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-09 10:56:35,445 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 8e1304f6-15e0-407d-b9ca-2114f5279d46: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-09 10:56:35,456 INFO guardrails.execution request=8e1304f6-15e0-407d-b9ca-2114f5279d46 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T10:56:35.336133 end=2026-09-09T10:56:35.445723 duration_ms=109 input='She slowly undressed and they had explicit sex.' output=None +2026-09-09 10:56:35,461 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2706.43ms] +2026-09-09 10:56:37,637 INFO guardrails.execution request=2c584ee7-bf69-40a8-b366-5a729e65097d starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-09 10:56:37,651 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 2c584ee7-bf69-40a8-b366-5a729e65097d: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-09 10:56:37,655 INFO guardrails.execution request=2c584ee7-bf69-40a8-b366-5a729e65097d step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T10:56:37.637839 end=2026-09-09T10:56:37.650811 duration_ms=12 input='She slowly undressed and they had explicit sex.' output=None +2026-09-09 10:56:37,658 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2187.33ms] +2026-09-09 10:56:39,666 INFO guardrails.execution request=8887f52c-a037-46f8-9ac6-979b6eaa3df9 starting guardrails execution (validators=['nsfw_text']) input='Explicit sexual content goes here.' +2026-09-09 10:56:39,696 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 8887f52c-a037-46f8-9ac6-979b6eaa3df9: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +2026-09-09 10:56:39,700 INFO guardrails.execution request=8887f52c-a037-46f8-9ac6-979b6eaa3df9 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T10:56:39.666999 end=2026-09-09T10:56:39.696080 duration_ms=29 input='Explicit sexual content goes here.' output=None +2026-09-09 10:56:39,703 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2039.53ms] +2026-09-09 10:56:39,725 INFO guardrails.execution request=16dfa6ca-2566-4a99-a81e-14e5bdd15450 starting guardrails execution (validators=['profanity_free', 'uli_slur_match']) input='This fucking chakki should leave.' +2026-09-09 10:56:39,729 INFO guardrails.execution request=16dfa6ca-2566-4a99-a81e-14e5bdd15450 guardrails execution finished (passed=True) output='' +2026-09-09 10:56:39,734 INFO guardrails.execution request=16dfa6ca-2566-4a99-a81e-14e5bdd15450 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:56:39.725761 end=2026-09-09T10:56:39.728136 duration_ms=2 input='This fucking chakki should leave.' output='' +2026-09-09 10:56:39,737 INFO guardrails.execution request=16dfa6ca-2566-4a99-a81e-14e5bdd15450 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:56:39.728155 end=2026-09-09T10:56:39.728382 duration_ms=0 input='' output='' +2026-09-09 10:56:39,741 INFO http_request_logger POST /api/v1/guardrails/ - 200 [33.77ms] +2026-09-09 10:56:39,750 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log b1fbad25-866c-47aa-9f89-65a7de79ca0f: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-09 10:56:39,753 INFO http_request_logger POST /api/v1/guardrails/ - 200 [6.80ms] +2026-09-09 10:56:41,724 INFO guardrails.execution request=97981309-4543-44dc-8e54-04c116a8cde0 starting guardrails execution (validators=['profanity_free', 'nsfw_text']) input='What the fuck, this is explicit adult sexual content.' +2026-09-09 10:56:41,726 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 97981309-4543-44dc-8e54-04c116a8cde0: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +2026-09-09 10:56:41,735 INFO guardrails.execution request=97981309-4543-44dc-8e54-04c116a8cde0 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T10:56:41.725037 end=2026-09-09T10:56:41.726173 duration_ms=1 input='What the fuck, this is explicit adult sexual content.' output=None +2026-09-09 10:56:41,739 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1980.96ms] +2026-09-09 10:56:43,861 INFO guardrails.execution request=2f5702af-a919-434d-b356-8efaab4aaf6b starting guardrails execution (validators=['uli_slur_match', 'nsfw_text']) input='This chakki has explicit sexual content.' +2026-09-09 10:56:43,862 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 2f5702af-a919-434d-b356-8efaab4aaf6b: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-09 10:56:43,868 INFO guardrails.execution request=2f5702af-a919-434d-b356-8efaab4aaf6b step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T10:56:43.861854 end=2026-09-09T10:56:43.862339 duration_ms=0 input='This chakki has explicit sexual content.' output=None +2026-09-09 10:56:43,872 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2126.01ms] +2026-09-09 10:56:43,894 INFO guardrails.execution request=5d74f440-5fed-42b0-b90c-e175645720ff starting guardrails execution (validators=['profanity_free', 'ban_list']) input='Tell me about renewable energy sources.' +2026-09-09 10:56:43,896 INFO guardrails.execution request=5d74f440-5fed-42b0-b90c-e175645720ff guardrails execution finished (passed=True) output='Tell me about renewable energy sources.' +2026-09-09 10:56:43,900 INFO guardrails.execution request=5d74f440-5fed-42b0-b90c-e175645720ff step=1/2 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:56:43.894592 end=2026-09-09T10:56:43.895707 duration_ms=1 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-09 10:56:43,902 INFO guardrails.execution request=5d74f440-5fed-42b0-b90c-e175645720ff step=2/2 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:56:43.895713 end=2026-09-09T10:56:43.895851 duration_ms=0 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-09 10:56:43,906 INFO http_request_logger POST /api/v1/guardrails/ - 200 [28.55ms] +2026-09-09 10:56:43,927 INFO guardrails.execution request=8c94a196-718f-4239-871d-ca775d5d94da starting guardrails execution (validators=['uli_slur_match', 'profanity_free', 'ban_list']) input='What are some healthy breakfast options?' +2026-09-09 10:56:43,929 INFO guardrails.execution request=8c94a196-718f-4239-871d-ca775d5d94da guardrails execution finished (passed=True) output='What are some healthy breakfast options?' +2026-09-09 10:56:43,933 INFO guardrails.execution request=8c94a196-718f-4239-871d-ca775d5d94da step=1/3 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:56:43.927795 end=2026-09-09T10:56:43.928102 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 10:56:43,936 INFO guardrails.execution request=8c94a196-718f-4239-871d-ca775d5d94da step=2/3 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T10:56:43.928107 end=2026-09-09T10:56:43.929046 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 10:56:43,938 INFO guardrails.execution request=8c94a196-718f-4239-871d-ca775d5d94da step=3/3 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T10:56:43.929051 end=2026-09-09T10:56:43.929112 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 10:56:43,942 INFO http_request_logger POST /api/v1/guardrails/ - 200 [31.47ms] +2026-09-09 10:56:43,958 INFO guardrails.execution request=b0d906af-2641-4102-9861-db157aebe7e0 starting guardrails execution (validators=['ban_list', 'uli_slur_match']) input='this contains badword' +2026-09-09 10:56:43,959 INFO guardrails.execution request=b0d906af-2641-4102-9861-db157aebe7e0 guardrails execution finished (passed=True) output='this contains b' +2026-09-09 10:56:43,962 INFO guardrails.execution request=b0d906af-2641-4102-9861-db157aebe7e0 step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T10:56:43.958589 end=2026-09-09T10:56:43.958698 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 10:56:43,964 INFO guardrails.execution request=b0d906af-2641-4102-9861-db157aebe7e0 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T10:56:43.958704 end=2026-09-09T10:56:43.958890 duration_ms=0 input='this contains b' output='this contains b' +2026-09-09 10:56:43,968 INFO http_request_logger POST /api/v1/guardrails/ - 200 [21.06ms] +2026-09-09 10:56:43,981 ERROR app.api.routes.guardrails [run_guardrails] config resolution failed for request_log 980a8b3c-10ff-4339-8919-024cec7bd5b4: 404: Ban list not found +2026-09-09 10:56:43,985 INFO http_request_logger POST /api/v1/guardrails/ - 404 [7.50ms] +2026-09-09 10:56:43,993 INFO guardrails.execution request=3fa7107e-f1eb-4cc7-8da9-931bf648d88a starting guardrails execution (validators=['ban_list']) input='hello' +2026-09-09 10:56:43,993 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 3fa7107e-f1eb-4cc7-8da9-931bf648d88a: boom +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +RuntimeError: boom +2026-09-09 10:56:43,996 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.55ms] +2026-09-09 10:56:44,002 WARNING app.api.routes.guardrails [run_guardrails] invalid request_id 'not-a-uuid' (org=1 project=1), no request log written +2026-09-09 10:56:44,002 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1.12ms] +2026-09-09 10:56:44,014 INFO app.crud.llm_prompt_config created llm prompt config id=e6d080e9-0bc0-4f1d-bdeb-90af7d01dbec org=1 project=1 +2026-09-09 10:56:44,016 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [10.00ms] +2026-09-09 10:56:44,021 INFO app.crud.llm_prompt_config created llm prompt config id=7b6ecca5-b612-4b82-bc00-a28a9ecb39bb org=1 project=1 +2026-09-09 10:56:44,022 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.85ms] +2026-09-09 10:56:44,028 INFO app.crud.llm_prompt_config created llm prompt config id=f93441d1-fbf8-4dc7-90fb-2d96a5b92c6a org=1 project=1 +2026-09-09 10:56:44,029 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.77ms] +2026-09-09 10:56:44,034 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [1.02ms] +2026-09-09 10:56:44,040 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [1.00ms] +2026-09-09 10:56:44,045 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [1.41ms] +2026-09-09 10:56:44,049 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.82ms] +2026-09-09 10:56:44,057 INFO app.crud.llm_prompt_config created llm prompt config id=79111d3d-296e-4077-853a-e938e0b45095 org=1 project=1 +2026-09-09 10:56:44,058 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [5.70ms] +2026-09-09 10:56:44,062 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.82ms] +2026-09-09 10:56:44,066 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.86ms] +2026-09-09 10:56:44,071 INFO app.crud.llm_prompt_config created llm prompt config id=e1d69e98-e91a-442e-9b9d-1acf58a277fe org=1 project=1 +2026-09-09 10:56:44,071 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.58ms] +2026-09-09 10:56:44,075 INFO app.crud.llm_prompt_config created llm prompt config id=44290cd8-e9c2-4582-83b4-ad8fc648a0ef org=1 project=1 +2026-09-09 10:56:44,076 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.17ms] +2026-09-09 10:56:44,080 INFO app.crud.llm_prompt_config created llm prompt config id=1569a1b0-dc4a-4050-a2fc-bfc888a78e3a org=1 project=1 +2026-09-09 10:56:44,080 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.86ms] +2026-09-09 10:56:44,083 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.61ms] +2026-09-09 10:56:44,090 INFO app.crud.llm_prompt_config created llm prompt config id=9f3a1d34-8d4c-4133-b542-472718f6f327 org=1 project=1 +2026-09-09 10:56:44,091 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.58ms] +2026-09-09 10:56:44,094 INFO app.crud.llm_prompt_config created llm prompt config id=332fbaf7-5ebe-474f-b4ef-5340c97f5ab5 org=1 project=1 +2026-09-09 10:56:44,095 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.31ms] +2026-09-09 10:56:44,098 INFO app.crud.llm_prompt_config created llm prompt config id=1de8c9eb-9f50-468c-b873-ec44ac58f61c org=1 project=1 +2026-09-09 10:56:44,098 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.41ms] +2026-09-09 10:56:44,101 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.62ms] +2026-09-09 10:56:44,108 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.14ms] +2026-09-09 10:56:44,114 INFO app.crud.llm_prompt_config created llm prompt config id=bb14e174-8350-4087-ae72-c6f2b7bd0f12 org=1 project=1 +2026-09-09 10:56:44,115 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.61ms] +2026-09-09 10:56:44,118 INFO app.crud.llm_prompt_config created llm prompt config id=6bbc2ee0-0801-4d03-9fbe-18d94fcc5589 org=1 project=1 +2026-09-09 10:56:44,118 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.00ms] +2026-09-09 10:56:44,121 INFO app.crud.llm_prompt_config created llm prompt config id=9185b70e-e260-4d1a-b7b8-2e7a70a95dab org=1 project=1 +2026-09-09 10:56:44,122 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.85ms] +2026-09-09 10:56:44,124 INFO app.crud.llm_prompt_config created llm prompt config id=68077470-03b2-415e-b545-c38d54eb4d03 org=1 project=1 +2026-09-09 10:56:44,125 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.99ms] +2026-09-09 10:56:44,127 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.22ms] +2026-09-09 10:56:44,134 INFO app.crud.llm_prompt_config created llm prompt config id=4aec778c-bec5-4e55-957b-dbb926eb968f org=1 project=1 +2026-09-09 10:56:44,135 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.36ms] +2026-09-09 10:56:44,137 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.71ms] +2026-09-09 10:56:44,144 INFO app.crud.llm_prompt_config created llm prompt config id=84b5186a-5f5c-4d47-bdb1-2d91f66fdace org=1 project=1 +2026-09-09 10:56:44,145 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.40ms] +2026-09-09 10:56:44,147 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/84b5186a-5f5c-4d47-bdb1-2d91f66fdace - 200 [2.05ms] +2026-09-09 10:56:44,154 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/8c992950-ec33-4fe7-bfa2-2525f9422bfa - 404 [2.32ms] +2026-09-09 10:56:44,160 INFO app.crud.llm_prompt_config created llm prompt config id=431ff92b-fd4e-4e48-9d5a-c0ea9b816ae2 org=1 project=1 +2026-09-09 10:56:44,161 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.50ms] +2026-09-09 10:56:44,163 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/431ff92b-fd4e-4e48-9d5a-c0ea9b816ae2 - 404 [1.69ms] +2026-09-09 10:56:44,170 INFO app.crud.llm_prompt_config created llm prompt config id=8e08a08a-592b-4e63-99b9-e7e591dd55a7 org=1 project=1 +2026-09-09 10:56:44,170 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.31ms] +2026-09-09 10:56:44,175 INFO app.crud.llm_prompt_config updated llm prompt config id=8e08a08a-592b-4e63-99b9-e7e591dd55a7 +2026-09-09 10:56:44,175 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/8e08a08a-592b-4e63-99b9-e7e591dd55a7 - 200 [4.83ms] +2026-09-09 10:56:44,182 INFO app.crud.llm_prompt_config created llm prompt config id=4ae0676e-20d6-4c1f-a603-ca5baafb5c6b org=1 project=1 +2026-09-09 10:56:44,183 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.54ms] +2026-09-09 10:56:44,187 INFO app.crud.llm_prompt_config updated llm prompt config id=4ae0676e-20d6-4c1f-a603-ca5baafb5c6b +2026-09-09 10:56:44,187 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/4ae0676e-20d6-4c1f-a603-ca5baafb5c6b - 200 [4.00ms] +2026-09-09 10:56:44,194 INFO app.crud.llm_prompt_config created llm prompt config id=76a311d3-72f7-4ccb-816f-fe470dc4387f org=1 project=1 +2026-09-09 10:56:44,195 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.31ms] +2026-09-09 10:56:44,198 INFO app.crud.llm_prompt_config updated llm prompt config id=76a311d3-72f7-4ccb-816f-fe470dc4387f +2026-09-09 10:56:44,198 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/76a311d3-72f7-4ccb-816f-fe470dc4387f - 200 [3.02ms] +2026-09-09 10:56:44,200 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/76a311d3-72f7-4ccb-816f-fe470dc4387f - 200 [1.76ms] +2026-09-09 10:56:44,207 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/9efee351-1c30-477b-beb8-d3ea6f191042 - 404 [1.79ms] +2026-09-09 10:56:44,212 INFO app.crud.llm_prompt_config created llm prompt config id=a4deb2c3-9308-4325-aab3-49dc9e9c620e org=1 project=1 +2026-09-09 10:56:44,213 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.86ms] +2026-09-09 10:56:44,215 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/a4deb2c3-9308-4325-aab3-49dc9e9c620e - 404 [1.54ms] +2026-09-09 10:56:44,221 INFO app.crud.llm_prompt_config created llm prompt config id=6d776329-96da-400d-91d0-969eeb9cbb59 org=1 project=1 +2026-09-09 10:56:44,221 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.47ms] +2026-09-09 10:56:44,224 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/6d776329-96da-400d-91d0-969eeb9cbb59 - 422 [2.67ms] +2026-09-09 10:56:44,231 INFO app.crud.llm_prompt_config created llm prompt config id=cfc21842-77fc-4d71-a812-eca177f5fbb9 org=1 project=1 +2026-09-09 10:56:44,232 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.97ms] +2026-09-09 10:56:44,233 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/cfc21842-77fc-4d71-a812-eca177f5fbb9 - 422 [1.44ms] +2026-09-09 10:56:44,240 INFO app.crud.llm_prompt_config created llm prompt config id=5b82e5a8-33cb-49e5-ba33-090265af3bd4 org=1 project=1 +2026-09-09 10:56:44,240 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.51ms] +2026-09-09 10:56:44,243 INFO app.crud.llm_prompt_config updated llm prompt config id=5b82e5a8-33cb-49e5-ba33-090265af3bd4 +2026-09-09 10:56:44,243 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/5b82e5a8-33cb-49e5-ba33-090265af3bd4 - 200 [2.75ms] +2026-09-09 10:56:44,248 INFO app.crud.llm_prompt_config created llm prompt config id=6e832dd7-a2fa-4273-b5a9-0754a080b1c6 org=1 project=1 +2026-09-09 10:56:44,248 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.50ms] +2026-09-09 10:56:44,251 INFO app.crud.llm_prompt_config updated llm prompt config id=6e832dd7-a2fa-4273-b5a9-0754a080b1c6 +2026-09-09 10:56:44,251 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/6e832dd7-a2fa-4273-b5a9-0754a080b1c6 - 200 [2.57ms] +2026-09-09 10:56:44,256 INFO app.crud.llm_prompt_config created llm prompt config id=5ceb10bd-8c6c-47c8-970a-5319552a290d org=1 project=1 +2026-09-09 10:56:44,257 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.45ms] +2026-09-09 10:56:44,260 INFO app.crud.llm_prompt_config deleted llm prompt config id=5ceb10bd-8c6c-47c8-970a-5319552a290d +2026-09-09 10:56:44,261 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/5ceb10bd-8c6c-47c8-970a-5319552a290d - 200 [3.79ms] +2026-09-09 10:56:44,268 INFO app.crud.llm_prompt_config created llm prompt config id=4579c145-dc78-4402-9065-81f4c96680e1 org=1 project=1 +2026-09-09 10:56:44,269 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.14ms] +2026-09-09 10:56:44,271 INFO app.crud.llm_prompt_config deleted llm prompt config id=4579c145-dc78-4402-9065-81f4c96680e1 +2026-09-09 10:56:44,271 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/4579c145-dc78-4402-9065-81f4c96680e1 - 200 [1.95ms] +2026-09-09 10:56:44,273 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.44ms] +2026-09-09 10:56:44,277 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/da434623-053b-4359-a427-fd0c9190fe42 - 404 [1.48ms] +2026-09-09 10:56:44,285 INFO app.crud.llm_prompt_config created llm prompt config id=1c835c16-5186-4353-847e-f70afea9b150 org=1 project=1 +2026-09-09 10:56:44,285 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.09ms] +2026-09-09 10:56:44,287 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/1c835c16-5186-4353-847e-f70afea9b150 - 404 [1.49ms] +2026-09-09 10:56:44,373 INFO guardrails.execution request=d1a9976a-21e9-4018-80dc-07bb772a1e6f starting guardrails execution (validators=[]) input='hello' +2026-09-09 10:56:44,373 INFO guardrails.execution request=d1a9976a-21e9-4018-80dc-07bb772a1e6f guardrails execution finished (passed=True) output='clean text' +2026-09-09 10:56:44,375 INFO guardrails.execution request=d1a9976a-21e9-4018-80dc-07bb772a1e6f starting guardrails execution (validators=[]) input='bad text' +2026-09-09 10:56:44,375 INFO guardrails.execution request=d1a9976a-21e9-4018-80dc-07bb772a1e6f guardrails execution finished (passed=False) output=None +2026-09-09 10:56:44,377 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log d1a9976a-21e9-4018-80dc-07bb772a1e6f: Invalid config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid config +2026-09-09 10:56:44,379 INFO guardrails.execution request=d1a9976a-21e9-4018-80dc-07bb772a1e6f starting guardrails execution (validators=[]) input='bad text' +2026-09-09 10:56:44,379 INFO guardrails.execution request=d1a9976a-21e9-4018-80dc-07bb772a1e6f guardrails execution finished (passed=False) output=None +2026-09-09 10:56:44,381 INFO guardrails.execution request=d1a9976a-21e9-4018-80dc-07bb772a1e6f starting guardrails execution (validators=[]) input='bad text' +2026-09-09 10:56:44,381 INFO guardrails.execution request=d1a9976a-21e9-4018-80dc-07bb772a1e6f guardrails execution finished (passed=False) output=None +2026-09-09 10:56:44,403 INFO guardrails.execution request=d1a9976a-21e9-4018-80dc-07bb772a1e6f starting guardrails execution (validators=[]) input='this is some unsafe content' +2026-09-09 10:56:44,403 INFO guardrails.execution request=d1a9976a-21e9-4018-80dc-07bb772a1e6f guardrails execution finished (passed=False) output=None +2026-09-09 10:56:44,407 INFO guardrails.execution request=d1a9976a-21e9-4018-80dc-07bb772a1e6f starting guardrails execution (validators=[]) input='some input text' +2026-09-09 10:56:44,407 INFO guardrails.execution request=d1a9976a-21e9-4018-80dc-07bb772a1e6f guardrails execution finished (passed=False) output=None +2026-09-09 10:56:44,410 INFO guardrails.execution request=d1a9976a-21e9-4018-80dc-07bb772a1e6f starting guardrails execution (validators=[]) input='this contains profane words' +2026-09-09 10:56:44,410 INFO guardrails.execution request=d1a9976a-21e9-4018-80dc-07bb772a1e6f guardrails execution finished (passed=False) output=None +2026-09-09 10:56:44,413 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log d1a9976a-21e9-4018-80dc-07bb772a1e6f: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +2026-09-09 10:56:44,416 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log d1a9976a-21e9-4018-80dc-07bb772a1e6f: Validation failed for field with errors: Profanity detected in: this contains profane words +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: Profanity detected in: this contains profane words +2026-09-09 10:56:44,433 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 10:56:44,436 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 10:56:44,438 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 10:56:44,449 INFO app.crud.validator_config created validator config id=f5f0cdec-2c1c-4a5c-ac35-fe679790f260 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:56:44,450 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [5.03ms] +2026-09-09 10:56:44,455 INFO app.crud.validator_config created validator config id=f4d395a4-9c57-4f7f-8342-03151e004046 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:56:44,456 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.66ms] +2026-09-09 10:56:44,458 WARNING app.crud.validator_config create validator config failed: duplicate name (org=1 project=1) +2026-09-09 10:56:44,458 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 400 [1.87ms] +2026-09-09 10:56:44,462 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 422 [1.42ms] +2026-09-09 10:56:44,467 INFO app.crud.validator_config created validator config id=0506dff6-1bb9-4a02-9645-d6bae5b48fbc org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:56:44,467 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.52ms] +2026-09-09 10:56:44,469 INFO app.crud.validator_config created validator config id=c92c8d9e-f1c2-475d-927b-dbc779c24913 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:56:44,470 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.11ms] +2026-09-09 10:56:44,472 INFO app.crud.validator_config created validator config id=e203ebc1-db87-4213-b5c2-db7ac505f79c org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:56:44,472 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.21ms] +2026-09-09 10:56:44,475 INFO app.crud.validator_config created validator config id=627720c5-0695-45d4-84fc-00cc67751c21 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:56:44,475 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.70ms] +2026-09-09 10:56:44,478 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.23ms] +2026-09-09 10:56:44,478 INFO http_request_logger GET /api/v1/guardrails/validators/configs/0506dff6-1bb9-4a02-9645-d6bae5b48fbc/ - 307 [0.10ms] +2026-09-09 10:56:44,480 INFO http_request_logger GET /api/v1/guardrails/validators/configs/0506dff6-1bb9-4a02-9645-d6bae5b48fbc - 200 [1.71ms] +2026-09-09 10:56:44,481 INFO http_request_logger GET /api/v1/guardrails/validators/configs/c92c8d9e-f1c2-475d-927b-dbc779c24913/ - 307 [0.08ms] +2026-09-09 10:56:44,483 INFO http_request_logger GET /api/v1/guardrails/validators/configs/c92c8d9e-f1c2-475d-927b-dbc779c24913 - 200 [1.60ms] +2026-09-09 10:56:44,483 INFO http_request_logger GET /api/v1/guardrails/validators/configs/e203ebc1-db87-4213-b5c2-db7ac505f79c/ - 307 [0.08ms] +2026-09-09 10:56:44,485 INFO http_request_logger GET /api/v1/guardrails/validators/configs/e203ebc1-db87-4213-b5c2-db7ac505f79c - 200 [1.58ms] +2026-09-09 10:56:44,485 INFO http_request_logger GET /api/v1/guardrails/validators/configs/627720c5-0695-45d4-84fc-00cc67751c21/ - 307 [0.08ms] +2026-09-09 10:56:44,487 INFO http_request_logger GET /api/v1/guardrails/validators/configs/627720c5-0695-45d4-84fc-00cc67751c21 - 200 [1.61ms] +2026-09-09 10:56:44,494 INFO app.crud.validator_config created validator config id=6e958308-27b1-44e3-bf49-824838759e2d org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:56:44,495 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.30ms] +2026-09-09 10:56:44,498 INFO app.crud.validator_config created validator config id=f6d0646a-6856-48d9-8d3f-fc202dfbd007 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:56:44,498 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.01ms] +2026-09-09 10:56:44,501 INFO app.crud.validator_config created validator config id=0512a132-10a8-4af5-afc9-e8846c0b71f8 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:56:44,501 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.94ms] +2026-09-09 10:56:44,502 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/6e958308-27b1-44e3-bf49-824838759e2d/ - 307 [0.08ms] +2026-09-09 10:56:44,506 INFO app.crud.validator_config updated validator config id=6e958308-27b1-44e3-bf49-824838759e2d +2026-09-09 10:56:44,506 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/6e958308-27b1-44e3-bf49-824838759e2d - 200 [3.98ms] +2026-09-09 10:56:44,506 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/f6d0646a-6856-48d9-8d3f-fc202dfbd007/ - 307 [0.09ms] +2026-09-09 10:56:44,509 INFO app.crud.validator_config updated validator config id=f6d0646a-6856-48d9-8d3f-fc202dfbd007 +2026-09-09 10:56:44,510 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/f6d0646a-6856-48d9-8d3f-fc202dfbd007 - 200 [3.28ms] +2026-09-09 10:56:44,510 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/0512a132-10a8-4af5-afc9-e8846c0b71f8/ - 307 [0.09ms] +2026-09-09 10:56:44,514 INFO app.crud.validator_config updated validator config id=0512a132-10a8-4af5-afc9-e8846c0b71f8 +2026-09-09 10:56:44,514 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/0512a132-10a8-4af5-afc9-e8846c0b71f8 - 200 [3.69ms] +2026-09-09 10:56:44,516 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.76ms] +2026-09-09 10:56:44,525 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.91ms] +2026-09-09 10:56:44,534 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.77ms] +2026-09-09 10:56:44,544 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.83ms] +2026-09-09 10:56:44,553 INFO app.crud.validator_config created validator config id=fe2ee384-aa8b-4328-92cb-e540c4c10af1 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:56:44,553 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [4.28ms] +2026-09-09 10:56:44,557 INFO app.crud.validator_config created validator config id=96c925ef-1561-466c-a646-69ec0383e5d9 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:56:44,557 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.58ms] +2026-09-09 10:56:44,560 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.44ms] +2026-09-09 10:56:44,568 INFO app.crud.validator_config created validator config id=b29c6ab0-11c4-49c3-954a-877e7c72b88d org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 10:56:44,569 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.79ms] +2026-09-09 10:56:44,572 INFO app.crud.validator_config created validator config id=03045a2f-54bb-4eae-a7ea-7342a5a36b3c org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 10:56:44,572 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.38ms] +2026-09-09 10:56:44,575 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.00ms] +2026-09-09 10:56:44,580 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 422 [1.19ms] +2026-09-09 10:56:44,586 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.09ms] +2026-09-09 10:56:44,594 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.13ms] +2026-09-09 10:56:44,594 INFO http_request_logger GET /api/v1/guardrails/validators/configs/caae064f-5ed1-492a-916e-2c9469665db8/ - 307 [0.10ms] +2026-09-09 10:56:44,596 INFO http_request_logger GET /api/v1/guardrails/validators/configs/caae064f-5ed1-492a-916e-2c9469665db8 - 200 [1.76ms] +2026-09-09 10:56:44,600 INFO http_request_logger GET /api/v1/guardrails/validators/configs/1dfc1a2b-22f1-4aac-97ab-5c4c64e8f392/ - 307 [0.09ms] +2026-09-09 10:56:44,603 INFO http_request_logger GET /api/v1/guardrails/validators/configs/1dfc1a2b-22f1-4aac-97ab-5c4c64e8f392 - 404 [1.94ms] +2026-09-09 10:56:44,606 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid/ - 307 [0.09ms] +2026-09-09 10:56:44,607 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid - 422 [0.71ms] +2026-09-09 10:56:44,615 INFO app.crud.validator_config created validator config id=30cc570f-9af2-4843-aa78-3fbdfa134d9a org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 10:56:44,615 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [4.15ms] +2026-09-09 10:56:44,616 INFO http_request_logger GET /api/v1/guardrails/validators/configs/30cc570f-9af2-4843-aa78-3fbdfa134d9a/ - 307 [0.10ms] +2026-09-09 10:56:44,618 INFO http_request_logger GET /api/v1/guardrails/validators/configs/30cc570f-9af2-4843-aa78-3fbdfa134d9a - 404 [1.75ms] +2026-09-09 10:56:44,627 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.23ms] +2026-09-09 10:56:44,627 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/16a40a2a-0d76-453d-8dd7-b5335cf83f44/ - 307 [0.09ms] +2026-09-09 10:56:44,631 INFO app.crud.validator_config updated validator config id=16a40a2a-0d76-453d-8dd7-b5335cf83f44 +2026-09-09 10:56:44,632 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/16a40a2a-0d76-453d-8dd7-b5335cf83f44 - 200 [4.16ms] +2026-09-09 10:56:44,642 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.32ms] +2026-09-09 10:56:44,642 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/f06a617a-7cd7-4877-8aee-8f6d02438933/ - 307 [0.09ms] +2026-09-09 10:56:44,646 INFO app.crud.validator_config updated validator config id=f06a617a-7cd7-4877-8aee-8f6d02438933 +2026-09-09 10:56:44,647 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/f06a617a-7cd7-4877-8aee-8f6d02438933 - 200 [4.19ms] +2026-09-09 10:56:44,651 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/d0bcab61-4016-4fba-9dd0-b51adb1cfd26/ - 307 [0.10ms] +2026-09-09 10:56:44,653 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/d0bcab61-4016-4fba-9dd0-b51adb1cfd26 - 404 [1.92ms] +2026-09-09 10:56:44,662 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.06ms] +2026-09-09 10:56:44,662 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/1f410a94-2077-49df-a1c0-8faba4e9ab0e/ - 307 [0.09ms] +2026-09-09 10:56:44,665 INFO app.crud.validator_config deleted validator config id=1f410a94-2077-49df-a1c0-8faba4e9ab0e +2026-09-09 10:56:44,665 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/1f410a94-2077-49df-a1c0-8faba4e9ab0e - 200 [2.77ms] +2026-09-09 10:56:44,666 INFO http_request_logger GET /api/v1/guardrails/validators/configs/1f410a94-2077-49df-a1c0-8faba4e9ab0e/ - 307 [0.10ms] +2026-09-09 10:56:44,668 INFO http_request_logger GET /api/v1/guardrails/validators/configs/1f410a94-2077-49df-a1c0-8faba4e9ab0e - 404 [1.56ms] +2026-09-09 10:56:44,672 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/f4a18433-2636-48dd-88d4-fc31789f02cf/ - 307 [0.23ms] +2026-09-09 10:56:44,674 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/f4a18433-2636-48dd-88d4-fc31789f02cf - 404 [1.50ms] +2026-09-09 10:56:44,682 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.18ms] +2026-09-09 10:56:44,683 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/62dec555-3a90-43b2-aa40-205a591ace8f/ - 307 [0.09ms] +2026-09-09 10:56:44,685 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/62dec555-3a90-43b2-aa40-205a591ace8f - 404 [1.61ms] +2026-09-09 10:56:44,685 INFO http_request_logger GET /api/v1/guardrails/validators/configs/62dec555-3a90-43b2-aa40-205a591ace8f/ - 307 [0.09ms] +2026-09-09 10:56:44,687 INFO http_request_logger GET /api/v1/guardrails/validators/configs/62dec555-3a90-43b2-aa40-205a591ace8f - 200 [1.89ms] +2026-09-09 10:56:44,807 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-09 10:56:44,808 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-09 10:56:44,876 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:56:46,162 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:56:46,173 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:56:47,714 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:56:47,724 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:56:48,790 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:56:48,797 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:56:49,969 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:56:49,978 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:56:51,424 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:56:51,437 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:56:52,438 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:56:52,440 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 10:56:53,745 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 10:56:53,896 INFO watchfiles.main 3 changes detected +2026-09-09 11:03:03,720 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [52.39ms] +2026-09-09 11:03:04,440 INFO presidio-analyzer Created NLP engine: spacy. Loaded models: ['en'] +2026-09-09 11:03:04,440 INFO presidio-analyzer registry not provided, creating default. +2026-09-09 11:03:04,447 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 11:03:04,447 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 11:03:04,447 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 11:03:04,448 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 11:03:04,448 INFO presidio-analyzer Loaded recognizer: UsBankRecognizer +2026-09-09 11:03:04,448 INFO presidio-analyzer Loaded recognizer: UsLicenseRecognizer +2026-09-09 11:03:04,448 INFO presidio-analyzer Loaded recognizer: UsItinRecognizer +2026-09-09 11:03:04,448 INFO presidio-analyzer Loaded recognizer: UsPassportRecognizer +2026-09-09 11:03:04,448 INFO presidio-analyzer Loaded recognizer: UsSsnRecognizer +2026-09-09 11:03:04,448 INFO presidio-analyzer Loaded recognizer: NhsRecognizer +2026-09-09 11:03:04,448 INFO presidio-analyzer Loaded recognizer: EsNifRecognizer +2026-09-09 11:03:04,448 INFO presidio-analyzer Loaded recognizer: EsNieRecognizer +2026-09-09 11:03:04,448 INFO presidio-analyzer Loaded recognizer: ItDriverLicenseRecognizer +2026-09-09 11:03:04,448 INFO presidio-analyzer Loaded recognizer: ItFiscalCodeRecognizer +2026-09-09 11:03:04,449 INFO presidio-analyzer Loaded recognizer: ItVatCodeRecognizer +2026-09-09 11:03:04,449 INFO presidio-analyzer Loaded recognizer: ItIdentityCardRecognizer +2026-09-09 11:03:04,449 INFO presidio-analyzer Loaded recognizer: ItPassportRecognizer +2026-09-09 11:03:04,449 INFO presidio-analyzer Loaded recognizer: PlPeselRecognizer +2026-09-09 11:03:04,449 INFO presidio-analyzer Loaded recognizer: CryptoRecognizer +2026-09-09 11:03:04,449 INFO presidio-analyzer Loaded recognizer: DateRecognizer +2026-09-09 11:03:04,449 INFO presidio-analyzer Loaded recognizer: EmailRecognizer +2026-09-09 11:03:04,449 INFO presidio-analyzer Loaded recognizer: IbanRecognizer +2026-09-09 11:03:04,449 INFO presidio-analyzer Loaded recognizer: IpRecognizer +2026-09-09 11:03:04,450 INFO presidio-analyzer Loaded recognizer: MedicalLicenseRecognizer +2026-09-09 11:03:04,450 INFO presidio-analyzer Loaded recognizer: MacAddressRecognizer +2026-09-09 11:03:04,450 INFO presidio-analyzer Loaded recognizer: PhoneRecognizer +2026-09-09 11:03:04,450 INFO presidio-analyzer Loaded recognizer: UrlRecognizer +2026-09-09 11:03:04,450 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: es, registry supported languages: en +2026-09-09 11:03:04,450 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: it, registry supported languages: en +2026-09-09 11:03:04,450 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: pl, registry supported languages: en +2026-09-09 11:03:04,450 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - EsNifRecognizer supported languages: es, registry supported languages: en +2026-09-09 11:03:04,450 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - EsNieRecognizer supported languages: es, registry supported languages: en +2026-09-09 11:03:04,450 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItDriverLicenseRecognizer supported languages: it, registry supported languages: en +2026-09-09 11:03:04,450 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItFiscalCodeRecognizer supported languages: it, registry supported languages: en +2026-09-09 11:03:04,450 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItVatCodeRecognizer supported languages: it, registry supported languages: en +2026-09-09 11:03:04,450 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItIdentityCardRecognizer supported languages: it, registry supported languages: en +2026-09-09 11:03:04,450 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItPassportRecognizer supported languages: it, registry supported languages: en +2026-09-09 11:03:04,450 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - PlPeselRecognizer supported languages: pl, registry supported languages: en +2026-09-09 11:03:04,450 INFO presidio-analyzer Loaded recognizer: SpacyRecognizer +2026-09-09 11:03:04,451 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-09 11:03:04,451 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-09 11:03:04,451 INFO presidio-analyzer Loaded recognizer: InPassportRecognizer +2026-09-09 11:03:04,451 INFO presidio-analyzer Loaded recognizer: InVehicleRegistrationRecognizer +2026-09-09 11:03:04,451 INFO presidio-analyzer Loaded recognizer: InVoterRecognizer +2026-09-09 11:03:04,494 INFO guardrails.execution request=dc3e0ffd-0243-4186-8f6f-610291ec1d73 starting guardrails execution (validators=['pii_remover', 'uli_slur_match']) input='Amit Gupta phone number is 919611188278. He is a doctor. motherfucker' +2026-09-09 11:03:04,505 WARNING presidio-analyzer Entity CARDINAL is not mapped to a Presidio entity, but keeping anyway. Add to `NerModelConfiguration.labels_to_ignore` to remove. +2026-09-09 11:03:04,561 INFO guardrails.execution request=dc3e0ffd-0243-4186-8f6f-610291ec1d73 guardrails execution finished (passed=True) output=' phone number is . he is a doctor. [REDACTED_SLUR]' +2026-09-09 11:03:04,570 INFO guardrails.execution request=dc3e0ffd-0243-4186-8f6f-610291ec1d73 step=1/2 validator=PIIRemover stage=output outcome=Outcome.FAIL start=2026-09-09T11:03:04.500179 end=2026-09-09T11:03:04.557982 duration_ms=57 input='Amit Gupta phone number is 919611188278. He is a doctor. motherfucker' output=' phone number is . He is a doctor. motherfucker' +2026-09-09 11:03:04,578 INFO guardrails.execution request=dc3e0ffd-0243-4186-8f6f-610291ec1d73 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:03:04.558015 end=2026-09-09T11:03:04.560527 duration_ms=2 input=' phone number is . He is a doctor. motherfucker' output=' phone number is . he is a doctor. [REDACTED_SLUR]' +2026-09-09 11:03:04,582 INFO http_request_logger POST /api/v1/guardrails/ - 200 [849.92ms] +2026-09-09 11:03:09,242 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [6.85ms] +2026-09-09 11:03:09,270 INFO guardrails.execution request=f0fc2f32-ca1f-4bbc-81f8-475ab7c79233 starting guardrails execution (validators=['gender_assumption_bias', 'answer_relevance_custom_llm']) input='Please avoid sharing private phone numbers or using derogatory language. I can help you write a respectful message about…' +2026-09-09 11:03:09,280 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 11:03:10,423 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 11:03:10,426 INFO guardrails.execution request=f0fc2f32-ca1f-4bbc-81f8-475ab7c79233 guardrails execution finished (passed=True) output='Please avoid sharing private phone numbers or using derogatory language. I can help you write a respectful message about…' +2026-09-09 11:03:10,429 INFO guardrails.execution request=f0fc2f32-ca1f-4bbc-81f8-475ab7c79233 step=1/2 validator=GenderAssumptionBias stage=output outcome=Outcome.PASS start=2026-09-09T11:03:09.271351 end=2026-09-09T11:03:09.272146 duration_ms=0 input='Please avoid sharing private phone numbers or using derogatory language. I can help you write a respectful message about…' output='Please avoid sharing private phone numbers or using derogatory language. I can help you write a respectful message about…' +2026-09-09 11:03:10,432 INFO guardrails.execution request=f0fc2f32-ca1f-4bbc-81f8-475ab7c79233 step=2/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T11:03:09.272152 end=2026-09-09T11:03:10.425327 duration_ms=1153 input='Please avoid sharing private phone numbers or using derogatory language. I can help you write a respectful message about…' output='Please avoid sharing private phone numbers or using derogatory language. I can help you write a respectful message about…' +2026-09-09 11:03:10,436 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1185.68ms] +2026-09-09 11:06:07,907 INFO watchfiles.main 3 changes detected +2026-09-09 11:06:07,911 WARNING uvicorn.error WatchFiles detected changes in 'app/tests/test_guardrails_api_integration.py'. Reloading... +2026-09-09 11:06:07,953 INFO uvicorn.error Shutting down +2026-09-09 11:06:08,058 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:06:08,059 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:06:08,060 INFO uvicorn.error Finished server process [49518] +2026-09-09 11:06:08,482 INFO watchfiles.main 1 change detected +2026-09-09 11:06:12,984 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:06:13,780 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:06:13,781 INFO uvicorn.error Started server process [50297] +2026-09-09 11:06:13,782 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:06:13,782 INFO uvicorn.error Application startup complete. +2026-09-09 11:07:48,583 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:07:49,485 INFO guardrails.execution request=494003a5-6c54-4545-8430-e0c8151188a5 starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-09 11:07:49,487 INFO guardrails.execution request=494003a5-6c54-4545-8430-e0c8151188a5 guardrails execution finished (passed=True) output='this contains b' +2026-09-09 11:07:49,490 INFO guardrails.execution request=494003a5-6c54-4545-8430-e0c8151188a5 step=1/1 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T11:07:49.486224 end=2026-09-09T11:07:49.486377 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 11:07:49,490 INFO watchfiles.main 3 changes detected +2026-09-09 11:07:49,496 INFO http_request_logger POST /api/v1/guardrails/ - 200 [48.26ms] +2026-09-09 11:07:49,516 INFO guardrails.execution request=9ee77b1d-f572-4aeb-b5bd-ee1b21fe6bf7 starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-09 11:07:49,519 INFO guardrails.execution request=9ee77b1d-f572-4aeb-b5bd-ee1b21fe6bf7 guardrails execution finished (passed=True) output='this contains b' +2026-09-09 11:07:49,526 INFO guardrails.execution request=9ee77b1d-f572-4aeb-b5bd-ee1b21fe6bf7 step=1/1 validator=BanList stage=output outcome=Outcome.FAIL start=2026-09-09T11:07:49.517722 end=2026-09-09T11:07:49.517842 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 11:07:49,548 INFO http_request_logger POST /api/v1/guardrails/ - 200 [46.12ms] +2026-09-09 11:07:49,583 INFO guardrails.execution request=37b6a5ef-50f9-4564-b18f-82e62f8c01e1 starting guardrails execution (validators=['ban_list', 'uli_slur_match']) input='this contains badword' +2026-09-09 11:07:49,587 INFO guardrails.execution request=37b6a5ef-50f9-4564-b18f-82e62f8c01e1 guardrails execution finished (passed=True) output='this contains b' +2026-09-09 11:07:49,590 INFO guardrails.execution request=37b6a5ef-50f9-4564-b18f-82e62f8c01e1 step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T11:07:49.584246 end=2026-09-09T11:07:49.584393 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 11:07:49,592 INFO guardrails.execution request=37b6a5ef-50f9-4564-b18f-82e62f8c01e1 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T11:07:49.584401 end=2026-09-09T11:07:49.586493 duration_ms=2 input='this contains b' output='this contains b' +2026-09-09 11:07:49,596 INFO http_request_logger POST /api/v1/guardrails/ - 200 [39.64ms] +2026-09-09 11:07:49,613 INFO guardrails.execution request=4b7346a9-ff29-4efc-96a3-21a6d9a740ed starting guardrails execution (validators=['ban_list']) input='this is clean' +2026-09-09 11:07:49,614 INFO guardrails.execution request=4b7346a9-ff29-4efc-96a3-21a6d9a740ed guardrails execution finished (passed=True) output='this is clean' +2026-09-09 11:07:49,617 INFO guardrails.execution request=4b7346a9-ff29-4efc-96a3-21a6d9a740ed step=1/1 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T11:07:49.613880 end=2026-09-09T11:07:49.613957 duration_ms=0 input='this is clean' output='this is clean' +2026-09-09 11:07:49,621 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.14ms] +2026-09-09 11:07:49,637 INFO guardrails.execution request=fd48af5e-74e6-435d-b7ce-3b1c884b1d60 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 11:07:49,639 INFO guardrails.execution request=fd48af5e-74e6-435d-b7ce-3b1c884b1d60 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR].' +2026-09-09 11:07:49,642 INFO guardrails.execution request=fd48af5e-74e6-435d-b7ce-3b1c884b1d60 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:07:49.638626 end=2026-09-09T11:07:49.638951 duration_ms=0 input='This sentence contains chakki.' output='this sentence contains [REDACTED_SLUR].' +2026-09-09 11:07:49,645 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.08ms] +2026-09-09 11:07:49,663 INFO guardrails.execution request=c7cb932c-8a16-4117-8be2-1e2c21cd1729 starting guardrails execution (validators=['uli_slur_match']) input='This is a completely safe sentence' +2026-09-09 11:07:49,665 INFO guardrails.execution request=c7cb932c-8a16-4117-8be2-1e2c21cd1729 guardrails execution finished (passed=True) output='This is a completely safe sentence' +2026-09-09 11:07:49,667 INFO guardrails.execution request=c7cb932c-8a16-4117-8be2-1e2c21cd1729 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T11:07:49.663848 end=2026-09-09T11:07:49.664177 duration_ms=0 input='This is a completely safe sentence' output='This is a completely safe sentence' +2026-09-09 11:07:49,670 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.22ms] +2026-09-09 11:07:49,685 INFO guardrails.execution request=9744d207-2c53-477a-a54a-014c48213123 starting guardrails execution (validators=['uli_slur_match', 'ban_list']) input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' +2026-09-09 11:07:49,688 INFO guardrails.execution request=9744d207-2c53-477a-a54a-014c48213123 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-09 11:07:49,690 INFO guardrails.execution request=9744d207-2c53-477a-a54a-014c48213123 step=1/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:07:49.687020 end=2026-09-09T11:07:49.687566 duration_ms=0 input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' +2026-09-09 11:07:49,692 INFO guardrails.execution request=9744d207-2c53-477a-a54a-014c48213123 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T11:07:49.687572 end=2026-09-09T11:07:49.687655 duration_ms=0 input='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-09 11:07:49,695 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.53ms] +2026-09-09 11:07:49,700 INFO http_request_logger POST /api/v1/guardrails/ - 422 [1.15ms] +2026-09-09 11:07:49,714 INFO guardrails.execution request=b7ef27ce-9661-4241-b0e7-9b507dfb53bc starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 11:07:49,715 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log b7ef27ce-9661-4241-b0e7-9b507dfb53bc: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-09 11:07:49,719 INFO guardrails.execution request=b7ef27ce-9661-4241-b0e7-9b507dfb53bc step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:07:49.714662 end=2026-09-09T11:07:49.714989 duration_ms=0 input='This sentence contains chakki.' output=None +2026-09-09 11:07:49,721 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.98ms] +2026-09-09 11:07:49,737 INFO guardrails.execution request=966fce89-7d50-4e5f-9316-cc24e94ec711 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 11:07:49,738 INFO guardrails.execution request=966fce89-7d50-4e5f-9316-cc24e94ec711 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-09 11:07:49,741 INFO guardrails.execution request=966fce89-7d50-4e5f-9316-cc24e94ec711 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:07:49.737900 end=2026-09-09T11:07:49.738190 duration_ms=0 input='This sentence contains chakki.' output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-09 11:07:49,745 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.49ms] +2026-09-09 11:07:49,760 INFO guardrails.execution request=c315ab44-eb89-4a8a-a630-06d612998a83 starting guardrails execution (validators=['profanity_free']) input='This is a damn fucking mess.' +2026-09-09 11:07:49,763 INFO guardrails.execution request=c315ab44-eb89-4a8a-a630-06d612998a83 guardrails execution finished (passed=True) output='' +2026-09-09 11:07:49,765 INFO guardrails.execution request=c315ab44-eb89-4a8a-a630-06d612998a83 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:07:49.761228 end=2026-09-09T11:07:49.763028 duration_ms=1 input='This is a damn fucking mess.' output='' +2026-09-09 11:07:49,768 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.35ms] +2026-09-09 11:07:49,782 INFO guardrails.execution request=d6d6eeac-89e4-45da-99ce-a8dfa388a8fb starting guardrails execution (validators=['profanity_free']) input='This is a completely clean sentence.' +2026-09-09 11:07:49,784 INFO guardrails.execution request=d6d6eeac-89e4-45da-99ce-a8dfa388a8fb guardrails execution finished (passed=True) output='This is a completely clean sentence.' +2026-09-09 11:07:49,787 INFO guardrails.execution request=d6d6eeac-89e4-45da-99ce-a8dfa388a8fb step=1/1 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T11:07:49.782502 end=2026-09-09T11:07:49.783484 duration_ms=0 input='This is a completely clean sentence.' output='This is a completely clean sentence.' +2026-09-09 11:07:49,793 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.60ms] +2026-09-09 11:07:49,806 INFO guardrails.execution request=4730685d-966c-4615-918b-70a6876fcfe9 starting guardrails execution (validators=['profanity_free']) input='What the fuck is going on?' +2026-09-09 11:07:49,808 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 4730685d-966c-4615-918b-70a6876fcfe9: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +2026-09-09 11:07:49,811 INFO guardrails.execution request=4730685d-966c-4615-918b-70a6876fcfe9 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:07:49.807180 end=2026-09-09T11:07:49.808173 duration_ms=0 input='What the fuck is going on?' output=None +2026-09-09 11:07:49,813 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.81ms] +2026-09-09 11:07:49,833 INFO guardrails.execution request=1723e060-64a8-4c79-b523-b348399d58ce starting guardrails execution (validators=['profanity_free']) input='This is absolute bullshit.' +2026-09-09 11:07:49,835 INFO guardrails.execution request=1723e060-64a8-4c79-b523-b348399d58ce guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-09 11:07:49,838 INFO guardrails.execution request=1723e060-64a8-4c79-b523-b348399d58ce step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:07:49.833863 end=2026-09-09T11:07:49.834685 duration_ms=0 input='This is absolute bullshit.' output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-09 11:07:49,841 INFO http_request_logger POST /api/v1/guardrails/ - 200 [24.29ms] +2026-09-09 11:07:49,879 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 88829c5b-ed97-480e-9c6c-bc58d6daf0da: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-09 11:07:49,892 INFO http_request_logger POST /api/v1/guardrails/ - 200 [30.93ms] +2026-09-09 11:07:50,555 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-09 11:07:52,409 INFO guardrails.execution request=c429c182-faf0-4ff8-8322-333d6c5ea989 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-09 11:07:52,502 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log c429c182-faf0-4ff8-8322-333d6c5ea989: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-09 11:07:52,510 INFO guardrails.execution request=c429c182-faf0-4ff8-8322-333d6c5ea989 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T11:07:52.410621 end=2026-09-09T11:07:52.502086 duration_ms=91 input='She slowly undressed and they had explicit sex.' output=None +2026-09-09 11:07:52,513 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2609.96ms] +2026-09-09 11:07:54,595 INFO guardrails.execution request=5c4ff2a8-23b3-4a09-ab4b-8427769df880 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-09 11:07:54,610 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 5c4ff2a8-23b3-4a09-ab4b-8427769df880: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-09 11:07:54,619 INFO guardrails.execution request=5c4ff2a8-23b3-4a09-ab4b-8427769df880 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T11:07:54.596371 end=2026-09-09T11:07:54.610503 duration_ms=14 input='She slowly undressed and they had explicit sex.' output=None +2026-09-09 11:07:54,622 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2102.71ms] +2026-09-09 11:07:56,785 INFO guardrails.execution request=738cdb63-a6f1-4b36-932f-b4a07f096b23 starting guardrails execution (validators=['nsfw_text']) input='Explicit sexual content goes here.' +2026-09-09 11:07:56,811 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 738cdb63-a6f1-4b36-932f-b4a07f096b23: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +2026-09-09 11:07:56,817 INFO guardrails.execution request=738cdb63-a6f1-4b36-932f-b4a07f096b23 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T11:07:56.786283 end=2026-09-09T11:07:56.811498 duration_ms=25 input='Explicit sexual content goes here.' output=None +2026-09-09 11:07:56,820 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2193.46ms] +2026-09-09 11:07:56,842 INFO guardrails.execution request=1b2e1485-97c7-4560-b64d-6705e2db16b7 starting guardrails execution (validators=['profanity_free', 'uli_slur_match']) input='This fucking chakki should leave.' +2026-09-09 11:07:56,845 INFO guardrails.execution request=1b2e1485-97c7-4560-b64d-6705e2db16b7 guardrails execution finished (passed=True) output='' +2026-09-09 11:07:56,848 INFO guardrails.execution request=1b2e1485-97c7-4560-b64d-6705e2db16b7 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:07:56.842858 end=2026-09-09T11:07:56.844639 duration_ms=1 input='This fucking chakki should leave.' output='' +2026-09-09 11:07:56,851 INFO guardrails.execution request=1b2e1485-97c7-4560-b64d-6705e2db16b7 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T11:07:56.844657 end=2026-09-09T11:07:56.844860 duration_ms=0 input='' output='' +2026-09-09 11:07:56,855 INFO http_request_logger POST /api/v1/guardrails/ - 200 [29.15ms] +2026-09-09 11:07:56,869 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 6e868bd4-f246-4cd0-ab93-441c5896171a: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-09 11:07:56,872 INFO http_request_logger POST /api/v1/guardrails/ - 200 [11.86ms] +2026-09-09 11:07:58,925 INFO guardrails.execution request=7a80bf4b-2a53-4c98-92f0-8bf1a0b9c318 starting guardrails execution (validators=['profanity_free', 'nsfw_text']) input='What the fuck, this is explicit adult sexual content.' +2026-09-09 11:07:58,927 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 7a80bf4b-2a53-4c98-92f0-8bf1a0b9c318: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +2026-09-09 11:07:58,932 INFO guardrails.execution request=7a80bf4b-2a53-4c98-92f0-8bf1a0b9c318 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:07:58.925709 end=2026-09-09T11:07:58.926945 duration_ms=1 input='What the fuck, this is explicit adult sexual content.' output=None +2026-09-09 11:07:58,935 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2057.21ms] +2026-09-09 11:08:01,163 INFO guardrails.execution request=e429d51b-d858-473d-be72-f90a076168da starting guardrails execution (validators=['uli_slur_match', 'nsfw_text']) input='This chakki has explicit sexual content.' +2026-09-09 11:08:01,165 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log e429d51b-d858-473d-be72-f90a076168da: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-09 11:08:01,170 INFO guardrails.execution request=e429d51b-d858-473d-be72-f90a076168da step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:01.164493 end=2026-09-09T11:08:01.164950 duration_ms=0 input='This chakki has explicit sexual content.' output=None +2026-09-09 11:08:01,173 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2232.21ms] +2026-09-09 11:08:01,190 INFO guardrails.execution request=b45a87a3-039f-40aa-ae85-cfae4ee1833e starting guardrails execution (validators=['profanity_free', 'ban_list']) input='Tell me about renewable energy sources.' +2026-09-09 11:08:01,193 INFO guardrails.execution request=b45a87a3-039f-40aa-ae85-cfae4ee1833e guardrails execution finished (passed=True) output='Tell me about renewable energy sources.' +2026-09-09 11:08:01,196 INFO guardrails.execution request=b45a87a3-039f-40aa-ae85-cfae4ee1833e step=1/2 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T11:08:01.191030 end=2026-09-09T11:08:01.192171 duration_ms=1 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-09 11:08:01,200 INFO guardrails.execution request=b45a87a3-039f-40aa-ae85-cfae4ee1833e step=2/2 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T11:08:01.192178 end=2026-09-09T11:08:01.192277 duration_ms=0 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-09 11:08:01,204 INFO http_request_logger POST /api/v1/guardrails/ - 200 [25.49ms] +2026-09-09 11:08:01,226 INFO guardrails.execution request=bf848b5a-074e-4f0b-b107-2af9978a6b22 starting guardrails execution (validators=['uli_slur_match', 'profanity_free', 'ban_list']) input='What are some healthy breakfast options?' +2026-09-09 11:08:01,229 INFO guardrails.execution request=bf848b5a-074e-4f0b-b107-2af9978a6b22 guardrails execution finished (passed=True) output='What are some healthy breakfast options?' +2026-09-09 11:08:01,233 INFO guardrails.execution request=bf848b5a-074e-4f0b-b107-2af9978a6b22 step=1/3 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T11:08:01.227434 end=2026-09-09T11:08:01.227741 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 11:08:01,236 INFO guardrails.execution request=bf848b5a-074e-4f0b-b107-2af9978a6b22 step=2/3 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T11:08:01.227745 end=2026-09-09T11:08:01.228728 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 11:08:01,238 INFO guardrails.execution request=bf848b5a-074e-4f0b-b107-2af9978a6b22 step=3/3 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T11:08:01.228733 end=2026-09-09T11:08:01.228808 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 11:08:01,242 INFO http_request_logger POST /api/v1/guardrails/ - 200 [31.60ms] +2026-09-09 11:08:01,351 INFO watchfiles.main 3 changes detected +2026-09-09 11:08:22,111 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:08:22,886 INFO guardrails.execution request=d01f6b16-5ef6-4c76-b83c-b3ee56420a2f starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:08:22,888 INFO guardrails.execution request=d01f6b16-5ef6-4c76-b83c-b3ee56420a2f guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:08:22,890 INFO guardrails.execution request=d01f6b16-5ef6-4c76-b83c-b3ee56420a2f step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T11:08:22.887094 end=2026-09-09T11:08:22.887208 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:08:22,895 INFO http_request_logger POST /api/v1/guardrails/ - 200 [32.70ms] +2026-09-09 11:08:22,909 INFO guardrails.execution request=5cf1acf5-c43c-4ea6-87e5-671a2ac39324 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-09 11:08:22,910 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 5cf1acf5-c43c-4ea6-87e5-671a2ac39324: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-09 11:08:22,914 INFO guardrails.execution request=5cf1acf5-c43c-4ea6-87e5-671a2ac39324 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-09T11:08:22.910243 end=2026-09-09T11:08:22.910324 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-09 11:08:22,915 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.98ms] +2026-09-09 11:08:22,929 INFO guardrails.execution request=941765f1-f885-4be4-81d0-6323bfadf7cd starting guardrails execution (validators=['answer_relevance_custom_llm']) input='What are the common symptoms of diabetes?' +2026-09-09 11:08:22,930 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 941765f1-f885-4be4-81d0-6323bfadf7cd: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +2026-09-09 11:08:22,932 INFO guardrails.execution request=941765f1-f885-4be4-81d0-6323bfadf7cd step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-09T11:08:22.930096 end=2026-09-09T11:08:22.930163 duration_ms=0 input='What are the common symptoms of diabetes?' output=None +2026-09-09 11:08:22,934 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.40ms] +2026-09-09 11:08:22,950 INFO guardrails.execution request=c3d9a801-6951-4a6d-aefc-f0ce17a307c4 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:08:22,951 INFO guardrails.execution request=c3d9a801-6951-4a6d-aefc-f0ce17a307c4 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:08:22,953 INFO guardrails.execution request=c3d9a801-6951-4a6d-aefc-f0ce17a307c4 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T11:08:22.950908 end=2026-09-09T11:08:22.950978 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:08:22,956 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.83ms] +2026-09-09 11:08:22,969 INFO guardrails.execution request=e44cc52b-367d-4111-a803-d36959582df5 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-09 11:08:22,970 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log e44cc52b-367d-4111-a803-d36959582df5: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-09 11:08:22,972 INFO guardrails.execution request=e44cc52b-367d-4111-a803-d36959582df5 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-09T11:08:22.970533 end=2026-09-09T11:08:22.970627 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-09 11:08:22,974 INFO http_request_logger POST /api/v1/guardrails/ - 200 [14.30ms] +2026-09-09 11:08:22,989 INFO guardrails.execution request=711212b6-ad91-4153-9d25-7b181f6944d6 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-09 11:08:22,990 INFO guardrails.execution request=711212b6-ad91-4153-9d25-7b181f6944d6 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-09 11:08:22,992 INFO guardrails.execution request=711212b6-ad91-4153-9d25-7b181f6944d6 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T11:08:22.989798 end=2026-09-09T11:08:22.989876 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-09 11:08:22,994 INFO guardrails.execution request=711212b6-ad91-4153-9d25-7b181f6944d6 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:22.989881 end=2026-09-09T11:08:22.989979 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-09 11:08:22,997 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.17ms] +2026-09-09 11:08:23,011 INFO guardrails.execution request=dd1b1fb5-e852-47c1-a90e-49a9cf8ac98f starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Diabetes symptoms include fuck fatigue.' +2026-09-09 11:08:23,015 INFO guardrails.execution request=dd1b1fb5-e852-47c1-a90e-49a9cf8ac98f guardrails execution finished (passed=True) output='' +2026-09-09 11:08:23,016 INFO guardrails.execution request=dd1b1fb5-e852-47c1-a90e-49a9cf8ac98f step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T11:08:23.013219 end=2026-09-09T11:08:23.013292 duration_ms=0 input='Diabetes symptoms include fuck fatigue.' output='Diabetes symptoms include fuck fatigue.' +2026-09-09 11:08:23,018 INFO guardrails.execution request=dd1b1fb5-e852-47c1-a90e-49a9cf8ac98f step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:23.013296 end=2026-09-09T11:08:23.014647 duration_ms=1 input='Diabetes symptoms include fuck fatigue.' output='' +2026-09-09 11:08:23,020 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.74ms] +2026-09-09 11:08:23,042 INFO guardrails.execution request=205e5a0e-fd52-4e56-bb2c-06b669f0a02f starting guardrails execution (validators=['answer_relevance_custom_llm', 'uli_slur_match']) input='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-09 11:08:23,045 INFO guardrails.execution request=205e5a0e-fd52-4e56-bb2c-06b669f0a02f guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-09 11:08:23,051 INFO guardrails.execution request=205e5a0e-fd52-4e56-bb2c-06b669f0a02f step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T11:08:23.042818 end=2026-09-09T11:08:23.042882 duration_ms=0 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-09 11:08:23,053 INFO guardrails.execution request=205e5a0e-fd52-4e56-bb2c-06b669f0a02f step=2/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:23.042886 end=2026-09-09T11:08:23.045092 duration_ms=2 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-09 11:08:23,056 INFO http_request_logger POST /api/v1/guardrails/ - 200 [30.86ms] +2026-09-09 11:08:23,069 INFO guardrails.execution request=6dca3c93-1b4c-4f8d-bf65-32e7e58b2b3b starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-09 11:08:23,070 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 6dca3c93-1b4c-4f8d-bf65-32e7e58b2b3b: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +2026-09-09 11:08:23,072 INFO guardrails.execution request=6dca3c93-1b4c-4f8d-bf65-32e7e58b2b3b step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T11:08:23.069462 end=2026-09-09T11:08:23.069529 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-09 11:08:23,073 INFO guardrails.execution request=6dca3c93-1b4c-4f8d-bf65-32e7e58b2b3b step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:23.069534 end=2026-09-09T11:08:23.070461 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output=None +2026-09-09 11:08:23,076 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.15ms] +2026-09-09 11:08:23,092 INFO guardrails.execution request=31222b13-94a0-49f8-b874-cd91245adefc starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list', 'profanity_free', 'uli_slur_match', 'gender_assumption_bias']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:08:23,095 INFO guardrails.execution request=31222b13-94a0-49f8-b874-cd91245adefc guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:08:23,101 INFO guardrails.execution request=31222b13-94a0-49f8-b874-cd91245adefc step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T11:08:23.092591 end=2026-09-09T11:08:23.092658 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:08:23,104 INFO guardrails.execution request=31222b13-94a0-49f8-b874-cd91245adefc step=2/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T11:08:23.092662 end=2026-09-09T11:08:23.092719 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:08:23,105 INFO guardrails.execution request=31222b13-94a0-49f8-b874-cd91245adefc step=3/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T11:08:23.092722 end=2026-09-09T11:08:23.093605 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:08:23,106 INFO guardrails.execution request=31222b13-94a0-49f8-b874-cd91245adefc step=4/5 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T11:08:23.093610 end=2026-09-09T11:08:23.094167 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:08:23,107 INFO guardrails.execution request=31222b13-94a0-49f8-b874-cd91245adefc step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.PASS start=2026-09-09T11:08:23.094170 end=2026-09-09T11:08:23.094772 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:08:23,110 INFO http_request_logger POST /api/v1/guardrails/ - 200 [29.75ms] +2026-09-09 11:08:23,129 INFO guardrails.execution request=82b1ab65-8dea-452c-acce-b3f409e5eec1 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free', 'uli_slur_match', 'ban_list', 'gender_assumption_bias']) input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-09 11:08:23,132 INFO guardrails.execution request=82b1ab65-8dea-452c-acce-b3f409e5eec1 guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-09 11:08:23,137 INFO guardrails.execution request=82b1ab65-8dea-452c-acce-b3f409e5eec1 step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T11:08:23.129855 end=2026-09-09T11:08:23.129924 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-09 11:08:23,140 INFO guardrails.execution request=82b1ab65-8dea-452c-acce-b3f409e5eec1 step=2/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T11:08:23.129929 end=2026-09-09T11:08:23.130807 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-09 11:08:23,141 INFO guardrails.execution request=82b1ab65-8dea-452c-acce-b3f409e5eec1 step=3/5 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:23.130812 end=2026-09-09T11:08:23.131310 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-09 11:08:23,143 INFO guardrails.execution request=82b1ab65-8dea-452c-acce-b3f409e5eec1 step=4/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T11:08:23.131316 end=2026-09-09T11:08:23.131381 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-09 11:08:23,145 INFO guardrails.execution request=82b1ab65-8dea-452c-acce-b3f409e5eec1 step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:23.131384 end=2026-09-09T11:08:23.131997 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-09 11:08:23,148 INFO http_request_logger POST /api/v1/guardrails/ - 200 [34.21ms] +2026-09-09 11:08:23,168 INFO app.crud.ban_list created ban list id=66d61ba7-8799-4619-b502-bd18586174cf org=1 project=1 +2026-09-09 11:08:23,169 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [7.01ms] +2026-09-09 11:08:23,173 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.82ms] +2026-09-09 11:08:23,176 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.75ms] +2026-09-09 11:08:23,181 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.77ms] +2026-09-09 11:08:23,185 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.70ms] +2026-09-09 11:08:23,189 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.76ms] +2026-09-09 11:08:23,201 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [3.66ms] +2026-09-09 11:08:23,210 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [3.77ms] +2026-09-09 11:08:23,216 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.82ms] +2026-09-09 11:08:23,225 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.39ms] +2026-09-09 11:08:23,234 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.09ms] +2026-09-09 11:08:23,237 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.39ms] +2026-09-09 11:08:23,243 INFO app.crud.ban_list created ban list id=bc119865-2782-4578-b455-6942b9b33729 org=1 project=1 +2026-09-09 11:08:23,243 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [3.14ms] +2026-09-09 11:08:23,244 INFO http_request_logger GET /api/v1/guardrails/ban_lists/bc119865-2782-4578-b455-6942b9b33729/ - 307 [0.10ms] +2026-09-09 11:08:23,246 INFO http_request_logger GET /api/v1/guardrails/ban_lists/bc119865-2782-4578-b455-6942b9b33729 - 200 [2.10ms] +2026-09-09 11:08:23,258 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [3.02ms] +2026-09-09 11:08:23,258 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ab287889-e5fc-49f0-97aa-b3131f1fe32c/ - 307 [0.11ms] +2026-09-09 11:08:23,261 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ab287889-e5fc-49f0-97aa-b3131f1fe32c - 200 [2.58ms] +2026-09-09 11:08:23,267 INFO http_request_logger GET /api/v1/guardrails/ban_lists/fa34a4e5-35b8-417e-90bf-0ae99eb0e6c9/ - 307 [0.10ms] +2026-09-09 11:08:23,269 INFO http_request_logger GET /api/v1/guardrails/ban_lists/fa34a4e5-35b8-417e-90bf-0ae99eb0e6c9 - 404 [2.33ms] +2026-09-09 11:08:23,278 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.42ms] +2026-09-09 11:08:23,279 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ed579965-262f-4be7-96e7-4076a90ec32b/ - 307 [0.09ms] +2026-09-09 11:08:23,281 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ed579965-262f-4be7-96e7-4076a90ec32b - 403 [1.68ms] +2026-09-09 11:08:23,290 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.18ms] +2026-09-09 11:08:23,290 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/24fa26f5-9ded-4cfa-a961-c1aeeebff8b6/ - 307 [0.08ms] +2026-09-09 11:08:23,295 INFO app.crud.ban_list updated ban list id=24fa26f5-9ded-4cfa-a961-c1aeeebff8b6 +2026-09-09 11:08:23,296 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/24fa26f5-9ded-4cfa-a961-c1aeeebff8b6 - 200 [5.11ms] +2026-09-09 11:08:23,306 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.51ms] +2026-09-09 11:08:23,307 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/06bccb28-dfee-44f6-ad77-827c33b4fb65/ - 307 [0.09ms] +2026-09-09 11:08:23,311 INFO app.crud.ban_list updated ban list id=06bccb28-dfee-44f6-ad77-827c33b4fb65 +2026-09-09 11:08:23,312 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/06bccb28-dfee-44f6-ad77-827c33b4fb65 - 200 [5.08ms] +2026-09-09 11:08:23,317 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/c9f14d8c-b9e6-44d2-91d2-48c0e4ae2fce/ - 307 [0.09ms] +2026-09-09 11:08:23,319 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/c9f14d8c-b9e6-44d2-91d2-48c0e4ae2fce - 404 [2.04ms] +2026-09-09 11:08:23,326 INFO app.crud.ban_list created ban list id=7da289a1-c758-47cd-a3f6-45dbd8620044 org=1 project=1 +2026-09-09 11:08:23,326 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [3.66ms] +2026-09-09 11:08:23,327 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/7da289a1-c758-47cd-a3f6-45dbd8620044/ - 307 [0.09ms] +2026-09-09 11:08:23,329 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/7da289a1-c758-47cd-a3f6-45dbd8620044 - 403 [1.89ms] +2026-09-09 11:08:23,338 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.15ms] +2026-09-09 11:08:23,338 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/e24d4209-48d3-41fa-a726-342761acd9dd/ - 307 [0.08ms] +2026-09-09 11:08:23,341 INFO app.crud.ban_list deleted ban list id=e24d4209-48d3-41fa-a726-342761acd9dd +2026-09-09 11:08:23,341 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/e24d4209-48d3-41fa-a726-342761acd9dd - 200 [2.71ms] +2026-09-09 11:08:23,346 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/b1bf8940-45e9-4bce-8ccb-0ab6b5612e24/ - 307 [0.10ms] +2026-09-09 11:08:23,348 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/b1bf8940-45e9-4bce-8ccb-0ab6b5612e24 - 404 [1.82ms] +2026-09-09 11:08:23,357 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.10ms] +2026-09-09 11:08:23,357 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/828c0677-6b7f-4fef-ade0-5a10cbcdcb07/ - 307 [0.08ms] +2026-09-09 11:08:23,359 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/828c0677-6b7f-4fef-ade0-5a10cbcdcb07 - 403 [1.38ms] +2026-09-09 11:08:23,365 INFO app.crud.ban_list created ban list id=dc5ca586-d2d5-4374-8a1d-1eeaf175d9e4 org=1 project=1 +2026-09-09 11:08:23,365 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [2.66ms] +2026-09-09 11:08:23,366 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/dc5ca586-d2d5-4374-8a1d-1eeaf175d9e4/ - 307 [0.08ms] +2026-09-09 11:08:23,367 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/dc5ca586-d2d5-4374-8a1d-1eeaf175d9e4 - 403 [1.26ms] +2026-09-09 11:08:23,457 INFO guardrails.execution request=e2f4486d-101d-41fb-9014-cf46ad11dcdb starting guardrails execution (validators=[]) input='hello world' +2026-09-09 11:08:23,457 INFO guardrails.execution request=e2f4486d-101d-41fb-9014-cf46ad11dcdb guardrails execution finished (passed=True) output='clean text' +2026-09-09 11:08:23,460 INFO http_request_logger POST /api/v1/guardrails/ - 200 [7.56ms] +2026-09-09 11:08:23,468 INFO guardrails.execution request=09520010-7dab-4eef-8e70-0e8b8a1adc6f starting guardrails execution (validators=[]) input='my phone is 999999' +2026-09-09 11:08:23,468 INFO guardrails.execution request=09520010-7dab-4eef-8e70-0e8b8a1adc6f guardrails execution finished (passed=False) output=None +2026-09-09 11:08:23,470 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.55ms] +2026-09-09 11:08:23,477 INFO guardrails.execution request=bc788274-ad26-4fbd-8b60-4336dbc15304 starting guardrails execution (validators=[]) input='tell me about buildings' +2026-09-09 11:08:23,477 INFO guardrails.execution request=bc788274-ad26-4fbd-8b60-4336dbc15304 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Input is outside the allowed topic scope.' +2026-09-09 11:08:23,479 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.05ms] +2026-09-09 11:08:23,485 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 19f4d695-018f-4275-b6cf-917613195b6b: Invalid validator config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid validator config +2026-09-09 11:08:23,488 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.33ms] +2026-09-09 11:08:23,501 INFO guardrails.execution request=e9a7032c-fe3b-486a-a08f-97f646e8feec starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-09 11:08:23,503 INFO guardrails.execution request=e9a7032c-fe3b-486a-a08f-97f646e8feec guardrails execution finished (passed=True) output='this contains b' +2026-09-09 11:08:23,505 INFO guardrails.execution request=e9a7032c-fe3b-486a-a08f-97f646e8feec step=1/1 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:23.502219 end=2026-09-09T11:08:23.502328 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 11:08:23,509 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.36ms] +2026-09-09 11:08:23,523 INFO guardrails.execution request=0134b343-35a4-4b43-8f19-35b8db017873 starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-09 11:08:23,524 INFO guardrails.execution request=0134b343-35a4-4b43-8f19-35b8db017873 guardrails execution finished (passed=True) output='this contains b' +2026-09-09 11:08:23,526 INFO guardrails.execution request=0134b343-35a4-4b43-8f19-35b8db017873 step=1/1 validator=BanList stage=output outcome=Outcome.FAIL start=2026-09-09T11:08:23.523299 end=2026-09-09T11:08:23.523379 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 11:08:23,529 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.27ms] +2026-09-09 11:08:23,548 INFO guardrails.execution request=668f1110-6bef-4629-9a88-69f8348b46e9 starting guardrails execution (validators=['ban_list', 'uli_slur_match']) input='this contains badword' +2026-09-09 11:08:23,550 INFO guardrails.execution request=668f1110-6bef-4629-9a88-69f8348b46e9 guardrails execution finished (passed=True) output='this contains b' +2026-09-09 11:08:23,553 INFO guardrails.execution request=668f1110-6bef-4629-9a88-69f8348b46e9 step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:23.549272 end=2026-09-09T11:08:23.549455 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 11:08:23,555 INFO guardrails.execution request=668f1110-6bef-4629-9a88-69f8348b46e9 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T11:08:23.549461 end=2026-09-09T11:08:23.549684 duration_ms=0 input='this contains b' output='this contains b' +2026-09-09 11:08:23,559 INFO http_request_logger POST /api/v1/guardrails/ - 200 [25.74ms] +2026-09-09 11:08:23,573 INFO guardrails.execution request=ca7b2d63-0cd7-4dca-8014-000eca674e89 starting guardrails execution (validators=['ban_list']) input='this is clean' +2026-09-09 11:08:23,574 INFO guardrails.execution request=ca7b2d63-0cd7-4dca-8014-000eca674e89 guardrails execution finished (passed=True) output='this is clean' +2026-09-09 11:08:23,576 INFO guardrails.execution request=ca7b2d63-0cd7-4dca-8014-000eca674e89 step=1/1 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T11:08:23.573750 end=2026-09-09T11:08:23.573810 duration_ms=0 input='this is clean' output='this is clean' +2026-09-09 11:08:23,580 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.69ms] +2026-09-09 11:08:23,594 INFO guardrails.execution request=4e8cdba4-1823-4965-a2e6-51b98b4b92b0 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 11:08:23,596 INFO guardrails.execution request=4e8cdba4-1823-4965-a2e6-51b98b4b92b0 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR].' +2026-09-09 11:08:23,598 INFO guardrails.execution request=4e8cdba4-1823-4965-a2e6-51b98b4b92b0 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:23.595158 end=2026-09-09T11:08:23.595430 duration_ms=0 input='This sentence contains chakki.' output='this sentence contains [REDACTED_SLUR].' +2026-09-09 11:08:23,602 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.37ms] +2026-09-09 11:08:23,621 INFO guardrails.execution request=f60c5f3c-c24c-4d38-b88a-a1ef2daa2dd5 starting guardrails execution (validators=['uli_slur_match']) input='This is a completely safe sentence' +2026-09-09 11:08:23,623 INFO guardrails.execution request=f60c5f3c-c24c-4d38-b88a-a1ef2daa2dd5 guardrails execution finished (passed=True) output='This is a completely safe sentence' +2026-09-09 11:08:23,627 INFO guardrails.execution request=f60c5f3c-c24c-4d38-b88a-a1ef2daa2dd5 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T11:08:23.621974 end=2026-09-09T11:08:23.622301 duration_ms=0 input='This is a completely safe sentence' output='This is a completely safe sentence' +2026-09-09 11:08:23,632 INFO http_request_logger POST /api/v1/guardrails/ - 200 [23.60ms] +2026-09-09 11:08:23,648 INFO guardrails.execution request=15529fca-e03d-424c-b247-4c6621e4afb0 starting guardrails execution (validators=['uli_slur_match', 'ban_list']) input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' +2026-09-09 11:08:23,650 INFO guardrails.execution request=15529fca-e03d-424c-b247-4c6621e4afb0 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-09 11:08:23,654 INFO guardrails.execution request=15529fca-e03d-424c-b247-4c6621e4afb0 step=1/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:23.649445 end=2026-09-09T11:08:23.649949 duration_ms=0 input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' +2026-09-09 11:08:23,658 INFO guardrails.execution request=15529fca-e03d-424c-b247-4c6621e4afb0 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:23.649955 end=2026-09-09T11:08:23.650042 duration_ms=0 input='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-09 11:08:23,662 INFO http_request_logger POST /api/v1/guardrails/ - 200 [24.66ms] +2026-09-09 11:08:23,668 INFO http_request_logger POST /api/v1/guardrails/ - 422 [1.34ms] +2026-09-09 11:08:23,683 INFO guardrails.execution request=4edf1001-6438-4d32-aa3c-4739d265ea96 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 11:08:23,684 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 4edf1001-6438-4d32-aa3c-4739d265ea96: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-09 11:08:23,688 INFO guardrails.execution request=4edf1001-6438-4d32-aa3c-4739d265ea96 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:23.683863 end=2026-09-09T11:08:23.684133 duration_ms=0 input='This sentence contains chakki.' output=None +2026-09-09 11:08:23,691 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.83ms] +2026-09-09 11:08:23,708 INFO guardrails.execution request=3dc2b58c-e8c0-4bd0-a170-cd16655222f5 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 11:08:23,710 INFO guardrails.execution request=3dc2b58c-e8c0-4bd0-a170-cd16655222f5 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-09 11:08:23,714 INFO guardrails.execution request=3dc2b58c-e8c0-4bd0-a170-cd16655222f5 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:23.709036 end=2026-09-09T11:08:23.709299 duration_ms=0 input='This sentence contains chakki.' output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-09 11:08:23,718 INFO http_request_logger POST /api/v1/guardrails/ - 200 [21.74ms] +2026-09-09 11:08:23,734 INFO guardrails.execution request=a72b5f74-a99f-492b-a6b0-80236710496a starting guardrails execution (validators=['profanity_free']) input='This is a damn fucking mess.' +2026-09-09 11:08:23,736 INFO guardrails.execution request=a72b5f74-a99f-492b-a6b0-80236710496a guardrails execution finished (passed=True) output='' +2026-09-09 11:08:23,740 INFO guardrails.execution request=a72b5f74-a99f-492b-a6b0-80236710496a step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:23.734975 end=2026-09-09T11:08:23.736019 duration_ms=1 input='This is a damn fucking mess.' output='' +2026-09-09 11:08:23,743 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.67ms] +2026-09-09 11:08:23,760 INFO guardrails.execution request=d1339e05-0336-43ae-85bc-14a9c7abd670 starting guardrails execution (validators=['profanity_free']) input='This is a completely clean sentence.' +2026-09-09 11:08:23,761 INFO guardrails.execution request=d1339e05-0336-43ae-85bc-14a9c7abd670 guardrails execution finished (passed=True) output='This is a completely clean sentence.' +2026-09-09 11:08:23,764 INFO guardrails.execution request=d1339e05-0336-43ae-85bc-14a9c7abd670 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T11:08:23.760305 end=2026-09-09T11:08:23.761180 duration_ms=0 input='This is a completely clean sentence.' output='This is a completely clean sentence.' +2026-09-09 11:08:23,768 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.43ms] +2026-09-09 11:08:23,784 INFO guardrails.execution request=a6a8ed65-10a4-47e7-88ae-d2f1bbafd536 starting guardrails execution (validators=['profanity_free']) input='What the fuck is going on?' +2026-09-09 11:08:23,785 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log a6a8ed65-10a4-47e7-88ae-d2f1bbafd536: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +2026-09-09 11:08:23,789 INFO guardrails.execution request=a6a8ed65-10a4-47e7-88ae-d2f1bbafd536 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:23.784797 end=2026-09-09T11:08:23.785698 duration_ms=0 input='What the fuck is going on?' output=None +2026-09-09 11:08:23,792 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.38ms] +2026-09-09 11:08:23,808 INFO guardrails.execution request=eaceb432-f03a-40d0-9c73-e0998d961769 starting guardrails execution (validators=['profanity_free']) input='This is absolute bullshit.' +2026-09-09 11:08:23,810 INFO guardrails.execution request=eaceb432-f03a-40d0-9c73-e0998d961769 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-09 11:08:23,813 INFO guardrails.execution request=eaceb432-f03a-40d0-9c73-e0998d961769 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:23.808804 end=2026-09-09T11:08:23.809623 duration_ms=0 input='This is absolute bullshit.' output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-09 11:08:23,817 INFO http_request_logger POST /api/v1/guardrails/ - 200 [20.39ms] +2026-09-09 11:08:23,825 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 708ae173-647b-4897-9cb3-8e544b44013a: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-09 11:08:23,829 INFO http_request_logger POST /api/v1/guardrails/ - 200 [7.37ms] +2026-09-09 11:08:24,436 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-09 11:08:26,436 INFO guardrails.execution request=d47f3440-7f20-40dc-90ab-814d43ac9abf starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-09 11:08:26,524 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log d47f3440-7f20-40dc-90ab-814d43ac9abf: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-09 11:08:26,531 INFO guardrails.execution request=d47f3440-7f20-40dc-90ab-814d43ac9abf step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:26.437514 end=2026-09-09T11:08:26.524664 duration_ms=87 input='She slowly undressed and they had explicit sex.' output=None +2026-09-09 11:08:26,535 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2702.03ms] +2026-09-09 11:08:28,580 INFO guardrails.execution request=8a1a457d-6cd4-4a06-b8d3-0a8365232b9d starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-09 11:08:28,595 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 8a1a457d-6cd4-4a06-b8d3-0a8365232b9d: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-09 11:08:28,598 INFO guardrails.execution request=8a1a457d-6cd4-4a06-b8d3-0a8365232b9d step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:28.581286 end=2026-09-09T11:08:28.595287 duration_ms=14 input='She slowly undressed and they had explicit sex.' output=None +2026-09-09 11:08:28,601 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2060.65ms] +2026-09-09 11:08:30,664 INFO guardrails.execution request=2c11ea6d-e922-47b3-b552-7ff2412f9913 starting guardrails execution (validators=['nsfw_text']) input='Explicit sexual content goes here.' +2026-09-09 11:08:30,689 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 2c11ea6d-e922-47b3-b552-7ff2412f9913: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +2026-09-09 11:08:30,695 INFO guardrails.execution request=2c11ea6d-e922-47b3-b552-7ff2412f9913 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:30.665787 end=2026-09-09T11:08:30.689028 duration_ms=23 input='Explicit sexual content goes here.' output=None +2026-09-09 11:08:30,698 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2093.43ms] +2026-09-09 11:08:30,721 INFO guardrails.execution request=23a62429-5316-4ca4-9c49-b8da79e5444d starting guardrails execution (validators=['profanity_free', 'uli_slur_match']) input='This fucking chakki should leave.' +2026-09-09 11:08:30,724 INFO guardrails.execution request=23a62429-5316-4ca4-9c49-b8da79e5444d guardrails execution finished (passed=True) output='' +2026-09-09 11:08:30,726 INFO guardrails.execution request=23a62429-5316-4ca4-9c49-b8da79e5444d step=1/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:30.722098 end=2026-09-09T11:08:30.723533 duration_ms=1 input='This fucking chakki should leave.' output='' +2026-09-09 11:08:30,727 INFO guardrails.execution request=23a62429-5316-4ca4-9c49-b8da79e5444d step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T11:08:30.723546 end=2026-09-09T11:08:30.723744 duration_ms=0 input='' output='' +2026-09-09 11:08:30,730 INFO http_request_logger POST /api/v1/guardrails/ - 200 [25.80ms] +2026-09-09 11:08:30,737 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 0265fb21-618a-4f8c-a7f7-56579d474f0f: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 40, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-09 11:08:30,740 INFO http_request_logger POST /api/v1/guardrails/ - 200 [6.19ms] +2026-09-09 11:08:32,855 INFO guardrails.execution request=feb55fa7-b945-4236-be7d-b81c777fb5d0 starting guardrails execution (validators=['profanity_free', 'nsfw_text']) input='What the fuck, this is explicit adult sexual content.' +2026-09-09 11:08:32,857 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log feb55fa7-b945-4236-be7d-b81c777fb5d0: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +2026-09-09 11:08:32,865 INFO guardrails.execution request=feb55fa7-b945-4236-be7d-b81c777fb5d0 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:32.856034 end=2026-09-09T11:08:32.857387 duration_ms=1 input='What the fuck, this is explicit adult sexual content.' output=None +2026-09-09 11:08:32,870 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2124.36ms] +2026-09-09 11:08:35,046 INFO guardrails.execution request=ce624867-2cee-46c8-9eb0-c0cf06af2c86 starting guardrails execution (validators=['uli_slur_match', 'nsfw_text']) input='This chakki has explicit sexual content.' +2026-09-09 11:08:35,047 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log ce624867-2cee-46c8-9eb0-c0cf06af2c86: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-09 11:08:35,051 INFO guardrails.execution request=ce624867-2cee-46c8-9eb0-c0cf06af2c86 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:35.047103 end=2026-09-09T11:08:35.047564 duration_ms=0 input='This chakki has explicit sexual content.' output=None +2026-09-09 11:08:35,054 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2178.79ms] +2026-09-09 11:08:35,070 INFO guardrails.execution request=1f0b7bbb-12c9-4e3f-96d4-dafd93526fd6 starting guardrails execution (validators=['profanity_free', 'ban_list']) input='Tell me about renewable energy sources.' +2026-09-09 11:08:35,073 INFO guardrails.execution request=1f0b7bbb-12c9-4e3f-96d4-dafd93526fd6 guardrails execution finished (passed=True) output='Tell me about renewable energy sources.' +2026-09-09 11:08:35,076 INFO guardrails.execution request=1f0b7bbb-12c9-4e3f-96d4-dafd93526fd6 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T11:08:35.070838 end=2026-09-09T11:08:35.072159 duration_ms=1 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-09 11:08:35,078 INFO guardrails.execution request=1f0b7bbb-12c9-4e3f-96d4-dafd93526fd6 step=2/2 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T11:08:35.072165 end=2026-09-09T11:08:35.072258 duration_ms=0 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-09 11:08:35,082 INFO http_request_logger POST /api/v1/guardrails/ - 200 [23.07ms] +2026-09-09 11:08:35,104 INFO guardrails.execution request=2bfe58e5-a664-4367-8da0-fdec7b6e783e starting guardrails execution (validators=['uli_slur_match', 'profanity_free', 'ban_list']) input='What are some healthy breakfast options?' +2026-09-09 11:08:35,107 INFO guardrails.execution request=2bfe58e5-a664-4367-8da0-fdec7b6e783e guardrails execution finished (passed=True) output='What are some healthy breakfast options?' +2026-09-09 11:08:35,111 INFO guardrails.execution request=2bfe58e5-a664-4367-8da0-fdec7b6e783e step=1/3 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T11:08:35.104954 end=2026-09-09T11:08:35.105298 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 11:08:35,114 INFO guardrails.execution request=2bfe58e5-a664-4367-8da0-fdec7b6e783e step=2/3 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T11:08:35.105304 end=2026-09-09T11:08:35.106351 duration_ms=1 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 11:08:35,116 INFO guardrails.execution request=2bfe58e5-a664-4367-8da0-fdec7b6e783e step=3/3 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T11:08:35.106357 end=2026-09-09T11:08:35.106431 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 11:08:35,120 INFO http_request_logger POST /api/v1/guardrails/ - 200 [33.53ms] +2026-09-09 11:08:35,138 INFO guardrails.execution request=bccc571c-6215-40cf-bef4-3c6509edf355 starting guardrails execution (validators=['ban_list', 'uli_slur_match']) input='this contains badword' +2026-09-09 11:08:35,140 INFO guardrails.execution request=bccc571c-6215-40cf-bef4-3c6509edf355 guardrails execution finished (passed=True) output='this contains b' +2026-09-09 11:08:35,143 INFO guardrails.execution request=bccc571c-6215-40cf-bef4-3c6509edf355 step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T11:08:35.139263 end=2026-09-09T11:08:35.139374 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 11:08:35,145 INFO guardrails.execution request=bccc571c-6215-40cf-bef4-3c6509edf355 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T11:08:35.139380 end=2026-09-09T11:08:35.139573 duration_ms=0 input='this contains b' output='this contains b' +2026-09-09 11:08:35,149 INFO http_request_logger POST /api/v1/guardrails/ - 200 [22.65ms] +2026-09-09 11:08:35,162 ERROR app.api.routes.guardrails [run_guardrails] config resolution failed for request_log 5709fe1c-028b-40b8-887c-51d52aeed6e3: 404: Ban list not found +2026-09-09 11:08:35,166 INFO http_request_logger POST /api/v1/guardrails/ - 404 [7.69ms] +2026-09-09 11:08:35,174 INFO guardrails.execution request=f74806f7-5796-42af-b1c1-9c8c89af6ed9 starting guardrails execution (validators=['ban_list']) input='hello' +2026-09-09 11:08:35,175 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log f74806f7-5796-42af-b1c1-9c8c89af6ed9: boom +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 371, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +RuntimeError: boom +2026-09-09 11:08:35,177 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.31ms] +2026-09-09 11:08:35,182 WARNING app.api.routes.guardrails [run_guardrails] invalid request_id 'not-a-uuid' (org=1 project=1), no request log written +2026-09-09 11:08:35,182 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1.20ms] +2026-09-09 11:08:35,192 INFO app.crud.llm_prompt_config created llm prompt config id=6c79c5e4-4c21-4204-9fc4-102a53a31c0b org=1 project=1 +2026-09-09 11:08:35,193 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [6.93ms] +2026-09-09 11:08:35,199 INFO app.crud.llm_prompt_config created llm prompt config id=86382c0a-ef20-4169-9506-799505bfb258 org=1 project=1 +2026-09-09 11:08:35,199 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.85ms] +2026-09-09 11:08:35,205 INFO app.crud.llm_prompt_config created llm prompt config id=b49666b5-3018-48b1-8587-bb1086a1b6c4 org=1 project=1 +2026-09-09 11:08:35,205 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.99ms] +2026-09-09 11:08:35,210 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [1.42ms] +2026-09-09 11:08:35,214 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.83ms] +2026-09-09 11:08:35,218 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.81ms] +2026-09-09 11:08:35,221 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.79ms] +2026-09-09 11:08:35,227 INFO app.crud.llm_prompt_config created llm prompt config id=d3af9f1f-fc94-4fa7-98fd-10210fcbcf81 org=1 project=1 +2026-09-09 11:08:35,228 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.73ms] +2026-09-09 11:08:35,231 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.76ms] +2026-09-09 11:08:35,234 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.74ms] +2026-09-09 11:08:35,239 INFO app.crud.llm_prompt_config created llm prompt config id=ad687813-5b8f-47d2-af37-7fc3ef46f9cc org=1 project=1 +2026-09-09 11:08:35,239 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.45ms] +2026-09-09 11:08:35,241 INFO app.crud.llm_prompt_config created llm prompt config id=d503718f-89bf-44a0-bfe9-645babb79db0 org=1 project=1 +2026-09-09 11:08:35,242 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.16ms] +2026-09-09 11:08:35,244 INFO app.crud.llm_prompt_config created llm prompt config id=12b64128-dc3c-4c06-91fe-9ef5f0ce4a54 org=1 project=1 +2026-09-09 11:08:35,244 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.21ms] +2026-09-09 11:08:35,247 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.17ms] +2026-09-09 11:08:35,253 INFO app.crud.llm_prompt_config created llm prompt config id=656ba15b-bdc2-4d69-9c95-41a518697b2b org=1 project=1 +2026-09-09 11:08:35,254 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.88ms] +2026-09-09 11:08:35,257 INFO app.crud.llm_prompt_config created llm prompt config id=11350599-ea26-4182-9cd4-efd582f1c827 org=1 project=1 +2026-09-09 11:08:35,257 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.32ms] +2026-09-09 11:08:35,261 INFO app.crud.llm_prompt_config created llm prompt config id=7936ccbb-ae1c-49b3-86e6-ca9c593cb383 org=1 project=1 +2026-09-09 11:08:35,262 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.43ms] +2026-09-09 11:08:35,265 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.27ms] +2026-09-09 11:08:35,270 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.66ms] +2026-09-09 11:08:35,276 INFO app.crud.llm_prompt_config created llm prompt config id=3793f2c6-ae9a-411e-be63-9652ef727edb org=1 project=1 +2026-09-09 11:08:35,276 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.57ms] +2026-09-09 11:08:35,278 INFO app.crud.llm_prompt_config created llm prompt config id=5a3efd62-eeeb-430e-af02-d5c78b248f75 org=1 project=1 +2026-09-09 11:08:35,279 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.32ms] +2026-09-09 11:08:35,281 INFO app.crud.llm_prompt_config created llm prompt config id=88c9e44f-afe2-4a04-9403-f369cd2fc590 org=1 project=1 +2026-09-09 11:08:35,281 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.32ms] +2026-09-09 11:08:35,284 INFO app.crud.llm_prompt_config created llm prompt config id=8b05f39a-73ca-48e4-9f66-0fa917f391ef org=1 project=1 +2026-09-09 11:08:35,284 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.42ms] +2026-09-09 11:08:35,287 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.09ms] +2026-09-09 11:08:35,293 INFO app.crud.llm_prompt_config created llm prompt config id=429455ee-f660-4fe9-95ef-09e909cbf44c org=1 project=1 +2026-09-09 11:08:35,294 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.69ms] +2026-09-09 11:08:35,296 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.68ms] +2026-09-09 11:08:35,303 INFO app.crud.llm_prompt_config created llm prompt config id=7d1a7852-7c37-4595-9dbd-6e33f1b11fb0 org=1 project=1 +2026-09-09 11:08:35,303 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.74ms] +2026-09-09 11:08:35,306 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/7d1a7852-7c37-4595-9dbd-6e33f1b11fb0 - 200 [2.06ms] +2026-09-09 11:08:35,313 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/3705b3cd-51d5-476d-b293-858bc5dbbbab - 404 [2.12ms] +2026-09-09 11:08:35,321 INFO app.crud.llm_prompt_config created llm prompt config id=ecc5ba62-0abc-4f01-940b-c214d6be7db9 org=1 project=1 +2026-09-09 11:08:35,322 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.54ms] +2026-09-09 11:08:35,323 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ecc5ba62-0abc-4f01-940b-c214d6be7db9 - 404 [1.41ms] +2026-09-09 11:08:35,330 INFO app.crud.llm_prompt_config created llm prompt config id=1d346652-69b0-4237-876f-af365d8ff188 org=1 project=1 +2026-09-09 11:08:35,331 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.66ms] +2026-09-09 11:08:35,334 INFO app.crud.llm_prompt_config updated llm prompt config id=1d346652-69b0-4237-876f-af365d8ff188 +2026-09-09 11:08:35,335 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/1d346652-69b0-4237-876f-af365d8ff188 - 200 [3.33ms] +2026-09-09 11:08:35,340 INFO app.crud.llm_prompt_config created llm prompt config id=55568766-ba1f-4ee9-9de2-7f1432615661 org=1 project=1 +2026-09-09 11:08:35,340 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.57ms] +2026-09-09 11:08:35,343 INFO app.crud.llm_prompt_config updated llm prompt config id=55568766-ba1f-4ee9-9de2-7f1432615661 +2026-09-09 11:08:35,343 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/55568766-ba1f-4ee9-9de2-7f1432615661 - 200 [2.67ms] +2026-09-09 11:08:35,351 INFO app.crud.llm_prompt_config created llm prompt config id=666fdac3-23c6-43c7-b82e-c0487f3032b7 org=1 project=1 +2026-09-09 11:08:35,351 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [5.15ms] +2026-09-09 11:08:35,354 INFO app.crud.llm_prompt_config updated llm prompt config id=666fdac3-23c6-43c7-b82e-c0487f3032b7 +2026-09-09 11:08:35,354 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/666fdac3-23c6-43c7-b82e-c0487f3032b7 - 200 [2.67ms] +2026-09-09 11:08:35,356 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/666fdac3-23c6-43c7-b82e-c0487f3032b7 - 200 [1.37ms] +2026-09-09 11:08:35,360 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/31b01d48-9f6b-4b89-b2e9-99e7ccd76864 - 404 [1.61ms] +2026-09-09 11:08:35,365 INFO app.crud.llm_prompt_config created llm prompt config id=4142afdd-6ce9-4a4f-ad1e-7d917cab6af5 org=1 project=1 +2026-09-09 11:08:35,366 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.59ms] +2026-09-09 11:08:35,369 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/4142afdd-6ce9-4a4f-ad1e-7d917cab6af5 - 404 [3.00ms] +2026-09-09 11:08:35,377 INFO app.crud.llm_prompt_config created llm prompt config id=3256746d-0e73-4389-8417-be1980fb64ac org=1 project=1 +2026-09-09 11:08:35,377 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.52ms] +2026-09-09 11:08:35,379 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/3256746d-0e73-4389-8417-be1980fb64ac - 422 [1.38ms] +2026-09-09 11:08:35,384 INFO app.crud.llm_prompt_config created llm prompt config id=3b34b18d-d161-4140-aa13-94b4a5698064 org=1 project=1 +2026-09-09 11:08:35,384 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.60ms] +2026-09-09 11:08:35,386 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/3b34b18d-d161-4140-aa13-94b4a5698064 - 422 [1.39ms] +2026-09-09 11:08:35,392 INFO app.crud.llm_prompt_config created llm prompt config id=e5021748-f03d-4ced-b078-f4dce64e327c org=1 project=1 +2026-09-09 11:08:35,393 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.71ms] +2026-09-09 11:08:35,395 INFO app.crud.llm_prompt_config updated llm prompt config id=e5021748-f03d-4ced-b078-f4dce64e327c +2026-09-09 11:08:35,396 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/e5021748-f03d-4ced-b078-f4dce64e327c - 200 [2.65ms] +2026-09-09 11:08:35,404 INFO app.crud.llm_prompt_config created llm prompt config id=b01c96ba-b28e-4380-9414-5dbdb987e6b6 org=1 project=1 +2026-09-09 11:08:35,405 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [5.19ms] +2026-09-09 11:08:35,409 INFO app.crud.llm_prompt_config updated llm prompt config id=b01c96ba-b28e-4380-9414-5dbdb987e6b6 +2026-09-09 11:08:35,409 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/b01c96ba-b28e-4380-9414-5dbdb987e6b6 - 200 [3.92ms] +2026-09-09 11:08:35,416 INFO app.crud.llm_prompt_config created llm prompt config id=222b6449-876a-4d79-b565-76bcc1d484dd org=1 project=1 +2026-09-09 11:08:35,416 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.11ms] +2026-09-09 11:08:35,419 INFO app.crud.llm_prompt_config deleted llm prompt config id=222b6449-876a-4d79-b565-76bcc1d484dd +2026-09-09 11:08:35,419 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/222b6449-876a-4d79-b565-76bcc1d484dd - 200 [2.05ms] +2026-09-09 11:08:35,424 INFO app.crud.llm_prompt_config created llm prompt config id=611050d8-436f-45a5-9fe6-749812faba21 org=1 project=1 +2026-09-09 11:08:35,425 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.73ms] +2026-09-09 11:08:35,427 INFO app.crud.llm_prompt_config deleted llm prompt config id=611050d8-436f-45a5-9fe6-749812faba21 +2026-09-09 11:08:35,427 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/611050d8-436f-45a5-9fe6-749812faba21 - 200 [1.90ms] +2026-09-09 11:08:35,429 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.39ms] +2026-09-09 11:08:35,433 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/f31b9443-8531-4260-afc2-fea33773b237 - 404 [1.65ms] +2026-09-09 11:08:35,439 INFO app.crud.llm_prompt_config created llm prompt config id=22083336-a34c-48c8-804b-9a2c51e6798a org=1 project=1 +2026-09-09 11:08:35,440 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.38ms] +2026-09-09 11:08:35,442 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/22083336-a34c-48c8-804b-9a2c51e6798a - 404 [1.71ms] +2026-09-09 11:08:35,535 INFO guardrails.execution request=ce93d25e-5a02-4312-a1e1-7f4c36ec4d66 starting guardrails execution (validators=[]) input='hello' +2026-09-09 11:08:35,536 INFO guardrails.execution request=ce93d25e-5a02-4312-a1e1-7f4c36ec4d66 guardrails execution finished (passed=True) output='clean text' +2026-09-09 11:08:35,538 INFO guardrails.execution request=ce93d25e-5a02-4312-a1e1-7f4c36ec4d66 starting guardrails execution (validators=[]) input='bad text' +2026-09-09 11:08:35,538 INFO guardrails.execution request=ce93d25e-5a02-4312-a1e1-7f4c36ec4d66 guardrails execution finished (passed=False) output=None +2026-09-09 11:08:35,539 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log ce93d25e-5a02-4312-a1e1-7f4c36ec4d66: Invalid config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid config +2026-09-09 11:08:35,542 INFO guardrails.execution request=ce93d25e-5a02-4312-a1e1-7f4c36ec4d66 starting guardrails execution (validators=[]) input='bad text' +2026-09-09 11:08:35,542 INFO guardrails.execution request=ce93d25e-5a02-4312-a1e1-7f4c36ec4d66 guardrails execution finished (passed=False) output=None +2026-09-09 11:08:35,544 INFO guardrails.execution request=ce93d25e-5a02-4312-a1e1-7f4c36ec4d66 starting guardrails execution (validators=[]) input='bad text' +2026-09-09 11:08:35,544 INFO guardrails.execution request=ce93d25e-5a02-4312-a1e1-7f4c36ec4d66 guardrails execution finished (passed=False) output=None +2026-09-09 11:08:35,566 INFO guardrails.execution request=ce93d25e-5a02-4312-a1e1-7f4c36ec4d66 starting guardrails execution (validators=[]) input='this is some unsafe content' +2026-09-09 11:08:35,567 INFO guardrails.execution request=ce93d25e-5a02-4312-a1e1-7f4c36ec4d66 guardrails execution finished (passed=False) output=None +2026-09-09 11:08:35,569 INFO guardrails.execution request=ce93d25e-5a02-4312-a1e1-7f4c36ec4d66 starting guardrails execution (validators=[]) input='some input text' +2026-09-09 11:08:35,569 INFO guardrails.execution request=ce93d25e-5a02-4312-a1e1-7f4c36ec4d66 guardrails execution finished (passed=False) output=None +2026-09-09 11:08:35,571 INFO guardrails.execution request=ce93d25e-5a02-4312-a1e1-7f4c36ec4d66 starting guardrails execution (validators=[]) input='this contains profane words' +2026-09-09 11:08:35,571 INFO guardrails.execution request=ce93d25e-5a02-4312-a1e1-7f4c36ec4d66 guardrails execution finished (passed=False) output=None +2026-09-09 11:08:35,573 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log ce93d25e-5a02-4312-a1e1-7f4c36ec4d66: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +2026-09-09 11:08:35,575 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log ce93d25e-5a02-4312-a1e1-7f4c36ec4d66: Validation failed for field with errors: Profanity detected in: this contains profane words +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 355, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: Profanity detected in: this contains profane words +2026-09-09 11:08:35,590 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 11:08:35,592 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 11:08:35,595 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 11:08:35,607 INFO app.crud.validator_config created validator config id=85b4ea5f-55ab-48b8-b516-db346c694d60 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 11:08:35,607 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [5.06ms] +2026-09-09 11:08:35,613 INFO app.crud.validator_config created validator config id=aa5350ef-c968-4d7d-9162-fb2539192f2e org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 11:08:35,614 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.62ms] +2026-09-09 11:08:35,616 WARNING app.crud.validator_config create validator config failed: duplicate name (org=1 project=1) +2026-09-09 11:08:35,616 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 400 [1.70ms] +2026-09-09 11:08:35,620 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 422 [0.89ms] +2026-09-09 11:08:35,624 INFO app.crud.validator_config created validator config id=4aa8e5d0-fd35-4e46-98b6-3140cdf94fa5 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 11:08:35,625 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.54ms] +2026-09-09 11:08:35,627 INFO app.crud.validator_config created validator config id=a1190acb-6ea7-42f0-a9df-644f734105f4 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 11:08:35,628 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.29ms] +2026-09-09 11:08:35,630 INFO app.crud.validator_config created validator config id=a7848433-f8a5-4254-8639-973658f759e7 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 11:08:35,630 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.44ms] +2026-09-09 11:08:35,632 INFO app.crud.validator_config created validator config id=c021e4c3-b48d-4a06-a84f-3e81e28d1fa3 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 11:08:35,633 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.22ms] +2026-09-09 11:08:35,635 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.00ms] +2026-09-09 11:08:35,636 INFO http_request_logger GET /api/v1/guardrails/validators/configs/4aa8e5d0-fd35-4e46-98b6-3140cdf94fa5/ - 307 [0.10ms] +2026-09-09 11:08:35,638 INFO http_request_logger GET /api/v1/guardrails/validators/configs/4aa8e5d0-fd35-4e46-98b6-3140cdf94fa5 - 200 [1.85ms] +2026-09-09 11:08:35,638 INFO http_request_logger GET /api/v1/guardrails/validators/configs/a1190acb-6ea7-42f0-a9df-644f734105f4/ - 307 [0.10ms] +2026-09-09 11:08:35,640 INFO http_request_logger GET /api/v1/guardrails/validators/configs/a1190acb-6ea7-42f0-a9df-644f734105f4 - 200 [1.43ms] +2026-09-09 11:08:35,641 INFO http_request_logger GET /api/v1/guardrails/validators/configs/a7848433-f8a5-4254-8639-973658f759e7/ - 307 [0.09ms] +2026-09-09 11:08:35,643 INFO http_request_logger GET /api/v1/guardrails/validators/configs/a7848433-f8a5-4254-8639-973658f759e7 - 200 [1.75ms] +2026-09-09 11:08:35,643 INFO http_request_logger GET /api/v1/guardrails/validators/configs/c021e4c3-b48d-4a06-a84f-3e81e28d1fa3/ - 307 [0.09ms] +2026-09-09 11:08:35,645 INFO http_request_logger GET /api/v1/guardrails/validators/configs/c021e4c3-b48d-4a06-a84f-3e81e28d1fa3 - 200 [1.57ms] +2026-09-09 11:08:35,652 INFO app.crud.validator_config created validator config id=06a13759-c2d3-4403-b8a1-7e4772cc2789 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 11:08:35,653 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.14ms] +2026-09-09 11:08:35,655 INFO app.crud.validator_config created validator config id=2b464c4b-6f64-44fd-9848-ec8d202d3f3f org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 11:08:35,655 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.28ms] +2026-09-09 11:08:35,658 INFO app.crud.validator_config created validator config id=cbaf204b-7ac1-44e3-95b2-32415c001bbf org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 11:08:35,658 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.81ms] +2026-09-09 11:08:35,659 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/06a13759-c2d3-4403-b8a1-7e4772cc2789/ - 307 [0.10ms] +2026-09-09 11:08:35,663 INFO app.crud.validator_config updated validator config id=06a13759-c2d3-4403-b8a1-7e4772cc2789 +2026-09-09 11:08:35,663 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/06a13759-c2d3-4403-b8a1-7e4772cc2789 - 200 [3.76ms] +2026-09-09 11:08:35,664 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/2b464c4b-6f64-44fd-9848-ec8d202d3f3f/ - 307 [0.09ms] +2026-09-09 11:08:35,666 INFO app.crud.validator_config updated validator config id=2b464c4b-6f64-44fd-9848-ec8d202d3f3f +2026-09-09 11:08:35,667 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/2b464c4b-6f64-44fd-9848-ec8d202d3f3f - 200 [2.67ms] +2026-09-09 11:08:35,667 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/cbaf204b-7ac1-44e3-95b2-32415c001bbf/ - 307 [0.09ms] +2026-09-09 11:08:35,669 INFO app.crud.validator_config updated validator config id=cbaf204b-7ac1-44e3-95b2-32415c001bbf +2026-09-09 11:08:35,670 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/cbaf204b-7ac1-44e3-95b2-32415c001bbf - 200 [2.65ms] +2026-09-09 11:08:35,672 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.64ms] +2026-09-09 11:08:35,680 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.83ms] +2026-09-09 11:08:35,686 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.09ms] +2026-09-09 11:08:35,694 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.98ms] +2026-09-09 11:08:35,700 INFO app.crud.validator_config created validator config id=824d1e8b-f324-428e-abbf-deb74bab92d2 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 11:08:35,700 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.84ms] +2026-09-09 11:08:35,702 INFO app.crud.validator_config created validator config id=72e4cc94-9078-45f7-829d-ee8d3d247492 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 11:08:35,703 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.19ms] +2026-09-09 11:08:35,705 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.80ms] +2026-09-09 11:08:35,710 INFO app.crud.validator_config created validator config id=43870fa6-448a-4d56-a7b8-4544fad7ea0b org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 11:08:35,711 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.72ms] +2026-09-09 11:08:35,713 INFO app.crud.validator_config created validator config id=9d016ce9-e00c-41c4-bc21-ee071ebc1c7f org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 11:08:35,714 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.61ms] +2026-09-09 11:08:35,716 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.61ms] +2026-09-09 11:08:35,720 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 422 [0.75ms] +2026-09-09 11:08:35,724 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.61ms] +2026-09-09 11:08:35,731 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.03ms] +2026-09-09 11:08:35,731 INFO http_request_logger GET /api/v1/guardrails/validators/configs/fd3234b6-3dac-44ca-8992-b1069c81d4a6/ - 307 [0.10ms] +2026-09-09 11:08:35,733 INFO http_request_logger GET /api/v1/guardrails/validators/configs/fd3234b6-3dac-44ca-8992-b1069c81d4a6 - 200 [1.47ms] +2026-09-09 11:08:35,737 INFO http_request_logger GET /api/v1/guardrails/validators/configs/a201d9fa-4ff3-4241-8c9f-9d2a371852b8/ - 307 [0.09ms] +2026-09-09 11:08:35,739 INFO http_request_logger GET /api/v1/guardrails/validators/configs/a201d9fa-4ff3-4241-8c9f-9d2a371852b8 - 404 [1.80ms] +2026-09-09 11:08:35,742 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid/ - 307 [0.09ms] +2026-09-09 11:08:35,743 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid - 422 [0.69ms] +2026-09-09 11:08:35,748 INFO app.crud.validator_config created validator config id=bc07597b-3060-43fa-ac04-f82f10cd11f0 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 11:08:35,748 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.67ms] +2026-09-09 11:08:35,749 INFO http_request_logger GET /api/v1/guardrails/validators/configs/bc07597b-3060-43fa-ac04-f82f10cd11f0/ - 307 [0.08ms] +2026-09-09 11:08:35,750 INFO http_request_logger GET /api/v1/guardrails/validators/configs/bc07597b-3060-43fa-ac04-f82f10cd11f0 - 404 [1.24ms] +2026-09-09 11:08:35,758 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.83ms] +2026-09-09 11:08:35,758 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/46fa12a2-e78e-400d-8172-7397439aacef/ - 307 [0.09ms] +2026-09-09 11:08:35,762 INFO app.crud.validator_config updated validator config id=46fa12a2-e78e-400d-8172-7397439aacef +2026-09-09 11:08:35,763 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/46fa12a2-e78e-400d-8172-7397439aacef - 200 [4.03ms] +2026-09-09 11:08:35,769 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.64ms] +2026-09-09 11:08:35,769 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/84a58d8c-b5dc-46bc-bf94-e913ef05e5fb/ - 307 [0.08ms] +2026-09-09 11:08:35,772 INFO app.crud.validator_config updated validator config id=84a58d8c-b5dc-46bc-bf94-e913ef05e5fb +2026-09-09 11:08:35,772 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/84a58d8c-b5dc-46bc-bf94-e913ef05e5fb - 200 [2.56ms] +2026-09-09 11:08:35,776 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/d4072240-fa36-4317-8b70-96c0c13bcd3e/ - 307 [0.08ms] +2026-09-09 11:08:35,778 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/d4072240-fa36-4317-8b70-96c0c13bcd3e - 404 [1.86ms] +2026-09-09 11:08:35,786 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.86ms] +2026-09-09 11:08:35,787 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/58bc9422-4fb9-47c0-894e-78dc15a6b3ad/ - 307 [0.09ms] +2026-09-09 11:08:35,789 INFO app.crud.validator_config deleted validator config id=58bc9422-4fb9-47c0-894e-78dc15a6b3ad +2026-09-09 11:08:35,790 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/58bc9422-4fb9-47c0-894e-78dc15a6b3ad - 200 [2.64ms] +2026-09-09 11:08:35,790 INFO http_request_logger GET /api/v1/guardrails/validators/configs/58bc9422-4fb9-47c0-894e-78dc15a6b3ad/ - 307 [0.09ms] +2026-09-09 11:08:35,792 INFO http_request_logger GET /api/v1/guardrails/validators/configs/58bc9422-4fb9-47c0-894e-78dc15a6b3ad - 404 [1.54ms] +2026-09-09 11:08:35,796 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/4060c803-f8ba-4f88-b362-3ff5d58ab96e/ - 307 [0.19ms] +2026-09-09 11:08:35,798 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/4060c803-f8ba-4f88-b362-3ff5d58ab96e - 404 [1.58ms] +2026-09-09 11:08:35,806 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.94ms] +2026-09-09 11:08:35,806 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/efcb84a1-5fa0-42a9-9ef7-23b56ab0e23f/ - 307 [0.09ms] +2026-09-09 11:08:35,808 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/efcb84a1-5fa0-42a9-9ef7-23b56ab0e23f - 404 [1.56ms] +2026-09-09 11:08:35,808 INFO http_request_logger GET /api/v1/guardrails/validators/configs/efcb84a1-5fa0-42a9-9ef7-23b56ab0e23f/ - 307 [0.08ms] +2026-09-09 11:08:35,811 INFO http_request_logger GET /api/v1/guardrails/validators/configs/efcb84a1-5fa0-42a9-9ef7-23b56ab0e23f - 200 [1.83ms] +2026-09-09 11:08:35,927 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-09 11:08:35,927 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-09 11:08:35,997 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 11:08:37,747 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 11:08:37,756 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 11:08:38,788 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 11:08:38,795 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 11:08:39,867 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 11:08:39,875 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 11:08:40,998 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 11:08:41,004 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 11:08:42,250 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 11:08:42,258 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 11:08:43,401 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 11:08:43,403 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 11:08:44,835 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 11:08:44,980 INFO watchfiles.main 3 changes detected +2026-09-09 11:29:07,934 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [40.10ms] +2026-09-09 11:29:08,670 INFO presidio-analyzer Created NLP engine: spacy. Loaded models: ['en'] +2026-09-09 11:29:08,671 INFO presidio-analyzer registry not provided, creating default. +2026-09-09 11:29:08,681 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 11:29:08,681 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 11:29:08,681 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 11:29:08,681 INFO presidio-analyzer Loaded recognizer: CreditCardRecognizer +2026-09-09 11:29:08,681 INFO presidio-analyzer Loaded recognizer: UsBankRecognizer +2026-09-09 11:29:08,681 INFO presidio-analyzer Loaded recognizer: UsLicenseRecognizer +2026-09-09 11:29:08,681 INFO presidio-analyzer Loaded recognizer: UsItinRecognizer +2026-09-09 11:29:08,682 INFO presidio-analyzer Loaded recognizer: UsPassportRecognizer +2026-09-09 11:29:08,682 INFO presidio-analyzer Loaded recognizer: UsSsnRecognizer +2026-09-09 11:29:08,682 INFO presidio-analyzer Loaded recognizer: NhsRecognizer +2026-09-09 11:29:08,682 INFO presidio-analyzer Loaded recognizer: EsNifRecognizer +2026-09-09 11:29:08,682 INFO presidio-analyzer Loaded recognizer: EsNieRecognizer +2026-09-09 11:29:08,682 INFO presidio-analyzer Loaded recognizer: ItDriverLicenseRecognizer +2026-09-09 11:29:08,682 INFO presidio-analyzer Loaded recognizer: ItFiscalCodeRecognizer +2026-09-09 11:29:08,682 INFO presidio-analyzer Loaded recognizer: ItVatCodeRecognizer +2026-09-09 11:29:08,682 INFO presidio-analyzer Loaded recognizer: ItIdentityCardRecognizer +2026-09-09 11:29:08,682 INFO presidio-analyzer Loaded recognizer: ItPassportRecognizer +2026-09-09 11:29:08,682 INFO presidio-analyzer Loaded recognizer: PlPeselRecognizer +2026-09-09 11:29:08,682 INFO presidio-analyzer Loaded recognizer: CryptoRecognizer +2026-09-09 11:29:08,682 INFO presidio-analyzer Loaded recognizer: DateRecognizer +2026-09-09 11:29:08,682 INFO presidio-analyzer Loaded recognizer: EmailRecognizer +2026-09-09 11:29:08,683 INFO presidio-analyzer Loaded recognizer: IbanRecognizer +2026-09-09 11:29:08,683 INFO presidio-analyzer Loaded recognizer: IpRecognizer +2026-09-09 11:29:08,683 INFO presidio-analyzer Loaded recognizer: MedicalLicenseRecognizer +2026-09-09 11:29:08,683 INFO presidio-analyzer Loaded recognizer: MacAddressRecognizer +2026-09-09 11:29:08,683 INFO presidio-analyzer Loaded recognizer: PhoneRecognizer +2026-09-09 11:29:08,683 INFO presidio-analyzer Loaded recognizer: UrlRecognizer +2026-09-09 11:29:08,683 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: es, registry supported languages: en +2026-09-09 11:29:08,683 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: it, registry supported languages: en +2026-09-09 11:29:08,683 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - CreditCardRecognizer supported languages: pl, registry supported languages: en +2026-09-09 11:29:08,683 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - EsNifRecognizer supported languages: es, registry supported languages: en +2026-09-09 11:29:08,683 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - EsNieRecognizer supported languages: es, registry supported languages: en +2026-09-09 11:29:08,683 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItDriverLicenseRecognizer supported languages: it, registry supported languages: en +2026-09-09 11:29:08,683 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItFiscalCodeRecognizer supported languages: it, registry supported languages: en +2026-09-09 11:29:08,683 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItVatCodeRecognizer supported languages: it, registry supported languages: en +2026-09-09 11:29:08,683 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItIdentityCardRecognizer supported languages: it, registry supported languages: en +2026-09-09 11:29:08,683 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - ItPassportRecognizer supported languages: it, registry supported languages: en +2026-09-09 11:29:08,683 WARNING presidio-analyzer Recognizer not added to registry because language is not supported by registry - PlPeselRecognizer supported languages: pl, registry supported languages: en +2026-09-09 11:29:08,683 INFO presidio-analyzer Loaded recognizer: SpacyRecognizer +2026-09-09 11:29:08,683 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-09 11:29:08,683 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-09 11:29:08,684 INFO presidio-analyzer Loaded recognizer: InPassportRecognizer +2026-09-09 11:29:08,684 INFO presidio-analyzer Loaded recognizer: InVehicleRegistrationRecognizer +2026-09-09 11:29:08,684 INFO presidio-analyzer Loaded recognizer: InVoterRecognizer +2026-09-09 11:29:08,735 INFO guardrails.execution request=4fc8a174-5c06-4af6-84f2-a6ecd29ddac6 starting guardrails execution (validators=['pii_remover', 'uli_slur_match']) input='Amit Gupta phone number is 919611188278. He is a doctor. motherfucker' +2026-09-09 11:29:08,756 WARNING presidio-analyzer Entity CARDINAL is not mapped to a Presidio entity, but keeping anyway. Add to `NerModelConfiguration.labels_to_ignore` to remove. +2026-09-09 11:29:08,835 INFO guardrails.execution request=4fc8a174-5c06-4af6-84f2-a6ecd29ddac6 guardrails execution finished (passed=True) output=' phone number is . he is a doctor. [REDACTED_SLUR]' +2026-09-09 11:29:08,839 INFO guardrails.execution request=4fc8a174-5c06-4af6-84f2-a6ecd29ddac6 step=1/2 validator=PIIRemover stage=output outcome=Outcome.FAIL start=2026-09-09T11:29:08.742444 end=2026-09-09T11:29:08.831524 duration_ms=89 input='Amit Gupta phone number is 919611188278. He is a doctor. motherfucker' output=' phone number is . He is a doctor. motherfucker' +2026-09-09 11:29:08,844 INFO guardrails.execution request=4fc8a174-5c06-4af6-84f2-a6ecd29ddac6 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:29:08.831557 end=2026-09-09T11:29:08.834245 duration_ms=2 input=' phone number is . He is a doctor. motherfucker' output=' phone number is . he is a doctor. [REDACTED_SLUR]' +2026-09-09 11:29:08,848 INFO http_request_logger POST /api/v1/guardrails/ - 200 [900.87ms] +2026-09-09 11:29:13,073 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [6.45ms] +2026-09-09 11:29:13,102 INFO guardrails.execution request=5dcafadb-99b3-410c-94d6-a5cc254e188c starting guardrails execution (validators=['gender_assumption_bias', 'answer_relevance_custom_llm']) input='Please avoid sharing private phone numbers or using slurs. What would you like help with?' +2026-09-09 11:29:13,113 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 11:29:15,186 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 11:29:15,189 INFO guardrails.execution request=5dcafadb-99b3-410c-94d6-a5cc254e188c guardrails execution finished (passed=True) output='Please avoid sharing private phone numbers or using slurs. What would you like help with?' +2026-09-09 11:29:15,197 INFO guardrails.execution request=5dcafadb-99b3-410c-94d6-a5cc254e188c step=1/2 validator=GenderAssumptionBias stage=output outcome=Outcome.PASS start=2026-09-09T11:29:13.103159 end=2026-09-09T11:29:13.104130 duration_ms=0 input='Please avoid sharing private phone numbers or using slurs. What would you like help with?' output='Please avoid sharing private phone numbers or using slurs. What would you like help with?' +2026-09-09 11:29:15,201 INFO guardrails.execution request=5dcafadb-99b3-410c-94d6-a5cc254e188c step=2/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T11:29:13.104136 end=2026-09-09T11:29:15.188527 duration_ms=2084 input='Please avoid sharing private phone numbers or using slurs. What would you like help with?' output='Please avoid sharing private phone numbers or using slurs. What would you like help with?' +2026-09-09 11:29:15,207 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2126.17ms] +2026-09-09 11:35:59,117 INFO watchfiles.main 3 changes detected +2026-09-09 11:35:59,129 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 11:35:59,143 INFO uvicorn.error Shutting down +2026-09-09 11:35:59,247 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:35:59,249 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:35:59,249 INFO uvicorn.error Finished server process [50297] +2026-09-09 11:35:59,683 INFO watchfiles.main 1 change detected +2026-09-09 11:36:04,956 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:36:05,468 INFO watchfiles.main 3 changes detected +2026-09-09 11:36:05,795 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:36:05,796 INFO uvicorn.error Started server process [54845] +2026-09-09 11:36:05,796 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:36:05,797 INFO uvicorn.error Application startup complete. +2026-09-09 11:36:06,517 INFO watchfiles.main 3 changes detected +2026-09-09 11:36:06,519 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 11:36:06,607 INFO uvicorn.error Shutting down +2026-09-09 11:36:06,709 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:36:06,712 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:36:06,713 INFO uvicorn.error Finished server process [54845] +2026-09-09 11:36:07,121 INFO watchfiles.main 1 change detected +2026-09-09 11:36:10,453 INFO watchfiles.main 3 changes detected +2026-09-09 11:36:10,455 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 11:36:11,318 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:36:12,148 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:36:12,149 INFO uvicorn.error Started server process [54857] +2026-09-09 11:36:12,149 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:36:12,150 INFO uvicorn.error Application startup complete. +2026-09-09 11:36:12,150 INFO uvicorn.error Shutting down +2026-09-09 11:36:12,251 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:36:12,252 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:36:12,252 INFO uvicorn.error Finished server process [54857] +2026-09-09 11:36:12,637 INFO watchfiles.main 4 changes detected +2026-09-09 11:36:16,569 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:36:17,355 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:36:17,355 INFO uvicorn.error Started server process [54875] +2026-09-09 11:36:17,356 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:36:17,357 INFO uvicorn.error Application startup complete. +2026-09-09 11:36:28,410 INFO watchfiles.main 3 changes detected +2026-09-09 11:36:28,413 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 11:36:28,459 INFO uvicorn.error Shutting down +2026-09-09 11:36:28,561 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:36:28,562 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:36:28,563 INFO uvicorn.error Finished server process [54875] +2026-09-09 11:36:28,952 INFO watchfiles.main 1 change detected +2026-09-09 11:36:32,406 INFO watchfiles.main 3 changes detected +2026-09-09 11:36:32,406 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 11:36:33,598 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:36:34,435 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:36:34,436 INFO uvicorn.error Started server process [54895] +2026-09-09 11:36:34,437 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:36:34,437 INFO uvicorn.error Application startup complete. +2026-09-09 11:36:34,438 INFO uvicorn.error Shutting down +2026-09-09 11:36:34,539 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:36:34,540 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:36:34,540 INFO uvicorn.error Finished server process [54895] +2026-09-09 11:36:34,921 INFO watchfiles.main 4 changes detected +2026-09-09 11:36:40,143 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:36:41,065 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:36:41,066 INFO uvicorn.error Started server process [54909] +2026-09-09 11:36:41,066 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:36:41,067 INFO uvicorn.error Application startup complete. +2026-09-09 11:36:41,897 INFO watchfiles.main 3 changes detected +2026-09-09 11:36:41,913 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 11:36:41,973 INFO uvicorn.error Shutting down +2026-09-09 11:36:42,074 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:36:42,075 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:36:42,075 INFO uvicorn.error Finished server process [54909] +2026-09-09 11:36:42,460 INFO watchfiles.main 1 change detected +2026-09-09 11:36:46,770 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:36:47,303 INFO watchfiles.main 3 changes detected +2026-09-09 11:36:47,632 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:36:47,632 INFO uvicorn.error Started server process [54926] +2026-09-09 11:36:47,633 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:36:47,633 INFO uvicorn.error Application startup complete. +2026-09-09 11:36:49,835 INFO watchfiles.main 3 changes detected +2026-09-09 11:36:49,838 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 11:36:49,855 INFO uvicorn.error Shutting down +2026-09-09 11:36:49,956 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:36:49,957 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:36:49,958 INFO uvicorn.error Finished server process [54926] +2026-09-09 11:36:50,348 INFO watchfiles.main 1 change detected +2026-09-09 11:36:54,604 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:36:55,130 INFO watchfiles.main 3 changes detected +2026-09-09 11:36:55,448 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:36:55,449 INFO uvicorn.error Started server process [54943] +2026-09-09 11:36:55,450 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:36:55,450 INFO uvicorn.error Application startup complete. +2026-09-09 11:36:55,649 INFO watchfiles.main 3 changes detected +2026-09-09 11:36:55,653 WARNING uvicorn.error WatchFiles detected changes in 'app/core/validators/topic_relevance.py'. Reloading... +2026-09-09 11:36:55,753 INFO uvicorn.error Shutting down +2026-09-09 11:36:55,856 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:36:55,858 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:36:55,859 INFO uvicorn.error Finished server process [54943] +2026-09-09 11:36:56,252 INFO watchfiles.main 1 change detected +2026-09-09 11:37:00,165 INFO watchfiles.main 3 changes detected +2026-09-09 11:37:00,165 WARNING uvicorn.error WatchFiles detected changes in 'app/core/validators/lexical_slur.py'. Reloading... +2026-09-09 11:37:00,269 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:37:01,062 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:37:01,062 INFO uvicorn.error Started server process [54954] +2026-09-09 11:37:01,063 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:37:01,063 INFO uvicorn.error Application startup complete. +2026-09-09 11:37:01,063 INFO uvicorn.error Shutting down +2026-09-09 11:37:01,165 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:37:01,165 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:37:01,166 INFO uvicorn.error Finished server process [54954] +2026-09-09 11:37:01,552 INFO watchfiles.main 4 changes detected +2026-09-09 11:37:03,868 INFO watchfiles.main 3 changes detected +2026-09-09 11:37:04,494 INFO watchfiles.main 3 changes detected +2026-09-09 11:37:04,496 WARNING uvicorn.error WatchFiles detected changes in 'app/core/validators/lexical_slur.py'. Reloading... +2026-09-09 11:37:05,438 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:37:06,150 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:37:06,151 INFO uvicorn.error Started server process [54973] +2026-09-09 11:37:06,152 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:37:06,152 INFO uvicorn.error Application startup complete. +2026-09-09 11:37:06,152 INFO uvicorn.error Shutting down +2026-09-09 11:37:06,254 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:37:06,254 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:37:06,254 INFO uvicorn.error Finished server process [54973] +2026-09-09 11:37:06,645 INFO watchfiles.main 1 change detected +2026-09-09 11:37:08,893 INFO watchfiles.main 3 changes detected +2026-09-09 11:37:09,255 INFO watchfiles.main 3 changes detected +2026-09-09 11:37:09,257 WARNING uvicorn.error WatchFiles detected changes in 'app/core/validators/answer_relevance_custom_llm.py'. Reloading... +2026-09-09 11:37:10,419 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:37:11,171 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:37:11,171 INFO uvicorn.error Started server process [54981] +2026-09-09 11:37:11,172 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:37:11,172 INFO uvicorn.error Application startup complete. +2026-09-09 11:37:11,173 INFO uvicorn.error Shutting down +2026-09-09 11:37:11,274 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:37:11,274 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:37:11,275 INFO uvicorn.error Finished server process [54981] +2026-09-09 11:37:11,706 INFO watchfiles.main 4 changes detected +2026-09-09 11:37:13,364 INFO watchfiles.main 3 changes detected +2026-09-09 11:37:13,366 WARNING uvicorn.error WatchFiles detected changes in 'app/core/validators/pii_remover.py'. Reloading... +2026-09-09 11:37:15,389 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:37:16,083 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:37:16,084 INFO uvicorn.error Started server process [54993] +2026-09-09 11:37:16,084 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:37:16,085 INFO uvicorn.error Application startup complete. +2026-09-09 11:37:16,085 INFO uvicorn.error Shutting down +2026-09-09 11:37:16,186 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:37:16,187 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:37:16,187 INFO uvicorn.error Finished server process [54993] +2026-09-09 11:37:16,575 INFO watchfiles.main 4 changes detected +2026-09-09 11:37:20,338 INFO watchfiles.main 3 changes detected +2026-09-09 11:37:20,344 WARNING uvicorn.error WatchFiles detected changes in 'app/core/validators/topic_relevance_llm.py'. Reloading... +2026-09-09 11:37:20,430 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:37:21,148 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:37:21,149 INFO uvicorn.error Started server process [55003] +2026-09-09 11:37:21,149 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:37:21,150 INFO uvicorn.error Application startup complete. +2026-09-09 11:37:21,150 INFO uvicorn.error Shutting down +2026-09-09 11:37:21,251 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:37:21,251 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:37:21,251 INFO uvicorn.error Finished server process [55003] +2026-09-09 11:37:21,636 INFO watchfiles.main 4 changes detected +2026-09-09 11:37:24,384 INFO watchfiles.main 3 changes detected +2026-09-09 11:37:24,385 WARNING uvicorn.error WatchFiles detected changes in 'app/core/telemetry.py'. Reloading... +2026-09-09 11:37:25,406 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:37:26,129 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:37:26,129 INFO uvicorn.error Started server process [55016] +2026-09-09 11:37:26,130 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:37:26,130 INFO uvicorn.error Application startup complete. +2026-09-09 11:37:26,130 INFO uvicorn.error Shutting down +2026-09-09 11:37:26,232 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:37:26,232 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:37:26,233 INFO uvicorn.error Finished server process [55016] +2026-09-09 11:37:26,627 INFO watchfiles.main 4 changes detected +2026-09-09 11:37:29,897 INFO watchfiles.main 3 changes detected +2026-09-09 11:37:29,898 WARNING uvicorn.error WatchFiles detected changes in 'app/core/telemetry.py'. Reloading... +2026-09-09 11:37:30,336 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:37:31,050 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:37:31,050 INFO uvicorn.error Started server process [55025] +2026-09-09 11:37:31,051 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:37:31,051 INFO uvicorn.error Application startup complete. +2026-09-09 11:37:31,052 INFO uvicorn.error Shutting down +2026-09-09 11:37:31,153 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:37:31,154 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:37:31,154 INFO uvicorn.error Finished server process [55025] +2026-09-09 11:37:31,528 INFO watchfiles.main 4 changes detected +2026-09-09 11:37:33,883 INFO watchfiles.main 3 changes detected +2026-09-09 11:37:33,892 WARNING uvicorn.error WatchFiles detected changes in 'app/core/telemetry.py'. Reloading... +2026-09-09 11:37:35,594 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:37:36,316 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:37:36,316 INFO uvicorn.error Started server process [55040] +2026-09-09 11:37:36,317 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:37:36,317 INFO uvicorn.error Application startup complete. +2026-09-09 11:37:36,318 INFO uvicorn.error Shutting down +2026-09-09 11:37:36,419 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:37:36,420 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:37:36,420 INFO uvicorn.error Finished server process [55040] +2026-09-09 11:37:36,802 INFO watchfiles.main 4 changes detected +2026-09-09 11:37:40,689 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:37:41,413 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:37:41,414 INFO uvicorn.error Started server process [55050] +2026-09-09 11:37:41,414 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:37:41,415 INFO uvicorn.error Application startup complete. +2026-09-09 11:38:14,772 INFO watchfiles.main 3 changes detected +2026-09-09 11:38:14,775 WARNING uvicorn.error WatchFiles detected changes in 'app/core/validators/config/llamaguard_7b_safety_validator_config.py'. Reloading... +2026-09-09 11:38:14,822 INFO uvicorn.error Shutting down +2026-09-09 11:38:14,930 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:38:14,932 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:38:14,933 INFO uvicorn.error Finished server process [55050] +2026-09-09 11:38:15,341 INFO watchfiles.main 1 change detected +2026-09-09 11:38:18,143 INFO watchfiles.main 3 changes detected +2026-09-09 11:38:19,426 INFO watchfiles.main 3 changes detected +2026-09-09 11:38:19,427 WARNING uvicorn.error WatchFiles detected changes in 'app/core/validators/config/nsfw_text_safety_validator_config.py'. Reloading... +2026-09-09 11:38:20,229 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:38:21,061 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:38:21,062 INFO uvicorn.error Started server process [55109] +2026-09-09 11:38:21,062 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:38:21,063 INFO uvicorn.error Application startup complete. +2026-09-09 11:38:21,063 INFO uvicorn.error Shutting down +2026-09-09 11:38:21,164 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:38:21,165 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:38:21,165 INFO uvicorn.error Finished server process [55109] +2026-09-09 11:38:21,546 INFO watchfiles.main 1 change detected +2026-09-09 11:38:23,698 INFO watchfiles.main 3 changes detected +2026-09-09 11:38:23,699 WARNING uvicorn.error WatchFiles detected changes in 'app/schemas/guardrail_config.py'. Reloading... +2026-09-09 11:38:25,251 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:38:25,998 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:38:25,998 INFO uvicorn.error Started server process [55121] +2026-09-09 11:38:25,999 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:38:25,999 INFO uvicorn.error Application startup complete. +2026-09-09 11:38:25,999 INFO uvicorn.error Shutting down +2026-09-09 11:38:26,101 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:38:26,101 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:38:26,101 INFO uvicorn.error Finished server process [55121] +2026-09-09 11:38:26,541 INFO watchfiles.main 7 changes detected +2026-09-09 11:38:29,265 INFO watchfiles.main 3 changes detected +2026-09-09 11:38:29,267 WARNING uvicorn.error WatchFiles detected changes in 'app/core/db.py'. Reloading... +2026-09-09 11:38:30,347 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:38:31,043 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:38:31,043 INFO uvicorn.error Started server process [55131] +2026-09-09 11:38:31,044 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:38:31,044 INFO uvicorn.error Application startup complete. +2026-09-09 11:38:31,045 INFO uvicorn.error Shutting down +2026-09-09 11:38:31,146 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:38:31,147 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:38:31,147 INFO uvicorn.error Finished server process [55131] +2026-09-09 11:38:31,526 INFO watchfiles.main 4 changes detected +2026-09-09 11:38:35,197 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:38:35,944 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:38:35,944 INFO uvicorn.error Started server process [55146] +2026-09-09 11:38:35,945 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:38:35,946 INFO uvicorn.error Application startup complete. +2026-09-09 11:38:38,092 INFO watchfiles.main 3 changes detected +2026-09-09 11:38:38,094 WARNING uvicorn.error WatchFiles detected changes in 'app/core/config.py'. Reloading... +2026-09-09 11:38:38,169 INFO uvicorn.error Shutting down +2026-09-09 11:38:38,271 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:38:38,272 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:38:38,272 INFO uvicorn.error Finished server process [55146] +2026-09-09 11:38:38,651 INFO watchfiles.main 4 changes detected +2026-09-09 11:38:42,394 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:38:43,055 INFO watchfiles.main 3 changes detected +2026-09-09 11:38:43,055 WARNING uvicorn.error WatchFiles detected changes in 'app/core/config.py'. Reloading... +2026-09-09 11:38:43,131 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:38:43,131 INFO uvicorn.error Started server process [55155] +2026-09-09 11:38:43,132 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:38:43,132 INFO uvicorn.error Application startup complete. +2026-09-09 11:38:43,133 INFO uvicorn.error Shutting down +2026-09-09 11:38:43,234 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:38:43,234 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:38:43,234 INFO uvicorn.error Finished server process [55155] +2026-09-09 11:38:43,627 INFO watchfiles.main 4 changes detected +2026-09-09 11:38:47,290 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:38:47,993 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:38:47,994 INFO uvicorn.error Started server process [55169] +2026-09-09 11:38:47,994 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:38:47,995 INFO uvicorn.error Application startup complete. +2026-09-09 11:38:55,630 INFO watchfiles.main 3 changes detected +2026-09-09 11:38:55,632 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 11:38:55,668 INFO uvicorn.error Shutting down +2026-09-09 11:38:55,774 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:38:55,776 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:38:55,777 INFO uvicorn.error Finished server process [55169] +2026-09-09 11:38:56,183 INFO watchfiles.main 1 change detected +2026-09-09 11:39:01,015 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:39:01,831 INFO watchfiles.main 3 changes detected +2026-09-09 11:39:01,866 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:39:01,866 INFO uvicorn.error Started server process [55194] +2026-09-09 11:39:01,867 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:39:01,867 INFO uvicorn.error Application startup complete. +2026-09-09 11:39:02,289 INFO watchfiles.main 3 changes detected +2026-09-09 11:39:02,290 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 11:39:02,372 INFO uvicorn.error Shutting down +2026-09-09 11:39:02,475 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:39:02,477 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:39:02,478 INFO uvicorn.error Finished server process [55194] +2026-09-09 11:39:02,877 INFO watchfiles.main 1 change detected +2026-09-09 11:39:07,257 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:39:07,778 INFO watchfiles.main 3 changes detected +2026-09-09 11:39:08,105 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:39:08,106 INFO uvicorn.error Started server process [55205] +2026-09-09 11:39:08,106 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:39:08,107 INFO uvicorn.error Application startup complete. +2026-09-09 11:39:10,868 INFO watchfiles.main 3 changes detected +2026-09-09 11:39:10,868 WARNING uvicorn.error WatchFiles detected changes in 'app/api/routes/guardrails.py'. Reloading... +2026-09-09 11:39:10,937 INFO uvicorn.error Shutting down +2026-09-09 11:39:11,038 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:39:11,044 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:39:11,045 INFO uvicorn.error Finished server process [55205] +2026-09-09 11:39:11,433 INFO watchfiles.main 1 change detected +2026-09-09 11:39:15,847 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:39:16,379 INFO watchfiles.main 3 changes detected +2026-09-09 11:39:16,697 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:39:16,697 INFO uvicorn.error Started server process [55222] +2026-09-09 11:39:16,698 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:39:16,698 INFO uvicorn.error Application startup complete. +2026-09-09 11:39:20,725 INFO watchfiles.main 3 changes detected +2026-09-09 11:39:20,727 WARNING uvicorn.error WatchFiles detected changes in 'app/evaluation/ban_list/run.py'. Reloading... +2026-09-09 11:39:20,736 INFO uvicorn.error Shutting down +2026-09-09 11:39:20,837 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:39:20,838 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:39:20,838 INFO uvicorn.error Finished server process [55222] +2026-09-09 11:39:21,222 INFO watchfiles.main 1 change detected +2026-09-09 11:39:25,440 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:39:26,235 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:39:26,236 INFO uvicorn.error Started server process [55239] +2026-09-09 11:39:26,236 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:39:26,237 INFO uvicorn.error Application startup complete. +2026-09-09 11:39:31,042 INFO watchfiles.main 3 changes detected +2026-09-09 11:39:31,046 WARNING uvicorn.error WatchFiles detected changes in 'app/evaluation/ban_list/run.py'. Reloading... +2026-09-09 11:39:31,084 INFO uvicorn.error Shutting down +2026-09-09 11:39:31,186 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:39:31,188 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:39:31,189 INFO uvicorn.error Finished server process [55239] +2026-09-09 11:39:31,587 INFO watchfiles.main 1 change detected +2026-09-09 11:39:36,529 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:39:37,251 INFO watchfiles.main 3 changes detected +2026-09-09 11:39:37,252 WARNING uvicorn.error WatchFiles detected changes in 'app/evaluation/pii/entity_metrics.py'. Reloading... +2026-09-09 11:39:37,411 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:39:37,412 INFO uvicorn.error Started server process [55262] +2026-09-09 11:39:37,412 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:39:37,413 INFO uvicorn.error Application startup complete. +2026-09-09 11:39:37,413 INFO uvicorn.error Shutting down +2026-09-09 11:39:37,514 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:39:37,515 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:39:37,515 INFO uvicorn.error Finished server process [55262] +2026-09-09 11:39:37,896 INFO watchfiles.main 1 change detected +2026-09-09 11:39:42,527 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:39:43,369 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:39:43,370 INFO uvicorn.error Started server process [55326] +2026-09-09 11:39:43,370 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:39:43,370 INFO uvicorn.error Application startup complete. +2026-09-09 11:39:47,520 INFO watchfiles.main 3 changes detected +2026-09-09 11:39:47,523 WARNING uvicorn.error WatchFiles detected changes in 'app/evaluation/pii/entity_metrics.py'. Reloading... +2026-09-09 11:39:47,611 INFO uvicorn.error Shutting down +2026-09-09 11:39:47,713 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:39:47,714 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:39:47,715 INFO uvicorn.error Finished server process [55326] +2026-09-09 11:39:48,103 INFO watchfiles.main 1 change detected +2026-09-09 11:39:50,759 INFO watchfiles.main 3 changes detected +2026-09-09 11:39:50,760 WARNING uvicorn.error WatchFiles detected changes in 'app/evaluation/pii/entity_metrics.py'. Reloading... +2026-09-09 11:39:52,554 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:39:53,347 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:39:53,347 INFO uvicorn.error Started server process [55537] +2026-09-09 11:39:53,348 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:39:53,348 INFO uvicorn.error Application startup complete. +2026-09-09 11:39:53,349 INFO uvicorn.error Shutting down +2026-09-09 11:39:53,450 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:39:53,451 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:39:53,451 INFO uvicorn.error Finished server process [55537] +2026-09-09 11:39:53,835 INFO watchfiles.main 1 change detected +2026-09-09 11:39:57,326 INFO watchfiles.main 3 changes detected +2026-09-09 11:39:57,328 WARNING uvicorn.error WatchFiles detected changes in 'app/schemas/llm_prompt_config.py'. Reloading... +2026-09-09 11:39:57,953 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:39:58,835 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:39:58,835 INFO uvicorn.error Started server process [55555] +2026-09-09 11:39:58,836 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:39:58,836 INFO uvicorn.error Application startup complete. +2026-09-09 11:39:58,836 INFO uvicorn.error Shutting down +2026-09-09 11:39:58,938 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:39:58,938 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:39:58,939 INFO uvicorn.error Finished server process [55555] +2026-09-09 11:39:59,318 INFO watchfiles.main 4 changes detected +2026-09-09 11:40:03,294 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:40:04,083 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:40:04,083 INFO uvicorn.error Started server process [55706] +2026-09-09 11:40:04,084 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:40:04,084 INFO uvicorn.error Application startup complete. +2026-09-09 11:40:17,367 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:40:18,237 INFO guardrails.execution request=ed84cfae-f256-404a-90b8-7457857ba035 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:40:18,239 INFO guardrails.execution request=ed84cfae-f256-404a-90b8-7457857ba035 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:40:18,242 INFO guardrails.execution request=ed84cfae-f256-404a-90b8-7457857ba035 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T11:40:18.238417 end=2026-09-09T11:40:18.238521 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:40:18,246 INFO http_request_logger POST /api/v1/guardrails/ - 200 [33.64ms] +2026-09-09 11:40:18,261 INFO guardrails.execution request=13e2994b-baa1-4718-9560-f460b54f0899 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-09 11:40:18,262 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 13e2994b-baa1-4718-9560-f460b54f0899: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 343, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-09 11:40:18,267 INFO guardrails.execution request=13e2994b-baa1-4718-9560-f460b54f0899 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-09T11:40:18.262053 end=2026-09-09T11:40:18.262133 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-09 11:40:18,269 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.93ms] +2026-09-09 11:40:18,284 INFO guardrails.execution request=b2aa6003-491d-4d2b-8353-05354928a46d starting guardrails execution (validators=['answer_relevance_custom_llm']) input='What are the common symptoms of diabetes?' +2026-09-09 11:40:18,285 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log b2aa6003-491d-4d2b-8353-05354928a46d: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 343, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Both 'query' and 'answer' fields must be non-empty. +2026-09-09 11:40:18,288 INFO guardrails.execution request=b2aa6003-491d-4d2b-8353-05354928a46d step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-09T11:40:18.285432 end=2026-09-09T11:40:18.285487 duration_ms=0 input='What are the common symptoms of diabetes?' output=None +2026-09-09 11:40:18,290 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.95ms] +2026-09-09 11:40:18,305 INFO guardrails.execution request=cd76b1ef-ad2e-4c37-b63f-c663f38bae91 starting guardrails execution (validators=['answer_relevance_custom_llm']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:40:18,306 INFO guardrails.execution request=cd76b1ef-ad2e-4c37-b63f-c663f38bae91 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:40:18,308 INFO guardrails.execution request=cd76b1ef-ad2e-4c37-b63f-c663f38bae91 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T11:40:18.305720 end=2026-09-09T11:40:18.305795 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:40:18,311 INFO http_request_logger POST /api/v1/guardrails/ - 200 [15.97ms] +2026-09-09 11:40:18,328 INFO guardrails.execution request=022f396e-39b1-45ca-b16f-800b21b6aa66 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='The Eiffel Tower was built in 1889 and is located in Paris, France.' +2026-09-09 11:40:18,329 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 022f396e-39b1-45ca-b16f-800b21b6aa66: Validation failed for field with errors: The answer is not relevant to the query. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 343, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The answer is not relevant to the query. +2026-09-09 11:40:18,332 INFO guardrails.execution request=022f396e-39b1-45ca-b16f-800b21b6aa66 step=1/1 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.FAIL start=2026-09-09T11:40:18.329175 end=2026-09-09T11:40:18.329259 duration_ms=0 input='The Eiffel Tower was built in 1889 and is located in Paris, France.' output=None +2026-09-09 11:40:18,347 INFO http_request_logger POST /api/v1/guardrails/ - 200 [30.34ms] +2026-09-09 11:40:18,381 INFO guardrails.execution request=ebef62e0-d5bd-4641-a92a-1a50a2c68573 starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-09 11:40:18,383 INFO guardrails.execution request=ebef62e0-d5bd-4641-a92a-1a50a2c68573 guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-09 11:40:18,385 INFO guardrails.execution request=ebef62e0-d5bd-4641-a92a-1a50a2c68573 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T11:40:18.382157 end=2026-09-09T11:40:18.382245 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' +2026-09-09 11:40:18,388 INFO guardrails.execution request=ebef62e0-d5bd-4641-a92a-1a50a2c68573 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:18.382252 end=2026-09-09T11:40:18.382372 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit ba…' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue. Visit b …' +2026-09-09 11:40:18,393 INFO http_request_logger POST /api/v1/guardrails/ - 200 [25.27ms] +2026-09-09 11:40:18,421 INFO guardrails.execution request=a0c71444-77c2-4d9a-9807-cdfa9dc6a6b4 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Diabetes symptoms include fuck fatigue.' +2026-09-09 11:40:18,428 INFO guardrails.execution request=a0c71444-77c2-4d9a-9807-cdfa9dc6a6b4 guardrails execution finished (passed=True) output='' +2026-09-09 11:40:18,432 INFO guardrails.execution request=a0c71444-77c2-4d9a-9807-cdfa9dc6a6b4 step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T11:40:18.424585 end=2026-09-09T11:40:18.424679 duration_ms=0 input='Diabetes symptoms include fuck fatigue.' output='Diabetes symptoms include fuck fatigue.' +2026-09-09 11:40:18,439 INFO guardrails.execution request=a0c71444-77c2-4d9a-9807-cdfa9dc6a6b4 step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:18.424685 end=2026-09-09T11:40:18.427207 duration_ms=2 input='Diabetes symptoms include fuck fatigue.' output='' +2026-09-09 11:40:18,445 INFO http_request_logger POST /api/v1/guardrails/ - 200 [40.91ms] +2026-09-09 11:40:18,468 INFO guardrails.execution request=a4cd1077-9b51-402b-9ca7-a7576e9589fa starting guardrails execution (validators=['answer_relevance_custom_llm', 'uli_slur_match']) input='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-09 11:40:18,472 INFO guardrails.execution request=a4cd1077-9b51-402b-9ca7-a7576e9589fa guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-09 11:40:18,476 INFO guardrails.execution request=a4cd1077-9b51-402b-9ca7-a7576e9589fa step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T11:40:18.469563 end=2026-09-09T11:40:18.469643 duration_ms=0 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='Diabetes symptoms include chakki fatigue and increased thirst.' +2026-09-09 11:40:18,478 INFO guardrails.execution request=a4cd1077-9b51-402b-9ca7-a7576e9589fa step=2/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:18.469648 end=2026-09-09T11:40:18.472015 duration_ms=2 input='Diabetes symptoms include chakki fatigue and increased thirst.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and increased thirst.' +2026-09-09 11:40:18,482 INFO http_request_logger POST /api/v1/guardrails/ - 200 [32.27ms] +2026-09-09 11:40:18,502 INFO guardrails.execution request=02532114-6fcc-4f65-bf67-a93024965a4a starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free']) input='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-09 11:40:18,503 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 02532114-6fcc-4f65-bf67-a93024965a4a: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 343, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Bloody hell, the symptoms include thirst and fatigue. contains profanity. Please return profanity-free output. +2026-09-09 11:40:18,508 INFO guardrails.execution request=02532114-6fcc-4f65-bf67-a93024965a4a step=1/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T11:40:18.502691 end=2026-09-09T11:40:18.502768 duration_ms=0 input='Bloody hell, the symptoms include thirst and fatigue.' output='Bloody hell, the symptoms include thirst and fatigue.' +2026-09-09 11:40:18,511 INFO guardrails.execution request=02532114-6fcc-4f65-bf67-a93024965a4a step=2/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:18.502772 end=2026-09-09T11:40:18.503806 duration_ms=1 input='Bloody hell, the symptoms include thirst and fatigue.' output=None +2026-09-09 11:40:18,514 INFO http_request_logger POST /api/v1/guardrails/ - 200 [26.05ms] +2026-09-09 11:40:18,547 INFO guardrails.execution request=c9d64a8c-3dd3-4ec3-a2db-237280e8d7ee starting guardrails execution (validators=['answer_relevance_custom_llm', 'ban_list', 'profanity_free', 'uli_slur_match', 'gender_assumption_bias']) input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:40:18,552 INFO guardrails.execution request=c9d64a8c-3dd3-4ec3-a2db-237280e8d7ee guardrails execution finished (passed=True) output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:40:18,556 INFO guardrails.execution request=c9d64a8c-3dd3-4ec3-a2db-237280e8d7ee step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T11:40:18.548594 end=2026-09-09T11:40:18.548707 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:40:18,559 INFO guardrails.execution request=c9d64a8c-3dd3-4ec3-a2db-237280e8d7ee step=2/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T11:40:18.548713 end=2026-09-09T11:40:18.548788 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:40:18,563 INFO guardrails.execution request=c9d64a8c-3dd3-4ec3-a2db-237280e8d7ee step=3/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T11:40:18.548792 end=2026-09-09T11:40:18.549981 duration_ms=1 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:40:18,567 INFO guardrails.execution request=c9d64a8c-3dd3-4ec3-a2db-237280e8d7ee step=4/5 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T11:40:18.549991 end=2026-09-09T11:40:18.550647 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:40:18,570 INFO guardrails.execution request=c9d64a8c-3dd3-4ec3-a2db-237280e8d7ee step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.PASS start=2026-09-09T11:40:18.550653 end=2026-09-09T11:40:18.551360 duration_ms=0 input='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' output='Common symptoms of diabetes include increased thirst, frequent urination, unexplained weight loss, and fatigue.' +2026-09-09 11:40:18,575 INFO http_request_logger POST /api/v1/guardrails/ - 200 [53.19ms] +2026-09-09 11:40:18,601 INFO guardrails.execution request=13ab24e6-65c8-4f4a-a5c5-44e89c3b7ac8 starting guardrails execution (validators=['answer_relevance_custom_llm', 'profanity_free', 'uli_slur_match', 'ban_list', 'gender_assumption_bias']) input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-09 11:40:18,606 INFO guardrails.execution request=13ab24e6-65c8-4f4a-a5c5-44e89c3b7ac8 guardrails execution finished (passed=True) output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-09 11:40:18,610 INFO guardrails.execution request=13ab24e6-65c8-4f4a-a5c5-44e89c3b7ac8 step=1/5 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T11:40:18.602510 end=2026-09-09T11:40:18.602606 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-09 11:40:18,614 INFO guardrails.execution request=13ab24e6-65c8-4f4a-a5c5-44e89c3b7ac8 step=2/5 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T11:40:18.602612 end=2026-09-09T11:40:18.603723 duration_ms=1 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' +2026-09-09 11:40:18,616 INFO guardrails.execution request=13ab24e6-65c8-4f4a-a5c5-44e89c3b7ac8 step=3/5 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:18.603730 end=2026-09-09T11:40:18.604599 duration_ms=0 input='Diabetes symptoms include chakki fatigue and thirst. The policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-09 11:40:18,619 INFO guardrails.execution request=13ab24e6-65c8-4f4a-a5c5-44e89c3b7ac8 step=4/5 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T11:40:18.604607 end=2026-09-09T11:40:18.604685 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' +2026-09-09 11:40:18,622 INFO guardrails.execution request=13ab24e6-65c8-4f4a-a5c5-44e89c3b7ac8 step=5/5 validator=GenderAssumptionBias stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:18.604689 end=2026-09-09T11:40:18.605366 duration_ms=0 input='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the policeman confirmed these symptoms.' output='diabetes symptoms include [REDACTED_SLUR] fatigue and thirst. the police officer confirmed these symptoms.' +2026-09-09 11:40:18,626 INFO http_request_logger POST /api/v1/guardrails/ - 200 [43.63ms] +2026-09-09 11:40:18,657 INFO app.crud.ban_list created ban list id=09e4adf8-163c-4eea-8463-9afafff3cc4d org=1 project=1 +2026-09-09 11:40:18,658 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [8.04ms] +2026-09-09 11:40:18,665 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [2.27ms] +2026-09-09 11:40:18,672 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.88ms] +2026-09-09 11:40:18,677 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.84ms] +2026-09-09 11:40:18,682 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [1.08ms] +2026-09-09 11:40:18,688 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 422 [0.87ms] +2026-09-09 11:40:18,703 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [4.64ms] +2026-09-09 11:40:18,716 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [4.46ms] +2026-09-09 11:40:18,724 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [3.02ms] +2026-09-09 11:40:18,735 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [3.08ms] +2026-09-09 11:40:18,745 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.50ms] +2026-09-09 11:40:18,748 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.45ms] +2026-09-09 11:40:18,758 INFO app.crud.ban_list created ban list id=13f1df46-cf8b-4c90-af6a-ee14c4d37429 org=1 project=1 +2026-09-09 11:40:18,758 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [4.93ms] +2026-09-09 11:40:18,759 INFO http_request_logger GET /api/v1/guardrails/ban_lists/13f1df46-cf8b-4c90-af6a-ee14c4d37429/ - 307 [0.11ms] +2026-09-09 11:40:18,763 INFO http_request_logger GET /api/v1/guardrails/ban_lists/13f1df46-cf8b-4c90-af6a-ee14c4d37429 - 200 [3.20ms] +2026-09-09 11:40:18,773 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.27ms] +2026-09-09 11:40:18,773 INFO http_request_logger GET /api/v1/guardrails/ban_lists/f7dc2f2b-286a-49ba-bf1f-c81de52c61a6/ - 307 [0.10ms] +2026-09-09 11:40:18,776 INFO http_request_logger GET /api/v1/guardrails/ban_lists/f7dc2f2b-286a-49ba-bf1f-c81de52c61a6 - 200 [2.02ms] +2026-09-09 11:40:18,780 INFO http_request_logger GET /api/v1/guardrails/ban_lists/f6e8a42a-9909-445d-99d5-804cd88bfe51/ - 307 [0.09ms] +2026-09-09 11:40:18,783 INFO http_request_logger GET /api/v1/guardrails/ban_lists/f6e8a42a-9909-445d-99d5-804cd88bfe51 - 404 [2.11ms] +2026-09-09 11:40:18,791 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.07ms] +2026-09-09 11:40:18,792 INFO http_request_logger GET /api/v1/guardrails/ban_lists/a2138494-5f03-49c4-9203-657637557274/ - 307 [0.09ms] +2026-09-09 11:40:18,793 INFO http_request_logger GET /api/v1/guardrails/ban_lists/a2138494-5f03-49c4-9203-657637557274 - 403 [1.63ms] +2026-09-09 11:40:18,802 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.87ms] +2026-09-09 11:40:18,802 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/d6360411-1a15-43ae-83af-6339fc4aa8a4/ - 307 [0.08ms] +2026-09-09 11:40:18,807 INFO app.crud.ban_list updated ban list id=d6360411-1a15-43ae-83af-6339fc4aa8a4 +2026-09-09 11:40:18,807 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/d6360411-1a15-43ae-83af-6339fc4aa8a4 - 200 [4.44ms] +2026-09-09 11:40:18,816 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.10ms] +2026-09-09 11:40:18,816 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/9dad7fd9-ad03-455e-a93b-6745ab1ddc53/ - 307 [0.09ms] +2026-09-09 11:40:18,820 INFO app.crud.ban_list updated ban list id=9dad7fd9-ad03-455e-a93b-6745ab1ddc53 +2026-09-09 11:40:18,821 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/9dad7fd9-ad03-455e-a93b-6745ab1ddc53 - 200 [4.15ms] +2026-09-09 11:40:18,825 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/95e42b80-0b82-4e34-a7db-a8a9eca39bc1/ - 307 [0.09ms] +2026-09-09 11:40:18,828 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/95e42b80-0b82-4e34-a7db-a8a9eca39bc1 - 404 [2.02ms] +2026-09-09 11:40:18,835 INFO app.crud.ban_list created ban list id=1fe2c2d2-4cfc-4e25-9944-3fb2bc2c2192 org=1 project=1 +2026-09-09 11:40:18,836 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [3.96ms] +2026-09-09 11:40:18,836 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/1fe2c2d2-4cfc-4e25-9944-3fb2bc2c2192/ - 307 [0.09ms] +2026-09-09 11:40:18,839 INFO http_request_logger PATCH /api/v1/guardrails/ban_lists/1fe2c2d2-4cfc-4e25-9944-3fb2bc2c2192 - 403 [2.20ms] +2026-09-09 11:40:18,848 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [2.07ms] +2026-09-09 11:40:18,849 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/0ab4a4d7-915a-4861-b399-b1786308f331/ - 307 [0.09ms] +2026-09-09 11:40:18,851 INFO app.crud.ban_list deleted ban list id=0ab4a4d7-915a-4861-b399-b1786308f331 +2026-09-09 11:40:18,851 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/0ab4a4d7-915a-4861-b399-b1786308f331 - 200 [2.02ms] +2026-09-09 11:40:18,855 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/1deb22e1-5df8-4cea-98bc-6a9b59f695ee/ - 307 [0.08ms] +2026-09-09 11:40:18,857 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/1deb22e1-5df8-4cea-98bc-6a9b59f695ee - 404 [1.61ms] +2026-09-09 11:40:18,863 INFO http_request_logger GET /api/v1/guardrails/ban_lists/ - 200 [1.81ms] +2026-09-09 11:40:18,864 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/64e8f96e-2ab8-4e4c-8aa3-ef4eff00c937/ - 307 [0.08ms] +2026-09-09 11:40:18,866 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/64e8f96e-2ab8-4e4c-8aa3-ef4eff00c937 - 403 [2.09ms] +2026-09-09 11:40:18,874 INFO app.crud.ban_list created ban list id=70993c16-bd0c-424e-beae-61f0125c3a3e org=1 project=1 +2026-09-09 11:40:18,874 INFO http_request_logger POST /api/v1/guardrails/ban_lists/ - 200 [3.98ms] +2026-09-09 11:40:18,875 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/70993c16-bd0c-424e-beae-61f0125c3a3e/ - 307 [0.10ms] +2026-09-09 11:40:18,877 INFO http_request_logger DELETE /api/v1/guardrails/ban_lists/70993c16-bd0c-424e-beae-61f0125c3a3e - 403 [2.23ms] +2026-09-09 11:40:18,972 INFO guardrails.execution request=07387d2b-3026-4d51-965d-0d67570355c5 starting guardrails execution (validators=[]) input='hello world' +2026-09-09 11:40:18,972 INFO guardrails.execution request=07387d2b-3026-4d51-965d-0d67570355c5 guardrails execution finished (passed=True) output='clean text' +2026-09-09 11:40:18,975 INFO http_request_logger POST /api/v1/guardrails/ - 200 [6.17ms] +2026-09-09 11:40:18,983 INFO guardrails.execution request=d4a0c8c4-2cd8-40c0-a6b7-aaa9b0b7eff4 starting guardrails execution (validators=[]) input='my phone is 999999' +2026-09-09 11:40:18,983 INFO guardrails.execution request=d4a0c8c4-2cd8-40c0-a6b7-aaa9b0b7eff4 guardrails execution finished (passed=False) output=None +2026-09-09 11:40:18,984 INFO http_request_logger POST /api/v1/guardrails/ - 200 [5.65ms] +2026-09-09 11:40:18,990 INFO guardrails.execution request=bc816b2c-95d3-4624-ba9d-f458f7acad88 starting guardrails execution (validators=[]) input='tell me about buildings' +2026-09-09 11:40:18,990 INFO guardrails.execution request=bc816b2c-95d3-4624-ba9d-f458f7acad88 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Input is outside the allowed topic scope.' +2026-09-09 11:40:18,991 INFO http_request_logger POST /api/v1/guardrails/ - 200 [3.82ms] +2026-09-09 11:40:18,997 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 1326c3dd-db5b-4775-bbdf-bf62c97f2736: Invalid validator config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 327, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid validator config +2026-09-09 11:40:18,999 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.77ms] +2026-09-09 11:40:19,013 INFO guardrails.execution request=69365538-6f14-4049-8729-fb2bbf1fbf1f starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-09 11:40:19,015 INFO guardrails.execution request=69365538-6f14-4049-8729-fb2bbf1fbf1f guardrails execution finished (passed=True) output='this contains b' +2026-09-09 11:40:19,018 INFO guardrails.execution request=69365538-6f14-4049-8729-fb2bbf1fbf1f step=1/1 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:19.014341 end=2026-09-09T11:40:19.014439 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 11:40:19,021 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.40ms] +2026-09-09 11:40:19,034 INFO guardrails.execution request=91514ba6-8fc6-473f-8db2-1d067fb6850c starting guardrails execution (validators=['ban_list']) input='this contains badword' +2026-09-09 11:40:19,036 INFO guardrails.execution request=91514ba6-8fc6-473f-8db2-1d067fb6850c guardrails execution finished (passed=True) output='this contains b' +2026-09-09 11:40:19,038 INFO guardrails.execution request=91514ba6-8fc6-473f-8db2-1d067fb6850c step=1/1 validator=BanList stage=output outcome=Outcome.FAIL start=2026-09-09T11:40:19.035397 end=2026-09-09T11:40:19.035494 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 11:40:19,041 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.50ms] +2026-09-09 11:40:19,061 INFO guardrails.execution request=91f0083f-1a32-4d51-9b66-d0ee43437ff0 starting guardrails execution (validators=['ban_list', 'uli_slur_match']) input='this contains badword' +2026-09-09 11:40:19,063 INFO guardrails.execution request=91f0083f-1a32-4d51-9b66-d0ee43437ff0 guardrails execution finished (passed=True) output='this contains b' +2026-09-09 11:40:19,065 INFO guardrails.execution request=91f0083f-1a32-4d51-9b66-d0ee43437ff0 step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:19.062104 end=2026-09-09T11:40:19.062215 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 11:40:19,067 INFO guardrails.execution request=91f0083f-1a32-4d51-9b66-d0ee43437ff0 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T11:40:19.062222 end=2026-09-09T11:40:19.062526 duration_ms=0 input='this contains b' output='this contains b' +2026-09-09 11:40:19,070 INFO http_request_logger POST /api/v1/guardrails/ - 200 [24.35ms] +2026-09-09 11:40:19,084 INFO guardrails.execution request=94072204-41b4-4ab5-b13c-01cfcdbf70d5 starting guardrails execution (validators=['ban_list']) input='this is clean' +2026-09-09 11:40:19,086 INFO guardrails.execution request=94072204-41b4-4ab5-b13c-01cfcdbf70d5 guardrails execution finished (passed=True) output='this is clean' +2026-09-09 11:40:19,087 INFO guardrails.execution request=94072204-41b4-4ab5-b13c-01cfcdbf70d5 step=1/1 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T11:40:19.085171 end=2026-09-09T11:40:19.085250 duration_ms=0 input='this is clean' output='this is clean' +2026-09-09 11:40:19,091 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.30ms] +2026-09-09 11:40:19,105 INFO guardrails.execution request=6cbecf35-30dc-453f-8415-91b483757f18 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 11:40:19,107 INFO guardrails.execution request=6cbecf35-30dc-453f-8415-91b483757f18 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR].' +2026-09-09 11:40:19,109 INFO guardrails.execution request=6cbecf35-30dc-453f-8415-91b483757f18 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:19.106174 end=2026-09-09T11:40:19.106491 duration_ms=0 input='This sentence contains chakki.' output='this sentence contains [REDACTED_SLUR].' +2026-09-09 11:40:19,112 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.18ms] +2026-09-09 11:40:19,127 INFO guardrails.execution request=cbfde739-243d-4b6f-8f48-37a8604175a3 starting guardrails execution (validators=['uli_slur_match']) input='This is a completely safe sentence' +2026-09-09 11:40:19,129 INFO guardrails.execution request=cbfde739-243d-4b6f-8f48-37a8604175a3 guardrails execution finished (passed=True) output='This is a completely safe sentence' +2026-09-09 11:40:19,131 INFO guardrails.execution request=cbfde739-243d-4b6f-8f48-37a8604175a3 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T11:40:19.128305 end=2026-09-09T11:40:19.128603 duration_ms=0 input='This is a completely safe sentence' output='This is a completely safe sentence' +2026-09-09 11:40:19,134 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.42ms] +2026-09-09 11:40:19,150 INFO guardrails.execution request=7fd6d92b-99cf-4682-b8ec-dfdf71362ef6 starting guardrails execution (validators=['uli_slur_match', 'ban_list']) input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' +2026-09-09 11:40:19,152 INFO guardrails.execution request=7fd6d92b-99cf-4682-b8ec-dfdf71362ef6 guardrails execution finished (passed=True) output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-09 11:40:19,154 INFO guardrails.execution request=7fd6d92b-99cf-4682-b8ec-dfdf71362ef6 step=1/2 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:19.150923 end=2026-09-09T11:40:19.151464 duration_ms=0 input='This sentence contains chakki cause I want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' +2026-09-09 11:40:19,155 INFO guardrails.execution request=7fd6d92b-99cf-4682-b8ec-dfdf71362ef6 step=2/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:19.151471 end=2026-09-09T11:40:19.151562 duration_ms=0 input='this sentence contains [REDACTED_SLUR] cause i want a sonography done to kill the female foetus.' output='this sentence contains [REDACTED_SLUR] cause i want a s done to kill the female foetus.' +2026-09-09 11:40:19,158 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.67ms] +2026-09-09 11:40:19,163 INFO http_request_logger POST /api/v1/guardrails/ - 422 [1.05ms] +2026-09-09 11:40:19,177 INFO guardrails.execution request=44a54bf1-ba59-4993-a274-18f671a04dff starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 11:40:19,178 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 44a54bf1-ba59-4993-a274-18f671a04dff: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 343, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-09 11:40:19,180 INFO guardrails.execution request=44a54bf1-ba59-4993-a274-18f671a04dff step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:19.177720 end=2026-09-09T11:40:19.178024 duration_ms=0 input='This sentence contains chakki.' output=None +2026-09-09 11:40:19,182 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.34ms] +2026-09-09 11:40:19,198 INFO guardrails.execution request=63580fb0-d155-43f4-9915-4b9bb1bca8f4 starting guardrails execution (validators=['uli_slur_match']) input='This sentence contains chakki.' +2026-09-09 11:40:19,201 INFO guardrails.execution request=63580fb0-d155-43f4-9915-4b9bb1bca8f4 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-09 11:40:19,203 INFO guardrails.execution request=63580fb0-d155-43f4-9915-4b9bb1bca8f4 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:19.199697 end=2026-09-09T11:40:19.200120 duration_ms=0 input='This sentence contains chakki.' output='Please rephrase the query without unsafe content. Mentioned toxic words: chakki, chakki' +2026-09-09 11:40:19,206 INFO http_request_logger POST /api/v1/guardrails/ - 200 [19.90ms] +2026-09-09 11:40:19,221 INFO guardrails.execution request=f071c6bb-b50e-4ca8-87b3-fd36576c6484 starting guardrails execution (validators=['profanity_free']) input='This is a damn fucking mess.' +2026-09-09 11:40:19,224 INFO guardrails.execution request=f071c6bb-b50e-4ca8-87b3-fd36576c6484 guardrails execution finished (passed=True) output='' +2026-09-09 11:40:19,226 INFO guardrails.execution request=f071c6bb-b50e-4ca8-87b3-fd36576c6484 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:19.222390 end=2026-09-09T11:40:19.223490 duration_ms=1 input='This is a damn fucking mess.' output='' +2026-09-09 11:40:19,229 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.18ms] +2026-09-09 11:40:19,244 INFO guardrails.execution request=ed4fe747-266f-4e3e-af75-71972e33d548 starting guardrails execution (validators=['profanity_free']) input='This is a completely clean sentence.' +2026-09-09 11:40:19,246 INFO guardrails.execution request=ed4fe747-266f-4e3e-af75-71972e33d548 guardrails execution finished (passed=True) output='This is a completely clean sentence.' +2026-09-09 11:40:19,248 INFO guardrails.execution request=ed4fe747-266f-4e3e-af75-71972e33d548 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T11:40:19.245055 end=2026-09-09T11:40:19.246073 duration_ms=1 input='This is a completely clean sentence.' output='This is a completely clean sentence.' +2026-09-09 11:40:19,252 INFO http_request_logger POST /api/v1/guardrails/ - 200 [17.76ms] +2026-09-09 11:40:19,266 INFO guardrails.execution request=ede5c623-e237-4022-958f-a08ed1a0a1c4 starting guardrails execution (validators=['profanity_free']) input='What the fuck is going on?' +2026-09-09 11:40:19,268 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log ede5c623-e237-4022-958f-a08ed1a0a1c4: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 343, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck is going on? contains profanity. Please return profanity-free output. +2026-09-09 11:40:19,270 INFO guardrails.execution request=ede5c623-e237-4022-958f-a08ed1a0a1c4 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:19.266806 end=2026-09-09T11:40:19.267849 duration_ms=1 input='What the fuck is going on?' output=None +2026-09-09 11:40:19,272 INFO http_request_logger POST /api/v1/guardrails/ - 200 [16.81ms] +2026-09-09 11:40:19,288 INFO guardrails.execution request=32f07179-2f14-46da-b4bd-c653048cabc4 starting guardrails execution (validators=['profanity_free']) input='This is absolute bullshit.' +2026-09-09 11:40:19,290 INFO guardrails.execution request=32f07179-2f14-46da-b4bd-c653048cabc4 guardrails execution finished (passed=True) output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-09 11:40:19,292 INFO guardrails.execution request=32f07179-2f14-46da-b4bd-c653048cabc4 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:19.288803 end=2026-09-09T11:40:19.289721 duration_ms=0 input='This is absolute bullshit.' output='Please rephrase the query without unsafe content. [REDACTED] contains profanity. Please return profanity-free output.' +2026-09-09 11:40:19,295 INFO http_request_logger POST /api/v1/guardrails/ - 200 [18.12ms] +2026-09-09 11:40:19,302 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 735eefdb-a6fb-4497-a06d-4f37efb9b8f0: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 327, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 37, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-09 11:40:19,305 INFO http_request_logger POST /api/v1/guardrails/ - 200 [6.13ms] +2026-09-09 11:40:19,960 WARNING huggingface_hub.utils._http Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads. +2026-09-09 11:40:22,118 INFO guardrails.execution request=a5bfb9a3-e634-4949-9515-a53525a63501 starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-09 11:40:22,235 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log a5bfb9a3-e634-4949-9515-a53525a63501: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 343, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-09 11:40:22,243 INFO guardrails.execution request=a5bfb9a3-e634-4949-9515-a53525a63501 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:22.120144 end=2026-09-09T11:40:22.235359 duration_ms=115 input='She slowly undressed and they had explicit sex.' output=None +2026-09-09 11:40:22,248 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2938.89ms] +2026-09-09 11:40:24,426 INFO guardrails.execution request=425a0efd-1f2d-4c47-bac0-eeae5bf43dde starting guardrails execution (validators=['nsfw_text']) input='She slowly undressed and they had explicit sex.' +2026-09-09 11:40:24,442 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 425a0efd-1f2d-4c47-bac0-eeae5bf43dde: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 343, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- She slowly undressed and they had explicit sex. +2026-09-09 11:40:24,445 INFO guardrails.execution request=425a0efd-1f2d-4c47-bac0-eeae5bf43dde step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:24.427546 end=2026-09-09T11:40:24.441883 duration_ms=14 input='She slowly undressed and they had explicit sex.' output=None +2026-09-09 11:40:24,448 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2192.07ms] +2026-09-09 11:40:26,482 INFO guardrails.execution request=4377b0eb-4290-4af4-8f67-15a34b1e4834 starting guardrails execution (validators=['nsfw_text']) input='Explicit sexual content goes here.' +2026-09-09 11:40:26,507 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 4377b0eb-4290-4af4-8f67-15a34b1e4834: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 343, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- Explicit sexual content goes here. +2026-09-09 11:40:26,513 INFO guardrails.execution request=4377b0eb-4290-4af4-8f67-15a34b1e4834 step=1/1 validator=NSFWText stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:26.483201 end=2026-09-09T11:40:26.507724 duration_ms=24 input='Explicit sexual content goes here.' output=None +2026-09-09 11:40:26,516 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2064.49ms] +2026-09-09 11:40:26,539 INFO guardrails.execution request=34eb1352-0b9f-475f-ba87-379dc8e49752 starting guardrails execution (validators=['profanity_free', 'uli_slur_match']) input='This fucking chakki should leave.' +2026-09-09 11:40:26,543 INFO guardrails.execution request=34eb1352-0b9f-475f-ba87-379dc8e49752 guardrails execution finished (passed=True) output='' +2026-09-09 11:40:26,547 INFO guardrails.execution request=34eb1352-0b9f-475f-ba87-379dc8e49752 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:26.539649 end=2026-09-09T11:40:26.541910 duration_ms=2 input='This fucking chakki should leave.' output='' +2026-09-09 11:40:26,550 INFO guardrails.execution request=34eb1352-0b9f-475f-ba87-379dc8e49752 step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T11:40:26.541937 end=2026-09-09T11:40:26.542186 duration_ms=0 input='' output='' +2026-09-09 11:40:26,554 INFO http_request_logger POST /api/v1/guardrails/ - 200 [33.07ms] +2026-09-09 11:40:26,563 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log bd536ecf-d841-4655-946a-c0de4e4eb9e9: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 43, in __getattr__ + module = importlib.import_module(import_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'guardrails_grhub_llamaguard_7b' + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 327, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/guardrail_controller.py", line 9, in build_guard + validators = [v_item.build() for v_item in validator_items] + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/core/validators/config/llamaguard_7b_safety_validator_config.py", line 37, in build + from guardrails.hub import LlamaGuard7B + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub/__init__.py", line 48, in __getattr__ + raise ImportError( +ImportError: Cannot import 'LlamaGuard7B' from hub registry. Module 'guardrails_grhub_llamaguard_7b' not found. Try reinstalling: guardrails hub install hub:/// +2026-09-09 11:40:26,566 INFO http_request_logger POST /api/v1/guardrails/ - 200 [6.79ms] +2026-09-09 11:40:28,713 INFO guardrails.execution request=94319ca7-0717-4a45-8b47-a9e5acf4be41 starting guardrails execution (validators=['profanity_free', 'nsfw_text']) input='What the fuck, this is explicit adult sexual content.' +2026-09-09 11:40:28,715 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 94319ca7-0717-4a45-8b47-a9e5acf4be41: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 343, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: What the fuck, this is explicit adult sexual content. contains profanity. Please return profanity-free output. +2026-09-09 11:40:28,718 INFO guardrails.execution request=94319ca7-0717-4a45-8b47-a9e5acf4be41 step=1/1 validator=ProfanityFree stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:28.714143 end=2026-09-09T11:40:28.715418 duration_ms=1 input='What the fuck, this is explicit adult sexual content.' output=None +2026-09-09 11:40:28,721 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2150.44ms] +2026-09-09 11:40:30,851 INFO guardrails.execution request=40b6767e-8ba0-4208-a7f0-1992306a6286 starting guardrails execution (validators=['uli_slur_match', 'nsfw_text']) input='This chakki has explicit sexual content.' +2026-09-09 11:40:30,853 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log 40b6767e-8ba0-4208-a7f0-1992306a6286: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 343, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 873, in validate + return self.parse(llm_output=llm_output, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 771, in parse + return trace_guard_execution( + ^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 204, in trace_guard_execution + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/guard_tracing.py", line 193, in trace_guard_execution + result = _execute_fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 594, in _execute + return guard_context.run( + ^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/common.py", line 92, in wrapped_func + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 573, in __exec + return self._exec( + ^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/guard.py", line 676, in _exec + call = runner(call_log=call_log, prompt_params=prompt_params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 200, in __call__ + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 170, in __call__ + iteration = self.step( + ^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 102, in trace_step_wrapper + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/telemetry/runner_tracing.py", line 94, in trace_step_wrapper + response = fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 284, in step + raise e + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 269, in step + validated_output = self.validate( + ^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/hub_telemetry/hub_tracing.py", line 148, in wrapper + return fn(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/run/runner.py", line 465, in validate + validated_output, metadata = validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/__init__.py", line 79, in validate + return validator_service.validate( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 460, in validate + value, metadata = self.run_validators( + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/sequential_validator_service.py", line 380, in run_validators + value = self.perform_correction( + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/.venv/lib/python3.12/site-packages/guardrails/validator_service/validator_service_base.py", line 106, in perform_correction + raise ValidationError( +guardrails.errors.ValidationError: Validation failed for field with errors: Mentioned toxic words: chakki, chakki +2026-09-09 11:40:30,858 INFO guardrails.execution request=40b6767e-8ba0-4208-a7f0-1992306a6286 step=1/1 validator=LexicalSlur stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:30.852456 end=2026-09-09T11:40:30.852928 duration_ms=0 input='This chakki has explicit sexual content.' output=None +2026-09-09 11:40:30,862 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2136.14ms] +2026-09-09 11:40:30,880 INFO guardrails.execution request=04f64361-ed4d-4eeb-a952-c487f4ec7f43 starting guardrails execution (validators=['profanity_free', 'ban_list']) input='Tell me about renewable energy sources.' +2026-09-09 11:40:30,883 INFO guardrails.execution request=04f64361-ed4d-4eeb-a952-c487f4ec7f43 guardrails execution finished (passed=True) output='Tell me about renewable energy sources.' +2026-09-09 11:40:30,887 INFO guardrails.execution request=04f64361-ed4d-4eeb-a952-c487f4ec7f43 step=1/2 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T11:40:30.881271 end=2026-09-09T11:40:30.882331 duration_ms=1 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-09 11:40:30,889 INFO guardrails.execution request=04f64361-ed4d-4eeb-a952-c487f4ec7f43 step=2/2 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T11:40:30.882338 end=2026-09-09T11:40:30.882458 duration_ms=0 input='Tell me about renewable energy sources.' output='Tell me about renewable energy sources.' +2026-09-09 11:40:30,893 INFO http_request_logger POST /api/v1/guardrails/ - 200 [25.15ms] +2026-09-09 11:40:30,917 INFO guardrails.execution request=0bda4f4e-e5be-423d-a2d2-3d90beeb4cc3 starting guardrails execution (validators=['uli_slur_match', 'profanity_free', 'ban_list']) input='What are some healthy breakfast options?' +2026-09-09 11:40:30,919 INFO guardrails.execution request=0bda4f4e-e5be-423d-a2d2-3d90beeb4cc3 guardrails execution finished (passed=True) output='What are some healthy breakfast options?' +2026-09-09 11:40:30,923 INFO guardrails.execution request=0bda4f4e-e5be-423d-a2d2-3d90beeb4cc3 step=1/3 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T11:40:30.917645 end=2026-09-09T11:40:30.917958 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 11:40:30,926 INFO guardrails.execution request=0bda4f4e-e5be-423d-a2d2-3d90beeb4cc3 step=2/3 validator=ProfanityFree stage=input outcome=Outcome.PASS start=2026-09-09T11:40:30.917963 end=2026-09-09T11:40:30.918977 duration_ms=1 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 11:40:30,928 INFO guardrails.execution request=0bda4f4e-e5be-423d-a2d2-3d90beeb4cc3 step=3/3 validator=BanList stage=input outcome=Outcome.PASS start=2026-09-09T11:40:30.918982 end=2026-09-09T11:40:30.919047 duration_ms=0 input='What are some healthy breakfast options?' output='What are some healthy breakfast options?' +2026-09-09 11:40:30,932 INFO http_request_logger POST /api/v1/guardrails/ - 200 [32.99ms] +2026-09-09 11:40:30,948 INFO guardrails.execution request=98aea30a-acaf-4d4b-b6d0-bb853f6dc7fa starting guardrails execution (validators=['ban_list', 'uli_slur_match']) input='this contains badword' +2026-09-09 11:40:30,950 INFO guardrails.execution request=98aea30a-acaf-4d4b-b6d0-bb853f6dc7fa guardrails execution finished (passed=True) output='this contains b' +2026-09-09 11:40:30,954 INFO guardrails.execution request=98aea30a-acaf-4d4b-b6d0-bb853f6dc7fa step=1/2 validator=BanList stage=input outcome=Outcome.FAIL start=2026-09-09T11:40:30.949245 end=2026-09-09T11:40:30.949355 duration_ms=0 input='this contains badword' output='this contains b' +2026-09-09 11:40:30,956 INFO guardrails.execution request=98aea30a-acaf-4d4b-b6d0-bb853f6dc7fa step=2/2 validator=LexicalSlur stage=input outcome=Outcome.PASS start=2026-09-09T11:40:30.949360 end=2026-09-09T11:40:30.949560 duration_ms=0 input='this contains b' output='this contains b' +2026-09-09 11:40:30,960 INFO http_request_logger POST /api/v1/guardrails/ - 200 [22.39ms] +2026-09-09 11:40:30,971 ERROR app.api.routes.guardrails [run_guardrails] config resolution failed for request_log d0c31665-8991-4e84-9697-9394fabcda75: 404: Ban list not found +2026-09-09 11:40:30,975 INFO http_request_logger POST /api/v1/guardrails/ - 404 [6.72ms] +2026-09-09 11:40:30,982 INFO guardrails.execution request=f6da3e55-7372-4154-af09-49bc582b6253 starting guardrails execution (validators=['ban_list']) input='hello' +2026-09-09 11:40:30,982 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log f6da3e55-7372-4154-af09-49bc582b6253: boom +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 343, in _validate_with_guard + result = guard.validate(data) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +RuntimeError: boom +2026-09-09 11:40:30,984 INFO http_request_logger POST /api/v1/guardrails/ - 200 [4.38ms] +2026-09-09 11:40:30,989 WARNING app.api.routes.guardrails [run_guardrails] invalid request_id 'not-a-uuid' (org=1 project=1), no request log written +2026-09-09 11:40:30,989 INFO http_request_logger POST /api/v1/guardrails/ - 200 [1.08ms] +2026-09-09 11:40:30,999 INFO app.crud.llm_prompt_config created llm prompt config id=e2f35376-a562-4585-a9d5-a1b4288178b4 org=1 project=1 +2026-09-09 11:40:31,001 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [9.06ms] +2026-09-09 11:40:31,007 INFO app.crud.llm_prompt_config created llm prompt config id=5e082f8d-214b-4f9b-9fca-ac274b7cce76 org=1 project=1 +2026-09-09 11:40:31,008 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.25ms] +2026-09-09 11:40:31,015 INFO app.crud.llm_prompt_config created llm prompt config id=c5c1d348-f91c-4d28-9b4c-050ce4598d3e org=1 project=1 +2026-09-09 11:40:31,015 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.68ms] +2026-09-09 11:40:31,019 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.85ms] +2026-09-09 11:40:31,024 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.83ms] +2026-09-09 11:40:31,028 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.80ms] +2026-09-09 11:40:31,032 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.76ms] +2026-09-09 11:40:31,039 INFO app.crud.llm_prompt_config created llm prompt config id=223be68f-c373-4572-8d71-857e25afa9ef org=1 project=1 +2026-09-09 11:40:31,039 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.22ms] +2026-09-09 11:40:31,043 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.77ms] +2026-09-09 11:40:31,047 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 422 [0.83ms] +2026-09-09 11:40:31,052 INFO app.crud.llm_prompt_config created llm prompt config id=3649ea94-a25d-4240-88b7-ee8537494a17 org=1 project=1 +2026-09-09 11:40:31,053 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.01ms] +2026-09-09 11:40:31,058 INFO app.crud.llm_prompt_config created llm prompt config id=8be460fd-1180-41df-b77b-96cbe68bbd33 org=1 project=1 +2026-09-09 11:40:31,058 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.64ms] +2026-09-09 11:40:31,064 INFO app.crud.llm_prompt_config created llm prompt config id=ab958f74-e177-40ef-b920-f9340e482566 org=1 project=1 +2026-09-09 11:40:31,065 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [6.08ms] +2026-09-09 11:40:31,069 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [3.98ms] +2026-09-09 11:40:31,076 INFO app.crud.llm_prompt_config created llm prompt config id=4bb6e38d-1536-461e-8e4e-ef4a7d64c49c org=1 project=1 +2026-09-09 11:40:31,077 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.26ms] +2026-09-09 11:40:31,079 INFO app.crud.llm_prompt_config created llm prompt config id=e00cc179-9ae5-46f0-96b9-2464e66fa435 org=1 project=1 +2026-09-09 11:40:31,080 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.48ms] +2026-09-09 11:40:31,082 INFO app.crud.llm_prompt_config created llm prompt config id=252c28a9-896d-4ab7-8dc6-19fc48b120de org=1 project=1 +2026-09-09 11:40:31,082 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.14ms] +2026-09-09 11:40:31,085 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [2.25ms] +2026-09-09 11:40:31,090 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.61ms] +2026-09-09 11:40:31,095 INFO app.crud.llm_prompt_config created llm prompt config id=693ef504-6b39-4595-ad6b-72eed69c885e org=1 project=1 +2026-09-09 11:40:31,095 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.52ms] +2026-09-09 11:40:31,097 INFO app.crud.llm_prompt_config created llm prompt config id=a75f3ee4-c54c-4aef-8be6-d1315b74d7ff org=1 project=1 +2026-09-09 11:40:31,098 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.18ms] +2026-09-09 11:40:31,100 INFO app.crud.llm_prompt_config created llm prompt config id=4ec0b7f8-349f-4eac-ac0d-0f9a2a77ec2f org=1 project=1 +2026-09-09 11:40:31,100 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.16ms] +2026-09-09 11:40:31,102 INFO app.crud.llm_prompt_config created llm prompt config id=f0d3cf87-95e0-4bed-a556-32a448f4069d org=1 project=1 +2026-09-09 11:40:31,103 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.09ms] +2026-09-09 11:40:31,105 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.81ms] +2026-09-09 11:40:31,110 INFO app.crud.llm_prompt_config created llm prompt config id=c4e8c23f-dc0a-48e8-8c39-2e1f460a3b41 org=1 project=1 +2026-09-09 11:40:31,110 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.40ms] +2026-09-09 11:40:31,112 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.23ms] +2026-09-09 11:40:31,117 INFO app.crud.llm_prompt_config created llm prompt config id=be57ec3a-c81d-4c08-9faf-0ae23caea472 org=1 project=1 +2026-09-09 11:40:31,117 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.38ms] +2026-09-09 11:40:31,119 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/be57ec3a-c81d-4c08-9faf-0ae23caea472 - 200 [1.61ms] +2026-09-09 11:40:31,124 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/7648072b-699d-4184-9196-7e8d5c9063bb - 404 [1.44ms] +2026-09-09 11:40:31,128 INFO app.crud.llm_prompt_config created llm prompt config id=81c05c47-69e8-440e-a0ff-4f59959277ea org=1 project=1 +2026-09-09 11:40:31,129 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.39ms] +2026-09-09 11:40:31,130 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/81c05c47-69e8-440e-a0ff-4f59959277ea - 404 [1.20ms] +2026-09-09 11:40:31,135 INFO app.crud.llm_prompt_config created llm prompt config id=0d3fed1f-be00-4c39-a673-7b364e012f01 org=1 project=1 +2026-09-09 11:40:31,135 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.35ms] +2026-09-09 11:40:31,139 INFO app.crud.llm_prompt_config updated llm prompt config id=0d3fed1f-be00-4c39-a673-7b364e012f01 +2026-09-09 11:40:31,139 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/0d3fed1f-be00-4c39-a673-7b364e012f01 - 200 [3.36ms] +2026-09-09 11:40:31,144 INFO app.crud.llm_prompt_config created llm prompt config id=0c3256e8-7d0e-4e25-8f81-6b9f7b15d197 org=1 project=1 +2026-09-09 11:40:31,144 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.46ms] +2026-09-09 11:40:31,149 INFO app.crud.llm_prompt_config updated llm prompt config id=0c3256e8-7d0e-4e25-8f81-6b9f7b15d197 +2026-09-09 11:40:31,150 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/0c3256e8-7d0e-4e25-8f81-6b9f7b15d197 - 200 [5.13ms] +2026-09-09 11:40:31,155 INFO app.crud.llm_prompt_config created llm prompt config id=a5bc9bec-7b45-4c85-b865-f9badb8f6d03 org=1 project=1 +2026-09-09 11:40:31,156 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.56ms] +2026-09-09 11:40:31,158 INFO app.crud.llm_prompt_config updated llm prompt config id=a5bc9bec-7b45-4c85-b865-f9badb8f6d03 +2026-09-09 11:40:31,159 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/a5bc9bec-7b45-4c85-b865-f9badb8f6d03 - 200 [2.76ms] +2026-09-09 11:40:31,161 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/a5bc9bec-7b45-4c85-b865-f9badb8f6d03 - 200 [1.42ms] +2026-09-09 11:40:31,167 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/844146dc-c6c0-4acc-b2eb-6ed689d1167a - 404 [2.62ms] +2026-09-09 11:40:31,175 INFO app.crud.llm_prompt_config created llm prompt config id=9254716d-2a96-4488-a3b5-505dab47649e org=1 project=1 +2026-09-09 11:40:31,176 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.78ms] +2026-09-09 11:40:31,178 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/9254716d-2a96-4488-a3b5-505dab47649e - 404 [1.41ms] +2026-09-09 11:40:31,184 INFO app.crud.llm_prompt_config created llm prompt config id=27304bfa-86a4-4546-a198-6436442dd2ea org=1 project=1 +2026-09-09 11:40:31,185 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.24ms] +2026-09-09 11:40:31,187 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/27304bfa-86a4-4546-a198-6436442dd2ea - 422 [1.76ms] +2026-09-09 11:40:31,194 INFO app.crud.llm_prompt_config created llm prompt config id=3d293d7e-1f33-42a1-845d-1a0a012d4c39 org=1 project=1 +2026-09-09 11:40:31,194 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.64ms] +2026-09-09 11:40:31,196 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/3d293d7e-1f33-42a1-845d-1a0a012d4c39 - 422 [1.41ms] +2026-09-09 11:40:31,202 INFO app.crud.llm_prompt_config created llm prompt config id=006b71df-fd3a-4ce9-890b-c1e7502f9caf org=1 project=1 +2026-09-09 11:40:31,202 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.96ms] +2026-09-09 11:40:31,206 INFO app.crud.llm_prompt_config updated llm prompt config id=006b71df-fd3a-4ce9-890b-c1e7502f9caf +2026-09-09 11:40:31,207 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/006b71df-fd3a-4ce9-890b-c1e7502f9caf - 200 [4.30ms] +2026-09-09 11:40:31,213 INFO app.crud.llm_prompt_config created llm prompt config id=70c5411f-fc2c-4834-b426-2c39e24a2f5d org=1 project=1 +2026-09-09 11:40:31,214 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.06ms] +2026-09-09 11:40:31,216 INFO app.crud.llm_prompt_config updated llm prompt config id=70c5411f-fc2c-4834-b426-2c39e24a2f5d +2026-09-09 11:40:31,217 INFO http_request_logger PATCH /api/v1/guardrails/llm_prompt_configs/70c5411f-fc2c-4834-b426-2c39e24a2f5d - 200 [2.97ms] +2026-09-09 11:40:31,223 INFO app.crud.llm_prompt_config created llm prompt config id=18fd10e5-4a38-4d3e-9a10-198fd829fb49 org=1 project=1 +2026-09-09 11:40:31,223 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [2.96ms] +2026-09-09 11:40:31,227 INFO app.crud.llm_prompt_config deleted llm prompt config id=18fd10e5-4a38-4d3e-9a10-198fd829fb49 +2026-09-09 11:40:31,228 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/18fd10e5-4a38-4d3e-9a10-198fd829fb49 - 200 [3.94ms] +2026-09-09 11:40:31,236 INFO app.crud.llm_prompt_config created llm prompt config id=1e64ab7e-3c87-40ba-bb19-da37d51ffed4 org=1 project=1 +2026-09-09 11:40:31,236 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [4.39ms] +2026-09-09 11:40:31,239 INFO app.crud.llm_prompt_config deleted llm prompt config id=1e64ab7e-3c87-40ba-bb19-da37d51ffed4 +2026-09-09 11:40:31,239 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/1e64ab7e-3c87-40ba-bb19-da37d51ffed4 - 200 [2.32ms] +2026-09-09 11:40:31,241 INFO http_request_logger GET /api/v1/guardrails/llm_prompt_configs/ - 200 [1.93ms] +2026-09-09 11:40:31,248 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/5b4d7b44-bef8-4cd5-b805-ccad0e721cec - 404 [1.67ms] +2026-09-09 11:40:31,254 INFO app.crud.llm_prompt_config created llm prompt config id=5b555a03-7c3a-4318-8d7d-855987a26035 org=1 project=1 +2026-09-09 11:40:31,254 INFO http_request_logger POST /api/v1/guardrails/llm_prompt_configs/ - 200 [3.03ms] +2026-09-09 11:40:31,256 INFO http_request_logger DELETE /api/v1/guardrails/llm_prompt_configs/5b555a03-7c3a-4318-8d7d-855987a26035 - 404 [1.36ms] +2026-09-09 11:40:31,357 INFO guardrails.execution request=d6fa9e09-698f-467a-b0d0-a2c9998e39c9 starting guardrails execution (validators=[]) input='hello' +2026-09-09 11:40:31,357 INFO guardrails.execution request=d6fa9e09-698f-467a-b0d0-a2c9998e39c9 guardrails execution finished (passed=True) output='clean text' +2026-09-09 11:40:31,359 INFO guardrails.execution request=d6fa9e09-698f-467a-b0d0-a2c9998e39c9 starting guardrails execution (validators=[]) input='bad text' +2026-09-09 11:40:31,359 INFO guardrails.execution request=d6fa9e09-698f-467a-b0d0-a2c9998e39c9 guardrails execution finished (passed=False) output=None +2026-09-09 11:40:31,361 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log d6fa9e09-698f-467a-b0d0-a2c9998e39c9: Invalid config +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 327, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Invalid config +2026-09-09 11:40:31,364 INFO guardrails.execution request=d6fa9e09-698f-467a-b0d0-a2c9998e39c9 starting guardrails execution (validators=[]) input='bad text' +2026-09-09 11:40:31,364 INFO guardrails.execution request=d6fa9e09-698f-467a-b0d0-a2c9998e39c9 guardrails execution finished (passed=False) output=None +2026-09-09 11:40:31,368 INFO guardrails.execution request=d6fa9e09-698f-467a-b0d0-a2c9998e39c9 starting guardrails execution (validators=[]) input='bad text' +2026-09-09 11:40:31,368 INFO guardrails.execution request=d6fa9e09-698f-467a-b0d0-a2c9998e39c9 guardrails execution finished (passed=False) output=None +2026-09-09 11:40:31,390 INFO guardrails.execution request=d6fa9e09-698f-467a-b0d0-a2c9998e39c9 starting guardrails execution (validators=[]) input='this is some unsafe content' +2026-09-09 11:40:31,391 INFO guardrails.execution request=d6fa9e09-698f-467a-b0d0-a2c9998e39c9 guardrails execution finished (passed=False) output=None +2026-09-09 11:40:31,393 INFO guardrails.execution request=d6fa9e09-698f-467a-b0d0-a2c9998e39c9 starting guardrails execution (validators=[]) input='some input text' +2026-09-09 11:40:31,393 INFO guardrails.execution request=d6fa9e09-698f-467a-b0d0-a2c9998e39c9 guardrails execution finished (passed=False) output=None +2026-09-09 11:40:31,395 INFO guardrails.execution request=d6fa9e09-698f-467a-b0d0-a2c9998e39c9 starting guardrails execution (validators=[]) input='this contains profane words' +2026-09-09 11:40:31,395 INFO guardrails.execution request=d6fa9e09-698f-467a-b0d0-a2c9998e39c9 guardrails execution finished (passed=False) output=None +2026-09-09 11:40:31,397 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log d6fa9e09-698f-467a-b0d0-a2c9998e39c9: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 327, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: The following sentences in your response were found to be NSFW: + +- this is some unsafe content +2026-09-09 11:40:31,399 ERROR app.api.routes.guardrails [_validate_with_guard] guardrails execution failed for request log d6fa9e09-698f-467a-b0d0-a2c9998e39c9: Validation failed for field with errors: Profanity detected in: this contains profane words +Traceback (most recent call last): + File "/Users/prajna/Desktop/t4d/kaapi-guardrails/backend/app/api/routes/guardrails.py", line 327, in _validate_with_guard + guard = build_guard(validators) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1139, in __call__ + return self._mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1143, in _mock_call + return self._execute_mock_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/prajna/.local/share/uv/python/cpython-3.12.12-macos-aarch64-none/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call + raise effect +Exception: Validation failed for field with errors: Profanity detected in: this contains profane words +2026-09-09 11:40:31,416 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 11:40:31,418 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 11:40:31,420 INFO app.crud.validator_config updated validator config id=22222222-2222-2222-2222-222222222222 +2026-09-09 11:40:31,431 INFO app.crud.validator_config created validator config id=a73e46c6-b27e-454f-8f08-ae24318e4fbb org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 11:40:31,432 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [4.90ms] +2026-09-09 11:40:31,439 INFO app.crud.validator_config created validator config id=524e93a1-e0c1-4a4b-ac9d-5b21f9b32ac3 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 11:40:31,440 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.82ms] +2026-09-09 11:40:31,442 WARNING app.crud.validator_config create validator config failed: duplicate name (org=1 project=1) +2026-09-09 11:40:31,442 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 400 [1.84ms] +2026-09-09 11:40:31,446 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 422 [0.93ms] +2026-09-09 11:40:31,454 INFO app.crud.validator_config created validator config id=ef15374c-8059-4b58-8c3c-c44df610c791 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 11:40:31,454 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [5.51ms] +2026-09-09 11:40:31,457 INFO app.crud.validator_config created validator config id=b709030b-b75a-4317-a073-46b7851f0381 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 11:40:31,458 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.73ms] +2026-09-09 11:40:31,460 INFO app.crud.validator_config created validator config id=0358c97d-ce71-4bed-a42f-48d35eb44d34 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 11:40:31,460 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.34ms] +2026-09-09 11:40:31,462 INFO app.crud.validator_config created validator config id=aee8fda5-7b65-41b9-895f-6208cc7c053d org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 11:40:31,463 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.28ms] +2026-09-09 11:40:31,465 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.06ms] +2026-09-09 11:40:31,466 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ef15374c-8059-4b58-8c3c-c44df610c791/ - 307 [0.09ms] +2026-09-09 11:40:31,469 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ef15374c-8059-4b58-8c3c-c44df610c791 - 200 [2.60ms] +2026-09-09 11:40:31,469 INFO http_request_logger GET /api/v1/guardrails/validators/configs/b709030b-b75a-4317-a073-46b7851f0381/ - 307 [0.09ms] +2026-09-09 11:40:31,472 INFO http_request_logger GET /api/v1/guardrails/validators/configs/b709030b-b75a-4317-a073-46b7851f0381 - 200 [2.69ms] +2026-09-09 11:40:31,472 INFO http_request_logger GET /api/v1/guardrails/validators/configs/0358c97d-ce71-4bed-a42f-48d35eb44d34/ - 307 [0.08ms] +2026-09-09 11:40:31,476 INFO http_request_logger GET /api/v1/guardrails/validators/configs/0358c97d-ce71-4bed-a42f-48d35eb44d34 - 200 [2.95ms] +2026-09-09 11:40:31,476 INFO http_request_logger GET /api/v1/guardrails/validators/configs/aee8fda5-7b65-41b9-895f-6208cc7c053d/ - 307 [0.09ms] +2026-09-09 11:40:31,479 INFO http_request_logger GET /api/v1/guardrails/validators/configs/aee8fda5-7b65-41b9-895f-6208cc7c053d - 200 [2.77ms] +2026-09-09 11:40:31,488 INFO app.crud.validator_config created validator config id=f2e9201e-b3c0-4d5f-a3d3-6c084128ff03 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 11:40:31,489 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [4.64ms] +2026-09-09 11:40:31,492 INFO app.crud.validator_config created validator config id=e9d9838a-f649-4990-8de2-fcb62e39d5c0 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 11:40:31,493 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.67ms] +2026-09-09 11:40:31,496 INFO app.crud.validator_config created validator config id=a83a34d3-414d-43e3-ab03-17a4ea66e70c org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 11:40:31,496 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.73ms] +2026-09-09 11:40:31,497 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/f2e9201e-b3c0-4d5f-a3d3-6c084128ff03/ - 307 [0.09ms] +2026-09-09 11:40:31,500 INFO app.crud.validator_config updated validator config id=f2e9201e-b3c0-4d5f-a3d3-6c084128ff03 +2026-09-09 11:40:31,501 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/f2e9201e-b3c0-4d5f-a3d3-6c084128ff03 - 200 [3.91ms] +2026-09-09 11:40:31,501 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/e9d9838a-f649-4990-8de2-fcb62e39d5c0/ - 307 [0.11ms] +2026-09-09 11:40:31,504 INFO app.crud.validator_config updated validator config id=e9d9838a-f649-4990-8de2-fcb62e39d5c0 +2026-09-09 11:40:31,505 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/e9d9838a-f649-4990-8de2-fcb62e39d5c0 - 200 [3.22ms] +2026-09-09 11:40:31,505 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/a83a34d3-414d-43e3-ab03-17a4ea66e70c/ - 307 [0.09ms] +2026-09-09 11:40:31,508 INFO app.crud.validator_config updated validator config id=a83a34d3-414d-43e3-ab03-17a4ea66e70c +2026-09-09 11:40:31,509 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/a83a34d3-414d-43e3-ab03-17a4ea66e70c - 200 [3.00ms] +2026-09-09 11:40:31,511 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.29ms] +2026-09-09 11:40:31,519 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.73ms] +2026-09-09 11:40:31,527 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.15ms] +2026-09-09 11:40:31,534 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.97ms] +2026-09-09 11:40:31,539 INFO app.crud.validator_config created validator config id=9c9476ff-b0e6-4774-aa90-958bfe54d998 org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 11:40:31,540 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.76ms] +2026-09-09 11:40:31,542 INFO app.crud.validator_config created validator config id=53a641c8-550c-449f-bbe5-eee5996fc053 org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 11:40:31,542 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.42ms] +2026-09-09 11:40:31,546 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [3.10ms] +2026-09-09 11:40:31,552 INFO app.crud.validator_config created validator config id=6acc6355-fa7b-44d0-8bf6-069dbb51403d org=1 project=1 type=ValidatorType.LexicalSlur +2026-09-09 11:40:31,553 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.63ms] +2026-09-09 11:40:31,555 INFO app.crud.validator_config created validator config id=12ca8ec6-f9b8-4808-8404-78803dee79cf org=1 project=1 type=ValidatorType.PIIRemover +2026-09-09 11:40:31,555 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [2.34ms] +2026-09-09 11:40:31,557 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.55ms] +2026-09-09 11:40:31,561 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 422 [0.77ms] +2026-09-09 11:40:31,567 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.63ms] +2026-09-09 11:40:31,573 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.62ms] +2026-09-09 11:40:31,574 INFO http_request_logger GET /api/v1/guardrails/validators/configs/889b65c2-7001-44a9-b2f7-766f71a5bd16/ - 307 [0.09ms] +2026-09-09 11:40:31,575 INFO http_request_logger GET /api/v1/guardrails/validators/configs/889b65c2-7001-44a9-b2f7-766f71a5bd16 - 200 [1.37ms] +2026-09-09 11:40:31,581 INFO http_request_logger GET /api/v1/guardrails/validators/configs/d00acf5f-e831-49e3-8786-27a57b9695eb/ - 307 [0.09ms] +2026-09-09 11:40:31,583 INFO http_request_logger GET /api/v1/guardrails/validators/configs/d00acf5f-e831-49e3-8786-27a57b9695eb - 404 [1.44ms] +2026-09-09 11:40:31,586 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid/ - 307 [0.08ms] +2026-09-09 11:40:31,587 INFO http_request_logger GET /api/v1/guardrails/validators/configs/not-a-uuid - 422 [0.73ms] +2026-09-09 11:40:31,592 INFO app.crud.validator_config created validator config id=7a766cbf-3692-405c-964c-a363bb173f92 org=1 project=1 type=ValidatorType.GenderAssumptionBias +2026-09-09 11:40:31,592 INFO http_request_logger POST /api/v1/guardrails/validators/configs/ - 200 [3.07ms] +2026-09-09 11:40:31,593 INFO http_request_logger GET /api/v1/guardrails/validators/configs/7a766cbf-3692-405c-964c-a363bb173f92/ - 307 [0.12ms] +2026-09-09 11:40:31,596 INFO http_request_logger GET /api/v1/guardrails/validators/configs/7a766cbf-3692-405c-964c-a363bb173f92 - 404 [2.18ms] +2026-09-09 11:40:31,604 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [2.15ms] +2026-09-09 11:40:31,605 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/56d85a58-b23e-46b1-8181-70ab89b35c05/ - 307 [0.08ms] +2026-09-09 11:40:31,607 INFO app.crud.validator_config updated validator config id=56d85a58-b23e-46b1-8181-70ab89b35c05 +2026-09-09 11:40:31,608 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/56d85a58-b23e-46b1-8181-70ab89b35c05 - 200 [2.81ms] +2026-09-09 11:40:31,614 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.70ms] +2026-09-09 11:40:31,615 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/eb297c97-788d-4df1-92d1-2748be90efb0/ - 307 [0.09ms] +2026-09-09 11:40:31,618 INFO app.crud.validator_config updated validator config id=eb297c97-788d-4df1-92d1-2748be90efb0 +2026-09-09 11:40:31,619 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/eb297c97-788d-4df1-92d1-2748be90efb0 - 200 [3.92ms] +2026-09-09 11:40:31,622 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/30efe36c-df5c-473e-b225-305049b445d8/ - 307 [0.08ms] +2026-09-09 11:40:31,624 INFO http_request_logger PATCH /api/v1/guardrails/validators/configs/30efe36c-df5c-473e-b225-305049b445d8 - 404 [1.55ms] +2026-09-09 11:40:31,629 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.53ms] +2026-09-09 11:40:31,630 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/8c1c19ed-2eb0-4746-8457-e01e8ef67406/ - 307 [0.08ms] +2026-09-09 11:40:31,633 INFO app.crud.validator_config deleted validator config id=8c1c19ed-2eb0-4746-8457-e01e8ef67406 +2026-09-09 11:40:31,633 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/8c1c19ed-2eb0-4746-8457-e01e8ef67406 - 200 [2.70ms] +2026-09-09 11:40:31,633 INFO http_request_logger GET /api/v1/guardrails/validators/configs/8c1c19ed-2eb0-4746-8457-e01e8ef67406/ - 307 [0.08ms] +2026-09-09 11:40:31,635 INFO http_request_logger GET /api/v1/guardrails/validators/configs/8c1c19ed-2eb0-4746-8457-e01e8ef67406 - 404 [1.28ms] +2026-09-09 11:40:31,638 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/b0e95deb-55bf-48ca-997c-8ea1d05a32ee/ - 307 [0.20ms] +2026-09-09 11:40:31,639 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/b0e95deb-55bf-48ca-997c-8ea1d05a32ee - 404 [1.31ms] +2026-09-09 11:40:31,645 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [1.70ms] +2026-09-09 11:40:31,646 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/787cf97e-d063-405c-aedb-864124c12263/ - 307 [0.08ms] +2026-09-09 11:40:31,647 INFO http_request_logger DELETE /api/v1/guardrails/validators/configs/787cf97e-d063-405c-aedb-864124c12263 - 404 [1.20ms] +2026-09-09 11:40:31,648 INFO http_request_logger GET /api/v1/guardrails/validators/configs/787cf97e-d063-405c-aedb-864124c12263/ - 307 [0.08ms] +2026-09-09 11:40:31,651 INFO http_request_logger GET /api/v1/guardrails/validators/configs/787cf97e-d063-405c-aedb-864124c12263 - 200 [2.50ms] +2026-09-09 11:40:31,764 INFO presidio-analyzer Loaded recognizer: InAadhaarRecognizer +2026-09-09 11:40:31,764 INFO presidio-analyzer Loaded recognizer: InPanRecognizer +2026-09-09 11:40:31,834 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 11:40:34,129 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 11:40:34,138 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 11:40:35,619 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 11:40:35,637 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 11:40:36,697 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 11:40:36,710 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 11:40:38,018 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 11:40:38,029 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 11:40:39,531 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 11:40:39,545 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 11:40:40,709 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 11:40:40,711 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 11:40:41,866 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 11:40:42,040 INFO watchfiles.main 3 changes detected +2026-09-09 11:48:38,075 INFO watchfiles.main 3 changes detected +2026-09-09 11:48:38,079 WARNING uvicorn.error WatchFiles detected changes in 'app/core/telemetry.py', 'app/crud/validator_config.py', 'app/core/config.py'. Reloading... +2026-09-09 11:48:38,147 INFO uvicorn.error Shutting down +2026-09-09 11:48:38,251 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 11:48:38,252 INFO uvicorn.error Application shutdown complete. +2026-09-09 11:48:38,253 INFO uvicorn.error Finished server process [55706] +2026-09-09 11:48:38,695 INFO watchfiles.main 4 changes detected +2026-09-09 11:48:43,958 INFO presidio-analyzer Using device of type: cpu +2026-09-09 11:48:44,570 INFO watchfiles.main 3 changes detected +2026-09-09 11:48:44,886 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 11:48:44,886 INFO uvicorn.error Started server process [57743] +2026-09-09 11:48:44,887 INFO uvicorn.error Waiting for application startup. +2026-09-09 11:48:44,887 INFO uvicorn.error Application startup complete. +2026-09-09 11:48:44,933 INFO watchfiles.main 3 changes detected +2026-09-09 16:45:10,532 INFO http_request_logger GET /api/v1/guardrails/validators/configs/ - 200 [145.37ms] +2026-09-09 16:45:10,684 INFO guardrails.execution request=817c539c-a776-43ea-b41c-c03f8609599c starting guardrails execution (validators=['gender_assumption_bias', 'answer_relevance_custom_llm']) input='Please don’t share someone’s private phone number or use abusive language. If you have a concern about this doctor, cont…' +2026-09-09 16:45:10,736 INFO LiteLLM +LiteLLM completion() model= gpt-4o-mini; provider = openai +2026-09-09 16:45:13,062 INFO LiteLLM Wrapper: Completed Call, calling success_handler +2026-09-09 16:45:13,068 INFO guardrails.execution request=817c539c-a776-43ea-b41c-c03f8609599c guardrails execution finished (passed=True) output='Please don’t share someone’s private phone number or use abusive language. If you have a concern about this doctor, cont…' +2026-09-09 16:45:13,084 INFO guardrails.execution request=817c539c-a776-43ea-b41c-c03f8609599c step=1/2 validator=GenderAssumptionBias stage=output outcome=Outcome.PASS start=2026-09-09T16:45:10.694620 end=2026-09-09T16:45:10.707692 duration_ms=13 input='Please don’t share someone’s private phone number or use abusive language. If you have a concern about this doctor, cont…' output='Please don’t share someone’s private phone number or use abusive language. If you have a concern about this doctor, cont…' +2026-09-09 16:45:13,091 INFO guardrails.execution request=817c539c-a776-43ea-b41c-c03f8609599c step=2/2 validator=AnswerRelevanceCustomLLM stage=output outcome=Outcome.PASS start=2026-09-09T16:45:10.707712 end=2026-09-09T16:45:13.066075 duration_ms=2358 input='Please don’t share someone’s private phone number or use abusive language. If you have a concern about this doctor, cont…' output='Please don’t share someone’s private phone number or use abusive language. If you have a concern about this doctor, cont…' +2026-09-09 16:45:13,096 INFO http_request_logger POST /api/v1/guardrails/ - 200 [2532.63ms] +2026-09-09 16:55:34,693 INFO uvicorn.error Shutting down +2026-09-09 16:55:34,803 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 16:55:34,804 INFO uvicorn.error Application shutdown complete. +2026-09-09 16:55:34,805 INFO uvicorn.error Finished server process [57743] +2026-09-09 16:55:34,837 INFO uvicorn.error Stopping reloader process [31730] +2026-09-09 16:55:58,895 INFO presidio-analyzer Using device of type: cpu +2026-09-09 16:55:59,763 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 16:55:59,793 INFO uvicorn.error Will watch for changes in these directories: ['/Users/prajna/Desktop/t4d/kaapi-guardrails/backend'] +2026-09-09 16:55:59,793 INFO uvicorn.error Uvicorn running on http://127.0.0.1:8001 (Press CTRL+C to quit) +2026-09-09 16:55:59,793 INFO uvicorn.error Started reloader process [71969] using WatchFiles +2026-09-09 16:56:04,301 INFO presidio-analyzer Using device of type: cpu +2026-09-09 16:56:05,104 INFO app.core.telemetry Telemetry initialized (environment=production) +2026-09-09 16:56:05,104 INFO uvicorn.error Started server process [71979] +2026-09-09 16:56:05,105 INFO uvicorn.error Waiting for application startup. +2026-09-09 16:56:05,105 INFO uvicorn.error Application startup complete. +2026-09-09 16:58:26,029 INFO watchfiles.main 89 changes detected +2026-09-09 16:58:26,039 WARNING uvicorn.error WatchFiles detected changes in 'app/schemas/guardrail_config.py', 'app/core/validators/config/answer_relevance_custom_llm_safety_validator_config.py', 'app/schemas/llm_prompt_config.py', 'app/tests/test_guardrails_traceability_integration.py', 'app/core/validators/config/ban_list_safety_validator_config.py', 'app/core/validators/config/llamaguard_7b_safety_validator_config.py', 'app/core/validators/llm_utils.py', 'app/core/middleware.py', 'app/api/routes/guardrails.py', 'app/core/validators/topic_relevance.py', 'app/core/db.py', 'app/main.py', 'app/core/logging_config.py', 'app/core/validators/config/nsfw_text_safety_validator_config.py', 'app/core/validators/answer_relevance_custom_llm.py', 'app/core/validators/lexical_slur.py', 'app/core/validators/config/llm_critic_safety_validator_config.py', 'app/alembic/versions/010_add_traceability_columns.py', 'app/alembic/versions/011_rename_validator_log_request_id.py', 'app/core/exception_handlers.py', 'app/evaluation/toxicity/run.py', 'app/evaluation/ban_list/run.py', 'app/evaluation/pii/entity_metrics.py', 'app/api/deps.py', 'app/core/validators/topic_relevance_llm.py', 'app/core/validators/pii_remover.py', 'app/crud/ban_list.py', 'app/core/config.py', 'app/tests/test_guardrails_api_integration.py', 'app/models/logging/request_log.py', 'app/core/telemetry.py', 'app/core/validators/config/base_validator_config.py', 'app/models/logging/validator_log.py', 'app/core/validators/config/profanity_free_safety_validator_config.py', 'app/crud/validator_config.py', 'app/crud/request_log.py', 'app/tests/test_toxicity_hub_validators.py', 'app/crud/llm_prompt_config.py'. Reloading... +2026-09-09 16:58:26,063 INFO uvicorn.error Shutting down +2026-09-09 16:58:26,169 INFO uvicorn.error Waiting for application shutdown. +2026-09-09 16:58:26,170 INFO uvicorn.error Application shutdown complete. +2026-09-09 16:58:26,171 INFO uvicorn.error Finished server process [71979] +2026-09-09 16:58:26,562 INFO watchfiles.main 1 change detected +2026-09-09 16:58:26,950 INFO watchfiles.main 30 changes detected +2026-09-09 16:58:29,728 INFO watchfiles.main 6 changes detected