From 110c82dc1ab0d72d7b3df874e7a6a403547b6693 Mon Sep 17 00:00:00 2001 From: dennisjoseph2025-dotcom Date: Thu, 18 Jun 2026 13:30:25 +0530 Subject: [PATCH 1/3] docs: update README with v2 features (universal support, responsive UI, publishing) --- README.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 42b4564..26f25b1 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # PyDocAI -### AI-Powered Python Documentation Generator +### AI-Powered Documentation Generator for Any Language [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![GitHub stars](https://img.shields.io/github/stars/dennisjoseph2025/PyDocAI?style=social)](https://github.com/dennisjoseph2025/PyDocAI/stargazers) @@ -11,7 +11,7 @@ [![Django](https://img.shields.io/badge/backend-Django-092E20?logo=django)](https://www.djangoproject.com/) [![React](https://img.shields.io/badge/frontend-React-61DAFB?logo=react)](https://react.dev/) -**Upload your Python/Django code and let AI generate beautiful, comprehensive documentation in seconds.** +**Upload your code and let AI generate beautiful, comprehensive documentation in seconds.** [๐ŸŒ Live Demo](https://pydocai.vercel.app) ยท [๐Ÿ› Report Bug](https://github.com/dennisjoseph2025/PyDocAI/issues) ยท [โœจ Feature Request](https://github.com/dennisjoseph2025/PyDocAI/issues) @@ -21,13 +21,16 @@ ## Features -- **๐Ÿค– AI-Powered Documentation** โ€” Parses your code with Python AST and generates human-readable docs using Groq AI (with Gemini/Claude fallbacks) -- **๐Ÿ“ Multiple Input Methods** โ€” Upload single `.py` files, `.zip` archives, or connect a GitHub repository -- **๐Ÿ“Š Schema Generation** โ€” Auto-compiled tables detailing database models, field types, constraints, and relationships -- **๐Ÿ”— Endpoint Mapping** โ€” Automated REST API documentation with HTTP methods, path parameters, and JSON responses +- **๐Ÿค– AI-Powered Documentation** โ€” Parses your code and generates human-readable docs using Groq AI (with Gemini/Claude fallbacks) +- **๐ŸŒ Universal Language Support** โ€” Works with Python, JavaScript, TypeScript, Java, Go, Rust, and more via AI-driven analysis +- **๐Ÿ Python AST Mode** โ€” Deep Python/Django code analysis with AST parsing for schema tables, endpoint mapping, and model relationships +- **๐Ÿ“ Multiple Input Methods** โ€” Upload single `.py` files, `.zip` archives, paste raw code, or connect a GitHub repository +- **๐Ÿ“Š Schema Generation** โ€” Auto-compiled tables detailing database models, field types, constraints, and relationships (Python mode) +- **๐Ÿ”— Endpoint Mapping** โ€” Automated REST API documentation with HTTP methods, path parameters, and JSON responses (Python mode) - **๐Ÿ“ Markdown Export** โ€” Export documentation as clean Markdown, compatible with GitHub, GitLab, and VS Code +- **๐Ÿ“ข Publish & Share** โ€” Publish documentation publicly with shareable links and community comments - **๐Ÿ” User Authentication** โ€” JWT-based auth with GitHub OAuth, email/password registration, password reset -- **๐Ÿ“ฑ Responsive Design** โ€” Dark-themed UI built with React 19, Tailwind CSS, and a cyberpunk/IDE aesthetic +- **๐Ÿ“ฑ Fully Responsive** โ€” Mobile-first dark UI with slide-in sidebar navigation, works on phones, tablets, and desktops ## Tech Stack From 846ac57be35be4c96f0010443abb0306908d8058 Mon Sep 17 00:00:00 2001 From: dennisjoseph2025-dotcom Date: Thu, 18 Jun 2026 13:35:31 +0530 Subject: [PATCH 2/3] docs: update How It Works, Project Structure, API, and env vars with v2 services --- README.md | 80 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 69 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 26f25b1..8737df6 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,7 @@ npm run dev ## How It Works +### Python Mode (AST-powered) ``` 1. Upload Code โ”€โ”€โ–ถ 2. AST Parsing โ”€โ”€โ–ถ 3. AI Generation โ”€โ”€โ–ถ 4. Beautiful Docs โ”‚ โ”‚ โ”‚ โ”‚ @@ -81,6 +82,14 @@ npm run dev GitHub repo extracts types writes docs preview + export ``` +### Universal Mode (AI-direct) +``` +1. Upload Code โ”€โ”€โ–ถ 2. AI Analysis โ”€โ”€โ–ถ 3. Structured Docs + โ”‚ โ”‚ โ”‚ + any language Groq LLM Tabbed README / + (.py/.js/.ts/...) analyzes code API / Architecture +``` + ## Project Structure ``` @@ -91,16 +100,28 @@ PyDocAi/ โ”‚ โ”‚ โ”œโ”€โ”€ projects/ # Project CRUD โ”‚ โ”‚ โ”œโ”€โ”€ parser/ # Python AST parsing โ”‚ โ”‚ โ”œโ”€โ”€ ai/ # AI documentation generation +โ”‚ โ”‚ โ”œโ”€โ”€ universal/ # Universal code analysis โ”‚ โ”‚ โ”œโ”€โ”€ github_integration/# GitHub OAuth & repo fetching -โ”‚ โ”‚ โ””โ”€โ”€ exports/ # Markdown export +โ”‚ โ”‚ โ”œโ”€โ”€ exports/ # Markdown export +โ”‚ โ”‚ โ”œโ”€โ”€ comments/ # Public doc comments +โ”‚ โ”‚ โ”œโ”€โ”€ feedback/ # User feedback & ratings +โ”‚ โ”‚ โ”œโ”€โ”€ admin_dashboard/ # Admin panel +โ”‚ โ”‚ โ”œโ”€โ”€ notifications/ # User notifications +โ”‚ โ”‚ โ””โ”€โ”€ internal/ # Internal utilities +โ”‚ โ”œโ”€โ”€ services/ +โ”‚ โ”‚ โ”œโ”€โ”€ parser/ # FastAPI AST parsing service +โ”‚ โ”‚ โ””โ”€โ”€ ai/ # FastAPI AI generation service โ”‚ โ”œโ”€โ”€ config/ # Django settings โ”‚ โ””โ”€โ”€ requirements/ โ”œโ”€โ”€ frondend/ # React + Vite frontend โ”‚ โ””โ”€โ”€ src/ -โ”‚ โ”œโ”€โ”€ pages/ # Route pages -โ”‚ โ”œโ”€โ”€ components/ # Reusable components -โ”‚ โ””โ”€โ”€ context/ # Auth context +โ”‚ โ”œโ”€โ”€ pages/ # Route pages (19 pages) +โ”‚ โ”œโ”€โ”€ components/ # Reusable UI components +โ”‚ โ”œโ”€โ”€ hooks/ # Custom React hooks +โ”‚ โ”œโ”€โ”€ context/ # Auth context +โ”‚ โ””โ”€โ”€ api/ # API client โ”œโ”€โ”€ docker-compose.yml +โ”œโ”€โ”€ nginx/ โ””โ”€โ”€ README.md ``` @@ -110,20 +131,57 @@ PyDocAi/ |----------|--------|-------------| | `/api/auth/register/` | POST | Register new user | | `/api/auth/login/` | POST | Login (JWT) | -| `/api/projects/` | GET | List projects | -| `/api/projects/` | POST | Create project | -| `/api/parser/analyze-file/` | POST | Analyze single `.py` file | -| `/api/parser/analyze-folder/` | POST | Analyze ZIP folder | +| `/api/auth/profile/` | GET/PUT | Get/update profile | +| `/api/auth/password/reset/` | POST | Request password reset | +| `/api/auth/github/login/` | POST | GitHub OAuth login | +| `/api/projects/` | GET/POST | List / create projects | +| `/api/projects/{id}/` | GET/PUT/DELETE | Project detail / update / delete | +| `/api/projects/{id}/publish/` | POST | Toggle publish status | +| `/api/parser/analyze-file/` | POST | Analyze single `.py` file (AST) | +| `/api/parser/analyze-folder/` | POST | Analyze ZIP folder (AST) | +| `/api/ai/generate/` | POST | Start AI documentation generation | +| `/api/ai/status/{task_id}/` | GET | Poll generation status | +| `/api/universal/analyze/` | POST | Analyze any code (universal mode) | +| `/api/universal/status/{id}/` | GET | Poll universal analysis status | +| `/api/github/repos/` | GET | List user's GitHub repos | +| `/api/github/fetch/` | POST | Fetch repo contents | | `/api/exports/markdown/{id}/` | GET | Export as Markdown | +| `/api/comments/` | GET/POST | List / create comments | +| `/api/comments/{id}/` | DELETE | Delete comment | +| `/api/feedback/` | GET/POST | List / submit feedback | +| `/api/notifications/` | GET | List notifications | +| `/api/public/projects/` | GET | List published projects | +| `/api/public/projects/{slug}/` | GET | Get published project detail | +| `/api/admin-dashboard/stats/` | GET | Admin dashboard stats | ## Environment Variables +### Backend (`backend/.env`) + | Variable | Description | |----------|-------------| | `DJANGO_SECRET_KEY` | Django secret key | -| `DATABASE_URL` | PostgreSQL connection | -| `REDIS_URL` | Redis connection | -| `GROQ_API_KEY` | Groq AI API key | +| `DB_NAME`, `DB_USER`, `DB_PASSWORD` | PostgreSQL credentials | +| `DB_HOST`, `DB_PORT` | PostgreSQL host and port | +| `CELERY_BROKER_URL` | Redis URL for Celery broker | +| `GROQ_API_KEY` | Primary Groq AI API key | +| `GROQ_API_KEY_2` | Secondary Groq AI API key (fallback) | +| `GITHUB_CLIENT_ID` | GitHub OAuth app client ID | +| `GITHUB_CLIENT_SECRET` | GitHub OAuth app secret | +| `GITHUB_API_TOKEN` | GitHub API token for repo fetching | +| `EMAIL_HOST`, `EMAIL_PORT` | SMTP server settings | +| `EMAIL_HOST_USER`, `EMAIL_HOST_PASSWORD` | SMTP credentials | +| `FRONTEND_URL` | Frontend origin for CORS | +| `CORS_ALLOWED_ORIGINS` | Allowed CORS origins | +| `AWS_ACCESS_KEY_ID` | AWS S3 access key (production) | +| `AWS_SECRET_ACCESS_KEY` | AWS S3 secret key (production) | +| `AWS_STORAGE_BUCKET_NAME` | S3 bucket name (production) | + +### Frontend (`frondend/.env`) + +| Variable | Description | +|----------|-------------| +| `VITE_GITHUB_CLIENT_ID` | GitHub OAuth client ID for frontend login | --- From 6a9fca0fd4c04720bb03d1b28646404ab69c0c10 Mon Sep 17 00:00:00 2001 From: dennisjoseph2025-dotcom Date: Wed, 24 Jun 2026 14:55:10 +0530 Subject: [PATCH 3/3] feat: restructure backend to services/, add favicons, update docs --- .gitignore | 4 + API_DOCS.md | 218 +++ README.md | 165 +- backend/Dockerfile | 27 - backend/apps/admin_dashboard/tests.py | 28 - backend/apps/admin_dashboard/views.py | 225 --- backend/apps/exports/tests.py | 29 - backend/apps/feedback/tests.py | 32 - backend/apps/feedback/views.py | 82 - backend/apps/github_integration/fetcher.py | 216 --- backend/apps/github_integration/tests.py | 33 - backend/apps/internal/urls.py | 8 - backend/apps/internal/views.py | 96 -- backend/apps/notifications/utils.py | 123 -- backend/apps/parser/tests.py | 127 -- backend/apps/projects/tests.py | 51 - backend/apps/projects/views.py | 159 -- backend/apps/universal/tests.py | 284 ---- backend/apps/users/tests.py | 66 - backend/celerybeat-schedule.db | Bin 12288 -> 0 bytes backend/entrypoint.sh | 5 - backend/services/ai/Dockerfile | 14 - backend/services/ai/main.py | 943 ------------ backend/services/ai/models.py | 62 - backend/services/ai/test_main.py | 109 -- backend/services/parser/Dockerfile | 12 - backend/services/parser/database.py | 28 - backend/services/parser/main.py | 197 --- backend/services/parser/models.py | 57 - deploy/nginx.conf | 21 +- docker-compose.v2.yml | 4 +- docker-compose.yml | 227 ++- frondend/index.html | 13 + frondend/public/favicon-128x128.png | Bin 0 -> 21303 bytes frondend/public/favicon-144x144.png | Bin 0 -> 26087 bytes frondend/public/favicon-152x152.png | Bin 0 -> 28707 bytes frondend/public/favicon-167x167.png | Bin 0 -> 33955 bytes frondend/public/favicon-16x16.png | Bin 0 -> 826 bytes frondend/public/favicon-180x180.png | Bin 0 -> 38729 bytes frondend/public/favicon-192x192.png | Bin 0 -> 43487 bytes frondend/public/favicon-32x32.png | Bin 0 -> 2444 bytes frondend/public/favicon-48x48.png | Bin 0 -> 4618 bytes frondend/public/favicon-512x512.png | Bin 0 -> 265899 bytes frondend/public/favicon-64x64.png | Bin 0 -> 7201 bytes frondend/public/favicon-96x96.png | Bin 0 -> 13413 bytes frondend/public/favicon.ico | Bin 0 -> 848 bytes frondend/public/favicon.svg | 2 +- frondend/public/favicone.png | Bin 0 -> 1294498 bytes frondend/public/site.webmanifest | 21 + {backend/apps => services/ai}/__init__.py | 0 .../ai/api}/__init__.py | 0 services/ai/api/deps.py | 21 + .../ai => services/ai/api/routes}/__init__.py | 0 services/ai/api/routes/generate.py | 237 +++ services/ai/api/routes/health.py | 14 + services/ai/api/routes/status.py | 17 + .../ai/common}/__init__.py | 0 services/ai/common/auth.py | 27 + services/ai/common/django_client.py | 62 + .../ai/config}/__init__.py | 0 services/ai/config/config.py | 16 + {backend/services => services}/ai/database.py | 8 +- services/ai/docker/Dockerfile | 36 + services/ai/main.py | 57 + services/ai/models/__init__.py | 3 + services/ai/models/code_embedding.py | 19 + {backend/services => services}/ai/rag.py | 16 +- .../services => services}/ai/requirements.txt | 0 .../ai/schemas}/__init__.py | 0 services/ai/schemas/requests.py | 8 + services/ai/schemas/responses.py | 10 + .../ai/services}/__init__.py | 0 services/ai/services/docs_builder.py | 195 +++ services/ai/services/generation.py | 278 ++++ services/ai/services/groq.py | 43 + services/ai/services/markdown.py | 45 + services/ai/services/prompts.py | 103 ++ .../ai/tests}/__init__.py | 0 services/ai/tests/test_routes.py | 95 ++ {backend => services/core}/.gitignore | 0 {backend => services/core}/.python-version | 0 {backend => services/core}/README.md | 0 .../core/apps}/__init__.py | 0 .../core/apps/admin_dashboard}/__init__.py | 0 .../core}/apps/admin_dashboard/apps.py | 0 .../apps/admin_dashboard/tests/__init__.py | 1 + .../admin_dashboard/tests/test_projects.py | 66 + .../apps/admin_dashboard/tests/test_stats.py | 35 + .../apps/admin_dashboard/tests/test_users.py | 83 + .../core}/apps/admin_dashboard/urls.py | 0 .../apps/admin_dashboard/views/__init__.py | 14 + .../apps/admin_dashboard/views/projects.py | 89 ++ .../core/apps/admin_dashboard/views/stats.py | 57 + .../core/apps/admin_dashboard/views/users.py | 112 ++ .../core/apps/ai}/__init__.py | 0 {backend => services/core}/apps/ai/apps.py | 0 .../core/apps/ai}/migrations/__init__.py | 0 services/core/apps/ai/tests/__init__.py | 1 + services/core/apps/ai/tests/test_views.py | 72 + {backend => services/core}/apps/ai/urls.py | 0 services/core/apps/ai/views/__init__.py | 5 + .../core/apps/ai/views/status.py | 6 - .../core/apps/comments}/__init__.py | 0 .../core}/apps/comments/apps.py | 0 .../apps/comments/migrations/0001_initial.py | 0 .../apps/comments/migrations}/__init__.py | 0 .../core}/apps/comments/models.py | 0 .../apps/comments/serializers/__init__.py | 2 +- services/core/apps/comments/tests/__init__.py | 1 + .../core/apps/comments/tests/test_models.py | 40 + .../apps/comments/tests/test_serializers.py | 47 + .../apps/comments/tests/test_throttles.py | 25 + .../core/apps/comments/tests/test_views.py | 115 ++ .../core}/apps/comments/throttles.py | 0 .../core}/apps/comments/urls.py | 0 services/core/apps/comments/views/__init__.py | 1 + .../core/apps/comments/views/comments.py | 34 +- .../core/apps/common}/__init__.py | 0 services/core/apps/common/apps.py | 6 + services/core/apps/common/config.py | 3 + services/core/apps/common/github.py | 115 ++ services/core/apps/common/health.py | 4 + services/core/apps/common/pagination.py | 17 + .../core/apps/common/tests}/__init__.py | 0 .../core/apps/common/tests/test_config.py | 6 + .../core/apps/common/tests/test_github.py | 95 ++ .../core/apps/common/tests/test_pagination.py | 35 + services/core/apps/conftest.py | 112 ++ .../core/apps/exports}/__init__.py | 0 .../core}/apps/exports/apps.py | 0 .../core}/apps/exports/generators.py | 2 +- .../core/apps/exports/migrations}/__init__.py | 0 services/core/apps/exports/tests/__init__.py | 1 + .../apps/exports/tests/test_generators.py | 46 + .../core/apps/exports/tests/test_views.py | 70 + .../core}/apps/exports/urls.py | 0 services/core/apps/exports/views/__init__.py | 7 + .../core/apps/exports/views/folder.py | 26 +- services/core/apps/exports/views/markdown.py | 19 + .../core/apps/feedback}/__init__.py | 0 .../core}/apps/feedback/admin.py | 0 .../core}/apps/feedback/apps.py | 0 .../core}/apps/feedback/email_utils.py | 0 .../apps/feedback/migrations/0001_initial.py | 0 .../0002_feedback_admin_response.py | 0 ...remove_feedback_admin_response_and_more.py | 0 .../0004_remove_feedback_is_public.py | 0 .../apps/feedback/migrations}/__init__.py | 0 .../core}/apps/feedback/models.py | 0 .../apps/feedback/serializers/__init__.py | 3 +- .../core}/apps/feedback/tasks.py | 0 services/core/apps/feedback/tests/__init__.py | 1 + .../apps/feedback/tests/test_email_utils.py | 37 + .../core/apps/feedback/tests/test_models.py | 46 + .../apps/feedback/tests/test_serializers.py | 43 + .../core/apps/feedback/tests/test_tasks.py | 31 + .../core/apps/feedback/tests/test_views.py | 102 ++ .../core}/apps/feedback/urls.py | 0 services/core/apps/feedback/views/__init__.py | 10 + services/core/apps/feedback/views/feedback.py | 100 ++ services/core/apps/feedback/views/replies.py | 29 + .../core/apps/github_integration}/__init__.py | 0 .../core}/apps/github_integration/apps.py | 0 .../core/apps/github_integration/fetcher.py | 98 ++ .../migrations/__init__.py | 0 .../serializers/__init__.py | 0 .../core}/apps/github_integration/tasks.py | 0 .../apps/github_integration/tests/__init__.py | 1 + .../tests/test_serializers.py | 26 + .../github_integration/tests/test_views.py | 119 ++ .../core}/apps/github_integration/urls.py | 0 .../apps/github_integration/views/__init__.py | 12 + .../apps/github_integration/views/public.py | 104 +- .../apps/github_integration/views/user.py | 103 ++ .../core/apps/internal}/__init__.py | 0 services/core/apps/internal/tests/__init__.py | 1 + .../core/apps/internal/tests/test_views.py | 137 ++ services/core/apps/internal/urls.py | 10 + services/core/apps/internal/views/__init__.py | 8 + services/core/apps/internal/views/receive.py | 152 ++ services/core/apps/notifications/__init__.py | 0 .../core}/apps/notifications/apps.py | 0 .../notifications/migrations/0001_initial.py | 0 .../apps/notifications/migrations/__init__.py | 0 .../core}/apps/notifications/models.py | 0 .../notifications/serializers/__init__.py | 2 +- .../core}/apps/notifications/tasks.py | 0 .../core/apps/notifications/tests/__init__.py | 1 + .../apps/notifications/tests/test_models.py | 34 + .../notifications/tests/test_serializers.py | 29 + .../apps/notifications/tests/test_tasks.py | 35 + .../apps/notifications/tests/test_utils.py | 99 ++ .../apps/notifications/tests/test_views.py | 100 ++ .../core}/apps/notifications/urls.py | 0 services/core/apps/notifications/utils.py | 66 + .../core/apps/notifications/views/__init__.py | 8 + .../apps/notifications/views/notifications.py | 4 +- services/core/apps/parser/__init__.py | 0 .../core}/apps/parser/apps.py | 0 .../core}/apps/parser/ast_parser.py | 8 +- .../core/apps/parser/migrations/__init__.py | 0 .../core}/apps/parser/tasks.py | 2 +- services/core/apps/parser/tests/__init__.py | 1 + .../core/apps/parser/tests/test_ast_parser.py | 100 ++ services/core/apps/parser/tests/test_tasks.py | 20 + .../core/apps/parser/tests/test_validators.py | 55 + services/core/apps/parser/tests/test_views.py | 113 ++ .../core}/apps/parser/urls.py | 0 .../core}/apps/parser/validators.py | 0 services/core/apps/parser/views/__init__.py | 7 + services/core/apps/parser/views/file.py | 46 + .../core/apps/parser/views/folder.py | 45 +- services/core/apps/projects/__init__.py | 0 .../core}/apps/projects/admin.py | 0 .../core}/apps/projects/apps.py | 0 .../apps/projects/migrations/0001_initial.py | 0 ...roject_project_info_project_readme_docs.py | 0 .../migrations/0003_project_api_docs.py | 0 .../migrations/0004_project_custom_details.py | 0 .../migrations/0005_remove_file_fields.py | 0 ...work_info_project_is_published_and_more.py | 0 .../core/apps/projects/migrations/__init__.py | 0 .../core/apps/projects/models/__init__.py | 4 + services/core/apps/projects/models/file.py | 26 + .../core/apps/projects/models/project.py | 45 +- .../apps/projects/serializers/__init__.py | 10 + .../core/apps/projects/serializers/project.py | 35 +- .../core/apps/projects/serializers/public.py | 37 + services/core/apps/projects/tests/__init__.py | 0 .../core/apps/projects/tests/test_models.py | 58 + .../apps/projects/tests/test_serializers.py | 62 + .../core/apps/projects/tests/test_views.py | 125 ++ .../core}/apps/projects/throttles.py | 0 .../core}/apps/projects/urls.py | 0 services/core/apps/projects/views/__init__.py | 10 + services/core/apps/projects/views/project.py | 137 ++ services/core/apps/projects/views/public.py | 58 + services/core/apps/universal/__init__.py | 0 .../core}/apps/universal/apps.py | 0 .../core}/apps/universal/prompts.py | 0 .../core}/apps/universal/tasks.py | 47 +- .../core/apps/universal/tests/__init__.py | 1 + .../core/apps/universal/tests/test_prompts.py | 47 + .../core/apps/universal/tests/test_tasks.py | 68 + .../core/apps/universal/tests/test_views.py | 71 + .../core}/apps/universal/urls.py | 0 .../core/apps/universal/views/__init__.py | 7 + services/core/apps/universal/views/status.py | 27 + .../core/apps/universal/views/upload.py | 22 - services/core/apps/users/__init__.py | 0 .../core}/apps/users/admin.py | 0 {backend => services/core}/apps/users/apps.py | 0 .../core}/apps/users/email_utils.py | 0 .../core}/apps/users/github.py | 0 .../management/commands/create_test_user.py | 0 .../apps/users/migrations/0001_initial.py | 0 .../apps/users/migrations/0002_user_name.py | 0 .../migrations/0003_passwordresettoken.py | 0 .../core/apps/users/migrations/__init__.py | 0 services/core/apps/users/models/__init__.py | 4 + .../core/apps/users/models/password_reset.py | 22 + .../core/apps/users/models/user.py | 21 - .../core/apps/users/serializers/__init__.py | 14 + services/core/apps/users/serializers/auth.py | 40 + .../apps/users/serializers/password_reset.py | 11 + .../core/apps/users/serializers/profile.py | 51 +- .../core}/apps/users/tasks.py | 0 services/core/apps/users/tests/__init__.py | 0 services/core/apps/users/tests/test_models.py | 54 + .../core/apps/users/tests/test_serializers.py | 77 + services/core/apps/users/tests/test_views.py | 157 ++ {backend => services/core}/apps/users/urls.py | 0 services/core/apps/users/views/__init__.py | 17 + services/core/apps/users/views/admin.py | 51 + .../core/apps/users/views/auth.py | 111 +- .../core/apps/users/views/password_reset.py | 47 + services/core/apps/users/views/profile.py | 31 + {backend => services/core}/config/__init__.py | 0 {backend => services/core}/config/asgi.py | 2 +- {backend => services/core}/config/celery.py | 2 +- services/core/config/settings/__init__.py | 0 .../core}/config/settings/base.py | 61 +- .../core}/config/settings/development.py | 6 +- .../core}/config/settings/production.py | 22 +- .../core}/config/storage_backends.py | 0 {backend => services/core}/config/urls.py | 7 + {backend => services/core}/config/wsgi.py | 2 +- {backend => services/core/deploy}/Procfile | 0 .../core/docker}/.dockerignore | 0 services/core/docker/Dockerfile | 43 + services/core/docker/entrypoint.sh | 4 + {backend => services/core/env}/.env.example | 1 + {backend => services/core}/manage.py | 0 {backend => services/core}/pyproject.toml | 4 +- .../core}/requirements/base.txt | 0 .../core}/requirements/development.txt | 0 .../core}/requirements/production.txt | 0 services/core/seed/seed_admin.py | 24 + .../templates/emails/account_blocked.html | 25 + .../templates/emails/account_deleted.html | 31 + .../emails/feedback_confirmation.html | 0 .../emails/feedback_confirmation.txt | 0 .../templates/emails/feedback_reply.html | 0 .../core}/templates/emails/feedback_reply.txt | 0 .../emails/notification_comment.html | 33 + .../templates/emails/notification_reply.html | 38 + .../templates/emails/password_reset.html | 0 .../core}/templates/emails/password_reset.txt | 0 .../core}/templates/emails/welcome.html | 0 .../core}/templates/emails/welcome.txt | 0 {backend => services/core}/uv.lock | 1342 ++++++++--------- services/parser/__init__.py | 0 services/parser/api/__init__.py | 0 services/parser/api/deps.py | 12 + services/parser/api/routes/__init__.py | 0 services/parser/api/routes/file.py | 63 + services/parser/api/routes/folder.py | 93 ++ services/parser/api/routes/health.py | 8 + services/parser/api/routes/status.py | 18 + .../parser/ast_parser.py | 0 services/parser/common/__init__.py | 0 services/parser/common/auth.py | 24 + services/parser/common/django_client.py | 61 + services/parser/config/__init__.py | 0 services/parser/config/config.py | 13 + services/parser/docker/Dockerfile | 31 + .../parser/framework_detector.py | 0 services/parser/main.py | 55 + .../parser/requirements.txt | 3 - services/parser/schemas/__init__.py | 0 services/parser/schemas/requests.py | 21 + services/parser/services/__init__.py | 0 services/parser/tests/__init__.py | 0 .../parser/tests/test_routes.py | 75 +- .../parser/validators.py | 0 335 files changed, 7653 insertions(+), 4392 deletions(-) create mode 100644 API_DOCS.md delete mode 100644 backend/Dockerfile delete mode 100644 backend/apps/admin_dashboard/tests.py delete mode 100644 backend/apps/admin_dashboard/views.py delete mode 100644 backend/apps/exports/tests.py delete mode 100644 backend/apps/feedback/tests.py delete mode 100644 backend/apps/feedback/views.py delete mode 100644 backend/apps/github_integration/fetcher.py delete mode 100644 backend/apps/github_integration/tests.py delete mode 100644 backend/apps/internal/urls.py delete mode 100644 backend/apps/internal/views.py delete mode 100644 backend/apps/notifications/utils.py delete mode 100644 backend/apps/parser/tests.py delete mode 100644 backend/apps/projects/tests.py delete mode 100644 backend/apps/projects/views.py delete mode 100644 backend/apps/universal/tests.py delete mode 100644 backend/apps/users/tests.py delete mode 100644 backend/celerybeat-schedule.db delete mode 100644 backend/entrypoint.sh delete mode 100644 backend/services/ai/Dockerfile delete mode 100644 backend/services/ai/main.py delete mode 100644 backend/services/ai/models.py delete mode 100644 backend/services/ai/test_main.py delete mode 100644 backend/services/parser/Dockerfile delete mode 100644 backend/services/parser/database.py delete mode 100644 backend/services/parser/main.py delete mode 100644 backend/services/parser/models.py create mode 100644 frondend/public/favicon-128x128.png create mode 100644 frondend/public/favicon-144x144.png create mode 100644 frondend/public/favicon-152x152.png create mode 100644 frondend/public/favicon-167x167.png create mode 100644 frondend/public/favicon-16x16.png create mode 100644 frondend/public/favicon-180x180.png create mode 100644 frondend/public/favicon-192x192.png create mode 100644 frondend/public/favicon-32x32.png create mode 100644 frondend/public/favicon-48x48.png create mode 100644 frondend/public/favicon-512x512.png create mode 100644 frondend/public/favicon-64x64.png create mode 100644 frondend/public/favicon-96x96.png create mode 100644 frondend/public/favicon.ico create mode 100644 frondend/public/favicone.png create mode 100644 frondend/public/site.webmanifest rename {backend/apps => services/ai}/__init__.py (100%) rename {backend/apps/admin_dashboard => services/ai/api}/__init__.py (100%) create mode 100644 services/ai/api/deps.py rename {backend/apps/ai => services/ai/api/routes}/__init__.py (100%) create mode 100644 services/ai/api/routes/generate.py create mode 100644 services/ai/api/routes/health.py create mode 100644 services/ai/api/routes/status.py rename {backend/apps/ai/migrations => services/ai/common}/__init__.py (100%) create mode 100644 services/ai/common/auth.py create mode 100644 services/ai/common/django_client.py rename {backend/apps/comments => services/ai/config}/__init__.py (100%) create mode 100644 services/ai/config/config.py rename {backend/services => services}/ai/database.py (83%) create mode 100644 services/ai/docker/Dockerfile create mode 100644 services/ai/main.py create mode 100644 services/ai/models/__init__.py create mode 100644 services/ai/models/code_embedding.py rename {backend/services => services}/ai/rag.py (94%) rename {backend/services => services}/ai/requirements.txt (100%) rename {backend/apps/comments/migrations => services/ai/schemas}/__init__.py (100%) create mode 100644 services/ai/schemas/requests.py create mode 100644 services/ai/schemas/responses.py rename {backend/apps/exports => services/ai/services}/__init__.py (100%) create mode 100644 services/ai/services/docs_builder.py create mode 100644 services/ai/services/generation.py create mode 100644 services/ai/services/groq.py create mode 100644 services/ai/services/markdown.py create mode 100644 services/ai/services/prompts.py rename {backend/apps/exports/migrations => services/ai/tests}/__init__.py (100%) create mode 100644 services/ai/tests/test_routes.py rename {backend => services/core}/.gitignore (100%) rename {backend => services/core}/.python-version (100%) rename {backend => services/core}/README.md (100%) rename {backend/apps/feedback => services/core/apps}/__init__.py (100%) rename {backend/apps/feedback/migrations => services/core/apps/admin_dashboard}/__init__.py (100%) rename {backend => services/core}/apps/admin_dashboard/apps.py (100%) create mode 100644 services/core/apps/admin_dashboard/tests/__init__.py create mode 100644 services/core/apps/admin_dashboard/tests/test_projects.py create mode 100644 services/core/apps/admin_dashboard/tests/test_stats.py create mode 100644 services/core/apps/admin_dashboard/tests/test_users.py rename {backend => services/core}/apps/admin_dashboard/urls.py (100%) create mode 100644 services/core/apps/admin_dashboard/views/__init__.py create mode 100644 services/core/apps/admin_dashboard/views/projects.py create mode 100644 services/core/apps/admin_dashboard/views/stats.py create mode 100644 services/core/apps/admin_dashboard/views/users.py rename {backend/apps/github_integration => services/core/apps/ai}/__init__.py (100%) rename {backend => services/core}/apps/ai/apps.py (100%) rename {backend/apps/github_integration => services/core/apps/ai}/migrations/__init__.py (100%) create mode 100644 services/core/apps/ai/tests/__init__.py create mode 100644 services/core/apps/ai/tests/test_views.py rename {backend => services/core}/apps/ai/urls.py (100%) create mode 100644 services/core/apps/ai/views/__init__.py rename backend/apps/ai/views.py => services/core/apps/ai/views/status.py (90%) rename {backend/apps/internal => services/core/apps/comments}/__init__.py (100%) rename {backend => services/core}/apps/comments/apps.py (100%) rename {backend => services/core}/apps/comments/migrations/0001_initial.py (100%) rename {backend/apps/notifications => services/core/apps/comments/migrations}/__init__.py (100%) rename {backend => services/core}/apps/comments/models.py (100%) rename backend/apps/comments/serializers.py => services/core/apps/comments/serializers/__init__.py (98%) create mode 100644 services/core/apps/comments/tests/__init__.py create mode 100644 services/core/apps/comments/tests/test_models.py create mode 100644 services/core/apps/comments/tests/test_serializers.py create mode 100644 services/core/apps/comments/tests/test_throttles.py create mode 100644 services/core/apps/comments/tests/test_views.py rename {backend => services/core}/apps/comments/throttles.py (100%) rename {backend => services/core}/apps/comments/urls.py (100%) create mode 100644 services/core/apps/comments/views/__init__.py rename backend/apps/comments/views.py => services/core/apps/comments/views/comments.py (70%) rename {backend/apps/notifications/migrations => services/core/apps/common}/__init__.py (100%) create mode 100644 services/core/apps/common/apps.py create mode 100644 services/core/apps/common/config.py create mode 100644 services/core/apps/common/github.py create mode 100644 services/core/apps/common/health.py create mode 100644 services/core/apps/common/pagination.py rename {backend/apps/parser => services/core/apps/common/tests}/__init__.py (100%) create mode 100644 services/core/apps/common/tests/test_config.py create mode 100644 services/core/apps/common/tests/test_github.py create mode 100644 services/core/apps/common/tests/test_pagination.py create mode 100644 services/core/apps/conftest.py rename {backend/apps/parser/migrations => services/core/apps/exports}/__init__.py (100%) rename {backend => services/core}/apps/exports/apps.py (100%) rename {backend => services/core}/apps/exports/generators.py (95%) rename {backend/apps/projects => services/core/apps/exports/migrations}/__init__.py (100%) create mode 100644 services/core/apps/exports/tests/__init__.py create mode 100644 services/core/apps/exports/tests/test_generators.py create mode 100644 services/core/apps/exports/tests/test_views.py rename {backend => services/core}/apps/exports/urls.py (100%) create mode 100644 services/core/apps/exports/views/__init__.py rename backend/apps/exports/views.py => services/core/apps/exports/views/folder.py (72%) create mode 100644 services/core/apps/exports/views/markdown.py rename {backend/apps/projects/migrations => services/core/apps/feedback}/__init__.py (100%) rename {backend => services/core}/apps/feedback/admin.py (100%) rename {backend => services/core}/apps/feedback/apps.py (100%) rename {backend => services/core}/apps/feedback/email_utils.py (100%) rename {backend => services/core}/apps/feedback/migrations/0001_initial.py (100%) rename {backend => services/core}/apps/feedback/migrations/0002_feedback_admin_response.py (100%) rename {backend => services/core}/apps/feedback/migrations/0003_remove_feedback_admin_response_and_more.py (100%) rename {backend => services/core}/apps/feedback/migrations/0004_remove_feedback_is_public.py (100%) rename {backend/apps/universal => services/core/apps/feedback/migrations}/__init__.py (100%) rename {backend => services/core}/apps/feedback/models.py (100%) rename backend/apps/feedback/serializers.py => services/core/apps/feedback/serializers/__init__.py (96%) rename {backend => services/core}/apps/feedback/tasks.py (100%) create mode 100644 services/core/apps/feedback/tests/__init__.py create mode 100644 services/core/apps/feedback/tests/test_email_utils.py create mode 100644 services/core/apps/feedback/tests/test_models.py create mode 100644 services/core/apps/feedback/tests/test_serializers.py create mode 100644 services/core/apps/feedback/tests/test_tasks.py create mode 100644 services/core/apps/feedback/tests/test_views.py rename {backend => services/core}/apps/feedback/urls.py (100%) create mode 100644 services/core/apps/feedback/views/__init__.py create mode 100644 services/core/apps/feedback/views/feedback.py create mode 100644 services/core/apps/feedback/views/replies.py rename {backend/apps/users => services/core/apps/github_integration}/__init__.py (100%) rename {backend => services/core}/apps/github_integration/apps.py (100%) create mode 100644 services/core/apps/github_integration/fetcher.py rename {backend/apps/users => services/core/apps/github_integration}/migrations/__init__.py (100%) rename backend/apps/github_integration/serializers.py => services/core/apps/github_integration/serializers/__init__.py (100%) rename {backend => services/core}/apps/github_integration/tasks.py (100%) create mode 100644 services/core/apps/github_integration/tests/__init__.py create mode 100644 services/core/apps/github_integration/tests/test_serializers.py create mode 100644 services/core/apps/github_integration/tests/test_views.py rename {backend => services/core}/apps/github_integration/urls.py (100%) create mode 100644 services/core/apps/github_integration/views/__init__.py rename backend/apps/github_integration/views.py => services/core/apps/github_integration/views/public.py (53%) create mode 100644 services/core/apps/github_integration/views/user.py rename {backend/config/settings => services/core/apps/internal}/__init__.py (100%) create mode 100644 services/core/apps/internal/tests/__init__.py create mode 100644 services/core/apps/internal/tests/test_views.py create mode 100644 services/core/apps/internal/urls.py create mode 100644 services/core/apps/internal/views/__init__.py create mode 100644 services/core/apps/internal/views/receive.py create mode 100644 services/core/apps/notifications/__init__.py rename {backend => services/core}/apps/notifications/apps.py (100%) rename {backend => services/core}/apps/notifications/migrations/0001_initial.py (100%) create mode 100644 services/core/apps/notifications/migrations/__init__.py rename {backend => services/core}/apps/notifications/models.py (100%) rename backend/apps/notifications/serializers.py => services/core/apps/notifications/serializers/__init__.py (92%) rename {backend => services/core}/apps/notifications/tasks.py (100%) create mode 100644 services/core/apps/notifications/tests/__init__.py create mode 100644 services/core/apps/notifications/tests/test_models.py create mode 100644 services/core/apps/notifications/tests/test_serializers.py create mode 100644 services/core/apps/notifications/tests/test_tasks.py create mode 100644 services/core/apps/notifications/tests/test_utils.py create mode 100644 services/core/apps/notifications/tests/test_views.py rename {backend => services/core}/apps/notifications/urls.py (100%) create mode 100644 services/core/apps/notifications/utils.py create mode 100644 services/core/apps/notifications/views/__init__.py rename backend/apps/notifications/views.py => services/core/apps/notifications/views/notifications.py (95%) create mode 100644 services/core/apps/parser/__init__.py rename {backend => services/core}/apps/parser/apps.py (100%) rename {backend => services/core}/apps/parser/ast_parser.py (94%) create mode 100644 services/core/apps/parser/migrations/__init__.py rename {backend => services/core}/apps/parser/tasks.py (98%) create mode 100644 services/core/apps/parser/tests/__init__.py create mode 100644 services/core/apps/parser/tests/test_ast_parser.py create mode 100644 services/core/apps/parser/tests/test_tasks.py create mode 100644 services/core/apps/parser/tests/test_validators.py create mode 100644 services/core/apps/parser/tests/test_views.py rename {backend => services/core}/apps/parser/urls.py (100%) rename {backend => services/core}/apps/parser/validators.py (100%) create mode 100644 services/core/apps/parser/views/__init__.py create mode 100644 services/core/apps/parser/views/file.py rename backend/apps/parser/views.py => services/core/apps/parser/views/folder.py (61%) create mode 100644 services/core/apps/projects/__init__.py rename {backend => services/core}/apps/projects/admin.py (100%) rename {backend => services/core}/apps/projects/apps.py (100%) rename {backend => services/core}/apps/projects/migrations/0001_initial.py (100%) rename {backend => services/core}/apps/projects/migrations/0002_project_project_info_project_readme_docs.py (100%) rename {backend => services/core}/apps/projects/migrations/0003_project_api_docs.py (100%) rename {backend => services/core}/apps/projects/migrations/0004_project_custom_details.py (100%) rename {backend => services/core}/apps/projects/migrations/0005_remove_file_fields.py (100%) rename {backend => services/core}/apps/projects/migrations/0006_project_framework_info_project_is_published_and_more.py (100%) create mode 100644 services/core/apps/projects/migrations/__init__.py create mode 100644 services/core/apps/projects/models/__init__.py create mode 100644 services/core/apps/projects/models/file.py rename backend/apps/projects/models.py => services/core/apps/projects/models/project.py (57%) create mode 100644 services/core/apps/projects/serializers/__init__.py rename backend/apps/projects/serializers.py => services/core/apps/projects/serializers/project.py (58%) create mode 100644 services/core/apps/projects/serializers/public.py create mode 100644 services/core/apps/projects/tests/__init__.py create mode 100644 services/core/apps/projects/tests/test_models.py create mode 100644 services/core/apps/projects/tests/test_serializers.py create mode 100644 services/core/apps/projects/tests/test_views.py rename {backend => services/core}/apps/projects/throttles.py (100%) rename {backend => services/core}/apps/projects/urls.py (100%) create mode 100644 services/core/apps/projects/views/__init__.py create mode 100644 services/core/apps/projects/views/project.py create mode 100644 services/core/apps/projects/views/public.py create mode 100644 services/core/apps/universal/__init__.py rename {backend => services/core}/apps/universal/apps.py (100%) rename {backend => services/core}/apps/universal/prompts.py (100%) rename {backend => services/core}/apps/universal/tasks.py (87%) create mode 100644 services/core/apps/universal/tests/__init__.py create mode 100644 services/core/apps/universal/tests/test_prompts.py create mode 100644 services/core/apps/universal/tests/test_tasks.py create mode 100644 services/core/apps/universal/tests/test_views.py rename {backend => services/core}/apps/universal/urls.py (100%) create mode 100644 services/core/apps/universal/views/__init__.py create mode 100644 services/core/apps/universal/views/status.py rename backend/apps/universal/views.py => services/core/apps/universal/views/upload.py (85%) create mode 100644 services/core/apps/users/__init__.py rename {backend => services/core}/apps/users/admin.py (100%) rename {backend => services/core}/apps/users/apps.py (100%) rename {backend => services/core}/apps/users/email_utils.py (100%) rename {backend => services/core}/apps/users/github.py (100%) rename {backend => services/core}/apps/users/management/commands/create_test_user.py (100%) rename {backend => services/core}/apps/users/migrations/0001_initial.py (100%) rename {backend => services/core}/apps/users/migrations/0002_user_name.py (100%) rename {backend => services/core}/apps/users/migrations/0003_passwordresettoken.py (100%) create mode 100644 services/core/apps/users/migrations/__init__.py create mode 100644 services/core/apps/users/models/__init__.py create mode 100644 services/core/apps/users/models/password_reset.py rename backend/apps/users/models.py => services/core/apps/users/models/user.py (72%) create mode 100644 services/core/apps/users/serializers/__init__.py create mode 100644 services/core/apps/users/serializers/auth.py create mode 100644 services/core/apps/users/serializers/password_reset.py rename backend/apps/users/serializers.py => services/core/apps/users/serializers/profile.py (52%) rename {backend => services/core}/apps/users/tasks.py (100%) create mode 100644 services/core/apps/users/tests/__init__.py create mode 100644 services/core/apps/users/tests/test_models.py create mode 100644 services/core/apps/users/tests/test_serializers.py create mode 100644 services/core/apps/users/tests/test_views.py rename {backend => services/core}/apps/users/urls.py (100%) create mode 100644 services/core/apps/users/views/__init__.py create mode 100644 services/core/apps/users/views/admin.py rename backend/apps/users/views.py => services/core/apps/users/views/auth.py (50%) create mode 100644 services/core/apps/users/views/password_reset.py create mode 100644 services/core/apps/users/views/profile.py rename {backend => services/core}/config/__init__.py (100%) rename {backend => services/core}/config/asgi.py (91%) rename {backend => services/core}/config/celery.py (93%) create mode 100644 services/core/config/settings/__init__.py rename {backend => services/core}/config/settings/base.py (72%) rename {backend => services/core}/config/settings/development.py (76%) rename {backend => services/core}/config/settings/production.py (77%) rename {backend => services/core}/config/storage_backends.py (100%) rename {backend => services/core}/config/urls.py (68%) rename {backend => services/core}/config/wsgi.py (91%) rename {backend => services/core/deploy}/Procfile (100%) rename {backend => services/core/docker}/.dockerignore (100%) create mode 100644 services/core/docker/Dockerfile create mode 100644 services/core/docker/entrypoint.sh rename {backend => services/core/env}/.env.example (94%) rename {backend => services/core}/manage.py (100%) rename {backend => services/core}/pyproject.toml (95%) rename {backend => services/core}/requirements/base.txt (100%) rename {backend => services/core}/requirements/development.txt (100%) rename {backend => services/core}/requirements/production.txt (100%) create mode 100644 services/core/seed/seed_admin.py create mode 100644 services/core/templates/emails/account_blocked.html create mode 100644 services/core/templates/emails/account_deleted.html rename {backend => services/core}/templates/emails/feedback_confirmation.html (100%) rename {backend => services/core}/templates/emails/feedback_confirmation.txt (100%) rename {backend => services/core}/templates/emails/feedback_reply.html (100%) rename {backend => services/core}/templates/emails/feedback_reply.txt (100%) create mode 100644 services/core/templates/emails/notification_comment.html create mode 100644 services/core/templates/emails/notification_reply.html rename {backend => services/core}/templates/emails/password_reset.html (100%) rename {backend => services/core}/templates/emails/password_reset.txt (100%) rename {backend => services/core}/templates/emails/welcome.html (100%) rename {backend => services/core}/templates/emails/welcome.txt (100%) rename {backend => services/core}/uv.lock (55%) create mode 100644 services/parser/__init__.py create mode 100644 services/parser/api/__init__.py create mode 100644 services/parser/api/deps.py create mode 100644 services/parser/api/routes/__init__.py create mode 100644 services/parser/api/routes/file.py create mode 100644 services/parser/api/routes/folder.py create mode 100644 services/parser/api/routes/health.py create mode 100644 services/parser/api/routes/status.py rename {backend/services => services}/parser/ast_parser.py (100%) create mode 100644 services/parser/common/__init__.py create mode 100644 services/parser/common/auth.py create mode 100644 services/parser/common/django_client.py create mode 100644 services/parser/config/__init__.py create mode 100644 services/parser/config/config.py create mode 100644 services/parser/docker/Dockerfile rename {backend/services => services}/parser/framework_detector.py (100%) create mode 100644 services/parser/main.py rename {backend/services => services}/parser/requirements.txt (68%) create mode 100644 services/parser/schemas/__init__.py create mode 100644 services/parser/schemas/requests.py create mode 100644 services/parser/services/__init__.py create mode 100644 services/parser/tests/__init__.py rename backend/services/parser/test_main.py => services/parser/tests/test_routes.py (56%) rename {backend/services => services}/parser/validators.py (100%) diff --git a/.gitignore b/.gitignore index 07198e2..3223932 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,7 @@ frondend/call_mcp.js ARCHITECTURE.md social-posts.md .vercel +analyze_icon.py +gen_favicons*.py +fix_favicon.py +remove_bg.py diff --git a/API_DOCS.md b/API_DOCS.md new file mode 100644 index 0000000..63e4a26 --- /dev/null +++ b/API_DOCS.md @@ -0,0 +1,218 @@ +# PyDocAI API Documentation + +PyDocAI exposes three API surfaces: the **Django REST API** (core orchestration), the **Parser Service** (AST analysis), and the **AI Service** (documentation generation). All services are proxied through Nginx on port `8080` during local development. + +## Interactive Docs + +When running via Docker Compose, Swagger UI and ReDoc are available at: + +| Service | Swagger UI | ReDoc | +|---------|-----------|-------| +| **Django Core API** | `http://localhost:8080/api/docs/` | `http://localhost:8080/api/redoc/` | +| **Parser Service** (FastAPI) | `http://localhost:8080/parser/docs/` | โ€” | +| **AI Service** (FastAPI) | `http://localhost:8080/ai/docs/` | โ€” | + +## Authentication + +Most endpoints require JWT authentication. Obtain a token pair via: + +### Register +```bash +POST /api/users/register/ +Content-Type: application/json + +{ + "email": "user@example.com", + "password": "securepass123", + "name": "User Name" +} +``` + +### Login +```bash +POST /api/users/login/ +Content-Type: application/json + +{ + "email": "user@example.com", + "password": "securepass123" +} +``` + +Response: +```json +{ + "access": "eyJhbGciOiJIUzI1NiIs...", + "refresh": "eyJhbGciOiJIUzI1NiIs..." +} +``` + +Include the access token in subsequent requests: +``` +Authorization: Bearer +``` + +### GitHub OAuth +```bash +POST /api/users/github/login/ +Content-Type: application/json + +{ + "code": "" +} +``` + +## Endpoints + +### Authentication & Users + +| Method | Endpoint | Description | +|--------|----------|-------------| +| POST | `/api/users/register/` | Register a new user | +| POST | `/api/users/login/` | Login, returns JWT pair | +| POST | `/api/users/token/refresh/` | Refresh access token | +| GET/PUT | `/api/users/profile/` | Get or update authenticated user's profile | +| POST | `/api/users/password/reset/` | Request password reset email | +| POST | `/api/users/password/reset/confirm/` | Confirm password reset with token | +| POST | `/api/users/github/login/` | GitHub OAuth login | + +### Projects + +| Method | Endpoint | Description | +|--------|----------|-------------| +| GET | `/api/projects/` | List authenticated user's projects | +| POST | `/api/projects/` | Create a new project | +| GET | `/api/projects/{id}/` | Get project detail | +| PUT | `/api/projects/{id}/` | Update project | +| DELETE | `/api/projects/{id}/` | Delete project | +| POST | `/api/projects/{id}/publish/` | Toggle publish status | + +### Code Parsing (Python AST) + +| Method | Endpoint | Description | +|--------|----------|-------------| +| POST | `/api/parser/analyze-file/` | Analyze a single `.py` file | +| POST | `/api/parser/analyze-folder/` | Analyze a `.zip` archive of Python files | + +These endpoints upload the file(s) to the Django API, which forwards them to the **FastAPI Parser** service internally. The parser extracts: +- **Schema tables** โ€” Django model fields, types, constraints, relationships +- **Endpoint mappings** โ€” URL routes, HTTP methods, path parameters, serializer fields + +### AI Documentation Generation + +| Method | Endpoint | Description | +|--------|----------|-------------| +| POST | `/api/ai/generate/` | Start AI documentation generation for a project | +| GET | `/api/ai/status/{task_id}/` | Poll generation status | + +The generation flow: +1. POST to `/api/ai/generate/` with a `project_id` โ€” returns a `task_id` +2. The Django API dispatches the task to the **FastAPI AI** service +3. The AI service uses **Groq** (primary), **Gemini**, or **Claude** (fallbacks) to generate documentation +4. Poll `/api/ai/status/{task_id}/` until `status` is `completed` +5. Retrieve the generated docs from the project detail endpoint + +### Universal Code Analysis + +| Method | Endpoint | Description | +|--------|----------|-------------| +| POST | `/api/universal/analyze/` | Analyze code in any supported language | +| GET | `/api/universal/status/{id}/` | Poll analysis status | + +Works with Python, JavaScript, TypeScript, Java, Go, Rust, and more. Unlike AST mode, universal mode sends code directly to the AI for analysis without pre-parsing. + +### GitHub Integration + +| Method | Endpoint | Description | +|--------|----------|-------------| +| GET | `/api/github/repos/` | List authenticated user's GitHub repositories | +| POST | `/api/github/fetch/` | Fetch repository contents for analysis | + +### Exports + +| Method | Endpoint | Description | +|--------|----------|-------------| +| GET | `/api/exports/markdown/{id}/` | Export project documentation as Markdown | + +### Comments (Public Docs) + +| Method | Endpoint | Description | +|--------|----------|-------------| +| GET | `/api/comments/` | List comments on a published doc | +| POST | `/api/comments/` | Create a comment | +| DELETE | `/api/comments/{id}/` | Delete own comment | + +### Feedback + +| Method | Endpoint | Description | +|--------|----------|-------------| +| GET | `/api/feedback/` | List user's feedback submissions | +| POST | `/api/feedback/` | Submit feedback | + +### Notifications + +| Method | Endpoint | Description | +|--------|----------|-------------| +| GET | `/api/notifications/` | List authenticated user's notifications | + +### Public Projects + +| Method | Endpoint | Description | +|--------|----------|-------------| +| GET | `/api/public/projects/` | List all published projects (no auth required) | +| GET | `/api/public/projects/{slug}/` | Get a published project by slug (no auth required) | + +### Admin Dashboard + +| Method | Endpoint | Description | +|--------|----------|-------------| +| GET | `/api/admin-dashboard/stats/` | Admin dashboard statistics (admin only) | + +## FastAPI Microservice Endpoints + +These endpoints are not intended for direct external use โ€” they are called internally by the Django API. + +### Parser Service (`/parser/`) + +| Method | Endpoint | Description | +|--------|----------|-------------| +| POST | `/parser/analyze-file/` | Parse a single Python file via AST | +| POST | `/parser/analyze-folder/` | Parse a ZIP of Python files via AST | +| GET | `/parser/status/{task_id}/` | Get parsing task status | +| GET | `/parser/health/` | Health check | + +### AI Service (`/ai/`) + +| Method | Endpoint | Description | +|--------|----------|-------------| +| POST | `/ai/generate-docs/` | Generate documentation via AI | +| GET | `/ai/status/{task_id}/` | Get generation task status | +| GET | `/ai/health/` | Health check | + +## Error Responses + +All endpoints return consistent error shapes: + +```json +{ + "detail": "Human-readable error message" +} +``` + +Or for validation errors: + +```json +{ + "field_name": ["This field is required."] +} +``` + +Common HTTP status codes: +- `200` โ€” Success +- `201` โ€” Created +- `202` โ€” Accepted (async task dispatched) +- `400` โ€” Bad request / validation error +- `401` โ€” Unauthenticated +- `403` โ€” Forbidden +- `404` โ€” Not found +- `429` โ€” Rate limited diff --git a/README.md b/README.md index 8737df6..f9db8ea 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ ## Features -- **๐Ÿค– AI-Powered Documentation** โ€” Parses your code and generates human-readable docs using Groq AI (with Gemini/Claude fallbacks) +- **๐Ÿค– AI-Powered Documentation** โ€” Parses your code and generates human-readable docs using Groq AI - **๐ŸŒ Universal Language Support** โ€” Works with Python, JavaScript, TypeScript, Java, Go, Rust, and more via AI-driven analysis - **๐Ÿ Python AST Mode** โ€” Deep Python/Django code analysis with AST parsing for schema tables, endpoint mapping, and model relationships - **๐Ÿ“ Multiple Input Methods** โ€” Upload single `.py` files, `.zip` archives, paste raw code, or connect a GitHub repository @@ -39,7 +39,7 @@ | **Frontend** | React 19, Vite, TypeScript, Tailwind CSS, React Router | | **Backend** | Django 5, Django REST Framework, Celery, Redis | | **Database** | PostgreSQL | -| **AI** | Groq API (LLaMA), Gemini/Claude fallbacks | +| **AI** | Groq API (LLaMA) | | **Deployment** | Vercel (frontend), AWS EC2 + RDS + ElastiCache (backend) | ## Quick Start @@ -52,6 +52,9 @@ docker-compose up --build -d - Frontend: http://localhost:5173 - Backend API: http://localhost:8000 +- API Docs (Swagger): http://localhost:8080/api/docs/ +- Parser API Docs: http://localhost:8080/parser/docs/ +- AI API Docs: http://localhost:8080/ai/docs/ ### Without Docker @@ -90,69 +93,119 @@ npm run dev (.py/.js/.ts/...) analyzes code API / Architecture ``` +## Architecture + +```mermaid +graph LR + F["React Frontend
:5173"]:::frontend + N["Nginx
:8080"]:::gateway + D["Django Core
:8000"]:::api + R[("Redis")]:::data + C["Celery
Worker"]:::worker + P["FastAPI
Parser :8002"]:::fastapi + A["FastAPI
AI :8003"]:::fastapi + PG[("PostgreSQL")]:::data + G["Groq API"]:::ext + GH["GitHub"]:::ext + + F -->|1. upload code| N + N -->|/api/parser/| D + D -->|2. create project| PG + D -->|3. dispatch task| R + R --> C + C -->|4. AST parse| P + C -->|5. generate docs| A + P -->|parsed data| D + A -->|docs| D + A -.->|embeddings| PG + D -->|6. store result| PG + D -->|7. return docs| F + F -->|8. publish| N + N -->|publish| D + D -->|update visibility| PG + D -.->|OAuth| GH + A -.->|AI| G + + classDef frontend fill:#0f172a,stroke:#38bdf8,color:#f8fafc; + classDef gateway fill:#1e1b4b,stroke:#a78bfa,color:#eef2ff; + classDef api fill:#064e3b,stroke:#34d399,color:#ecfdf5; + classDef data fill:#7f1d1d,stroke:#f87171,color:#fef2f2; + classDef worker fill:#1e3a5f,stroke:#60a5fa,color:#bfdbfe; + classDef fastapi fill:#831843,stroke:#f472b6,color:#fdf2f8; + classDef ext fill:#1c1917,stroke:#a8a29e,color:#fafaf9; +``` + + ## Project Structure ``` PyDocAi/ -โ”œโ”€โ”€ backend/ # Django REST API -โ”‚ โ”œโ”€โ”€ apps/ -โ”‚ โ”‚ โ”œโ”€โ”€ users/ # Auth & user management -โ”‚ โ”‚ โ”œโ”€โ”€ projects/ # Project CRUD -โ”‚ โ”‚ โ”œโ”€โ”€ parser/ # Python AST parsing -โ”‚ โ”‚ โ”œโ”€โ”€ ai/ # AI documentation generation -โ”‚ โ”‚ โ”œโ”€โ”€ universal/ # Universal code analysis -โ”‚ โ”‚ โ”œโ”€โ”€ github_integration/# GitHub OAuth & repo fetching -โ”‚ โ”‚ โ”œโ”€โ”€ exports/ # Markdown export -โ”‚ โ”‚ โ”œโ”€โ”€ comments/ # Public doc comments -โ”‚ โ”‚ โ”œโ”€โ”€ feedback/ # User feedback & ratings -โ”‚ โ”‚ โ”œโ”€โ”€ admin_dashboard/ # Admin panel -โ”‚ โ”‚ โ”œโ”€โ”€ notifications/ # User notifications -โ”‚ โ”‚ โ””โ”€โ”€ internal/ # Internal utilities -โ”‚ โ”œโ”€โ”€ services/ -โ”‚ โ”‚ โ”œโ”€โ”€ parser/ # FastAPI AST parsing service -โ”‚ โ”‚ โ””โ”€โ”€ ai/ # FastAPI AI generation service -โ”‚ โ”œโ”€โ”€ config/ # Django settings -โ”‚ โ””โ”€โ”€ requirements/ -โ”œโ”€โ”€ frondend/ # React + Vite frontend +โ”œโ”€โ”€ deploy/ +โ”‚ โ””โ”€โ”€ nginx.conf # Reverse proxy config +โ”œโ”€โ”€ services/ +โ”‚ โ”œโ”€โ”€ core/ # Django monolith (API hub) +โ”‚ โ”‚ โ”œโ”€โ”€ apps/ # 13 Django apps +โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ users/ # Auth (JWT, GitHub OAuth, password reset) +โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ projects/ # Project CRUD, publish, sharing +โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ parser/ # Python AST parsing orchestration +โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ai/ # AI doc generation orchestration +โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ universal/ # Universal code analysis +โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ github_integration/ # GitHub repo fetching +โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ exports/ # Markdown export +โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ comments/ # Public doc comments +โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ feedback/ # User feedback & admin replies +โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ admin_dashboard/ # Admin stats & management +โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ notifications/ # Email notifications +โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ common/ # Shared utilities, health check +โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ internal/ # Inter-service communication +โ”‚ โ”‚ โ”œโ”€โ”€ config/ # Django settings (base/dev/prod) +โ”‚ โ”‚ โ”œโ”€โ”€ docker/ # Dockerfile + entrypoint.sh +โ”‚ โ”‚ โ”œโ”€โ”€ env/ # .env + .env.example +โ”‚ โ”‚ โ”œโ”€โ”€ seed/ # seed_admin.py +โ”‚ โ”‚ โ”œโ”€โ”€ templates/emails/ # HTML email templates +โ”‚ โ”‚ โ”œโ”€โ”€ requirements/ # Pip requirements +โ”‚ โ”‚ โ””โ”€โ”€ manage.py +โ”‚ โ”œโ”€โ”€ parser/ # FastAPI microservice (AST parsing) +โ”‚ โ”‚ โ”œโ”€โ”€ api/routes/ # file, folder, status, health +โ”‚ โ”‚ โ”œโ”€โ”€ ast_parser.py # Core AST logic +โ”‚ โ”‚ โ”œโ”€โ”€ framework_detector.py +โ”‚ โ”‚ โ”œโ”€โ”€ docker/Dockerfile +โ”‚ โ”‚ โ””โ”€โ”€ main.py +โ”‚ โ””โ”€โ”€ ai/ # FastAPI microservice (AI generation) +โ”‚ โ”œโ”€โ”€ api/routes/ # generate, status, health +โ”‚ โ”œโ”€โ”€ services/ # groq, docs_builder, markdown, prompts +โ”‚ โ”œโ”€โ”€ rag.py # RAG-based code embedding +โ”‚ โ”œโ”€โ”€ docker/Dockerfile +โ”‚ โ””โ”€โ”€ main.py +โ”œโ”€โ”€ frondend/ # React 19 + Vite + Tailwind โ”‚ โ””โ”€โ”€ src/ -โ”‚ โ”œโ”€โ”€ pages/ # Route pages (19 pages) -โ”‚ โ”œโ”€โ”€ components/ # Reusable UI components -โ”‚ โ”œโ”€โ”€ hooks/ # Custom React hooks -โ”‚ โ”œโ”€โ”€ context/ # Auth context -โ”‚ โ””โ”€โ”€ api/ # API client +โ”‚ โ”œโ”€โ”€ pages/ # 19 route pages +โ”‚ โ”‚ โ”œโ”€โ”€ Home, Login, Register, ForgotPassword, ResetPassword +โ”‚ โ”‚ โ”œโ”€โ”€ Dashboard, Input, InputPython, InputUniversal +โ”‚ โ”‚ โ”œโ”€โ”€ Output, Profile, GitHubCallback +โ”‚ โ”‚ โ”œโ”€โ”€ Published, PublicDoc +โ”‚ โ”‚ โ”œโ”€โ”€ FeedbackPage, MyFeedback +โ”‚ โ”‚ โ”œโ”€โ”€ AdminUsers, AdminProjects, AdminFeedback +โ”‚ โ”œโ”€โ”€ components/ # 14 reusable UI components +โ”‚ โ”œโ”€โ”€ hooks/ # useAuth +โ”‚ โ”œโ”€โ”€ context/ # AuthContext +โ”‚ โ””โ”€โ”€ api/ # API client (index.js) โ”œโ”€โ”€ docker-compose.yml -โ”œโ”€โ”€ nginx/ +โ”œโ”€โ”€ docker-compose.prod.yml โ””โ”€โ”€ README.md ``` -## API Overview - -| Endpoint | Method | Description | -|----------|--------|-------------| -| `/api/auth/register/` | POST | Register new user | -| `/api/auth/login/` | POST | Login (JWT) | -| `/api/auth/profile/` | GET/PUT | Get/update profile | -| `/api/auth/password/reset/` | POST | Request password reset | -| `/api/auth/github/login/` | POST | GitHub OAuth login | -| `/api/projects/` | GET/POST | List / create projects | -| `/api/projects/{id}/` | GET/PUT/DELETE | Project detail / update / delete | -| `/api/projects/{id}/publish/` | POST | Toggle publish status | -| `/api/parser/analyze-file/` | POST | Analyze single `.py` file (AST) | -| `/api/parser/analyze-folder/` | POST | Analyze ZIP folder (AST) | -| `/api/ai/generate/` | POST | Start AI documentation generation | -| `/api/ai/status/{task_id}/` | GET | Poll generation status | -| `/api/universal/analyze/` | POST | Analyze any code (universal mode) | -| `/api/universal/status/{id}/` | GET | Poll universal analysis status | -| `/api/github/repos/` | GET | List user's GitHub repos | -| `/api/github/fetch/` | POST | Fetch repo contents | -| `/api/exports/markdown/{id}/` | GET | Export as Markdown | -| `/api/comments/` | GET/POST | List / create comments | -| `/api/comments/{id}/` | DELETE | Delete comment | -| `/api/feedback/` | GET/POST | List / submit feedback | -| `/api/notifications/` | GET | List notifications | -| `/api/public/projects/` | GET | List published projects | -| `/api/public/projects/{slug}/` | GET | Get published project detail | -| `/api/admin-dashboard/stats/` | GET | Admin dashboard stats | +## API Documentation + +Full API reference with endpoint details, authentication, request/response examples, and error handling is available in [API_DOCS.md](API_DOCS.md). + +Interactive Swagger UI (when running via Docker): + +| Service | URL | +|---------|-----| +| Django Core API | `http://localhost:8080/api/docs/` | +| Parser Service | `http://localhost:8080/parser/docs/` | +| AI Service | `http://localhost:8080/ai/docs/` | ## Environment Variables diff --git a/backend/Dockerfile b/backend/Dockerfile deleted file mode 100644 index 69d52d2..0000000 --- a/backend/Dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -FROM python:3.12-slim - -ENV PYTHONDONTWRITEBYTECODE=1 -ENV PYTHONUNBUFFERED=1 -ENV UV_LINK_MODE=copy -ENV UV_PROJECT_ENVIRONMENT=/opt/venv - -WORKDIR /app - -RUN apt-get update && apt-get install -y \ - netcat-openbsd \ - gcc \ - libpq-dev \ - && rm -rf /var/lib/apt/lists/* - -COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv - -COPY pyproject.toml uv.lock ./ -RUN uv sync --frozen - -COPY . . - -RUN chmod +x entrypoint.sh - -EXPOSE 8000 - -CMD ["bash", "entrypoint.sh"] \ No newline at end of file diff --git a/backend/apps/admin_dashboard/tests.py b/backend/apps/admin_dashboard/tests.py deleted file mode 100644 index 9726400..0000000 --- a/backend/apps/admin_dashboard/tests.py +++ /dev/null @@ -1,28 +0,0 @@ -from django.contrib.auth import get_user_model -from rest_framework.test import APITestCase - -User = get_user_model() - -class AdminDashboardTests(APITestCase): - def setUp(self): - self.standard_user = User.objects.create_user( - email='user@test.com', name='User', password='pwd', role=User.Role.USER - ) - self.admin_user = User.objects.create_superuser( - email='admin@test.com', name='Admin', password='pwd' - ) - - def test_admin_stats_forbidden_for_standard_user(self): - """Standard users should receive a 403 Forbidden on admin endpoints.""" - self.client.force_authenticate(user=self.standard_user) - response = self.client.get('/api/admin-dashboard/stats/') - self.assertEqual(response.status_code, 403) - - def test_admin_stats_allowed_for_admin(self): - """Admins should be able to view platform statistics.""" - self.client.force_authenticate(user=self.admin_user) - response = self.client.get('/api/admin-dashboard/stats/') - self.assertEqual(response.status_code, 200) - self.assertIn('users', response.data) - self.assertIn('projects', response.data) - self.assertEqual(response.data['users']['total'], 2) # The two we created in setUp diff --git a/backend/apps/admin_dashboard/views.py b/backend/apps/admin_dashboard/views.py deleted file mode 100644 index f9e06c0..0000000 --- a/backend/apps/admin_dashboard/views.py +++ /dev/null @@ -1,225 +0,0 @@ -from datetime import timedelta - -from django.conf import settings -from django.db.models import Count, Q -from django.utils import timezone -from rest_framework import status -from rest_framework.generics import ListAPIView, RetrieveAPIView -from rest_framework.permissions import IsAdminUser, IsAuthenticated -from rest_framework.response import Response -from rest_framework.views import APIView - -from apps.notifications.tasks import send_email_task -from apps.projects.models import Project -from apps.projects.serializers import ProjectListSerializer, ProjectSerializer -from apps.users.models import User -from apps.users.serializers import AdminUserSerializer, UserSerializer - - -class AdminStatsView(APIView): - """Admin-only endpoint returning platform statistics.""" - permission_classes = [IsAuthenticated] - - def get(self, request): - if not request.user.is_staff and not request.user.is_admin: - return Response({'detail': 'Forbidden.'}, status=status.HTTP_403_FORBIDDEN) - - now = timezone.now() - week = now - timedelta(days=7) - month = now - timedelta(days=30) - - stats = { - 'users': { - 'total': User.objects.count(), - 'verified': User.objects.filter(is_verified=True).count(), - 'github_connected':User.objects.exclude(github_token__isnull=True).exclude(github_token='').count(), - 'new_this_week': User.objects.filter(created_at__gte=week).count(), - 'new_this_month': User.objects.filter(created_at__gte=month).count(), - }, - 'projects': { - 'total': Project.objects.count(), - 'done': Project.objects.filter(status='done').count(), - 'processing': Project.objects.filter(status='processing').count(), - 'failed': Project.objects.filter(status='failed').count(), - 'pending': Project.objects.filter(status='pending').count(), - 'new_this_week': Project.objects.filter(created_at__gte=week).count(), - 'new_this_month': Project.objects.filter(created_at__gte=month).count(), - 'by_source': list( - Project.objects.values('source_type') - .annotate(count=Count('id')) - .order_by('-count') - ), - }, - 'top_users': list( - User.objects.annotate( - project_count=Count('projects'), - published_count=Count('projects', filter=Q(projects__is_published=True)), - ) - .order_by('-project_count') - .values('id', 'email', 'name', 'project_count', 'published_count')[:10] - ), - } - return Response(stats) - - -class AdminUserListView(ListAPIView): - permission_classes = [IsAdminUser] - serializer_class = AdminUserSerializer - filterset_fields = ['is_active', 'is_verified', 'role'] - search_fields = ['email', 'username', 'name'] - ordering_fields = ['created_at', 'email', 'username'] - - def get_queryset(self): - return User.objects.annotate( - project_count=Count('projects'), - published_count=Count('projects', filter=Q(projects__is_published=True)), - ).order_by('-created_at') - -class AdminUserDetailView(RetrieveAPIView): - permission_classes = [IsAdminUser] - serializer_class = UserSerializer - queryset = User.objects.all() - lookup_field = 'pk' - - -class AdminUserDeleteView(APIView): - """Delete a user (admin only). Sends a notification email with reason.""" - permission_classes = [IsAdminUser] - - def post(self, request, pk): - try: - target = User.objects.get(pk=pk) - except User.DoesNotExist: - return Response({'detail': 'User not found.'}, status=status.HTTP_404_NOT_FOUND) - - reason = request.data.get('reason', 'No reason provided.') - - # Send deletion email - if settings.EMAIL_HOST_USER: - subject = 'Your PyDocAI account has been deleted' - send_email_task.delay( - subject=subject, - message=f'Your PyDocAI account has been deleted.\n\nReason: {reason}', - recipient_list=[target.email], - html_message=f''' - -
- - - - - -
- - - -
-PyDocAI - -ACCOUNT_DELETED -
-
-

Account Deleted

-

-Your PyDocAI account has been deleted by an administrator. -

-
-
-Reason: -{reason} -
-
-

PyDocAI · AI-generated documentation

-
-
''', - ) - - # Delete user's projects and the user - target.projects.all().delete() - target.delete() - return Response({'detail': 'User deleted successfully.'}, status=status.HTTP_200_OK) - - -class AdminUserBlockView(APIView): - """Block or unblock a user (admin only). Toggles is_active.""" - permission_classes = [IsAdminUser] - - def post(self, request, pk): - try: - target = User.objects.get(pk=pk) - except User.DoesNotExist: - return Response({'detail': 'User not found.'}, status=status.HTTP_404_NOT_FOUND) - - if target == request.user: - return Response({'detail': 'You cannot block yourself.'}, status=status.HTTP_400_BAD_REQUEST) - - target.is_active = not target.is_active - target.save(update_fields=['is_active']) - - action = 'blocked' if not target.is_active else 'unblocked' - - if settings.EMAIL_HOST_USER: - send_email_task.delay( - subject=f'Your PyDocAI account has been {action}', - message=f'Your PyDocAI account has been {action} by an administrator.', - recipient_list=[target.email], - ) - - return Response({'detail': f'User {action} successfully.', 'is_active': target.is_active}) - -class AdminProjectListView(ListAPIView): - permission_classes = [IsAdminUser] - serializer_class = ProjectListSerializer - filterset_fields = ['status', 'source_type'] - search_fields = ['name', 'user__email', 'user__name'] - ordering_fields = ['created_at', 'name', 'status'] - - def get_queryset(self): - return Project.objects.select_related('user') \ - .annotate(file_count=Count('files')) \ - .order_by('-created_at') - - def list(self, request, *args, **kwargs): - queryset = self.filter_queryset(self.get_queryset()) - - stats = { - 'total': queryset.count(), - 'done': queryset.filter(status='done').count(), - 'processing': queryset.filter(status='processing').count(), - 'failed': queryset.filter(status='failed').count(), - 'pending': queryset.filter(status='pending').count(), - 'by_source': list( - queryset.values('source_type') - .annotate(count=Count('id')) - .order_by('-count') - ), - } - - page = self.paginate_queryset(queryset) - if page is not None: - serializer = self.get_serializer(page, many=True) - response = self.get_paginated_response(serializer.data) - response.data['stats'] = stats - return response - - serializer = self.get_serializer(queryset, many=True) - return Response({'stats': stats, 'results': serializer.data}) - -class AdminUserProjectsView(ListAPIView): - """List published projects for a specific user (admin only).""" - permission_classes = [IsAdminUser] - serializer_class = ProjectListSerializer - - def get_queryset(self): - return (Project.objects - .filter(user_id=self.kwargs['pk'], is_published=True) - .select_related('user') - .annotate(file_count=Count('files')) - .order_by('-updated_at')) - - -class AdminProjectDetailView(RetrieveAPIView): - permission_classes = [IsAdminUser] - serializer_class = ProjectSerializer - queryset = Project.objects.select_related('user').all() - lookup_field = 'pk' diff --git a/backend/apps/exports/tests.py b/backend/apps/exports/tests.py deleted file mode 100644 index d829581..0000000 --- a/backend/apps/exports/tests.py +++ /dev/null @@ -1,29 +0,0 @@ -from django.contrib.auth import get_user_model -from rest_framework.test import APITestCase - -from apps.projects.models import Project - -User = get_user_model() - -class ExportTests(APITestCase): - def setUp(self): - self.user = User.objects.create_user(email='export@test.com', name='Exp', password='pwd') - self.project = Project.objects.create( - user=self.user, - name="Test Export Project", - readme_docs="# Mock README", - generated_docs="## Project Summary", - api_docs="### API Reference" - ) - self.client.force_authenticate(user=self.user) - - def test_export_project_as_markdown(self): - """Test that the export API combines the document segments into a Markdown file download.""" - response = self.client.get(f'/api/exports/{self.project.id}/folder/') - self.assertEqual(response.status_code, 200) - self.assertEqual(response['Content-Type'], 'text/markdown') - - content = response.content.decode('utf-8') - self.assertIn('# Mock README', content) - self.assertIn('## Project Summary', content) - self.assertIn('### API Reference', content) diff --git a/backend/apps/feedback/tests.py b/backend/apps/feedback/tests.py deleted file mode 100644 index fba9a19..0000000 --- a/backend/apps/feedback/tests.py +++ /dev/null @@ -1,32 +0,0 @@ -from unittest.mock import patch - -from django.contrib.auth import get_user_model -from rest_framework.test import APITestCase - -from apps.feedback.models import Feedback - -User = get_user_model() - -class FeedbackAPITests(APITestCase): - def setUp(self): - self.user = User.objects.create_user(email='fb@test.com', name='FB', password='pwd') - self.client.force_authenticate(user=self.user) - - @patch('apps.feedback.tasks.send_feedback_confirmation_task.delay') - def test_submit_feedback(self, mock_email_task): - """Test users can submit feedback and it triggers an email task.""" - response = self.client.post('/api/feedback/', { - 'category': 'bug', - 'message': 'The parser broke on my nested dictionary.' - }) - self.assertEqual(response.status_code, 201) - self.assertEqual(Feedback.objects.count(), 1) - mock_email_task.assert_called_once() - - def test_list_my_feedback(self): - """Test users can view their feedback history.""" - Feedback.objects.create(user=self.user, category='ui_ux', message='Looks good') - response = self.client.get('/api/feedback/my/') - self.assertEqual(response.status_code, 200) - self.assertEqual(len(response.data['results']), 1) - self.assertEqual(response.data['results'][0]['message'], 'Looks good') diff --git a/backend/apps/feedback/views.py b/backend/apps/feedback/views.py deleted file mode 100644 index 7cd3ce9..0000000 --- a/backend/apps/feedback/views.py +++ /dev/null @@ -1,82 +0,0 @@ -from django.shortcuts import get_object_or_404 -from rest_framework import generics, permissions, status -from rest_framework.response import Response -from rest_framework.views import APIView - -from .models import Feedback, FeedbackReply -from .serializers import FeedbackReplySerializer, FeedbackSerializer -from .tasks import send_feedback_confirmation_task, send_feedback_reply_task - - -class FeedbackCreateView(generics.CreateAPIView): - """Authenticated users submit feedback.""" - permission_classes = [permissions.IsAuthenticated] - serializer_class = FeedbackSerializer - - def perform_create(self, serializer): - feedback = serializer.save(user=self.request.user) - send_feedback_confirmation_task.delay(feedback.id) - - -class FeedbackListView(generics.ListAPIView): - """Authenticated users see their own feedback history.""" - permission_classes = [permissions.IsAuthenticated] - serializer_class = FeedbackSerializer - search_fields = ['category', 'message'] - filterset_fields = ['category', 'is_resolved'] - ordering_fields = ['created_at', 'category'] - - def get_queryset(self): - return Feedback.objects.filter(user=self.request.user).prefetch_related('replies__user') - - -class AdminFeedbackView(generics.ListAPIView): - """Admin-only view of all feedback with filter support.""" - permission_classes = [permissions.IsAuthenticated] - serializer_class = FeedbackSerializer - search_fields = ['message', 'user__name', 'user__email', 'category'] - ordering_fields = ['created_at', 'category', 'is_resolved'] - - def get_queryset(self): - user = self.request.user - if not (user.is_staff or user.is_admin): - return Feedback.objects.none() - qs = Feedback.objects.select_related('user', 'project').prefetch_related('replies__user').all() - category = self.request.query_params.get('category') - resolved = self.request.query_params.get('resolved') - if category: - qs = qs.filter(category=category) - if resolved is not None: - qs = qs.filter(is_resolved=resolved.lower() == 'true') - return qs - - -class AdminFeedbackResolveView(APIView): - """Mark feedback as resolved (admin only).""" - permission_classes = [permissions.IsAuthenticated] - - def patch(self, request, pk): - if not (request.user.is_staff or request.user.is_admin): - return Response({'detail': 'Forbidden.'}, status=status.HTTP_403_FORBIDDEN) - try: - fb = Feedback.objects.prefetch_related('replies__user').get(pk=pk) - except Feedback.DoesNotExist: - return Response({'detail': 'Not found.'}, status=status.HTTP_404_NOT_FOUND) - fb.is_resolved = True - fb.save() - return Response(FeedbackSerializer(fb).data) - - -class FeedbackReplyListCreateView(generics.ListCreateAPIView): - """List replies on a feedback or create a new reply.""" - permission_classes = [permissions.IsAuthenticated] - serializer_class = FeedbackReplySerializer - - def get_queryset(self): - return FeedbackReply.objects.filter(feedback_id=self.kwargs['feedback_pk']).select_related('user') - - def perform_create(self, serializer): - feedback = get_object_or_404(Feedback, pk=self.kwargs['feedback_pk']) - reply = serializer.save(feedback=feedback, user=self.request.user) - if reply.user != feedback.user: - send_feedback_reply_task.delay(reply.id) diff --git a/backend/apps/github_integration/fetcher.py b/backend/apps/github_integration/fetcher.py deleted file mode 100644 index 1500f90..0000000 --- a/backend/apps/github_integration/fetcher.py +++ /dev/null @@ -1,216 +0,0 @@ -import requests -from django.conf import settings -from github import Github, GithubException - - -def _get_github_client(github_token=None): - """Create a Github client using user token, app API token, or unauthenticated.""" - if github_token: - return Github(github_token, timeout=10, retry=0) - api_token = getattr(settings, 'GITHUB_API_TOKEN', None) - if api_token and api_token.strip(): - return Github(api_token, timeout=10, retry=0) - return Github(timeout=10, retry=0) - - -def _fetch_public_repo_api(full_name: str) -> dict: - """Fetch public repo info directly via GitHub REST API (avoids PyGithub retry loops).""" - api_token = getattr(settings, 'GITHUB_API_TOKEN', None) - headers = {'Accept': 'application/vnd.github+json'} - if api_token and api_token.strip(): - headers['Authorization'] = f'token {api_token}' - - resp = requests.get( - f'https://api.github.com/repos/{full_name}', - headers=headers, - timeout=10, - ) - if resp.status_code == 404: - raise GithubException(404, {'message': 'Not Found'}) - if resp.status_code == 403: - raise GithubException(403, {'message': 'Rate limit exceeded or forbidden'}) - resp.raise_for_status() - return resp.json() - - -def _fetch_public_tree_api(full_name: str, branch: str) -> dict: - """Fetch repo tree directly via GitHub REST API.""" - api_token = getattr(settings, 'GITHUB_API_TOKEN', None) - headers = {'Accept': 'application/vnd.github+json'} - if api_token and api_token.strip(): - headers['Authorization'] = f'token {api_token}' - - resp = requests.get( - f'https://api.github.com/repos/{full_name}/git/trees/{branch}?recursive=1', - headers=headers, - timeout=10, - ) - if resp.status_code == 404: - raise GithubException(404, {'message': 'Not Found'}) - if resp.status_code == 403: - raise GithubException(403, {'message': 'Rate limit exceeded or forbidden'}) - resp.raise_for_status() - return resp.json() - - -def get_user_repos(github_token: str) -> list: - """List all repos the user has access to.""" - g = Github(github_token) - user = g.get_user() - repos = [] - for repo in user.get_repos(sort='updated'): - repos.append({ - 'id': repo.id, - 'name': repo.name, - 'full_name': repo.full_name, - 'description': repo.description, - 'private': repo.private, - 'url': repo.html_url, - 'updated_at': repo.updated_at.isoformat(), - 'language': repo.language, - 'default_branch': repo.default_branch, - }) - return repos - - -def get_public_repo(full_name: str, github_token=None) -> dict: - """Get info about a public repository without user OAuth token.""" - data = _fetch_public_repo_api(full_name) - return { - 'id': data['id'], - 'name': data['name'], - 'full_name': data['full_name'], - 'description': data.get('description') or '', - 'private': data['private'], - 'url': data['html_url'], - 'default_branch': data.get('default_branch') or 'main', - 'language': data.get('language') or '', - 'stargazers_count': data.get('stargazers_count', 0), - 'forks_count': data.get('forks_count', 0), - } - - -def get_repo_tree(github_token: str, full_name: str, branch: str = None) -> list: - """Get the folder/file tree of a repo.""" - g = Github(github_token) - repo = g.get_repo(full_name) - branch = branch or repo.default_branch - - tree = repo.get_git_tree(branch, recursive=True) - items = [] - for item in tree.tree: - items.append({ - 'path': item.path, - 'type': item.type, - 'size': item.size, - }) - return items - - -def get_public_repo_tree(full_name: str, branch: str = None, github_token=None) -> list: - """Get the folder/file tree of a public repo without user OAuth token.""" - # First get repo to find default branch if not provided - repo_data = _fetch_public_repo_api(full_name) - branch = branch or repo_data.get('default_branch') or 'main' - - tree_data = _fetch_public_tree_api(full_name, branch) - items = [] - for item in tree_data.get('tree', []): - items.append({ - 'path': item['path'], - 'type': item['type'], # 'blob' = file, 'tree' = folder - 'size': item.get('size', 0), - }) - return items - - -def get_repo_folders(github_token: str, full_name: str, branch: str = None) -> list: - """Get only folders from a repo (for folder picker UI).""" - tree = get_repo_tree(github_token, full_name, branch) - folders = [ - item for item in tree - if item['type'] == 'tree' - ] - - folders.insert(0, {'path': '/', 'type': 'tree', 'size': 0}) - return folders - - -def get_public_repo_folders(full_name: str, branch: str = None, github_token=None) -> list: - """Get only folders from a public repo without user OAuth token.""" - tree = get_public_repo_tree(full_name, branch, github_token) - folders = [ - item for item in tree - if item['type'] == 'tree' - ] - folders.insert(0, {'path': '/', 'type': 'tree', 'size': 0}) - return folders - - -def _download_and_extract_zipball(url: str, headers: dict, folder_path: str) -> list: - """Download a GitHub zipball and extract .py files.""" - import io - import zipfile - - resp = requests.get(url, headers=headers, timeout=30, stream=True) - resp.raise_for_status() - zip_bytes = resp.content - - files = [] - with zipfile.ZipFile(io.BytesIO(zip_bytes)) as zf: - names = zf.namelist() - # Zipball root is {owner}-{repo}-{sha}/ โ€” find common top-level dir - prefix = '' - if names: - first = names[0] - if '/' in first: - prefix = first.split('/', 1)[0] + '/' - - for name in names: - if name.endswith('/'): - continue - if not name.endswith('.py'): - continue - rel_path = name[len(prefix):] if prefix else name - if folder_path and folder_path != '/': - if not rel_path.startswith(folder_path.lstrip('/')): - continue - try: - content = zf.read(name).decode('utf-8', errors='ignore') - files.append({'file_path': rel_path, 'content': content}) - except Exception: - pass - return files - - -def import_folder_from_repo(github_token, full_name, folder_path, branch=None): - from github import Github - g = Github(github_token) - repo = g.get_repo(full_name) - branch = branch or repo.default_branch - - url = f'https://api.github.com/repos/{full_name}/zipball/{branch}' - headers = { - 'Accept': 'application/vnd.github+json', - 'Authorization': f'token {github_token}', - } - return _download_and_extract_zipball(url, headers, folder_path) - - -def import_public_folder_from_repo(full_name, folder_path, branch=None, github_token=None): - """Import .py files from a public repo using GitHub Archive API (single HTTP request).""" - # Get repo to find default branch - repo_data = _fetch_public_repo_api(full_name) - branch = branch or repo_data.get('default_branch') or 'main' - - # Use GITHUB_API_TOKEN if available, otherwise download as public - api_token = github_token or getattr(settings, 'GITHUB_API_TOKEN', None) - headers = {'Accept': 'application/vnd.github+json'} - if api_token and api_token.strip(): - headers['Authorization'] = f'token {api_token}' - url = f'https://api.github.com/repos/{full_name}/zipball/{branch}' - else: - # Fallback to direct download URL (no auth needed, no rate limiting) - url = f'https://github.com/{full_name}/archive/refs/heads/{branch}.zip' - - return _download_and_extract_zipball(url, headers, folder_path) diff --git a/backend/apps/github_integration/tests.py b/backend/apps/github_integration/tests.py deleted file mode 100644 index 3e6f4f4..0000000 --- a/backend/apps/github_integration/tests.py +++ /dev/null @@ -1,33 +0,0 @@ -from unittest.mock import patch - -from django.contrib.auth import get_user_model -from django.test import TestCase -from rest_framework.test import APITestCase - -from apps.github_integration.views import parse_github_url - -User = get_user_model() - -class GithubUtilsTests(TestCase): - def test_parse_github_url(self): - """Ensure standard GitHub URLs extract the 'owner/repo' format.""" - self.assertEqual(parse_github_url("https://github.com/django/django"), "django/django") - self.assertEqual(parse_github_url("https://github.com/astral-sh/uv.git"), "astral-sh/uv") - self.assertEqual(parse_github_url("https://github.com/owner/repo/"), "owner/repo") - self.assertIsNone(parse_github_url("invalid_url")) - -class GithubAPITests(APITestCase): - def setUp(self): - self.user = User.objects.create_user(email='git@test.com', name='Git', password='pwd') - self.client.force_authenticate(user=self.user) - - @patch('apps.github_integration.tasks.import_public_repo_task.delay') - def test_import_public_repo(self, mock_task): - """Test importing a public repo triggers the background task.""" - response = self.client.post('/api/github/public-repo/import/', { - 'url': 'https://github.com/pallets/flask', - 'name': 'Flask Docs' - }) - self.assertEqual(response.status_code, 202) - self.assertIn('project_id', response.data) - mock_task.assert_called_once() diff --git a/backend/apps/internal/urls.py b/backend/apps/internal/urls.py deleted file mode 100644 index 591ad0c..0000000 --- a/backend/apps/internal/urls.py +++ /dev/null @@ -1,8 +0,0 @@ -from django.urls import path - -from . import views - -urlpatterns = [ - path('projects//parsed/', views.receive_parsed_data, name='internal-parsed'), - path('projects//ai-docs/', views.receive_ai_docs, name='internal-ai-docs'), -] diff --git a/backend/apps/internal/views.py b/backend/apps/internal/views.py deleted file mode 100644 index 38eb345..0000000 --- a/backend/apps/internal/views.py +++ /dev/null @@ -1,96 +0,0 @@ -import logging -import os - -from rest_framework.decorators import api_view, permission_classes -from rest_framework.permissions import AllowAny -from rest_framework.response import Response - -from apps.projects.models import Project - -logger = logging.getLogger(__name__) - -INTERNAL_API_KEY = os.getenv("INTERNAL_API_KEY", "") - - -def _verify_internal_key(request): - key = request.META.get("HTTP_X_INTERNAL_API_KEY", "") - if INTERNAL_API_KEY and key != INTERNAL_API_KEY: - return Response({"error": "Forbidden"}, status=403) - return None - - -@api_view(["POST"]) -@permission_classes([AllowAny]) -def receive_parsed_data(request, project_id): - forbidden = _verify_internal_key(request) - if forbidden: - return forbidden - """ - Internal endpoint for FastAPI Parser service to POST parsed AST data. - The Parser service calls this after it finishes parsing files. - """ - try: - project = Project.objects.get(id=project_id) - except Project.DoesNotExist: - return Response({"error": "Project not found"}, status=404) - - parsed_data = request.data.get("parsed_data") or request.data.get("parsed") - file_count = request.data.get("file_count", 0) - - if parsed_data: - project.parsed_data = parsed_data - if file_count: - project.project_info = { - **(project.project_info or {}), - "files_parsed": file_count, - } - - project.status = Project.Status.PROCESSING - project.save() - - logger.info(f"Internal: Parsed data received for project {project_id}, {file_count} files") - - return Response({"status": "ok", "project_id": project_id}) - - -@api_view(["POST"]) -@permission_classes([AllowAny]) -def receive_ai_docs(request, project_id): - forbidden = _verify_internal_key(request) - if forbidden: - return forbidden - """ - Internal endpoint for FastAPI AI service to POST generated documentation. - """ - try: - project = Project.objects.get(id=project_id) - except Project.DoesNotExist: - return Response({"error": "Project not found"}, status=404) - - generated_docs = request.data.get("generated_docs") - readme_docs = request.data.get("readme_docs") - api_docs = request.data.get("api_docs") - project_info = request.data.get("project_info") - status_str = request.data.get("status", "done") - error_message = request.data.get("error_message") - - if generated_docs: - project.generated_docs = generated_docs - if readme_docs: - project.readme_docs = readme_docs - if api_docs: - project.api_docs = api_docs - if project_info: - project.project_info = project_info - - if status_str == "done": - project.status = Project.Status.DONE - elif status_str == "failed": - project.status = Project.Status.FAILED - project.error_message = error_message or "AI generation failed" - - project.save() - - logger.info(f"Internal: AI docs received for project {project_id}, status={status_str}") - - return Response({"status": "ok", "project_id": project_id}) diff --git a/backend/apps/notifications/utils.py b/backend/apps/notifications/utils.py deleted file mode 100644 index 28e6231..0000000 --- a/backend/apps/notifications/utils.py +++ /dev/null @@ -1,123 +0,0 @@ -from django.conf import settings - -from .models import Notification -from .tasks import send_email_task - - -def _snippet(text, maxlen=80): - if not text: - return '' - return text[:maxlen] + ('...' if len(text) > maxlen else '') - - -def notify_comment(comment): - project = comment.project - owner = project.user - if owner == comment.user: - return - - commenter = comment.user.name or comment.user.email - snippet = _snippet(comment.content) - message = f'{commenter} commented on "{project.name}": "{snippet}"' - Notification.objects.create(user=owner, comment=comment, message=message) - - if settings.EMAIL_HOST_USER: - public_url = f'{settings.SITE_URL}/public/{project.public_slug}#comment-{comment.id}' - send_email_task.delay( - subject=f'New comment on "{project.name}"', - message=comment.content, - recipient_list=[owner.email], - html_message=f''' - -
- - - - - - -
- - - -
-PyDocAI - -NEW_COMMENT -
-
-

New Comment

-

-on {project.name} · {commenter} -

-
-
-{comment.content} -
-
-VIEW_COMMENT() -
-

PyDocAI · AI-generated documentation

-
-
''', - ) - - -def notify_reply(comment): - parent = comment.parent - if not parent or not parent.user: - return - if parent.user == comment.user: - return - - project = comment.project - replier = comment.user.name or comment.user.email - snippet = _snippet(comment.content) - message = f'{replier} replied to your comment on "{project.name}": "{snippet}"' - Notification.objects.create(user=parent.user, comment=comment, message=message) - - if settings.EMAIL_HOST_USER: - public_url = f'{settings.SITE_URL}/public/{project.public_slug}#comment-{comment.id}' - send_email_task.delay( - subject=f'New reply on "{project.name}"', - message=comment.content, - recipient_list=[parent.user.email], - html_message=f''' - -
- - - - - - -
- - - -
-PyDocAI - -NEW_REPLY -
-
-

New Reply

-

-on {project.name} · {replier} -

-
-
-Your comment: -{parent.content} -
-
-Reply: -{comment.content} -
-
-VIEW_REPLY() -
-

PyDocAI · AI-generated documentation

-
-
''', - ) diff --git a/backend/apps/parser/tests.py b/backend/apps/parser/tests.py deleted file mode 100644 index 9066f76..0000000 --- a/backend/apps/parser/tests.py +++ /dev/null @@ -1,127 +0,0 @@ -from unittest.mock import patch - -from django.contrib.auth import get_user_model -from django.core.files.uploadedfile import SimpleUploadedFile -from rest_framework import status -from rest_framework.test import APITestCase - -from apps.parser.ast_parser import parse_python_file -from apps.parser.validators import should_exclude, validate_python_code -from apps.projects.models import Project - -User = get_user_model() - -class ParserLogicTests(APITestCase): - def test_python_code_validator(self): - """Test syntax validation logic.""" - valid, err = validate_python_code("def foo():\n pass\n") - self.assertTrue(valid) - self.assertIsNone(err) - - valid, err = validate_python_code("def foo() pass") - self.assertFalse(valid) - self.assertIn("SyntaxError", err) - - def test_should_exclude_logic(self): - """Test exclusion of virtual environments and cache directories.""" - self.assertTrue(should_exclude("venv/lib/site-packages/django/models.py")) - self.assertTrue(should_exclude("__pycache__/views.py")) - self.assertFalse(should_exclude("apps/core/models.py")) - - def test_ast_parser_function_extraction(self): - """Test that the AST parser accurately identifies functions and args.""" - code = "def add(x, y):\n return x + y" - parsed = parse_python_file(code) - self.assertFalse(parsed['error']) - self.assertEqual(len(parsed['functions']), 1) - self.assertEqual(parsed['functions'][0]['name'], 'add') - self.assertEqual(parsed['functions'][0]['args'][0]['name'], 'x') - -class ParserAPITests(APITestCase): - def setUp(self): - self.user = User.objects.create_user(email='parser@test.com', name='Parser', password='pwd') - self.client.force_authenticate(user=self.user) - - @patch('apps.parser.tasks.parse_and_generate_docs_task.delay') - def test_single_file_upload(self, mock_task): - """Test uploading a single python file triggers the correct celery task.""" - file_content = b"def my_func(): pass" - test_file = SimpleUploadedFile("test.py", file_content, content_type="text/x-python") - - response = self.client.post('/api/parser/file/', { - 'file': test_file, - 'name': 'Test Script' - }) - self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED) - self.assertIn('project_id', response.data) - mock_task.assert_called_once() - - -class ParserTaskTests(APITestCase): - def setUp(self): - self.user = User.objects.create_user(email='tasktest@test.com', name='TaskTest', password='pwd') - - @patch('apps.parser.tasks._call_fastapi') - def test_parse_and_generate_docs_task_success(self, mock_fastapi): - """Test the celery task completes successfully for a single file.""" - from apps.parser.tasks import parse_and_generate_docs_task - mock_fastapi.return_value = {"status": "done"} - project = Project.objects.create( - user=self.user, name='TestPy', - source_type=Project.SourceType.FILE, - status=Project.Status.PENDING, - ) - result = parse_and_generate_docs_task(project.id, 'print("hello")', 'test.py', 14) - project.refresh_from_db() - self.assertEqual(project.status, Project.Status.DONE) - self.assertEqual(result['project_id'], str(project.id)) - - @patch('apps.parser.tasks._call_fastapi') - def test_parse_task_sets_failed_on_fastapi_error(self, mock_fastapi): - """Test the task sets failed status when FastAPI returns failure.""" - from apps.parser.tasks import parse_and_generate_docs_task - mock_fastapi.return_value = {"status": "failed", "error_message": "AI error"} - project = Project.objects.create( - user=self.user, name='FailPy', - source_type=Project.SourceType.FILE, - status=Project.Status.PENDING, - ) - parse_and_generate_docs_task(project.id, 'bad code', 'bad.py', 8) - project.refresh_from_db() - self.assertEqual(project.status, Project.Status.FAILED) - - @patch('apps.parser.tasks._call_fastapi') - def test_parse_folder_task_creates_files(self, mock_fastapi): - """Test parse_folder_task sends files to FastAPI and updates project.""" - import base64 - import io - import zipfile - - from apps.parser.tasks import parse_folder_task - mock_fastapi.return_value = {"status": "done"} - zip_buffer = io.BytesIO() - with zipfile.ZipFile(zip_buffer, 'w') as zf: - zf.writestr('app/models.py', 'class Foo: pass\n') - zf.writestr('app/views.py', 'def bar(): pass\n') - zip_b64 = base64.b64encode(zip_buffer.getvalue()).decode() - project = Project.objects.create( - user=self.user, name='FolderProj', - source_type=Project.SourceType.FOLDER, - status=Project.Status.PENDING, - ) - result = parse_folder_task(project.id, ['app/models.py', 'app/views.py'], zip_b64) - project.refresh_from_db() - self.assertEqual(project.status, Project.Status.DONE) - self.assertEqual(result['files_parsed'], 2) - - def test_parse_folder_task_no_zip_returns_error(self): - from apps.parser.tasks import parse_folder_task - project = Project.objects.create( - user=self.user, name='NoZip', - source_type=Project.SourceType.FOLDER, - status=Project.Status.PENDING, - ) - result = parse_folder_task(project.id, ['main.py'], zip_base64=None) - project.refresh_from_db() - self.assertEqual(project.status, Project.Status.FAILED) - self.assertIn('error', result) diff --git a/backend/apps/projects/tests.py b/backend/apps/projects/tests.py deleted file mode 100644 index fc6cd9c..0000000 --- a/backend/apps/projects/tests.py +++ /dev/null @@ -1,51 +0,0 @@ -from django.contrib.auth import get_user_model -from rest_framework import status -from rest_framework.test import APITestCase - -from apps.projects.models import Project - -User = get_user_model() - -class ProjectTests(APITestCase): - def setUp(self): - self.user1 = User.objects.create_user(email='user1@example.com', name='User1', password='pwd') - self.user2 = User.objects.create_user(email='user2@example.com', name='User2', password='pwd') - - self.project1 = Project.objects.create( - user=self.user1, - name='Project 1', - status=Project.Status.DONE - ) - self.project2 = Project.objects.create( - user=self.user2, - name='Project 2', - status=Project.Status.PENDING - ) - - def test_list_projects(self): - """Users should only see their own projects.""" - self.client.force_authenticate(user=self.user1) - response = self.client.get('/api/projects/') - self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertEqual(response.data['stats']['total'], 1) - self.assertEqual(response.data['results'][0]['name'], 'Project 1') - - def test_get_project_detail(self): - """User can get details of their own project.""" - self.client.force_authenticate(user=self.user1) - response = self.client.get(f'/api/projects/{self.project1.id}/') - self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertEqual(response.data['name'], 'Project 1') - - def test_cannot_access_others_project(self): - """User cannot access another user's project.""" - self.client.force_authenticate(user=self.user1) - response = self.client.get(f'/api/projects/{self.project2.id}/') - self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) - - def test_delete_project(self): - """User can delete their own project.""" - self.client.force_authenticate(user=self.user1) - response = self.client.delete(f'/api/projects/{self.project1.id}/') - self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertFalse(Project.objects.filter(id=self.project1.id).exists()) diff --git a/backend/apps/projects/views.py b/backend/apps/projects/views.py deleted file mode 100644 index ee8abe3..0000000 --- a/backend/apps/projects/views.py +++ /dev/null @@ -1,159 +0,0 @@ -from django.contrib.auth import get_user_model -from django.core.cache import cache -from django.db import connection -from django.db.models import Count -from rest_framework import generics, permissions, status -from rest_framework.pagination import PageNumberPagination -from rest_framework.response import Response -from rest_framework.views import APIView - -from .models import Project -from .serializers import ProjectListSerializer, ProjectSerializer, PublicProjectListSerializer, PublicProjectSerializer -from .throttles import PublicRateThrottle, PublishRateThrottle - -User = get_user_model() - -class ProjectListView(generics.ListAPIView): - """ - List all projects for the authenticated user. - """ - permission_classes = [permissions.IsAuthenticated] - serializer_class = ProjectListSerializer - search_fields = ['name', 'description', 'status', 'source_type'] - filterset_fields = ['status', 'source_type', 'is_published'] - ordering_fields = ['created_at', 'name', 'status', 'source_type'] - - def get_queryset(self): - return (Project.objects - .filter(user=self.request.user) - .select_related('user') - .annotate(file_count=Count('files')) - .order_by('-created_at')) - - def list(self, request, *args, **kwargs): - queryset = self.filter_queryset(self.get_queryset()) - cache_key = f'project_stats_{request.user.id}' - stats = cache.get(cache_key) - if not stats: - stats = self._compute_stats(queryset) - cache.set(cache_key, stats, 60) - - page = self.paginate_queryset(queryset) - if page is not None: - serializer = self.get_serializer(page, many=True) - response = self.get_paginated_response(serializer.data) - response.data['stats'] = stats - return response - - serializer = self.get_serializer(queryset, many=True) - return Response({'stats': stats, 'results': serializer.data}) - - def _compute_stats(self, queryset): - base = (Project.objects - .filter(user=self.request.user) - .order_by()) - counts = base.values('status').annotate(count=Count('id')) - status_map = {c['status']: c['count'] for c in counts} - return { - 'total': sum(status_map.values()), - 'done': status_map.get('done', 0), - 'processing': status_map.get('processing', 0), - 'failed': status_map.get('failed', 0), - 'pending': status_map.get('pending', 0), - 'published': base.filter(is_published=True).count(), - 'total_files': base.aggregate(total=Count('files', distinct=True))['total'] or 0, - 'by_source': list( - base.values('source_type') - .annotate(count=Count('id', distinct=True)) - .order_by('-count') - ), - } - -class ProjectDetailView(generics.RetrieveDestroyAPIView): - """ - Get details of a specific project or delete it. - """ - permission_classes = [permissions.IsAuthenticated] - serializer_class = ProjectSerializer - lookup_field = 'id' - - def get_queryset(self): - user = self.request.user - if user.is_staff or getattr(user, 'is_admin', False): - return Project.objects.all() - return Project.objects.filter(user=user) - - def delete(self, request, *args, **kwargs): - project = self.get_object() - with connection.cursor() as cursor: - cursor.execute("DELETE FROM feedback WHERE project_id = %s", [str(project.id)]) - project.files.all().delete() - project.delete() - return Response({"detail": "Project has been deleted successfully"}, status=status.HTTP_200_OK) - - -class PublishProjectView(APIView): - permission_classes = [permissions.IsAuthenticated] - throttle_classes = [PublishRateThrottle] - - def patch(self, request, pk): - try: - project = Project.objects.get(pk=pk, user=request.user) - except Project.DoesNotExist: - return Response({"detail": "Not found."}, status=status.HTTP_404_NOT_FOUND) - - is_published = request.data.get("is_published") - if is_published is None: - return Response({"detail": "is_published is required."}, status=status.HTTP_400_BAD_REQUEST) - - project.is_published = is_published - if is_published and request.data.get("published_description"): - project.published_description = request.data["published_description"] - project.save(update_fields=["is_published", "published_description", "updated_at"]) - cache.delete(f'project_stats_{request.user.id}') - return Response(ProjectSerializer(project).data) - - -class NoPagination(PageNumberPagination): - page_size = None - - -class PublicProjectPage(PageNumberPagination): - page_size = 12 - page_size_query_param = 'page_size' - max_page_size = 50 - - -class PublicProjectListView(generics.ListAPIView): - permission_classes = [] - serializer_class = PublicProjectListSerializer - throttle_classes = [PublicRateThrottle] - pagination_class = PublicProjectPage - - def get_queryset(self): - return (Project.objects - .filter(is_published=True, status='done') - .select_related('user') - .annotate(file_count=Count('files')) - .order_by('-updated_at')) - - -class PublicProjectDetailView(APIView): - permission_classes = [] - throttle_classes = [PublicRateThrottle] - - def get(self, request, slug): - cache_key = f'public_project_{slug}' - data = cache.get(cache_key) - if not data: - try: - project = (Project.objects - .filter(public_slug=slug, is_published=True) - .select_related('user') - .prefetch_related('files') - .get()) - except Project.DoesNotExist: - return Response({"detail": "Not found."}, status=status.HTTP_404_NOT_FOUND) - data = PublicProjectSerializer(project).data - cache.set(cache_key, data, 300) - return Response(data) diff --git a/backend/apps/universal/tests.py b/backend/apps/universal/tests.py deleted file mode 100644 index 6623b35..0000000 --- a/backend/apps/universal/tests.py +++ /dev/null @@ -1,284 +0,0 @@ -from unittest.mock import patch - -from django.contrib.auth import get_user_model -from django.test import TestCase - -from apps.projects.models import Project, ProjectFile -from apps.universal.prompts import MAX_SOURCE_CHARS, get_prompt -from apps.universal.tasks import ( - _build_file_tree, - _detect_req_files, - _file_priority, - _format_tree, - _validate_and_fix_output, -) - -User = get_user_model() - - -# โ”€โ”€ Pure function tests (no DB) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ - -class TestFilePriority: - def test_urls_highest_priority(self): - assert _file_priority("myapp/urls.py") == 10 - - def test_views_high_priority(self): - assert _file_priority("myapp/views.py") == 8 - - def test_models_priority(self): - assert _file_priority("myapp/models.py") == 7 - - def test_config_priority(self): - assert _file_priority("settings/base.py") == 6 - assert _file_priority("myapp/Dockerfile") == 6 - assert _file_priority("package.json") == 6 - - def test_services_priority(self): - assert _file_priority("myapp/services.py") == 5 - assert _file_priority("myapp/auth.py") == 5 - - def test_admin_priority(self): - assert _file_priority("myapp/admin.py") == 4 - assert _file_priority("myapp/tasks.py") == 4 - - def test_utils_priority(self): - assert _file_priority("myapp/utils.py") == 3 - assert _file_priority("myapp/constants.py") == 3 - - def test_css_priority(self): - assert _file_priority("styles/app.css") == 2 - assert _file_priority("assets/logo.svg") == 2 - - def test_unknown_lowest_priority(self): - assert _file_priority("README.md") == 1 - assert _file_priority("data/somefile.txt") == 1 - - def test_case_insensitive(self): - assert _file_priority("MYAPP/URLs.py") == 10 - assert _file_priority("MYAPP/MODELS.py") == 7 - - -class TestBuildFileTree: - def test_empty_list(self): - assert _build_file_tree([]) == {} - - def test_single_file(self): - result = _build_file_tree(["main.py"]) - assert result == {"main.py": {}} - - def test_nested_paths(self): - files = ["src/app/main.py", "src/app/utils.py", "README.md"] - tree = _build_file_tree(files) - assert "src" in tree - assert "app" in tree["src"] - assert "main.py" in tree["src"]["app"] - assert "utils.py" in tree["src"]["app"] - assert "README.md" in tree - - def test_backslash_normalized(self): - tree = _build_file_tree(["src\\app\\main.py"]) - assert "src" in tree and "app" in tree["src"] and "main.py" in tree["src"]["app"] - - -class TestFormatTree: - def test_single_file(self): - tree = _build_file_tree(["main.py"]) - lines = _format_tree(tree) - assert lines == ["โ””โ”€โ”€ main.py"] - - def test_nested_tree(self): - files = ["src/main.py", "src/utils.py", "README.md"] - tree = _build_file_tree(files) - lines = _format_tree(tree) - result = "\n".join(lines) - assert "README.md" in result - assert "src/" in result - assert "main.py" in result - assert "utils.py" in result - - def test_directories_have_slash(self): - tree = _build_file_tree(["src/main.py"]) - lines = _format_tree(tree) - assert "src/" in lines[0] - - -class TestDetectReqFiles: - def test_detects_requirements(self): - files = ["README.md", "requirements.txt", "src/main.py"] - assert _detect_req_files(files) == ["requirements.txt"] - - def test_detects_pyproject(self): - files = ["pyproject.toml", "src/main.py"] - assert _detect_req_files(files) == ["pyproject.toml"] - - def test_detects_package_json(self): - files = ["package.json", "index.js"] - assert _detect_req_files(files) == ["package.json"] - - def test_multiple_detected(self): - files = ["requirements.txt", "pyproject.toml", "Pipfile", "README.md"] - result = _detect_req_files(files) - assert "requirements.txt" in result - assert "pyproject.toml" in result - assert "Pipfile" in result - - def test_case_insensitive(self): - files = ["REQUIREMENTS.TXT"] - assert _detect_req_files(files) == ["REQUIREMENTS.TXT"] - - def test_no_req_files(self): - files = ["src/main.py", "README.md"] - assert _detect_req_files(files) == [] - - -class TestValidateAndFixOutput: - def test_correct_cd_passes_through(self): - output = "```bash\ngit clone https://github.com/user/myproject.git\ncd myproject\n```" - tree = _build_file_tree(["main.py"]) - tree_text = "\n".join(_format_tree(tree)) - result = _validate_and_fix_output( - output, "https://github.com/user/myproject.git", - "myproject", tree_text, ["main.py"] - ) - assert result == output - - @patch("apps.universal.tasks._call_groq") - def test_wrong_cd_triggers_fix(self, mock_groq): - mock_groq.return_value = "```bash\ngit clone https://github.com/user/myproject.git\ncd correct_dir\n```" - output = "```bash\ngit clone https://github.com/user/myproject.git\ncd wrong_dir\n```" - tree = _build_file_tree(["main.py"]) - tree_text = "\n".join(_format_tree(tree)) - result = _validate_and_fix_output( - output, "https://github.com/user/myproject.git", - "myproject", tree_text, ["main.py"] - ) - mock_groq.assert_called_once() - assert "correct_dir" in result - - -# โ”€โ”€ Prompt tests โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ - -class TestGetPrompt: - def test_includes_project_name(self): - prompt = get_prompt("universal", "print('hello')", "MyProject") - assert "MyProject" in prompt - - def test_includes_source_code(self): - prompt = get_prompt("universal", "def foo(): pass", "Proj") - assert "def foo(): pass" in prompt - - def test_truncates_long_source(self): - long_code = "x = 1\n" * (MAX_SOURCE_CHARS // 4 + 100) - prompt = get_prompt("universal", long_code, "Proj") - assert len(prompt) < len(long_code) + 5000 - assert "[truncated]" in prompt - - def test_escapes_triple_backticks(self): - malicious = "```\nmalicious code\n```" - prompt = get_prompt("universal", malicious, "Proj") - assert "```" not in prompt[prompt.index("Source code"):prompt.index("```", prompt.index("Source code"))] - - def test_includes_repo_dir_from_github_url(self): - prompt = get_prompt("universal", "code", "Proj", github_url="https://github.com/user/my-repo.git") - assert "my-repo" in prompt - - def test_falls_back_to_project_name_for_repo_dir(self): - prompt = get_prompt("universal", "code", "MyProject") - assert "MyProject" in prompt - - def test_includes_file_tree_when_provided(self): - prompt = get_prompt("universal", "code", "Proj", file_tree="โ””โ”€โ”€ main.py") - assert "โ””โ”€โ”€ main.py" in prompt - - def test_includes_req_files_when_provided(self): - prompt = get_prompt("universal", "code", "Proj", req_files=["requirements.txt"]) - assert "requirements.txt" in prompt - - -# โ”€โ”€ Celery task tests (need DB) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ - -class GenerateUniversalDocsTaskTest(TestCase): - def setUp(self): - self.user = User.objects.create_user( - email="universal@test.com", name="Universal", password="pwd" - ) - self.project = Project.objects.create( - user=self.user, name="TestProj", - source_type=Project.SourceType.FILE, - status=Project.Status.PENDING, - ) - ProjectFile.objects.create( - project=self.project, - file_name="main.py", - file_path="main.py", - content="def foo(): pass\n", - ) - - @patch("apps.universal.tasks._call_groq") - def test_task_completes_successfully(self, mock_groq): - from apps.universal.tasks import generate_universal_docs_task - mock_groq.return_value = "# Documentation\n\nSome content" - result = generate_universal_docs_task(str(self.project.id), "universal") - self.project.refresh_from_db() - assert self.project.status == Project.Status.DONE - assert self.project.generated_docs == "# Documentation\n\nSome content" - assert result["project_id"] == str(self.project.id) - - @patch("apps.universal.tasks._call_groq") - def test_rejection_sets_failed_status(self, mock_groq): - from apps.universal.tasks import generate_universal_docs_task - mock_groq.return_value = "REJECT: Project is not a valid codebase" - generate_universal_docs_task(str(self.project.id), "universal") - self.project.refresh_from_db() - assert self.project.status == Project.Status.FAILED - assert "REJECT" in self.project.error_message - - @patch("apps.universal.tasks._call_groq") - def test_groq_failure_sets_failed_status(self, mock_groq): - from apps.universal.tasks import generate_universal_docs_task - mock_groq.side_effect = Exception("API timeout") - generate_universal_docs_task(str(self.project.id), "universal") - self.project.refresh_from_db() - assert self.project.status == Project.Status.FAILED - - def test_unknown_project_returns_error(self): - from apps.universal.tasks import generate_universal_docs_task - result = generate_universal_docs_task("00000000-0000-0000-0000-000000000000", "universal") - assert "error" in result - - -class ImportUniversalGithubTaskTest(TestCase): - def setUp(self): - self.user = User.objects.create_user( - email="github@test.com", name="GitHub", password="pwd" - ) - self.project = Project.objects.create( - user=self.user, name="GitProj", - source_type=Project.SourceType.GITHUB, - github_url="https://github.com/user/repo", - status=Project.Status.PENDING, - ) - - @patch("apps.universal.tasks._download_github_zipball") - @patch("apps.universal.tasks._fetch_public_repo_api") - @patch("apps.universal.tasks.generate_universal_docs_task.delay") - def test_import_creates_files_and_delegates(self, mock_delay, mock_fetch, mock_download): - from apps.universal.tasks import import_universal_github_task - mock_download.return_value = [ - {"file_path": "src/main.py", "content": "print('hello')"}, - ] - import_universal_github_task( - str(self.project.id), "universal", "user/repo", "", "main" - ) - assert ProjectFile.objects.filter(project=self.project).count() == 1 - mock_delay.assert_called_once_with(str(self.project.id), "universal") - - @patch("apps.universal.tasks._download_github_zipball") - def test_no_files_sets_failed(self, mock_download): - from apps.universal.tasks import import_universal_github_task - mock_download.return_value = [] - import_universal_github_task( - str(self.project.id), "universal", "user/repo", "", "main" - ) - self.project.refresh_from_db() - assert self.project.status == Project.Status.FAILED diff --git a/backend/apps/users/tests.py b/backend/apps/users/tests.py deleted file mode 100644 index f664a55..0000000 --- a/backend/apps/users/tests.py +++ /dev/null @@ -1,66 +0,0 @@ -from unittest.mock import patch - -from django.contrib.auth import get_user_model -from rest_framework import status -from rest_framework.test import APITestCase - -User = get_user_model() - -class UserAuthTests(APITestCase): - def setUp(self): - self.user_data = { - 'email': 'test@example.com', - 'name': 'Test User', - 'username': 'testuser', - 'password': 'strongpassword123', - 'password2': 'strongpassword123' - } - - @patch('apps.users.tasks.send_welcome_email_task.delay') - def test_user_registration(self, mock_email_task): - """Test successful user registration and token generation.""" - response = self.client.post('/api/users/register/', self.user_data) - self.assertEqual(response.status_code, status.HTTP_201_CREATED) - self.assertIn('tokens', response.data) - self.assertIn('access', response.data['tokens']) - self.assertTrue(User.objects.filter(email='test@example.com').exists()) - mock_email_task.assert_called_once() - - def test_user_registration_password_mismatch(self): - """Test registration fails if passwords do not match.""" - data = self.user_data.copy() - data['password2'] = 'differentpassword' - response = self.client.post('/api/users/register/', data) - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - self.assertIn('password', response.data) - - def test_user_login(self): - """Test user login returns JWT tokens.""" - User.objects.create_user(email='login@example.com', name='Login', password='password123') - response = self.client.post('/api/users/login/', { - 'email': 'login@example.com', - 'password': 'password123' - }) - self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertIn('tokens', response.data) - - def test_get_profile_unauthenticated(self): - """Ensure unauthenticated users cannot access profile.""" - response = self.client.get('/api/users/profile/') - self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) - - def test_get_and_update_profile(self): - """Test getting and updating the authenticated user's profile.""" - user = User.objects.create_user(email='profile@example.com', name='Old Name', password='pwd') - self.client.force_authenticate(user=user) - - # Get profile - response = self.client.get('/api/users/profile/') - self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertEqual(response.data['name'], 'Old Name') - - # Update profile - response = self.client.patch('/api/users/profile/', {'name': 'New Name'}) - self.assertEqual(response.status_code, status.HTTP_200_OK) - user.refresh_from_db() - self.assertEqual(user.name, 'New Name') diff --git a/backend/celerybeat-schedule.db b/backend/celerybeat-schedule.db deleted file mode 100644 index b4b12fab704e38d36f4b9d8a03c23f29848a5e5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI%F=_%q6vpwl##K}3*a#lMYMYQ;Ko4M%v<^lGB7_a-CPg4%X`!9Df<>Afz&ix2 zEIoj&So_9}kZhGE*!%}(_VMlPEd09RiHHO`{pi*Ta_Nhz&XO-ga_QsOTHlA#(xkFo zw2%9>_Gg^VX=oklT+JRjKXZ*32q1s}0tg_000IagfB*srAaEvu>>a%%A4bYMvoUM4 zGGAtCK8+>}1Q0*~0R#|0009ILKmY**5cqe2V4R;s!E@5HF7Dnxy1oYQ#qZxvFYa!e z^C(DOHGR{<#mR8sMt;w!ML!L%qnqeTUt0U(hNHn#Y_0#^-~Tgx{;HJIlQa1-{7e7e dpGp5eHDpBq0R#|0009ILKmY**5J2GE0tc5rDqR2o diff --git a/backend/entrypoint.sh b/backend/entrypoint.sh deleted file mode 100644 index 9e3cfd6..0000000 --- a/backend/entrypoint.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -set -e -uv run python manage.py migrate --noinput -uv run python manage.py collectstatic --noinput -exec uv run gunicorn config.wsgi:application --bind 0.0.0.0:8000 --worker-class gevent --workers 4 diff --git a/backend/services/ai/Dockerfile b/backend/services/ai/Dockerfile deleted file mode 100644 index 9f2170b..0000000 --- a/backend/services/ai/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM python:3.11-slim - -WORKDIR /app - -COPY requirements.txt . -RUN pip install --no-cache-dir -r requirements.txt - -RUN python -c "from sentence_transformers import SentenceTransformer; SentenceTransformer('all-MiniLM-L6-v2')" - -COPY . . - -EXPOSE 8003 - -CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8003", "--workers", "2"] diff --git a/backend/services/ai/main.py b/backend/services/ai/main.py deleted file mode 100644 index db37a7f..0000000 --- a/backend/services/ai/main.py +++ /dev/null @@ -1,943 +0,0 @@ -import os -import re -import uuid -import json -import tempfile -import shutil -import logging -from datetime import datetime -from typing import Optional - -from fastapi import FastAPI, HTTPException, Depends, BackgroundTasks -from fastapi.security import APIKeyHeader -from fastapi.middleware.cors import CORSMiddleware -from sqlalchemy.orm import Session -from pydantic import BaseModel - -from database import get_db, engine, Base, create_tables -from models import Project, ProjectFile -from rag import embed_and_store_chunks, retrieve_context, store_generated_doc - -create_tables() - -app = FastAPI(title="PyDocAI AI Generator Service", version="0.2.0") - -INTERNAL_API_KEY = os.getenv("INTERNAL_API_KEY", "") -api_key_header = APIKeyHeader(name="X-Internal-Api-Key", auto_error=False) - -app.add_middleware( - CORSMiddleware, - allow_origins=["*"], - allow_credentials=True, - allow_methods=["*"], - allow_headers=["*"], -) - - -def verify_internal_key(key: str = Depends(api_key_header)): - if INTERNAL_API_KEY and key != INTERNAL_API_KEY: - raise HTTPException(401, "Invalid or missing internal API key") - return key - -GROQ_API_KEY = os.getenv("GROQ_API_KEY") -GROQ_API_KEY_2 = os.getenv("GROQ_API_KEY_2") - - -class GenerateRequest(BaseModel): - project_id: str - file_path: Optional[str] = None - use_ai: bool = True - - -class GenerateResponse(BaseModel): - project_id: str - status: str - generated_docs: Optional[str] = None - readme_docs: Optional[str] = None - api_docs: Optional[str] = None - - -@app.get("/health") -def health(): - return { - "status": "ok", - "service": "ai", - "groq_configured": bool(GROQ_API_KEY), - "embedding_model": os.getenv("EMBEDDING_MODEL", "all-MiniLM-L6-v2"), - } - - -def _sanitize_markdown(text: str) -> str: - if not text: - return text - text = re.sub(r'(^|\n)mermaid\s*\n', r'\1```mermaid\n', text) - lines = text.split("\n") - result = [] - i = 0 - while i < len(lines): - line = lines[i] - if line.startswith("```mermaid"): - result.append(line) - i += 1 - while i < len(lines): - if lines[i].strip() == "```": - result.append(lines[i]) - i += 1 - break - elif lines[i].startswith("```mermaid"): - result.append("```") - break - elif lines[i].startswith("##") or lines[i].startswith("# "): - result.append("```") - result.append(lines[i]) - i += 1 - break - else: - result.append(lines[i]) - i += 1 - else: - result.append("```") - else: - result.append(lines[i]) - i += 1 - text = "\n".join(result) - text = re.sub(r'\bcode\s*\n\s*Copy\s*\n\s*python\s*\n', '```python\n', text) - text = re.sub(r'\bcode\s*\n\s*Copy\s*\n\s*(\w+)\s*\n', r'```\1\n', text) - text = re.sub(r'\bcode\s*\n\s*Copy\s*\n', '```\n', text) - text = re.sub(r'\n\s*```\s*\n\s*```\s*\n', '\n```\n', text) - text = re.sub(r'([^\n])\n(#{1,6} )', r'\1\n\n\2', text) - text = re.sub(r'(#{1,6} .+)\n([^\n#])', r'\1\n\n\2', text) - text = re.sub(r'\n{3,}', '\n\n', text) - return text.strip() - - -def _call_groq(prompt: str, max_tokens: int = 2048, key_start: int = 0, model: str = "llama-3.1-8b-instant") -> str: - import time - from groq import Groq - key_pool = [] - if GROQ_API_KEY: - key_pool.append(("key1", GROQ_API_KEY)) - if GROQ_API_KEY_2: - key_pool.append(("key2", GROQ_API_KEY_2)) - if not key_pool: - raise HTTPException(503, "No Groq API keys configured") - keys_to_try = key_pool[key_start:] + key_pool[:key_start] - print(f"[_call_groq] Keys available: {len(key_pool)}, start={key_start}, order={[k[0] for k in keys_to_try]}", flush=True) - for name, key in keys_to_try: - for attempt in range(3): - try: - client = Groq(api_key=key) - response = client.chat.completions.create( - model=model, - messages=[{"role": "user", "content": prompt}], - max_tokens=max_tokens, - ) - result = response.choices[0].message.content.strip() - if result.startswith("```"): - result = result.split("```", 2)[-1].strip() - if result.endswith("```"): - result = result[:-3].strip() - print(f"[_call_groq] {name}: OK ({len(result)} chars)", flush=True) - return result - except Exception as e: - status_code = getattr(e, 'status_code', 0) or getattr(e, 'status', 0) - body = getattr(e, 'body', '') or (str(e.args) if e.args else str(e))[:200] - if status_code in (401, 403): - print(f"[_call_groq] {name}: auth error ({status_code}) {body}, skipping key", flush=True) - break - if status_code == 429: - print(f"[_call_groq] {name}: rate limited (429) {body}, trying next key", flush=True) - break - wait = 2 ** attempt - print(f"[_call_groq] {name}: attempt {attempt+1} FAILED (HTTP {status_code}) {body}, retrying in {wait}s", flush=True) - time.sleep(wait) - continue - raise HTTPException(503, "All Groq API keys failed") - - -def _build_structure_tree(ordered_items: list) -> str: - lines = [] - for item in ordered_items: - typ = item["type"] - data = item["data"] - prefix = "โ”œโ”€โ”€ " if item != ordered_items[-1] else "โ””โ”€โ”€ " - if typ == "import": - lines.append(f"{prefix}[Import] {data.get('display', '')}") - elif typ == "function": - args = ", ".join(a["name"] for a in data.get("args", [])) - lines.append(f"{prefix}[Function] {data['name']}({args}) -> {data.get('returns', 'None')}") - elif typ == "class": - bases = ", ".join(data.get("bases", [])) - base_str = f"({bases})" if bases else "" - lines.append(f"{prefix}[Class] {data['name']}{base_str}") - for i, m in enumerate(data.get("methods", [])): - m_prefix = " โ”œโ”€โ”€ " if i < len(data["methods"]) - 1 else " โ””โ”€โ”€ " - m_args = ", ".join(a["name"] for a in m.get("args", [])) - lines.append(f"{m_prefix}{m['name']}({m_args})") - return "\n".join(lines) - - -def get_item_docs_prompt(item_type: str, data: dict, file_path: str, is_pattern: bool = False) -> str: - if item_type == "function": - args_table = "| Parameter | Type | Description | Default | Constraints |\n|---|---|---|---|---|\n" - for a in data.get("args", []): - args_table += f"| {a['name']} | {a['type'] or 'Any'} | ... | ... | ... |\n" - connections = data.get("connections", []) - conn_str = ", ".join(connections) if connections else "None" - - if is_pattern: - return f"""This function follows the same pattern as other functions in this project. -Write a SHORT, differential doc focusing only on what makes THIS one unique. - -Function: `{data['name']}` -File: `{file_path}` -Line: {data.get('line', '?')} -Async: {data.get('is_async', False)} -Decorators: {', '.join(data.get('decorators', [])) or 'None'} -Parameters: -{args_table} -Returns: `{data.get('returns', 'None')}` -Calls/References: {conn_str} - -Provide ONLY: -- ### Purpose (1 sentence) -- ### Unique behavior (what differs from the pattern) -- ### Parameters table (just name and type) -- ### Returns (1 line) - -Output in clean markdown with headings. Keep it short.""" - return f"""Document the following Python function in detail using markdown. - -Function: `{data['name']}` -File: `{file_path}` -Line: {data.get('line', '?')} -Async: {data.get('is_async', False)} -Decorators: {', '.join(data.get('decorators', [])) or 'None'} -Parameters: -{args_table} -Returns: `{data.get('returns', 'None')}` -Calls/References: {conn_str} - -Provide: -- ### Purpose (2-3 sentences) -- ### Behavior (step-by-step) -- ### Parameters table (Parameter | Type | Description | Default | Constraints) -- ### Returns (type, description, possible values) -- ### Raises (all exceptions that can be raised) -- ### Relationships (Calls, Called By, Uses) -- ### Example Usage (Input/Output) -- ### Edge Cases -- ### Complexity (Big O) - -Output in clean markdown with headings.""" - elif item_type == "class": - methods_str = "" - for m in data.get("methods", []): - m_args = ", ".join(a["name"] for a in m.get("args", [])) - methods_str += f"- `{m['name']}({m_args}) -> {m.get('returns', 'None')}` (line {m.get('line', '?')})\n" - connections = data.get("connections", []) - conn_str = ", ".join(connections) if connections else "None" - - if is_pattern: - return f"""This class follows the same pattern as other classes in this project. -Write a SHORT, differential doc focusing only on what makes THIS one unique. - -Class: `{data['name']}` -File: `{file_path}` -Line: {data.get('line', '?')} -Bases: {', '.join(data.get('bases', [])) or 'None'} -Methods: -{methods_str} -Uses/References: {conn_str} - -Provide ONLY: -- ### Purpose (1 sentence) -- ### Unique behavior (what differs from the pattern) -- ### Attributes table (just name and type) -- ### Methods (1 line summary per method) - -Output in clean markdown with headings. Keep it short.""" - return f"""Document the following Python class in detail using markdown. - -Class: `{data['name']}` -File: `{file_path}` -Line: {data.get('line', '?')} -Bases: {', '.join(data.get('bases', [])) or 'None'} -Methods: -{methods_str} -Uses/References: {conn_str} - -Provide: -- ### Purpose (2-3 sentences) -- ### Attributes table (Attribute | Type | Description | Default) -- ### Methods (for each: purpose, parameters, returns, example) -- ### Inherits from (bases, inherited methods) -- ### Usage Example -- ### Relationships to other classes - -Output in clean markdown with headings.""" - return "" - - -def generate_file_docs(parsed: dict, file_path: str, framework_info: Optional[dict] = None, db: Session = None, project_id: str = None) -> str: - ordered_items = parsed.get("ordered_items", []) - module_doc = parsed.get("module_docstring") or "No module docstring" - imports = parsed.get("imports", []) - - import_displays = [] - for imp in imports: - if isinstance(imp, dict): - import_displays.append(imp.get("display", str(imp))) - else: - import_displays.append(str(imp)) - - structure_tree = _build_structure_tree(ordered_items) - - fw_header = "" - fw_instructions = "" - if framework_info and framework_info.get("primary_framework"): - fw = framework_info["primary_framework"] - fw_header = f"\nFramework: {fw}\n" - fw_type = framework_info.get("primary_type", "") - if fw_type == "web": - fw_instructions = "\nSpecial instructions: When documenting Python web framework code, include details about routes, middleware, request/response handling, and dependency injection where applicable." - elif fw_type == "task_queue": - fw_instructions = "\nSpecial instructions: When documenting task queue code, include details about task signatures, queues, retries, and result backends where applicable." - elif fw_type == "orm": - fw_instructions = "\nSpecial instructions: When documenting ORM code, include details about model definitions, relationships, sessions, and query patterns where applicable." - elif fw_type == "ai": - fw_instructions = "\nSpecial instructions: When documenting AI/LLM code, include details about model configuration, prompts, streaming, and error handling where applicable." - - - - rag_context = "" - if db and project_id: - try: - rag_context, _ = retrieve_context(project_id, f"Module overview of {file_path}: {module_doc}", top_k=3, db=db) - except Exception: - pass - - rag_block = f"\n\nRelevant code context from project:\n{rag_context}\n\n---\n" if rag_context else "" - - overview_prompt = f"""{rag_block} -Generate the beginning sections for the Python file {file_path}.{fw_header} -Module docstring: {module_doc} -Imports: {', '.join(import_displays)} - -Output ONLY the following sections in markdown (nothing else): - -# {file_path} - -## Overview -3-5 detailed paragraphs on what this module does, its purpose, architecture, and key components. Include a mermaid flowchart showing the module architecture and data flow. - -## Code Structure (Source Order) -Paste the structure tree below EXACTLY as shown: - -{structure_tree} - -## Imports -For each import, provide a DETAILED table row with ALL columns: -| Import | Purpose | Where Used | Notes | -|--------|---------|----------|-------| -| ... | ... | ... | ... | - -## Notes -Any additional observations about the module. -""" - overview_docs = _call_groq(overview_prompt, max_tokens=2048, key_start=0) - - item_docs = [] - for i, item in enumerate(ordered_items): - typ = item["type"] - data = item["data"] - if typ == "import": - continue - elif typ in ("function", "class"): - item_prompt = get_item_docs_prompt(typ, data, file_path) - if db and project_id: - try: - item_rag, is_pattern = retrieve_context( - project_id, f"{typ}: {data.get('name', '')} in {file_path}", top_k=3, db=db - ) - if item_rag: - item_prompt = get_item_docs_prompt(typ, data, file_path, is_pattern=is_pattern) - item_prompt = f"Relevant code context from project:\n{item_rag}\n\n---\n\n" + item_prompt - except Exception: - pass - docs = _call_groq(item_prompt, max_tokens=2048, key_start=(i + 1) % 2) - item_docs.append(docs) - if db and project_id and docs: - try: - store_generated_doc(project_id, typ, data["name"], file_path, docs, db) - except Exception: - pass - - result = overview_docs + "\n\n" - result += "## Detailed Documentation (IN SOURCE ORDER)\n\n" - result += "\n\n---\n\n".join(item_docs) - result += "\n\n## End of Documentation" - - return result.strip() - - -def _mock_docs(parsed: dict, file_path: str, _framework_info: Optional[dict] = None) -> str: - imports = parsed.get("imports", []) - ordered = parsed.get("ordered_items", []) - - import_lines = [] - for imp in imports: - if isinstance(imp, dict): - import_lines.append(f'- `{imp.get("display", str(imp))}` (line {imp.get("line", "?")})') - else: - import_lines.append(f"- `{imp}`") - - doc_sections = [] - for item in ordered: - typ = item["type"] - data = item["data"] - if typ == "import": - pass - elif typ == "function": - args = ", ".join(a["name"] for a in data.get("args", [])) - returns = data.get("returns") or "None" - line = data.get("line", "?") - connections = data.get("connections", []) - conn_str = f" (calls: {', '.join(connections)})" if connections else "" - doc_sections.append( - f'### `{data["name"]}({args}) -> {returns}`\n' - f'- **Line:** {line}{conn_str}\n' - f'- **Purpose:** Mock documentation' - ) - elif typ == "class": - line = data.get("line", "?") - bases = ", ".join(data.get("bases", [])) - base_str = f"({bases})" if bases else "" - connections = data.get("connections", []) - conn_str = f" (uses: {', '.join(connections)})" if connections else "" - doc_sections.append( - f'### `{data["name"]}{base_str}`\n' - f'- **Line:** {line}{conn_str}\n' - f'- **Methods:** {", ".join(m["name"] for m in data.get("methods", []))}' - ) - - return f"""# {file_path} - -## Overview -Mock documentation generated for development purposes. This shows how the documentation will be structured with source order preserved. - -## Imports -{chr(10).join(import_lines) or 'No imports'} - -## Detailed Documentation (IN SOURCE ORDER) - -{chr(10).join(doc_sections) or 'No functions or classes'} - -> โš ๏ธ This is mock documentation. Configure GROQ_API_KEY to generate real AI-powered docs. -""" - - -def _retrieve_project_context(project_id: str, project_name: str, db: Session) -> str: - try: - rag_text, _ = retrieve_context( - project_id, - f"Project {project_name}: architecture, components, data flow, dependencies", - top_k=5, - db=db, - ) - if rag_text: - return rag_text - return "No additional code context available." - except Exception: - return "No additional code context available." - - -def generate_project_summary(project_path: str, project_name: str = None) -> dict: - summary = { - "name": project_name or os.path.basename(project_path), - "framework": "python", - "architecture": "monolith", - "apps": [], - "dependencies": [], - "file_count": 0, - "project_tree": "", - "package_manager": "pip", - } - - # Detect package manager from project root files - root_contents = set(os.listdir(project_path)) - if "uv.lock" in root_contents or "uv.toml" in root_contents: - summary["package_manager"] = "uv" - elif "poetry.lock" in root_contents: - summary["package_manager"] = "poetry" - elif "Pipfile" in root_contents: - summary["package_manager"] = "pipenv" - elif "pyproject.toml" in root_contents: - summary["package_manager"] = "pip" - else: - summary["package_manager"] = "pip" - - dir_map = {} - for root, dirs, files in os.walk(project_path): - dirs[:] = [d for d in dirs if d not in { - "venv", ".venv", "__pycache__", "node_modules", - "migrations", ".git", "build", "dist", ".egg-info" - }] - rel_dir = os.path.relpath(root, project_path) - if rel_dir == ".": - rel_dir = "" - for f in files: - if f.endswith(".py"): - dir_map.setdefault(rel_dir, []).append(f) - - summary["file_count"] = sum(len(v) for v in dir_map.values()) - - # Build a proper nested tree from directory map - def _build_tree(dir_map): - root = {} - for dir_path, files in dir_map.items(): - if not dir_path: - continue - parts = dir_path.replace("\\", "/").split("/") - node = root - for p in parts: - node = node.setdefault(p, {}) - node["__files__"] = files - return root - - def _render_tree(node, prefix="", is_last=True): - lines = [] - items = list(node.items()) - items.sort(key=lambda x: (x[0] == "__files__", x[0])) - for i, (key, val) in enumerate(items): - if key == "__files__": - files = sorted(val) - for fi, f in enumerate(files): - conn = "โ””โ”€โ”€ " if fi == len(files) - 1 else "โ”œโ”€โ”€ " - lines.append(f"{prefix}{conn}{f}") - else: - conn = "โ””โ”€โ”€ " if i == len(items) - 1 else "โ”œโ”€โ”€ " - lines.append(f"{prefix}{conn}{key}/") - ext = " " if i == len(items) - 1 else "โ”‚ " - sub_lines = _render_tree(val, prefix + ext, i == len(items) - 1) - lines.extend(sub_lines) - return lines - - tree = _build_tree(dir_map) - tree_lines = [] - # Only use top-level dirs as roots (skip files at repo root) - top_dirs = sorted(k for k in tree if k != "__files__") - for ti, td in enumerate(top_dirs): - tree_lines.append(f"{td}/") - sub = _render_tree(tree[td], "", ti == len(top_dirs) - 1) - tree_lines.extend(sub) - summary["project_tree"] = "\n".join(tree_lines) - - for root, dirs, files in os.walk(project_path): - rel = os.path.relpath(root, project_path) - if rel == ".": - continue - if "apps.py" in files or "models.py" in files: - summary["apps"].append(rel.replace(os.sep, ".")) - - req_files = ["requirements.txt", "pyproject.toml", "Pipfile"] - for rf in req_files: - rpath = os.path.join(project_path, rf) - if os.path.exists(rpath): - with open(rpath) as f: - summary["dependencies"] = f.read().splitlines() - break - - return summary - - -def _postman_body_example(route: str) -> str: - examples = { - "register": '\n\n{\n "username": "johndoe",\n "email": "john@example.com",\n "password": "********"\n}', - "login": '\n\n{\n "username": "johndoe",\n "password": "********"\n}', - "change-password": '\n\n{\n "old_password": "********",\n "new_password": "********"\n}', - "password-reset": '\n\n{\n "email": "john@example.com"\n}', - "password-reset/confirm": '\n\n{\n "token": "...",\n "new_password": "********"\n}', - "import": '\n\n{\n "repo_url": "https://github.com/user/repo"\n}', - "folder": '\n\n{\n "folder_path": "src/"\n}', - "file": '\n\n{\n "file_path": "src/main.py",\n "content": "# code here"\n}', - "auth/github": '\n\n{\n "code": "github_oauth_code"\n}', - } - for key, body in examples.items(): - if key in route: - return body - return '\n\n{\n \n}' - - -def _build_api_docs(files: list) -> str: - import re as _re - view_routes = {} - url_prefixes = {} # file โ†’ prefix from include() - - # First pass: collect include() prefixes - for f in files: - if f.file_path.endswith("urls.py") and f.content: - for m in _re.finditer( - r"(?:path|re_path)\(\s*(['\"])(.+?)\1\s*,\s*include\((['\"])(.+?)\3\)", - f.content, - ): - route, included = m.group(2), m.group(4) - included_path = included.replace(".urls", "").replace(".", "/") - url_prefixes[included_path] = route - - # Second pass: extract view โ†’ route mappings - for f in files: - if f.file_path.endswith("urls.py") and f.content: - # Determine prefix from include() parent - file_key = f.file_path.replace("\\", "/") - parts = file_key.split("/") - prefix = "" - for p in range(len(parts)): - candidate = "/".join(parts[p:]).replace("/urls.py", "").replace(".", "/") - if candidate in url_prefixes: - prefix = url_prefixes[candidate] - break - - for m in _re.finditer( - r"(?:path|re_path)\(\s*(['\"])(.+?)\1\s*,\s*([^)]+)", - f.content, - ): - route = m.group(2) - view_expr = m.group(3).strip() - if view_expr.startswith("include") or view_expr.startswith("("): - continue - name_match = _re.search(r'(\w+)\.as_view\(', view_expr) - if name_match: - view_name = name_match.group(1) - else: - name_match = _re.search(r'(\w+)$', view_expr) - if name_match: - view_name = name_match.group(1) - else: - continue - full_route = f"{prefix.strip('/')}/{route.strip('/')}" - view_routes[view_name] = full_route - - app_docs = {} - for f in files: - if not f.parsed_data: - continue - # Only process views.py and admin.py for API docs - if not (f.file_path.endswith("views.py") or f.file_path.endswith("admin.py")): - continue - parts = f.file_path.replace("\\", "/").split("/") - app_name = "other" - for i, p in enumerate(parts): - if p == "apps" and i + 1 < len(parts): - app_name = parts[i + 1] - break - if p == "config": - app_name = "config" - break - if app_name not in app_docs: - app_docs[app_name] = [] - - for item in f.parsed_data.get("ordered_items", []): - if item["type"] not in ("function", "class"): - continue - data = item["data"] - name = data["name"] - docstring = (data.get("docstring") or "")[:150] - route = view_routes.get(name, "") - methods = [] - if item["type"] == "class": - for m in data.get("methods", []): - mname = m["name"] - if mname in ("get", "post", "put", "patch", "delete", "head", "options"): - methods.append(mname.upper()) - else: - methods.append(mname) - desc = docstring.replace("\n", " ") if docstring else "" - # Only include items that have a route OR are view classes with HTTP methods - if not route and not methods: - continue - dedup_methods = list(dict.fromkeys(methods)) # dedup preserving order - http_verbs = [m for m in dedup_methods if m in ("GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS")] - custom_methods = [m for m in dedup_methods if m not in ("GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS")] - app_docs[app_name].append({ - "name": name, "type": item["type"], "route": route, - "http_verbs": http_verbs, "custom_methods": custom_methods, - "description": desc, "file": f.file_path, - }) - - if not app_docs: - return "# API Documentation\n\nNo API endpoints found." - - lines = ["# API Documentation\n"] - for app_name in sorted(app_docs.keys()): - entries = app_docs[app_name] - if not entries: - continue - lines.append(f"## {app_name}\n") - for e in entries: - name = e["name"] - desc = e["description"] if e["description"] else "โ€”" - file_path = e["file"] - - if e["route"]: - clean_route = f"/{e['route'].strip('/')}" - methods_line = "`, `".join(e["http_verbs"]) if e["http_verbs"] else "โ€”" - lines.append(f"### {name}\n") - lines.append(f"`{methods_line}` `{clean_route}`\n") - lines.append(f"{desc}\n") - if e["custom_methods"]: - lines.append(f"**Custom methods:** `{', '.join(e['custom_methods'])}`\n") - methods_lower = set(m.lower() for m in e["http_verbs"]) - body = _postman_body_example(clean_route) if any(v in methods_lower for v in ("post","put","patch")) else "" - if "post" in methods_lower: - lines.append(f"**Postman:**\n```\nPOST http://localhost:8000{clean_route}\nAuthorization: Bearer \nContent-Type: application/json{body}\n```\n") - elif "put" in methods_lower: - lines.append(f"**Postman:**\n```\nPUT http://localhost:8000{clean_route}\nAuthorization: Bearer \nContent-Type: application/json{body}\n```\n") - elif "patch" in methods_lower: - lines.append(f"**Postman:**\n```\nPATCH http://localhost:8000{clean_route}\nAuthorization: Bearer \nContent-Type: application/json{body}\n```\n") - elif "delete" in methods_lower: - lines.append(f"**Postman:**\n```\nDELETE http://localhost:8000{clean_route}\nAuthorization: Bearer \n```\n") - elif "get" in methods_lower: - lines.append(f"**Postman:**\n```\nGET http://localhost:8000{clean_route}\nAuthorization: Bearer \n```\n") - else: - methods_str = ", ".join(e["http_verbs"] + e["custom_methods"]) if (e["http_verbs"] or e["custom_methods"]) else "โ€”" - lines.append(f"### {name}\n") - lines.append(f"**Methods:** `{methods_str}`\n") - lines.append(f"{desc}\n") - - lines.append(f"**File:** `{file_path}`\n") - lines.append("---\n") - return "\n".join(lines) - - -@app.post("/api/ai/generate/", response_model=GenerateResponse) -def generate_docs(req: GenerateRequest, background_tasks: BackgroundTasks, db: Session = Depends(get_db), _auth: str = Depends(verify_internal_key)): - project = db.query(Project).filter(Project.id == uuid.UUID(req.project_id)).first() - if not project: - raise HTTPException(404, "Project not found") - - project.status = "processing" - project.updated_at = datetime.utcnow() - db.commit() - - files = db.query(ProjectFile).filter( - ProjectFile.project_id == project.id - ).all() - - if not files: - raise HTTPException(400, "No parsed files found. Run parser first.") - - try: - fw_info = project.framework_info or {} - - if project.source_type == "file" and len(files) == 1: - f = files[0] - if req.use_ai and GROQ_API_KEY: - try: - embed_and_store_chunks(str(project.id), files, db) - except Exception as e: - logger = logging.getLogger("ai.generate_docs") - logger.warning("Embedding failed (continuing without RAG): %s", e) - docs = generate_file_docs(f.parsed_data or {}, f.file_name, fw_info, db, str(project.id)) - else: - docs = _mock_docs(f.parsed_data or {}, f.file_name, fw_info) - - project.generated_docs = _sanitize_markdown(docs) - f.generated_docs = project.generated_docs - db.commit() - else: - temp_dir = tempfile.mkdtemp() - try: - for f in files: - if f.content: - fp = os.path.join(temp_dir, f.file_path) - os.makedirs(os.path.dirname(fp), exist_ok=True) - with open(fp, "w") as fh: - fh.write(f.content) - - summary = generate_project_summary(temp_dir, project.name) - project.project_info = summary - - if req.use_ai and GROQ_API_KEY: - try: - embed_and_store_chunks(str(project.id), files, db) - except Exception as e: - logger = logging.getLogger("ai.generate_docs") - logger.warning("Embedding failed (continuing without RAG): %s", e) - - parsed_list = [] - for f in files: - if f.parsed_data: - parsed_list.append({"file_path": f.file_path, "parsed": f.parsed_data}) - - fw_name = fw_info.get("primary_framework", summary.get("framework", "python")) - fw_summary = fw_info.get("summary", "") - fw_block = f"\nDetected Frameworks: {fw_summary}\n" if fw_summary else "" - - tree_lines = (summary.get("project_tree") or "").splitlines() - if len(tree_lines) > 30: - tree_lines = tree_lines[:28] + ["... (truncated)"] - tree_trunc = "\n".join(tree_lines) - - deps = summary.get("dependencies", []) - if len(deps) > 20: - deps = deps[:18] + ["... (truncated)"] - clone_url = (project.github_url or "").strip() - clone_hint = "" - repo_dir = project.name - if clone_url: - clone_hint = f"\nClone URL: {clone_url}" - repo_dir = clone_url.rstrip("/").split("/")[-1].replace(".git", "") or project.name - - pm_map = { - "uv": "`uv sync`", - "poetry": "`poetry install`", - "pipenv": "`pipenv install`", - "pip": "`pip install -r requirements.txt`", - } - pm_cmd = pm_map.get(summary.get("package_manager", "pip"), "`pip install -r requirements.txt`") - - project_context = ( - f"Project Name: {project.name}\n" - f"Description: {project.description or 'No description provided'}\n" - f"Framework: {fw_name}\n" - f"Architecture: {summary.get('architecture', 'monolith')}\n" - f"Total Files: {summary['file_count']}{fw_block}\n\n" - f"Project Structure:\n{tree_trunc}\n\n" - f"Dependencies:\n{chr(10).join(deps)}\n\n" - f"Apps/Modules: {', '.join(summary.get('apps', [])) or 'None detected'}\n" - f"Package Manager: {summary.get('package_manager', 'pip')}\n" - f"Relevant Code Context:\n{_retrieve_project_context(str(project.id), project.name, db)}\n" - f"{clone_hint}\n" - ) - - def _call_ai_section(prompt_body: str, key_offset: int, label: str, max_tokens: int = 4096) -> str: - plen = len(prompt_body) - if plen > 12000: - prompt_body = prompt_body[:12000] + "\n... (truncated)" - print(f"[{label}] Prompt truncated from {plen} to 12000 chars", flush=True) - print(f"[{label}] Prompt size: {len(prompt_body)} chars, calling _call_groq", flush=True) - return _call_groq(prompt_body, max_tokens=max_tokens, model="llama-3.3-70b-versatile", key_start=key_offset) - - import time as _time - - # Build API docs programmatically from urls.py + parsed data - project.api_docs = _build_api_docs(files) - - _time.sleep(3) - - # Determine correct cd directory from project structure - has_root_req = any(f.file_path == "requirements.txt" for f in files) - has_root_manage = any(f.file_path == "manage.py" for f in files) - cd_dir = "." if (has_root_req or has_root_manage) else (repo_dir or ".") - - # Build dynamic mermaid flowchart from actual apps - detected_apps = summary.get("apps", []) - app_labels = [a.split(".")[-1].replace("_", " ").title() for a in detected_apps] - mermaid_lines = ["flowchart TD", " A[Client] --> B[Backend]"] - for i, label in enumerate(app_labels): - node = chr(67 + i) if i < 24 else f"N{i}" - mermaid_lines.append(f" B --> {node}[{label}]") - mermaid_block = "\n".join(mermaid_lines) - app_list_str = ", ".join(f"`{a}`" for a in detected_apps) if detected_apps else "the detected modules" - - summary_prompt = f"""{project_context} - -Generate a project summary with two parts. - -Part 1 โ€” Overview: 2-3 paragraphs on the project's purpose, architecture, data flow. Include exactly ONE detailed mermaid flowchart based on the actual apps above (do NOT add a second simplified version): - -```mermaid -{mermaid_block} -``` - -Part 2 โ€” App-by-App Breakdown: For EACH app/module detected in this project, write one paragraph explaining what that app does, its key files, and how it fits the architecture. Include ALL of: {app_list_str}. Do NOT skip any. - -Output ONLY the summary content.""" - summary_result = _call_ai_section(summary_prompt, 1, "SUMMARY", max_tokens=2048) - tree_block = "\n\n---\n\n## Project Structure\n\n```\n" + summary.get("project_tree", "") + "\n```\n" - if summary_result: - project.generated_docs = _sanitize_markdown(summary_result + tree_block) - else: - project.generated_docs = tree_block.strip() - - _time.sleep(3) - - readme_prompt = f"""{project_context} - -Write a README with: - -## Title & Description -What the project is and who it's for (3-4 sentences). - -## Key Features -5-7 bullet features from the app modules. - -## Quick Start -```bash -git clone {clone_url or ''} -cd {cd_dir} -{pm_cmd} -``` -Then run: `python manage.py migrate && python manage.py runserver` (or equivalent for the framework). - -## Architecture & Project Structure -Describe the monolithic layout, the apps under `backend/apps/`, and the data flow (2-3 paragraphs). - -Output ONLY the README content.""" - readme_result = _call_ai_section(readme_prompt, 0, "README", max_tokens=2048) - project.readme_docs = _sanitize_markdown(readme_result) if readme_result else "# " + project.name + "\n\nNo README generated." - else: - fallback = f"""# {project.name} - -## Overview -Mock project documentation for {project.name}. - -## Project Structure -{summary['project_tree']} - -## Dependencies -{' '.join(summary.get('dependencies', [])) or 'Not detected'} - -> โš ๏ธ Configure GROQ_API_KEY to generate AI-powered documentation.""" - project.readme_docs = _sanitize_markdown(fallback) - project.generated_docs = _sanitize_markdown(fallback) - - finally: - shutil.rmtree(temp_dir, ignore_errors=True) - - project.status = "done" - project.updated_at = datetime.utcnow() - db.commit() - - except Exception as e: - import traceback - logger = logging.getLogger("ai.generate_docs") - logger.error("Generation failed: %s\n%s", str(e), traceback.format_exc()) - project.status = "failed" - project.error_message = str(e) - db.commit() - return GenerateResponse( - project_id=str(project.id), - status="failed", - ) - - return GenerateResponse( - project_id=str(project.id), - status="done", - generated_docs=project.generated_docs, - readme_docs=project.readme_docs, - api_docs=project.api_docs, - ) - - -@app.get("/api/ai/status/{project_id}") -def ai_status(project_id: str, db: Session = Depends(get_db), _auth: str = Depends(verify_internal_key)): - project = db.query(Project).filter(Project.id == uuid.UUID(project_id)).first() - if not project: - raise HTTPException(404, "Project not found") - return { - "project_id": str(project.id), - "status": project.status, - "has_docs": bool(project.generated_docs), - } diff --git a/backend/services/ai/models.py b/backend/services/ai/models.py deleted file mode 100644 index 9471395..0000000 --- a/backend/services/ai/models.py +++ /dev/null @@ -1,62 +0,0 @@ -import uuid -from datetime import datetime -from sqlalchemy import Column, String, Text, DateTime, JSON, ForeignKey, Integer -from sqlalchemy.dialects.postgresql import UUID -from sqlalchemy.orm import relationship -from pgvector.sqlalchemy import Vector -from database import Base - - -class User(Base): - __tablename__ = "users" - __table_args__ = {"extend_existing": True} - - id = Column(UUID(as_uuid=True), primary_key=True) - email = Column(String(254), nullable=False) - - -class Project(Base): - __tablename__ = "projects" - - id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) - name = Column(String(255), nullable=False) - description = Column(Text, default="") - status = Column(String(20), default="pending") - source_type = Column(String(20), default="file") - github_url = Column(String(500), nullable=True) - parsed_data = Column(JSON, nullable=True) - generated_docs = Column(Text, nullable=True) - readme_docs = Column(Text, nullable=True) - api_docs = Column(Text, nullable=True) - project_info = Column(JSON, nullable=True) - custom_details = Column(JSON, nullable=True) - framework_info = Column(JSON, nullable=True) - error_message = Column(Text, nullable=True) - created_at = Column(DateTime, default=datetime.utcnow) - updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) - - -class ProjectFile(Base): - __tablename__ = "project_files" - - id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) - project_id = Column(UUID(as_uuid=True), ForeignKey("projects.id"), nullable=False) - file_path = Column(String(500), nullable=False) - file_name = Column(String(255), nullable=False) - content = Column(Text, default="") - parsed_data = Column(JSON, nullable=True) - generated_docs = Column(Text, nullable=True) - created_at = Column(DateTime, default=datetime.utcnow) - - -class CodeEmbedding(Base): - __tablename__ = "code_embeddings" - - id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) - project_id = Column(UUID(as_uuid=True), ForeignKey("projects.id"), nullable=False, index=True) - file_path = Column(String(500), nullable=False) - chunk_type = Column(String(20), nullable=False) - chunk_text = Column(Text, nullable=False) - embedding = Column(Vector(384), nullable=False) - chunk_metadata = Column("metadata", JSON, default=dict) - created_at = Column(DateTime, default=datetime.utcnow) diff --git a/backend/services/ai/test_main.py b/backend/services/ai/test_main.py deleted file mode 100644 index d60a7bb..0000000 --- a/backend/services/ai/test_main.py +++ /dev/null @@ -1,109 +0,0 @@ -from uuid import uuid4 -from unittest.mock import patch, MagicMock - -import pytest -from fastapi.testclient import TestClient - -from main import app - -client = TestClient(app) - - -@pytest.fixture(autouse=True) -def mock_env(monkeypatch): - monkeypatch.setenv("INTERNAL_API_KEY", "") - monkeypatch.setenv("DATABASE_URL", "sqlite:///:memory:") - - -@pytest.fixture -def mock_db(): - session = MagicMock() - - def gen(): - yield session - - with patch("main.get_db", return_value=gen()): - yield session - - -class TestHealth: - def test_health_endpoint(self): - resp = client.get("/health") - assert resp.status_code == 200 - data = resp.json() - assert data["status"] == "ok" - assert data["service"] == "ai" - - -class TestGenerateDocs: - def test_404_for_missing_project(self, mock_db): - mock_db.query.return_value.filter.return_value.first.return_value = None - resp = client.post( - "/api/ai/generate/", - json={"project_id": str(uuid4())}, - ) - assert resp.status_code == 404 - - @patch("main.GROQ_API_KEY", None) - def test_no_groq_key_uses_mock(self, mock_db): - mock_project = MagicMock() - mock_project.id = uuid4() - mock_project.source_type = "file" - mock_db.query.return_value.filter.return_value.first.return_value = mock_project - mock_db.query.return_value.filter.return_value.all.return_value = [ - MagicMock(file_name="test.py", parsed_data={ - "functions": [{"name": "foo", "args": []}], - "classes": [], "imports": [], "error": False, - }, content="def foo(): pass") - ] - - resp = client.post( - "/api/ai/generate/", - json={"project_id": str(mock_project.id)}, - ) - assert resp.status_code == 200 - data = resp.json() - assert data["status"] == "done" - assert "Mock documentation" in (data.get("generated_docs") or "") - - -class TestAIStatus: - def test_returns_project_status(self, mock_db): - mock_project = MagicMock() - mock_project.id = uuid4() - mock_project.status = "done" - mock_project.generated_docs = "# Docs" - mock_db.query.return_value.filter.return_value.first.return_value = mock_project - - resp = client.get(f"/api/ai/status/{mock_project.id}") - assert resp.status_code == 200 - data = resp.json() - assert data["status"] == "done" - assert data["has_docs"] is True - - def test_404_for_unknown(self, mock_db): - mock_db.query.return_value.filter.return_value.first.return_value = None - resp = client.get("/api/ai/status/00000000-0000-0000-0000-000000000000") - assert resp.status_code == 404 - - -class TestSanitizeMarkdown: - @patch("main.GROQ_API_KEY", None) - def test_generated_docs_is_sanitized(self, mock_db): - mock_project = MagicMock() - mock_project.id = uuid4() - mock_project.source_type = "file" - mock_db.query.return_value.filter.return_value.first.return_value = mock_project - mock_db.query.return_value.filter.return_value.all.return_value = [ - MagicMock(file_name="test.py", parsed_data={ - "functions": [], "classes": [], "imports": [], "error": False, - }, content="# code") - ] - - resp = client.post( - "/api/ai/generate/", - json={"project_id": str(mock_project.id)}, - ) - assert resp.status_code == 200 - docs = resp.json().get("generated_docs", "") - assert "\n\n\n" not in docs diff --git a/backend/services/parser/Dockerfile b/backend/services/parser/Dockerfile deleted file mode 100644 index e741afc..0000000 --- a/backend/services/parser/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM python:3.11-slim - -WORKDIR /app - -COPY requirements.txt . -RUN pip install --no-cache-dir -r requirements.txt - -COPY . . - -EXPOSE 8002 - -CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8002", "--workers", "2"] diff --git a/backend/services/parser/database.py b/backend/services/parser/database.py deleted file mode 100644 index b24f4bd..0000000 --- a/backend/services/parser/database.py +++ /dev/null @@ -1,28 +0,0 @@ -import os -from sqlalchemy import create_engine, text -from sqlalchemy.orm import sessionmaker, declarative_base - -DATABASE_URL = os.getenv( - "DATABASE_URL", - "postgresql://pydocai_user:pydocai_pass@localhost:5433/pydocai" -) - -engine = create_engine(DATABASE_URL, pool_pre_ping=True) -SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) -Base = declarative_base() - - -def create_tables(): - with engine.connect() as conn: - conn.execute(text("CREATE EXTENSION IF NOT EXISTS vector")) - conn.commit() - from models import Project, ProjectFile - Base.metadata.create_all(bind=engine) - - -def get_db(): - db = SessionLocal() - try: - yield db - finally: - db.close() diff --git a/backend/services/parser/main.py b/backend/services/parser/main.py deleted file mode 100644 index fb77a9a..0000000 --- a/backend/services/parser/main.py +++ /dev/null @@ -1,197 +0,0 @@ -import io -import json -import os -import base64 -import zipfile -import uuid -from datetime import datetime - -from fastapi import FastAPI, UploadFile, File, Form, HTTPException, Depends -from fastapi.security import APIKeyHeader -from fastapi.middleware.cors import CORSMiddleware -from sqlalchemy.orm import Session - -from database import get_db, engine, Base, create_tables -from models import Project, ProjectFile -from ast_parser import parse_python_file -from validators import validate_python_code, should_exclude -from framework_detector import detect_framework - -create_tables() - -app = FastAPI(title="PyDocAI Parser Service", version="0.2.0") - -INTERNAL_API_KEY = os.getenv("INTERNAL_API_KEY", "") -api_key_header = APIKeyHeader(name="X-Internal-Api-Key", auto_error=False) - -app.add_middleware( - CORSMiddleware, - allow_origins=["*"], - allow_credentials=True, - allow_methods=["*"], - allow_headers=["*"], -) - - -def verify_internal_key(key: str = Depends(api_key_header)): - if INTERNAL_API_KEY and key != INTERNAL_API_KEY: - raise HTTPException(401, "Invalid or missing internal API key") - return key - - -@app.get("/health") -def health(): - return {"status": "ok", "service": "parser"} - - -@app.post("/api/parser/file/") -async def analyze_file( - _auth: str = Depends(verify_internal_key), - file: UploadFile = File(...), - project_id: str = Form(...), - name: str = Form("Untitled Project"), - description: str = Form(""), - file_path: str = Form(None), - db: Session = Depends(get_db), -): - if not file.filename.endswith(".py"): - raise HTTPException(400, "Only .py files are allowed") - - try: - source_code = (await file.read()).decode("utf-8") - except UnicodeDecodeError: - raise HTTPException(400, "File must be UTF-8 encoded") - - is_valid, err = validate_python_code(source_code) - if not is_valid: - raise HTTPException(400, err) - - parsed = parse_python_file(source_code) - - project = db.query(Project).filter(Project.id == uuid.UUID(project_id)).first() - if not project: - raise HTTPException(404, "Project not found") - - imports = [imp.get("display", str(imp)) if isinstance(imp, dict) else str(imp) for imp in parsed.get("imports", [])] - fw_info = detect_framework(imports, [file_path or file.filename], [source_code]) - project.framework_info = fw_info - - project.parsed_data = parsed - project.status = "processing" - project.updated_at = datetime.utcnow() - db.commit() - - final_path = file_path or file.filename - db.add(ProjectFile( - project_id=project.id, - file_path=final_path, - file_name=file.filename.split("/")[-1], - file_size=len(source_code), - content=source_code, - parsed_data=parsed, - generated_docs="", - )) - db.commit() - - return { - "project_id": project_id, - "parsed": parsed, - "file_count": 1, - "framework": fw_info, - } - - -@app.post("/api/parser/folder/") -async def analyze_folder( - folder: UploadFile = File(...), - _auth: str = Depends(verify_internal_key), - project_id: str = Form(...), - name: str = Form("Untitled Project"), - description: str = Form(""), - custom_info: str = Form(None), - db: Session = Depends(get_db), -): - if not folder.filename.endswith(".zip"): - raise HTTPException(400, "File must be a .zip") - - try: - zip_content = await folder.read() - zf = zipfile.ZipFile(io.BytesIO(zip_content)) - except zipfile.BadZipFile: - raise HTTPException(400, "Invalid zip file") - - py_files = [ - f for f in zf.namelist() - if f.endswith(".py") and not should_exclude(f) - ] - - if not py_files: - raise HTTPException(400, "No Python files found after filtering") - - project = db.query(Project).filter(Project.id == uuid.UUID(project_id)).first() - if not project: - raise HTTPException(404, "Project not found") - - if custom_info: - try: - project.custom_details = json.loads(custom_info) - except json.JSONDecodeError: - project.custom_details = {"details": custom_info} - - all_imports: list[str] = [] - all_paths: list[str] = [] - all_sources: list[str] = [] - - results = [] - for file_path in py_files: - try: - content = zf.read(file_path).decode("utf-8", errors="ignore") - is_valid, _ = validate_python_code(content) - if not is_valid: - continue - - parsed = parse_python_file(content) - db.add(ProjectFile( - project_id=project.id, - file_path=file_path, - file_name=file_path.split("/")[-1], - file_size=len(content), - content=content, - parsed_data=parsed, - generated_docs="", - )) - - imports = [imp.get("display", str(imp)) if isinstance(imp, dict) else str(imp) for imp in parsed.get("imports", [])] - all_imports.extend(imports) - all_paths.append(file_path) - all_sources.append(content) - results.append({"file_path": file_path, "parsed": parsed}) - except Exception: - continue - - fw_info = detect_framework(all_imports, all_paths, all_sources) - project.framework_info = fw_info - project.parsed_data = results - project.status = "processing" - project.updated_at = datetime.utcnow() - db.commit() - - return { - "project_id": project_id, - "files_parsed": len(results), - "framework": fw_info, - } - - -@app.get("/api/parser/status/{project_id}") -def parser_status(project_id: str, db: Session = Depends(get_db), _auth: str = Depends(verify_internal_key)): - project = db.query(Project).filter(Project.id == uuid.UUID(project_id)).first() - if not project: - raise HTTPException(404, "Project not found") - return { - "project_id": str(project.id), - "status": project.status, - "files_count": db.query(ProjectFile).filter( - ProjectFile.project_id == project.id - ).count(), - } diff --git a/backend/services/parser/models.py b/backend/services/parser/models.py deleted file mode 100644 index d56f794..0000000 --- a/backend/services/parser/models.py +++ /dev/null @@ -1,57 +0,0 @@ -import uuid -from datetime import datetime -from sqlalchemy import Column, String, Text, DateTime, JSON, ForeignKey, Boolean, Integer -from sqlalchemy.dialects.postgresql import UUID -from sqlalchemy.orm import relationship -from database import Base - - -class User(Base): - __tablename__ = "users" - __table_args__ = {"extend_existing": True} - - id = Column(UUID(as_uuid=True), primary_key=True) - email = Column(String(254), nullable=False) - - -class Project(Base): - __tablename__ = "projects" - - id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) - user_id = Column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=False) - name = Column(String(255), nullable=False) - description = Column(Text, default="") - status = Column(String(20), default="pending") - source_type = Column(String(20), default="file") - file_name = Column(String(255), default="", server_default="") - file_size = Column(Integer, nullable=True) - github_url = Column(String(500), nullable=True) - github_branch = Column(String(100), default="main") - parsed_data = Column(JSON, nullable=True) - generated_docs = Column(Text, nullable=True) - readme_docs = Column(Text, nullable=True) - api_docs = Column(Text, nullable=True) - project_info = Column(JSON, nullable=True) - custom_details = Column(JSON, nullable=True) - framework_info = Column(JSON, nullable=True) - error_message = Column(Text, nullable=True) - created_at = Column(DateTime, default=datetime.utcnow) - updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) - - files = relationship("ProjectFile", back_populates="project") - - -class ProjectFile(Base): - __tablename__ = "project_files" - - id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) - project_id = Column(UUID(as_uuid=True), ForeignKey("projects.id"), nullable=False) - file_path = Column(String(500), nullable=False) - file_name = Column(String(255), nullable=False) - file_size = Column(Integer, nullable=True) - content = Column(Text, default="") - parsed_data = Column(JSON, nullable=True) - generated_docs = Column(Text, nullable=True) - created_at = Column(DateTime, default=datetime.utcnow) - - project = relationship("Project", back_populates="files") diff --git a/deploy/nginx.conf b/deploy/nginx.conf index 5f8b8d5..acae541 100644 --- a/deploy/nginx.conf +++ b/deploy/nginx.conf @@ -6,7 +6,7 @@ http { resolver 127.0.0.11 ipv6=off valid=10s; server { - listen 8000; + listen 80; server_name _; client_max_body_size 100M; @@ -17,7 +17,7 @@ http { proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Internal-Api-Key "pydocai-internal-key"; - set $django_core "django-core:8000"; + set $django_core "core:8000"; set $fastapi_parser "fastapi-parser:8002"; set $fastapi_ai "fastapi-ai:8003"; @@ -33,9 +33,22 @@ http { location /api/parser/ { proxy_pass http://$django_core; } location /api/comments/ { proxy_pass http://$django_core; } location /api/notifications/ { proxy_pass http://$django_core; } - location /api/ai/ { proxy_pass http://$fastapi_ai; } - location /admin/ { proxy_pass http://$django_core; } location /api/universal/ { proxy_pass http://$django_core; } location /api/internal/ { proxy_pass http://$django_core; } + location /admin/ { proxy_pass http://$django_core; } + + location /api/ai/ { proxy_pass http://$fastapi_ai; } + + location /api/schema/ { proxy_pass http://$django_core; } + location /api/docs/ { proxy_pass http://$django_core; } + location /api/redoc/ { proxy_pass http://$django_core; } + + location /parser/docs/ { proxy_pass http://$fastapi_parser/docs/; } + location /parser/redoc/ { proxy_pass http://$fastapi_parser/redoc/; } + location /parser/openapi.json { proxy_pass http://$fastapi_parser/openapi.json; } + + location /ai/docs/ { proxy_pass http://$fastapi_ai/docs/; } + location /ai/redoc/ { proxy_pass http://$fastapi_ai/redoc/; } + location /ai/openapi.json { proxy_pass http://$fastapi_ai/openapi.json; } } } diff --git a/docker-compose.v2.yml b/docker-compose.v2.yml index 2fbc884..7e0f28c 100644 --- a/docker-compose.v2.yml +++ b/docker-compose.v2.yml @@ -38,7 +38,7 @@ services: fastapi-parser: build: - context: ./backend/services/parser + context: ./services/parser dockerfile: Dockerfile restart: always env_file: @@ -56,7 +56,7 @@ services: fastapi-ai: build: - context: ./backend/services/ai + context: ./services/ai dockerfile: Dockerfile restart: always env_file: diff --git a/docker-compose.yml b/docker-compose.yml index 7828c41..e6e204e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,10 @@ +name: pydocai services: db: image: postgres:16-alpine - restart: always + restart: unless-stopped + container_name: pydocai-db volumes: - postgres_data:/var/lib/postgresql/data/ environment: @@ -13,104 +15,154 @@ services: - "5433:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U pydocai_user"] - interval: 5s + interval: 10s timeout: 5s retries: 5 + start_period: 10s + networks: + - pydocai-net + logging: &default-logging + driver: json-file + options: + max-size: "10m" + max-file: "3" redis: image: redis:7-alpine - restart: always + restart: unless-stopped + container_name: pydocai-redis ports: - "6379:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] - interval: 5s + interval: 10s timeout: 3s retries: 5 + networks: + - pydocai-net + logging: *default-logging - backend: - build: - context: ./backend - dockerfile: Dockerfile - restart: always - command: ["bash", "entrypoint.sh"] - volumes: - - ./backend:/app - - static_volume:/app/staticfiles - ports: - - "8000:8000" - env_file: - - ./backend/.env - environment: - DJANGO_SETTINGS_MODULE: config.settings.production - UV_LINK_MODE: copy - UV_PROJECT_ENVIRONMENT: /opt/venv - depends_on: - db: - condition: service_healthy - redis: - condition: service_healthy + core: + build: + context: ./services/core + dockerfile: docker/Dockerfile + restart: unless-stopped + container_name: pydocai-core + command: ["/bin/sh", "docker/entrypoint.sh"] + volumes: + - static_volume:/app/staticfiles + ports: + - "8000:8000" + env_file: + - ./services/core/env/.env + environment: + DJANGO_SETTINGS_MODULE: config.settings.development + depends_on: + redis: + condition: service_healthy + networks: + - pydocai-net + logging: *default-logging + security_opt: + - no-new-privileges:true + stop_grace_period: 30s + healthcheck: + test: ["CMD", "python", "-c", "import http.client; c = http.client.HTTPConnection('localhost', 8000, timeout=5); c.request('GET', '/api/health/'); r = c.getresponse(); assert r.status == 200"] + interval: 30s + timeout: 5s + start_period: 10s + retries: 3 + deploy: + resources: + limits: + memory: 512M + reservations: + memory: 256M celery: build: - context: ./backend - dockerfile: Dockerfile - restart: always + context: ./services/core + dockerfile: docker/Dockerfile + restart: unless-stopped + container_name: pydocai-celery command: uv run celery -A config.celery worker --loglevel=info --concurrency=4 --max-tasks-per-child=10 --max-memory-per-child=500000 - volumes: - - ./backend:/app env_file: - - ./backend/.env + - ./services/core/env/.env environment: - DJANGO_SETTINGS_MODULE: config.settings.production - UV_PROJECT_ENVIRONMENT: /opt/venv + DJANGO_SETTINGS_MODULE: config.settings.development depends_on: - db: - condition: service_healthy redis: condition: service_healthy + networks: + - pydocai-net + logging: *default-logging + security_opt: + - no-new-privileges:true + stop_grace_period: 60s + deploy: + resources: + limits: + memory: 1G + reservations: + memory: 512M celery-beat: build: - context: ./backend - dockerfile: Dockerfile - restart: always + context: ./services/core + dockerfile: docker/Dockerfile + restart: unless-stopped + container_name: pydocai-celery-beat command: uv run celery -A config.celery beat --loglevel=info - volumes: - - ./backend:/app env_file: - - ./backend/.env + - ./services/core/env/.env environment: - DJANGO_SETTINGS_MODULE: config.settings.production - UV_PROJECT_ENVIRONMENT: /opt/venv + DJANGO_SETTINGS_MODULE: config.settings.development depends_on: - db: - condition: service_healthy redis: condition: service_healthy + networks: + - pydocai-net + logging: *default-logging + security_opt: + - no-new-privileges:true + deploy: + resources: + limits: + memory: 256M + reservations: + memory: 128M pgbouncer: image: edoburu/pgbouncer:latest - restart: always + restart: unless-stopped + container_name: pydocai-pgbouncer environment: - - DATABASE_URL=postgres://pydocai_user:pydocai_pass@db:5432/pydocai - - POOL_MODE=transaction - - MAX_DB_CONNECTIONS=20 + DATABASE_URL: postgres://pydocai_user:pydocai_pass@db:5432/pydocai + POOL_MODE: transaction + MAX_DB_CONNECTIONS: 20 ports: - "6432:5432" depends_on: db: condition: service_healthy - redis: - condition: service_healthy + networks: + - pydocai-net + logging: *default-logging + deploy: + resources: + limits: + memory: 128M + reservations: + memory: 64M fastapi-parser: build: - context: ./backend/services/parser - dockerfile: Dockerfile - restart: always + context: ./services/parser + dockerfile: docker/Dockerfile + restart: unless-stopped + container_name: pydocai-parser env_file: - - ./backend/.env + - ./services/core/env/.env environment: DATABASE_URL: postgresql://pydocai_user:pydocai_pass@db:5432/pydocai INTERNAL_API_KEY: pydocai-internal-key @@ -119,14 +171,26 @@ services: condition: service_healthy ports: - "8002:8002" + networks: + - pydocai-net + logging: *default-logging + security_opt: + - no-new-privileges:true + deploy: + resources: + limits: + memory: 512M + reservations: + memory: 256M fastapi-ai: build: - context: ./backend/services/ai - dockerfile: Dockerfile - restart: always + context: ./services/ai + dockerfile: docker/Dockerfile + restart: unless-stopped + container_name: pydocai-ai env_file: - - ./backend/.env + - ./services/core/env/.env environment: DATABASE_URL: postgresql://pydocai_user:pydocai_pass@db:5432/pydocai INTERNAL_API_KEY: pydocai-internal-key @@ -138,8 +202,49 @@ services: condition: service_healthy ports: - "8003:8003" + networks: + - pydocai-net + logging: *default-logging + security_opt: + - no-new-privileges:true + deploy: + resources: + limits: + memory: 2G + reservations: + memory: 1G + + nginx: + image: nginx:alpine + restart: unless-stopped + container_name: pydocai-nginx + ports: + - "8080:80" + volumes: + - ./deploy/nginx.conf:/etc/nginx/nginx.conf:ro + depends_on: + - core + - fastapi-parser + - fastapi-ai + networks: + - pydocai-net + logging: *default-logging + deploy: + resources: + limits: + memory: 128M + reservations: + memory: 64M volumes: postgres_data: + name: pydocai_postgres_data static_volume: - model_cache: \ No newline at end of file + name: pydocai_static_volume + model_cache: + name: pydocai_model_cache + +networks: + pydocai-net: + name: pydocai-net + driver: bridge diff --git a/frondend/index.html b/frondend/index.html index cb98522..5b0c039 100644 --- a/frondend/index.html +++ b/frondend/index.html @@ -3,6 +3,19 @@ + + + + + + + + + + + + + diff --git a/frondend/public/favicon-128x128.png b/frondend/public/favicon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..3268c6ec0c04972f5e892a6827cd3f4e426ba1cc GIT binary patch literal 21303 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

#ACFIiOE!9@$d{A1z2$f0|&m3GefI0yK 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 SV5t270000 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 literal 0 HcmV?d00001 diff --git a/frondend/public/favicon-16x16.png b/frondend/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..05a67918d6da56885696302d452d28107c5b40c1 GIT binary patch literal 826 zcmV-A1I7G_P) zPiS356vlruckaFKPm&ixtHHKf@Yx4h6fM<)tt3SeUARyvY74p(Y?Y!2g1FIzf>;oA zC4yE|l!6GMh<`{$uxQ&THZ9hL?ZQwK-^)w#{@!=r+&MD$b>S>#7|uB}-*>+6sL#&! z-RX-?r52K*Ab{V>1u$CS1e^l}*bKHzAg??Uv17_8A2UDynr z%j=`UQm7CG)CUYJtT)qy!{q2Z!#nJ!%>ZtYTrQ zO=J}F=ht}c>nR@E_BMpmyz$*u=Fiphn9oV9|5KxMgw{&Y9SC>bs(9kQt%z9WFHLe} z<`fTCKW5+bH$1=lE#{ZT5y|qLJ-2CkDQG~u9D*k4_i43SIiF%^8T1sd3`mt1LEWIkb0}#}@u@ zEd5iU5K3+`?Gxzz3+Pzb;3u_ZD%Y>nXVq^*#1iH%+w0UPc~_#F+o&fB)%u_eQ?9R%8Ze! z3g7<(KJmkM`%MZn%rdN)oJ+2UhH|-_-~Mb?P$()T|5u0;M<#kSnGRBG zF|&7AS=;Cm>QPhvzs3rq)6Yw;niqa#Tw)^}+*OqS0R3rY7C3E}(EtDd07*qoM6N<$ Ef=`E(%>V!Z literal 0 HcmV?d00001 diff --git a/frondend/public/favicon-180x180.png b/frondend/public/favicon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..fe897f7e3216dbfc33f3a5536fb630ce356d0a89 GIT binary patch literal 38729 zcmV(~K+nI4P)9 z=OH0LfB-QJ*v1P68!*@yFR~;{mMvMb_N`m3R;%~d{nl@-s`;IB?z#8e`o5N>*5)bu zso(p)s$2J-d+ynnq%6x4r@82xB=LWCpE%whe&g}Y)``soYnw$n$kW0g2SJ1!1(FjRWB1;p#J3)zNqmCp^`1^wIOVA(Y$n%27lTm>z%P>{X zkfvcy^m%VML`k;-phpIIfm&8WMmO?3bXV%e8==O}CMXm5c@A@VH?1MdN)-7JWs)K( zOC%+b(|1{&9^?D6gyx?hFGeWx5y~Xv`{-RsmY|;2QP6w&K3YS9;c&n+p+V>~f=Q!Z zLz1K@3K^HiFN+)neZbE`=8z;vYjuqB0!2x4cd*V0olQ|xcCAyv zlNa?$PKVHDl7j=s2fZ&pGDz-wVlcHa6s#g-ND0tM4GAF`FP#8DyHa}Oblc3|rMgM< zoV?vbj{Yalq$nKF2@w;&S@f%I27FtJECn)tf61Sv zCHQ`NlR|;sK}bOVBLt_9X)6iI3cW{x#|u~R(YooM!XGgGNXB(fxfcm&N}dC+o)Fa` zr69Acm*-w27!?IZ`Z%pC71*Q>HVzaZBrXeqc}ei1@p(`>EQH)dbaaztyfiIPr^B7f z!IE9l>B{f9+gn*15v?417Q6i)xNdqhH{F~j*tpkx>mjrv^G0vf`_vt4#WxP3nWLFy zwHhPZupr>je~607#wiSBw1C7)m4tQ+eX`%kM$3i@O$H;608%$OVJeiS^gI2~Hp+{6 zgP4j6@C7*p>3A*`AgAt2PvuKN26;1$OYfFB2|CMvbrrlW#xnie9U2Q%g`@uEzhtth zfOjK0cn~5I0@G&>{wcvE5%f!VZDtm9LlIskYe?kK>mlWXBiw-DNfej4fIO$$Mq_16 zDCCs$dzp&Meh~*A@q;uUnreZWR)XnPf*tMk{(D|MJDi)Ye@js6F@$y-lpkIhZhYW| zmG-f2yWVQl&>fao?Uv{c3Jh|hSnl-l18z%|;EunBDVG4zA%tbX?oVdBIuDPH4y;O{ z9VOC3K=(004sY_*Hhf}M=KpmR#XalJm7jwiOh3mUEI6bN9ERp5RNjrvl+wXPC*zn( zgxq?d{3rUQ!wmjM5kClZVXY3ynW`$;r*&n*DWbcHQdF?b9fELFWG#L!?f@{yWgyF5 zk@#`$mK1w-HqjsD*fHJhz2~~lXm+~sq9b*L&~7`5eTO&K|MBHmeIoA3j zqk`l`OB#5T1c~FbN}1(11r;G;Amxe+5mon_?Et5=iz$r4Ua4JtY{EwhP5*RsPv8uS zEarKAwd2E%2zx53P>QKrr_r;t-bFM=Y_z_h4zv zX=ZGn8h^WfuX7PZ71-r@j@?@moV%^Y;?1ZmvAwm~|G`&vMsuAPSNu?M&?C+2#<2f^ z8&{{+@|pTtzrPEh?{?84g-zAYq!=zWJsb*l0kEZlPVb8r;Gyr?sg4`|_R69?Qf}V- zH{p)1#jt75eS+NM6-q%eRVD3#7e#T>#S&YEjVLk+*AsYB8M@Wq~XM4)vy+AO7-s zZEbU~=A@Dr?DDYc4)fuIPZq6}UeLU&BA%?uQCzq4qTvhjL~^l_2gdCvl`BFZl~#mO zD!Y}>gpyADa2PIYh4Wg8P5R+iTU-1}@BAW$z&g-=}C-PM=fd6uf@ggLTtAvA; zU>PsV561X!(9W54Qwb-qDfe7fEEUc zhgHCjQB6-U%z0Az+pt0NEPv))>sB&~n7x%_J%tI1WH^9ceu?HC<3>18CE0#;KIRb% z8%82GKW5$5(`aGB>$XR;0<+W7V!1>Y2uL3@uF0c%eZlQpQbiM0oY?^s6B6AAmCR|; z%|?ocPqtfs`L)e_l;^z{LZ^Dz%99xuBacbYhO6 zR+V_HU|!RWRy(h~B8pdeXBfA70LQO!QQEys54nB5D&q3eo%b)X7Ldx3XS|9zq?Mb! zqUObW+B@>xIx0CPiI4vtBx&92iWuXpO;!(=tq+irwRj;Y{L9=sN3E9P{$usdpWm`t z4u+$_^NrLVp*Q;_a+29}0h6eu-?-Ba_f#~a!WPv;XIQ-@Y+jPELr#*#-9t)5)j}|l zn+KUAMl}0pWJjAU5{x-nn980;XYkb72-6Yib`}s18a4lg!=ZEZh+`J$Lk-HwqDaMn zSXqzR0|N+8zx_I`$WbLkYN<9KI>m#WOEkfHEyV*Tn(e>*%KC7W=bO(bQj=&yQE17r zQ=1vt5?RBkQilnbrDh)Jp1MzPoOobVO!k0n@h`BNPv?@is^ySh%@<}BFi#n zsS;V1u-8)AEPqDPe_8mR*{|CfewX`<4OQ-09wQ}NJKaI?5AGmF>lQdDOjKR0(pz!; zPddPc04n)2;*mWR-ma_fRlts2ifFW+$%Lo$O12d~45jt&vL+qncFMTj2o)L4?@P2! z>pXHqLa7u5OB52Cdf(C3)L-0svK-}k_xV8Tns|9?#n#2yB0pTzPd1DRdALl{4^j+M~X>^ z9x|1A!=Ve8Junqs>LUjwHapzygOiMPFOV=jNJ6lPp;K6?!aTep(jvSJNGoeJYPk1U zyOn))W&QhJG1pDAto>XDG)cTWn;1(mDOMJKS~eb;c}yUZL2ey`ws%;RXeMj;N3Tk8 z@vc_njtzk?4%sSEYlf(WcTW-vor7Ysh*DWm1aFDtd+1OPpZNL!{j$S>q~5fq2ShjC z6F4hE*&%aBA)fK_EdeU8zbo*8Z8U%jn?*IhD?Z`JFXJsm7|PT)5`yNOn7+R5CqL6e#g}WI)lW1!(B0{{uv#s=ZN+iiv6-^e z;W)fszbcw0bfN_6^$g!Q-fCyJudKi8Rg1#}>9plIXL|YMi&0Kd^Omh!MJJpeZ`U*? zD*oIO^+y)2(`(#E)q5>a|Nn6X z*LB4MY5zS9#b&C-lul%5566nPF*3(_Jg6e6y0XQB60!j!3E2FbdI?!Xy-DE&N>St2 zjKRR0GbLEi-smZ@Peluq*urVDTw+ySxq&G4&HHN2zx(=17brIT9-P7DQlm@GLSWOD z_X5TGahOj9&2=HcW#vAPpOegLe9K>qTrLsR?t0*&{~UsH9cAvxZ2s(PA_lay)+z5=kF=C=Ty}z z1}a7DF{N%a@Ri5w^Z#(yngs5iq4?p?UL>oH0c-LVO}C;Gsy410z&VKc|HmabNiuL8 zQ*Eh`6%1l(BA!+~yic`eHA@Pp#^vE)At4*NCKKD7LMPT3N{@&vhG=&A%O*?ERrnZZ zb#}`B)90cPhr3nmk-zhilebL>yT8+M`qQu7*z6g$saQYi4cxph>3sffiuo+WO^!2^ zp+kVpB)~*qmJ`n&MI(n*qqW-Gn z%%Q75fvn!Zm-qHt^>l6h^_R~P*lW+kPHm(kyYWvY^J+}3{v`|4NeK(KRHH;KEwQ{& z$6wyM%%5_Bm*@wTAN|aJH|f5o^OHQSA3|oD+b6$r9Bcgsf96-L87VH=Hvo6Sq4%IM zt{rPV^5Uao?XLDlb;qn==i@cJFkz3Db8az}EzKN)H0?s635ICsK2%Ba*IcO@a#N@b}B}!nDK8 zf-Yre64U!J)ZitglEI^MQ5&(4`5<~Eb~cLi&NkzoQ>8J2q}S|Bwv9pda2uI2Q}p`< z);41&Rn zC_RzhZ1gE9=#qPv{KP}6`iT24#a-L=`Jy#RctBM|fmjd;_%RZHc)#QsML@pjRxR=r z-cVU94OPSOlbhJS)SmF0;H2u4wMp#U-X=%uC+4s( zq|`P6?*l4NRjEM5@!62sPlpIs>bH zPr8BxYVOzH$6_6VlEi;|UBJkDdXU_b3YJ-woohb4Y~(0U(d+k6OGeIBPDR8>A$F)r znLv&b5TfU41MOB*tN~GEQd~<+kzWFdgeoiOG0{a{n8R%0>VfVEO{lUYh$c1lV!5{h zedl+m)#_MYIf?bn0op_airnnKlv#-MTn)X6<`SUiHr>NkQnpB$X=k7K`sQp>uJ&Gf z-fY8_7Ch~x0(aS}*9Z#PH$~EE~?UDu*zIrshSi$k(rr1p+1BQ(m<-l}p6+iHr8eX!MM5+R{ z8WpCDtpMba%sHYb#eri(eDaP}tQRv*>8x(FVae`&qO*ze<`uU}{#zMQ)bLvfd@>w1 zItt^M;vuXi2d8*alp+Ol?LT-Nmt1fbiX!I&E2F4qGT5rkY%3Z1-r?@o+6^8?sT3CslAnht9nLY3!<8>Mp<2MHCr(H%N+C|A!-7tje9UiZ4a%9 z0g%V5RL7im6D1bPC&*`7_{1vTak8u)JSn~?$Sa4^i_a0l>FWdQ9QHTx6K`tZO;;}B zXqbO`dxJoGsFFATqHymtwcbYI#XCJ>~ zqf->CgDYM#+d7^2;h{zHb4>lh!8#qWo_I*qwQY;JcwhvYV3}HwSl#A~>kr-}6h}F@ zuQVATuz_&}l}))W$i`4=E6<*;!jO4U6vU2#{Q1Cem}9oSj+dX;W_x?iwg22tIpL?E z>>#NR_=-K#m~U=kn2RhOAQQ(V%U-xpS+m_%sfFcCetp3!D8>+l(O8~IOxHc(kGX|^ z6CrEbK$+F?@V+Bh?+%bd^;OAO1-u{5Vq~ z-8(bgz(O17_xonk{Y>2_E~Z00Z;Gr^$GAd05X3dJNsVv;M#KBp7j^*-GUhq+_9j7FrKvJj5;e{!vo#=O-cjKj zyB=4XIGA5!J)~N9MZZt$O`z65t(IXhOmO!DkK@4MlkBdi&zQ$>0rs#T;lMgw%~q@O zI)ju=3*oInM@mtkpUkG8xP3ES?{ak}|2*$Pndj-+Mqh$s%@y|3WB@x0NI3PeMDG)O zj6BYF#F9i18I0o1C)Tsiz(W;%!Ul{k5>q!mB1qU!4nRWF<}xI*l9d?{(ky@&-}kW@P1{`-NSGWXA}odZHb0e8Q)j znMMAIq5%S;Nu-ve#D*`1L*M{Re-xDKXV|BI#%S)EU*}p$$YX9J>7JC#Whpi``&evk z;_WZb@UH8&V0OCc$9%&TOE|fC9KZSZYnYpv0g_xOgg;Iy`)D!)yRV+zx)7U$Xp>MZ?ZB8kmbdNT195ksy}d*TxOQPxJiF~DfJfs*>$ zWGU7*2e|j4Co$D-U~zT|vome9T20hzRF>J;JbboR$Zr&}Fc32_KDjJ+_YmDfJ!8JI zchtG^obKj1TicDYEEDJYuA?*E!RTm?lAz*O8jg}6M}*=Y6ItVR7N&`stb-c0HpsYX zkOiCsxA@v>>h&_n8itvq(M!7uk#V(HiUdH>K`4q8-ClvTSi|)f=J=u4FW}s5(}MKm z@Nkw7vJb!Wm0NJ=u02(8n$6hNV z-grB6m=;NEfm3iVE_4SaR@XOi%{e2y{hAqEd2UA#*_{QaK*;*JVGi(9Z`p~HYX@=T zqbX)OEr|@&!h{MF{!GlAgFMI1g%;|y`nU=BY2Y(Q`PFJTXG;@%S8_h=)ci<55Illx zwn|7gPO-eQiSM|ikDva|b6joaAQ5D~6a{eZ)@l6G_fO-kdspz`n^ti5p*re~Y1bS` zttfso!+yGbGmO+w=IXxd-q+A*&7t2r35=j?CNa^;y{QNn*{QMc*aL-Bn_b;sAg zn#D4*g0nK9M`kZWo6K*cVTx!}L!&v5LB7nf7`&&B2oWM{p`GAit(X!_Ed(J@@?zb8 zD!pGYD=MVE3!6dduoRP8QuwoQdPJ^XYEp75*3(+Gc#wQcz-P)p$*3sA1+0n{=O_@O zyL!Xin#?5yI7b9KBbbthu2;FX8>53kKO}GGB?coBf!Fa*-!Ow$Ttr#sGA>IOPl0cY zIGjCE!_U5BJ9bU4GRu@Osgmujr#5<6U0*}1Siz-B8+h+)8+h|ITix@|44HWY+%w<# z^6mJM*Vl3GLYLnetTSSV&M4V|+Px$$F%pw`B zU{r8qrb#Ra$qZp{<(Ck6D!VGY*ff9evMo{AI_m93Aa$Z^Nzij?w9Z-)o^`r`ca=#2 zA}-9!qKSWlF*G>sN{b0q{3fyMTXWDDh*hWdQvi+$t7^$cg>|lLs!%i-l4-EOe1|B5 zCJBg{hyu;Mp67lKqOz-9;l&RL4v$=^4&>BalfGH+4sqGG66b803W)qP*TM);l-N4g z!oT_6Mf}2tmT_XGgGM^Q*$V}(x;VvEFKOYTUGvznKyq`~*fVLAqnoj7>kR(I+h*{- zPwdCt2NJYqr-a4QK~GC``vs=3j9>V^t=P6e9!cq^`1ID4IHe!B;@l2)%^kr*$J^+% z>6o~NPo8qh<%6F*+)ZkON`Ab6uvv<5NmfI>wSZCg6v}*POtqqqXpD|L9-KG6gtL!7 z*Q!~r4zb_c(*t2s6Kl9xK+;HC--gMO>E*9kyS*;WXnH@foRCSVix17eS@4)UY31M)<7QL1m)ETyt zut-v%7><}K+o86np`fFz{h5X+EKQcXB1cN4wZ&0 zNc>0$UG@Aj)jUid#PaB;5~gjH68%Iq;P9`SxHzPe;}~3ku@RcA z+)J&PQ|{qiOQheo#7fY2q!^_9H1U-m}U*!a_{kHwCQ83bNlDzdIcm`|HN~0 zX-MpEf8s$LI8{fpt}iF}l-#3xw$aCV+eBur#+*FuwLq?~J|JE^Dt+b)t}90kgindB zm!Ng7-d?S`kGK29$-bd5WexTA9FiKvz)KfkCI-&b#r>4LOz3&O{7Xbdi${9-MkQ~F zixJTytW(9)G9wk*nL>he8f>mMSJ-cc{uq7IMkU!4oKP)D-P?hR``luZ7nM327pXru zPQ(ZuWD8LyJ%q*7Ll%K%vw_>5MrXQ)!aaA# zL&xyg@tk2p5Th{#=57~!uA^iBw#J5&ofU<()nAC*tr9&)MAS0D;>R42)m_$)&Q9l` zIFO+vbEM;j^f_5*h$7SBS5cnKj%-1R!e>qHPP1N1w7qdanjq6zIMcYk8i0xwi`1nBZZ=4QVE07V72cs^VyZki45)*i0nAsWfK1T9yuk z!(sxOoPCns-I{9StB*eDFd7wTX9HZYv&GMyiT+tSxqEH1kJ}zvMWfwD!Ts9B*6Tf2P8p9P9z4~u#KnDP z>SKG4@0iG;yQ!877en2eMUpi_`#WDBTT-JX9Zj-TNbC}ETOBFRj_s&7*Qq9@%UvEu z>w|(sSc9=9hQL$bC|yE9W}p`kIIMk=lO|5yjP0q0KX_NSdyfcr;XZFlafKcfds#o4qUF;Q26C63Qj^F%?hcPv~gj%DH!KjY!-1B$X-ns#IKRJU& zEl0OEz}60M7G)2dA)6`On!ono5gcAAIY5X);RPUQdqMu(P{ag7-!W29^yJQc3ZzBoLyNTl5oygb2%j}u0W0^pvC6hOBGisW(~qJ&Dj@2%45%{Mmh-g%JH z8q0{y<}5z<^`i{jGqn&rrmNVEr{UCni+E3t-BlB48Q@q6p zyFc_E%Rr60!P;B!jd_df1C7Dr?5 z%y0L5tz0(Pm}{svXPIJ`l>R4^<>Np`IOehBWAK(Vx$dxtB5O!41(>9<)?mUTT* z(G{h(S#zF~W(+O{{UB8P36H2Kq2n0^&>3QM6alEwuAS#nGqt69k)z5+(-unLWVkd1 zRc0MhBw8|*njL)uA6D9}RHH z*-m~wL++CB!v$J(DziZEuk%5dUNmYBb77#`z}r!&&@Vky3=x(u))D#L@>=&sCCA>B z=f021E;~xyn&ExYEGaMbI`80^bxEgWd@}83jgv81k<`0JL(14SEynx+)+%A9?T>OY z-T~F5Gl~AD%OI^(62XXhQEUbWtthg4%ZEctewKPjljfiBNoFUCH#2FHXo&Yvah$Rx z);GKOo|iT8?|$T!NVA|gyqKcKzQb$yub+4X?GD8|G%y$?c+2^Ji|^R;X{>E*#Y4xp zp+&CLykK|xIWE-ojG0R!mV;mXC$GS}UNwXDZkLrPX6qCWlS?~4j;-O)5%u1hl8Q`` zwefMNo$b_C*&ns&`Tf=uFV$-t;R$9D=~hLQx;4WbRoYT(=?FJ}XNl3Z_#8*o!MF@v z=-4E#?_BCb19ScqMGC+egj7p+=gBCNR?PL%uErAN6dp;`(>=$BROMusSgEgZl(;`C z(d&^Ji)5`j+RY4Y@;lmqX|?5;)+WqF#Z&_=A^V zY4$OE^3GLE&&*?#Q^7^?+p;p|3?CBvL3xV6Mn6Yd_Sw-j-L9kNLQnaJ35Y87LC8>K zBQz7PKnkZJeD1%LaU*hbhDK`!{r(!YW0TJ{0Lr`8gA3j#nIs82+`8R$X&FTn-@nB3 z23Lt#X}__2c%>^Ah~s;l&}>C*M&>fd;*7*YOJ#bS3ql?vYnv2Nf>Qh2=_X!tNga(^ zibtLtVE>5`Hivc5mdT##ln?TLvTc_topv|y_LnyC1Fzj~a@FvniyD9N#fNay{cBj* zx)ViNN0uMMkG|}K*w(raCED1#yc?^-d32gUe=x)aXV+^hYwLLZo*{nVwL4yLWcIFM z_jjW4&RL3s$5!!sfBh&rbBmnn-yN3tz6(Bu*PZhZ81+V|O|@~~(F;(d4J1@pWi-H* z=T4t-oOSh5Vnq1xj#uqOKR=Am-nWjK&NLH_et(3#7+_0hfS2t~apgG;oVRTja~&c; z^6o2kZQ^(TVHKlthAC@CJsw^52_Z6ZM}C)g+LqWpSHs%okR3)^l30jsC}~Dl>8&5r z7!G!aGsNcXy5NQ8UtSeB>Uijyjm1YoTAXao)_G_@^)X z7?R;CKiln3;h`ftIXSmr`FV)T&Y5+Pd~UA9{fGAD-LKh>m5nEH%cDaq&1Sf07jV_N z4P3r^5sQq(W{vJpk@@i2^Vad{d%EaMksX;dZb>JWf=M9(g7Asr-qW;(S}nnF;5-N3 zW^JSI+{75EGSnMW7!5W!=!hw`lk0s|e@{&%7G!y4qfQZbMA#gKPMCGj1SlRkWURPF z+2~^*yBcDqqj$I`q@F^+{N6Cfsm%h59Wogb3l_vKGYZvAm}=+b@+@-nh9%}|U0i>K zhzvxXqGV3DIrGyEy!sOQnZ?QV0Umt(6s|mfiPMxOWpX@MmnuPu#Cjb+wSoOd)^YIY z8jdV);KXX5%O#xJEOGl|Ip)Z!QEQe8egLCBrTgc2^5k|LIJq6QCKawp zFxM*ak{!aCo^7kMNk~mQ_fNik8?M}a3KyI`Hvx%5ex?@qw4nyA;y z$(1$ytGBe68dn3^Z6KgU?uAYRuexkobl-D*X~lZBXD8tDS9d*p6komnFz$P74f~I7 z;KbU%ZD5A9Rzq5=quH9qOlKBpt%1Q1_?|tV!S&~T4n@xmoB?~6&%(-ZE2i7PMsJ9h z?rdUlrtQ6o&*hc4f18auUU|vZ(;#s&p3PH~n44nTdCcc}uaw4bIjz)=>XDb&b1mFM`vjj47Xiyy8%p5m9{A6sgQ9Mc`LXG^%P z$ykYvx1De9yod)YK=DM@pPt}xaomY_?h4N z3f}$tbMV@i?vki8$0438?vp%2aYp3hk_*TDk=;A^mc4$=7nyXB%X-r68{5>gL`eJ--2 zRu4^_ZIKM?VgR+^c`?<_h&a$Lc|+O+J4c+6;5|1sBF{4*Z{Jkcv5VS+ane9$dz4 z@B1=-=#9Ja)9<_rQ?2?lN|Jr9FGbq-zF`|~dH68;1A+xvG(yxH@39jfc*p%zE4rCF z>Wm*Ga%_09lv;)~F&dFc&-G8|ETs&MdXR@h83UG4Toj=e`>x2;@q%2%Bp=b`3S8T} zssY%M%qu6FORpv+HaEI>^OY@}zl-{T$N7yf1~Nam|2Tg9|NJ}rw@>Xy+Fru^;u5k( z8>mmC)|f%9(cx-AX@mZrMpmCfmbH-9nvCpRIf$$_BwrU#;>TY0r&w$~DuunM%oqcK z*51PXNA>_|3pF|z6jVirBWrM+M^bNNVQ~q~nXP#L-yg(}|JvWL+GSggNj4N>p z;yGKU@#ZUw(kXD%?lCghU+cwYDQ1E`2W}_dON1 zk;`+g&2FFcayKrOX_`czgP)yWs@_Nq6!!tzD&$L9fl%pITaY<1CAjq2GxeHFW@M9I zoP7!@QMW#dAOE$__DFEe@{9h+^03QusvU zx~ZREua9@^`8Zy)>vPEaAq5Y?x! zv}G$EIFjO@|Hm8fshc0+xxQFPO&1~cYcHKf9evK?FUyfB*Bd+MxLk!NkXoNyPP{TE<|Qu5b2JxoI+hRIumYInE-rt=zr%;8);( z(|{C5*X@GM-J}`sJ-mS{&!-pzSBv8XyfiEN!=Jea@B8ROXiROze0z$MI~i#k4WvYY zNhDzLLPZODn(O?8Vip{qFhaKvT->=C@4e#BfYGK?9yN=aV;pg4^(;KGx)b#}$=wt* z1h&VgAdev>1lQOaQlxd{gBs@MGYood{BM7B7f!8q@sHp7(&t=Rd^#6#QL^_RIM$8p z)T#cZrVF3OWs|uaH`o3(p65GB*hn6sp^~de>Yl6Bn<(=^RXT}dIk+Od?MhWaI{hfr z@D-)dp1W%BM_lt*4fHM;--RHOm#5ii;1B=)Fy>l0u7CON7j%=9GXKe6--+M&4u6sY`n-8NHx=d@%rg34g zDe<T{t<|fvGl)BL~HYXz~HjD*Y0-T#RaHr8U$W4g5bJ-;1?=j-P(#)v|`<`3Dwz z4Y~ewid*h^62JfH!)P|Qx>_7kHdm>Zs(>Oj+iFQJozC0RwCh9M(INb!MZ!Y|S}qM% zYoer%w&kQAD?Y9`8Y%ql{tjBK3iBbO#DC|5q*cUlDz96d#Nul4cr9#QqK9ex;vYYZ z4}9j{U>7f67-asy-`<7a_~d@fE^b4;(L$}&K}J7y5;w>`Ow_sN6+X5xlZAtVW-NE& zLgXa|y)NEy;m2|9Szkmkq=Or@T<;)GYPk2v*%)9tRM017k}M_;sR>Ck5@~8}WQ{3~ zbx51je9&mFzw_7o@&3QQ>je=%O1G`_u8)2G0sQRm-;0gB?Ro>cqQ7jabcwI}oX=a- zPwd~Obp@k{W+jF))ImJ8++O~r_->1<&h?$4*=#zbcAmlsria-4HLCh|l%X6f?V@ojYY3h<~U3jmQSawRCFNYj^41&7mL<`e$PUEooDJ>DE zT_ae!OS$QN?E0n@^G1tR)@(Q4<5pQ{Idr!y|4qddV?u)LJAro zHi;eDgT$@M%X@lIy$(VD%lX8&^Zoc|SN#d*>W{G8o5^lFz&N<1z~S|sIB@D5)Eh)) zNFm~)6RugLI2JgB-sSoUk|#)Vx;NuEaJo8++wmViau0Uz?BLo<&U)@)_Ly^<@-YHs+KhcxqiiG=|G}S~)?3mB6Wrk|a zX#qw77G*dOM+u5ifngsQ3{vb|sNt@?C-EQNe}j-T4Z zFaN>UkT(|4X%Z5XS+4C(Z&G+$<8H$NHD%|0eLjjQptW~5Ht^nyK7wm@NUVlLJ8B~z zeLqoIir+XF%Y&V0k+Y3Om=FVOS+=lcqTG^1s-mj6hYQq`6obYV{JZzxj{o*d+F9XfG6^2W?{UVI5jw9d5WE7V1~@8jk^vZ@df z+A@H6kWH80h<|k1hfogIeRCg4 zX|ggT+58)L;P|;1r3=yq&bi8iQeW#Okx&EL#)f(|4T2($W?n zYXS8sXIG{T%A#;czh*-r^iaz$BkuD(UF^k=U;RgzsXgX2@;EV9p~QSJpTdL3E@1B$ z%jqTq!yB^HzRx7ti8p+hNCY8@NIy+(tyZRWEG#VIQ@1VShOh7U6;#jkl9tuL(d9M# z^6%e>$5%4U%+D~4h%%FiT2~8@<1R$-sO>X##AJ7Z(~l(4B!rII+R_Ra`CN&Fv?-BG z%){PyXKN?;U;V&hho-wnly(!fMT<=*QgL5p8H?rG{Kv*?*g;%fwIQ&)QHaQ)xo9RS zlBi);&yXb1B1m3 zs`(~y7{VfhAf+kzlBVFIz@WQUBF`}&qh`w zIh_KU)G?(NS5>6qO0I(FsyLGAipHjcHN{UgXO{50pL`hCUABwEL(f$7P~@7KZenhB z4takH&E_tri6bbZ@(Lo$GxxSw!F4+lPQU7n;?PY!u%0j)0YlK)DdB-+JB8B1 zL0dbJE<}xIcw;0uiR(kJZz4fCC8cJK9DA3~!IAZ? zsL#yz_WWmh zu^3U5To3!oJzMeNn^%Em3#)kpwSJ8)Ei^MOVa)ZpHCj#!%}AU(^||4G-IWr`7EAPf zg0JE&jEQ0%QD&>n%iB;s^I(C#JT8o;~U2 zl(?F0K`xgdCudXiwlF&JH55ey#jrrXNbvHDT_E~1-kKPhSJ!*^@E0D(^vn{+OQa-f zaO{N^4HVHLpi%&y&RLigcfn!mG*do`AHVAT=+yR$14Rq0X&{!$#y-ijh6j(Gi*C7u zmMsjIrI9+Do%dptNZc9$rSB2vCIZXw~-7hN*Osy^bl$xoxrn$TR&zu+xWXbo2hDsJkE9OZt%-)OI}k z*En|jvuf6C+a_zNdm(s&XS7qDb|a^(YZfV^0nMvod=2Hg1kP0mxw|9hihdsKiu$`A z7Vp(neV2z31%NZd3o_y5xcICo?!EVHOi@IgsSd^8fAuh0(^9LL&2uEHd!#Z}Qj@{0 zy+*W}30Gk%DORJz)eB$1yDs?{%0Yi}c8!q(#iChad1DLqo;(k&79FNwt`qs(J}Yq{ zA(K2b_R&^v@~kMbX-awrRTr&u@s`hi?FjdsIpZSfj_A%zHF3#V9d3;wqK|gcrCK;-;z8!vtDMatMmaEBJd7W|`j0W4?ng;+7z!v`P}0habYe5$(Ua%k z=*AYVHA2WIGPfJs5e{wO6quYDV?P}~fgbzqy~cdS2Rn@Kt*!1OL3T;K8RS5JnByfoq+#ZnUOJN- z?mCQq*+MOIl#CGC7XWnKxm;;kTdCUHLiz6zYw-QeReb+NAI7CyzKne6+|-)a7|DEQ zb9pyX+<#;THb(QV1&3tC2nTSseL2+zMvgZyv7lILZ6zU=4z*P$1UHu9>Kq-|9W`;o zU58{QXDW8Me<@DAKP=E2x)>7|v%wiT4!O7;n|GEtET~XGzu#taRJ5?Sh7^-(mH!wQ z>A9)4q=7Li>mbbH{ZLO$iGw}QMUCmFYAlS*devuPC^b`Vl_Sn!%~iD)vdvSaP=Dye zycw(kZmwKuNW>2cY|5DPP-15K*Hz7UK_zs2nIoqai#m*jTqh)Mvu5**4)r|p{ zrx3e_^tllM!L?kTP%PaDu91%Bm2RiE81(geo39NXVwLzyvb4mp9H#4&3Ql$srsc&N$cEO)UTdtr zis(vJ(bIbCr@54Xhr<^ZIys+Oet_MgPY zsEH}Ayy>z^h+VRLKc0;oA7MIxWVR!+Wkg}i4qJ^K%0#wMmhBrBsHgo9b0GdME|w;?OWb~4UV&xuv0j0 z!xWz@7S*vbYT({|%Z$*GRqYHes#AT|BK-i@T_jbVD2C<4+7Jg$4DrapP2Bfn7q{)r zFv_O6K%^+T{>Xh(yzvNYWZ3beVRwd>>o!p{R_Kr3Fi+JR7(G)>R`n&e)T=mt-YiuP z0p9w0pjK?+e|}pN*S~aOY)w**)v+9>@H~q>@XtPSaLrjXNNExo-KrSl0MpgTq==$! zbW2>b^f|oi(vPATkOPGdpD3_n(h3i1jG^^S)#Te;Su1{~W?Qi;vxT9ag#- z>RcLG9659eb)%d_${x=+Zu;SatNh)wfg_LY{$p#P5I5L5M?Wp@Cr;NFzOjs7|GNz& z3H==kIgghx&@12w?}$?ANwGo|1(SYfRk(onB+20?|1-CPE{R>rre>Rtz(heLSpw*W6vW)O4uRTd`8UZ#Z?u{$B3M|QF)UU2(;kz`be+G5_L6?T z{>nw1yEsITOqmY8<7YhPfND7jVWNQuT6B)BD1ug0+gvZ_MII$9tLrt|Y`?MAmSVJa z)iN!0_Knv4E6rq-car>8=9sMyuw#~7nKHZr=K07T(i1-zjc{@!N2A^p7VnE_JB6>p zW&G?5a_b7PM%^|1z-1r7C5yMB7=`k&5dv2ip{6#gB{D*Y=`#MIt|IP-e|N&3Z_QDn z*2wYjiEHt}JKv6aqlqFPdd0|d#KhIPpuMD2E$TC~o}*6%?VkZtcqSJkx!X&1jO?5( zG1C}wYO57>0;nrN{-zkZrR1>^IW9nu*htNl^zT&V?L7DweSmf>#RppMg~e*SFaIKC z=|YjnfKuiKcFm>OHJf9)PHl4W{9kTz8=HNsb#tyQ7y5|=&!!hXOs{Ey0@tTUuUp_1 zTRw;Hz3Ag8hO|i`6w>#_lNtp-t@m@RZ@NNy&j&_VE}BxOnPcZ{j-3>%QjSb;|LL9yv^tt*EbqEI z6}P0^#YS&H`9IRx&p+oWmbTimyG0U&ap8L6W=wYO{0oq^)PZEb5G$g##Z&bX-Cm!I zdA~51%zbk(LU%+44VMpSWM`eTEH|`=lhzkQPCS@T9>R}a{l{n}PqI?x#Ru~qpG!dt zXMz!GQs}+5CY#6c2`O#vV;_dg@z%{IK5+Y+aO)G-g3PXD5s^y!VRTs5trm|Y!{#8x z#z1{+F91dZ=nct}Iz*?DaJy&b;Es?4s96NIlCile^|k|-5g3x?W@frk02%wOe2PZff+uYEvQy zuu<<6e&CW1;-bY{k-N<8iIm36v9Zn(3+N(#Xgr3z?{xEaA+|+AHE3}ATP(lWN>7DabH#sQpc~L`e@ItV}aM2zUAsdWxwrY)QLzX)l+;dso`nyGY z%_kHus<_wbD;s?&-A-JRtfx@&wE4x>*$>kRO~8Wu%pg?u;)ExX&8ZvJ(Nko{RaNSR zyLefgo$X|2w(?kOM0B^b8B21mtMSUM|A4n&^5-Z91K$tEiYoGp&9;cN#`EeFE|xye=`nJ$+q4wh#Z1*X+GC!4^BrpEo;y~9k!AB zcZLqGdcPDv(l%_OFr3^h@c8jQPOgn!kP-!YQBp2Dg+zz1(z`T&0H z>OVrOJnWEVJOhQUG1_N7@C7xEr9=L5RLi^D$AQ6hksAy6@3+1U53aldGaboJA-6pv zGnpXW3pKX9bepBhl*rN&)%ZeOx~Iohy4ZJglZ)I3E}}6p{%)DQbOG`Pg^=pz(ALUl z6)l6ru1zW)SP0)$VjX&^xu_+5ASU`+48*Zc{(_?QCG67nwKE}Np0ab_m?V>u1rv+{ z&-JClw`!Er=$bhCLbOF?XP@c!?*w_tO@=m+l*1Rq!r|vm0l#fWQIGOFvZL*jP49l~FHcDz(l_d5Cg_1EGOQ~rnNS^x8WwObe&p&uLA^L4Jv_+lL^kPMnt)RK z408FhBY}UHWKd}kN(sQO)0fJ~CN{>ztDAof8|4Rbl-VMF_e*cX{*5cqYS*|d8P(Qf zQG==;vopi$DrV8a;K6I2nXaQV?Fy5>0K`NXv;P(klpLHFIct)SO1lbT{?Gk3I zW>MvoB{0=&j*^s`A^R>^R2xHTCydpGHUu}0oKg>4%rbrURnU^W{K(O2X@d1lvO~+j zWcARKC`kX@0am9$!A*;u8Xh`f*QLm&)R~aAKoed3&)5G0F4}%KFl>XOOveWFfYDzo zGM;9Y^m~?R#v+PI8r5$kv7taVRl{H3dp$n$=o=-|n#+($QYuB$am!$}B84DwM4Z!! zbrb_aiOF@M>dyl{s~g;VdYyA+lNxq%Oo__DPMmN7MK)+(;i=4DOD%g6ZbC9N@J)Y+ zuryneO+y!p86-DuY?AL?0!}QLS;pi7CnkU?Iw^L7YQpm;AP6fiGq_pHu>bfFe|7U? zc*kqcV;QRoAPp*iE|6TSitgT8!%dHlOs<19=Sa(C%I@eiHgWHvUAX&^pTc0&=YD~d zu`8y$(Bjtz;=73od>A7!C{ipo58)qQdkdQBI{W`@I+E;BRc@9cvqp)1%a`MKzx-Cz zrglncGMD!#?Jk1Mrac{vT?DEO(w@;*gW(WoZ%HFqoarTVG{|e~WSC(;{gubD_vjFf z4mGCN!Z_o|9M8H+2!jwC4s4YM$UY46&{`!#+v$H@VQH%fN)(=}#P29uQ212n2yYsX zDwPvQJr*=^xNcfASa@O9|*RxuiMQE+1)O)HYpvEFu?1Vx&)^-?n1-+bQZ@uRQ44dqa( zjK*)8aIv z1jwJjY_r6Ur6zW7pT;F;Ph-#7TX5d4S)8@CgI2R~=9}OS$K~hFV6J@(`H1T{xHK=v zwlztCV=7WiwQ4A985%XJ_m@fvm)jI;z44KDYQ+$XFS1$>ufO;Z(sT{^gcSa<%XN=R zr>5}HJH7)qKK?q)%ugXn$*R$I)rq9kfk#-Ak7qUoLM(-HQkd{ebA-!Y;u?59OF}`^ zp87EEdvXO2KYk1k9@yYkc88X`*yxcFxQ+%jQkq+I6;uhm1SjHbNmZn)TxuLjdR&#@ z+T*JhqdYIP5>MzPtA+DDq4$MjCTnkz;^&&aOsFE}WYtiNhQbZ0BUF}+FgrVkGH(mJ zFLFGwHp2cBJ$&&SYe>rjXlFxgn*;vqFMKz4E_Kc*9ben=p0jldd$!hb|M3ADjhazG z)J#dVS7M~8h!wSxNNSYP+(ycjSCQ8=kaTuz)h^WTKG$BsH(H;4&h@m_Rvuoegi>@b)h;H-1L^wY zlCEu`=#EJirurdH*=Ob-9*z4Pf3t+tiW(G(*V{fS?gsTUa$peGJ8n_`Ha3S*6?RI# z%*qiO^#aM1*n&}vP>e=+@X#?lux(Wy4 z3Cu5SL5oTmaQh809csfQ_FAT7UTg#G$#kvl+=PW=M}U}s%uc>$uC6`;%?NiecS#Vc zOH8#SD4c7^^8;BOoz9eN;A3KHpP~~LgV)^0Q?YGp)q&t-a*e>F6dmeimyp)pm`2)| z;eWFRHQ?z0wP}=T3k9*;2Gvn(Gccdcr9}O;moH$d)_2u}^0Dk?`CD@GC{}`cc~G%) z>Tgo7w@|B5uM_%v+WkI-jC!uneca5ZiM&j4+15ue(>@_JWqj;M3`~JVf-=vMwA%RK z*S-U{9=sM)Qw^X-?`Uy-YUy_v7NJBU%-Yyd5~cq+Q?042kJnu$Nfc))Z79M~#(d(c zOciMhC0gwHNg5rlr=9V?w3i)}T<@;#>Vbrs*H3%Ds%FSaI))c(-STg>TG}TSbI0bXRsJ24ra4xJ z=i#?+d^-m93o+fI21QgJSJ<`8#SEe%p^DNh^Q&^J2TuBF7lSU|a`miK{de~NXL>2D zH@ban_6uBm?h=}9G9gk6JDQ_ZOd<=6j}Uh{L7q!F3QDYa@+8IXih>wJ!`L*O4(1)% zDlfZ3patb(V1(Fqy;S)uvy2NFSNz__DCaE~t{{vRB{dJwd9HW}=XTXduU0K(WG1C=pnOt(vO0=4FeE+K#(Cd;&KzxI; zDb#6FInai~Xr4qU#AC}*QAMGGoiGCcR+A09@@Yc9(pA{_KoW?)tO=B zAW=gopR;P%;@)1|nY1{e%q3f5Bs2Z{Upt5C7M0U|iY)7=dENftag0h5g=!9=sn|Nz z3<-x_!i*%IgqzM&mHKhyr z!8qV(&1qKP$l8VY?JvCzWox(8TIN<5664HqGQLTXKCP|Ks?~_htdat28+}}|bBMQG zv+Y^+OV?-DHv72szLRLQr=*^VtJ|Hr78D$~mDEtsPw9%{q#Co6;mFF6>q9$%G>}Ng z$_2b`4Yun^wDWyO0<|X{= zKVHVDxdnCZ+~hclicOvd$60{Z_%G`gmN&=~%%=Ns{@ndCeRCKBG+8h~QD4OGeg1o} zzk4la=M|ZasA0-PsIq4?pbDXJb0J%PS)v%O;wRp`mDfm$*|YJb5UjerAx^Ayada?+ z9rVt%q4b_%*Sb_mRj$oay;A_$v6Hh~T3SSV6)o5urBs2IUKlTe9$!xPGHxoV(JkUg zxQmtfJl*K_9dcJwM_sCwi%PRr4ewMi{Xi_q_LEc3R+?d$XXp-7{^^ZU^aly22l3Ak zoF%f^CoLW5=QSK#$#L%d5WoIEz7l6|cLmv>#U@b}7P0(mE?C6(U)R8?mCewOBg+4i z-^Rr-bCELZnC);d!tTza*wKE}*ZhuX3L!ofeQnk8clUoAKK;n`n3C z1moq~y7;N@I@{U5pFN;7^!2PQ9sEE4{H1uy<-q2~rsz7(4Cm`~P(5h+T!R4he@d>s zs6^{=o;`zJaZM$MKw2iVLqPk_>%24Kd&4Ty^x+sTI8Y+7kc%y%%6^TAG4B7n`ITMI%i$Yxt#qv=ejL zGWsKu^BT7luHK&L!`UwrotRs{V%JSVUc4lvcMiQH`ehlzUv&{0qME!B+D@X zC2-#MY5d~57E$z;-J!`nb@j9NwLIdyS2De!93n4LEHxg-xib&(15Bk%ULU!|)2RkN z@r~K(5VRL@z=uW^URFvfTqk?*x9~U5nVWYgW2^J;$(O z$CNXX{nU4!ji3CEI@Z@uaDf-H_IlVDVN*o{MMR4gVNGf+iUZz~NHKSPzD<=Xe{m=T z#ncb0cIcEe#Y9t-^fcL@NkXJ#dPIel99>ecV~7vYj6B|CL*g`ljy8$P>1Lx7_~mzX z@Sbnm!AcFk`MKR6e^FcrafMf1yo8_oo>>exPezr9OroW`0=riwh+r@njBxJkW7sxz zQ1H;*#v4NwBN_!BK6*Lc|CKkRF}*0U%`R3$L=COiA$t+tr7#M54R@<`gn-SC-IMq? zZ=c6&FWdU8!2UW1`#4~ zUxV;k(!k)KQgb~R#2xz7t`-ys7Od6Dkcziy`pY+=(W0c7M&jyh&^jHqaJLahgl%fA zV>d~WLD=jyS6jjV{oWK^> zBdc*HO8R`%!=+pAN1AQ0{2UZ{k)^xEcKqkhe>aW~_izPIaH6YNHH5TjZD<20{oS!N z&pVlF6`bia>MrAF-a3spzii3(Uwl5V#KP<9EqLD#Z^1%ijZ@OJj!8%WP+i15YY^5q z5Otq;G0uCLH4%IAdNdS)5txW-o=cnBiZ3yoC=Gl$6_{KS zr<^{`b`aLm>vr+p*S2xhd9xVh&mX0kba5-WqQqOT-HLzvz0<((7&iMPo9QCVx*QC= zh)|T6N>Ad_tq%dr`kdh4+L|S;CO+`h@4#0My&9eAwgmK0tOnQEvtCItNyW0Wv_uZB zcJcak={5c1`1yBq@Rn=j@W0UT8s#M}J7)&(d377T?uLtiQ;|sT40SkSy+dIb*36YMjs)*uiT-GmmP|>4>$_;xYZOZoHqXr>(Cdntr#bmb!BqM&n=bOBd4}T- zoVCL}OA&tLe$EFyY@4UdYzcjQp)W=1Z@*#*|M5MGSZbcYi8XSMOFwOYP90YgW|?DD zB-qw|0(<87yZ8;+CQ=m1s`2#$SL1`XzZp}rTLh6QijMoLP;MYmXi|by85hOb+Xxs$ zVi@ErNpWgzfGy1v_`iN=0pI@87ap1QqF2&hQN8GV*k=Tn^to!zZt$&IK}1Md;MAI7 zBmaiN=5pB(f4N`&aC?!cBixG|MY7o+)U?64)j*Xh+eujV5efTdv%`Yix28+2ufxQV zc9Ls8C=%Rw*GXZUF9Jf-MTkM0bj7*z`0XFti8q|Tij|cWE@LL$E5zn3N{l#v^1%>$ z=JsJ}`Upyv+JsdS#aSJmjo3 zx{5dKS;KGr*iKw|-oo=LGe4b+=5@opE1<$fr1+}R6AYGe#YB;=ach~#(JBFl6QSY9 zBG$Uk+$}U3iC&BI(d^hcYJENJ;Vnklyc$svFsf zkk^Ha5@n$jdun(-91gj5#NXX<0(b8_!HUHTRsXJfX^-qJvn~AU51)&l`OXY29LLG^ zzL?2KlO)p|H)^ML1e>^g+dV+KCb0~z`B2)L#`|x6GwwS6N=!{t21gq;?j>HA$TQRR z%i8KijFSUFwt3>DD{DQ>Cdct}-<9G2c<*j3%|5%1y3h7vM^2jH;e)5}saub6bNb<+ z&t;4A5k(yme8>Vrdu<4+Kd`Q0sFAa+o)QF$Sp1Cz5yufI2#!*V+*78Ltb1kDTUxbH zO^^*N#K-h{8A&Fhm55x8F|QcW@oCiyY?;fr;U-1daojA`u%H0#BEi~98=t)KF}V7-w>Aw(RNUkx^P1=QN7hj|v>FZw}DTHt?>OrTC%OZO68S zw&!v$7BcHa^Zxi3_hMnDf!Vo~Ywb~nI_m}049XFu<7*@KAjZXHss$_qQ4}4R-9=uv zu)(@oGQodWQlc*B6e7wg)In9)Hj;ESfH+Ou1YA6m8^Yf#f$!qH@m{jDz&Ts%=rl@D zF-i$B6)u%G64s|WNdpfbIEk;`|0J%v{Hzz13Mu?)4m%gx_}TBQh*QzT?Ot! z5tbwlO*I>M_{f06N*!4=)3;crl(b5vFT>T(k{%?ZtJx{<0j>*#VmyP2u*807<4CfgK!4JR`6RR1N>2R< z#IBoYPfuarlk51KoA=`T-+0keW?O^}5v5ZTXrFBWQ}v>;GUuMZ?SYf1r8L(Z$k%cC z)_Z_NC{UxF;O`%JHU8@UZ%2o`foY8s7X|}b?}#lr6bMg?t|uj?n*;2a&T;OR8ZJ9K z!&NVt$3?q{n#%^M8u5HEsnW%JSeR*Y?dg!43$LdMK7H#x-2Y@ByLT;c+my5A)qvrYj#Png0Ue%!A0jOmDf$?uUJ91eF`~Ab{hGSkj@hh zMTFj7hEq?NY`8lF%q~pYl2ZDl#IQ)P|7agevy_V_2w2Z(p_I*#VK{1XU+>;onYBfRTE6*)(**PV8qakW(iB2QM%v77x{&&nz zW7k3r?MmGdN#YGnd7kU5aIiUid=+23{V}}e>T|Js`<#!7n1tNA2PalH@qy3oMb?<( zs5&(2$VW9$w??w9a~6{8piFN0W2+;!U}^BDTyZwHz}T8Y12^zkrVb|6$5vIYeJU@{SMA*BZUnpI};0kc^}eT^7MrOAXRT==njXY;#axCnOgRChOe+e(}HEg0I}aiXDIRC@wi?8gF>{S$OT0 zXXET`44NT;S2mr`Rbi&|*LnPh_2>ZBq! z9@m%PbSz~tV)thASDK<$Zy+gi43T4DVIF_?wG(*jE05u&d$#&T9X_#++aEZB&);zf zUwvp9%WDN{%_&T^X0dI1hPw}};8%YCX1woTej6I~+8Gt6sa^{DJ0CfT^+6p|R4<;g zs&_qxX8jaUZ{lz7yB`0r_j=6CPIFa7!Id7@dGkpFvz0x5w zRY3Y*fA418{#b#n+qZEJ;w=w#@uhq3!u^;G_cw$ z@z$%FoTSQ>%~!{H@yrv2g8>B-{qpbLgd6VdV_|WTeF3#*9kZ>L^uihCxZ(aDzHs-0 zm~TCV%U;sKD=wwj?F@f=>mhW@4%+QD3T~0-`ihf_$>n7VaWj=f>0eV;T&xr!K*@hG zLHv+!;(B-zGm=EytuxiiDI%MO_PxG4?OMrjx2H-YT)&Pw-oR{RF3DQ7&7%J%iZ=0w%poa_>^Am**O% zQ~861r5Zl_jb-5XZ^nQ4iPxaXl={qwpgwnUt&0Z__Rwf9pgYX4SUZf17WbmSHvHZ# z-;2Y;%P`leqnkIdYjy+w^6i&+#p}hsN{7t7{t&;9vO%LpIde$6Tttn8AVaoibEE^wmFK_aqfG^A(6>D+xG5F)f zT5oR%q5g80>+#KIKlOD4H# zl^P##9CK5E3#HzsY$E1FcM$OsL)LGS)pi+sw7-2N*VPP@F-`{x* zE5GqY{Mt{y7K=0OGeT;jY{YUOdSVSHH-PE+8rBEY?|L83T0D$T-2Eopu>WP9 zY?~5pv_`6EMTrSi2uB++iB2Ro;Yo?8iZij_ViJ`Oz6C_XRz>n3dG=%f}GNKVKqjfcgwmti!jBcZ~F{F$_8 zW4kW@5KxIyyV#I?BthSOV1986zWnep{QPgeb2s=C@VYCuy=Xy0_ENYHha>#_@7#>9>;<+gZJ}~a$hZuf z^lMR6(#lmyK152$os+ifs416kYp_R<-1nNDE(xyWFRB#D_nbRU@U^aR6-5G})IcmJ zZd4FG+B??CT;~LDd~gNN>Faz{IOeZmfLbTPg!360ISRa1CDMJPH8+HHSi2)a!4!SK z=LwpOYerhvuQka~qpCzs7~_&tu3Z@+vlav-g_9%qT)G%Vx?xbDJw1z7D@UFD?Ps8S zsr-ERzBTsx(I!sSmT~b}ef+nZzaK}2mtwI)8O|9l+}guGd-M6;toUMIiGw=n5i^}> zw5P}#(c~<1su0RGK$sv1(PH~I#Wp)TdqFi2)icLxN(~ux5pZ0Q>J+MoTFpe#0IkxC z3=X+%T|R9>YKWbu(q3XU-M#cV<@F>=QGn8DM4N}X9EH+qI_zoY}AmWGELhHylnBEkoVL?p_8EPCBC;D=Y1~EbM ze^*!Wo!9N=RC=bG&j8VsA{;xlfqh5&Xf`{bEm$kdVJxr^U#^DBd0negH8P8 zckRM-yK%;)x1NuyAdx9e@a9*Xg_|BZh@?S14k`Vs;c^+Jw6e;pR5PTcLY7o>gQI3O zJT3Idk!R$&G$yk~Jdh3o0duVA=_rdqQu~JnE=AUk$|#QhIo#tUSw`xb@AX|2na#Wn zHfba17!g6^JA~Lebd64^+!-b$_2aAoT@^w57H_ZQ!K6-w)NfORjAKEH_k5tl9LNAB zAkg}$!($5ybskz#tjj|ITd{TSD7s}0EwUt0*#s9=sf0>)oHDmv@R_!fun7&02g8QW zdqaZlj37vDEy`ZU^5i!VIQb}K?Fcc+$D=mAQ-tOxcrewLk^$@hV+ToEE4D1n49T-Y zF-5WaIz;H&0y3fGfjL8d*yt=(*omAvsV(VRk!b@MW5f^Pqa>m4@=+24 zLeez>Lpzm{_b98S=nV^8wPyy~7p9(-JN&i>moY?}IYp~p!{aN9I5ymZ>2@81QHpaH zhxn=Q-u*3O)v%X_W^S8nnpKHhYd^cT@aL{InP)1FccN{(+lwkdUyokmYJ-bgvDk#nKk#Lv8QCl)&mPiel@ zuEH(-EiYR{GwVC%?0UaM4j*r#@We+1I$z)+DE3j!JmXpR&sXcW7_2hICVf6rbg#(t zA=x&($zr7>kulFXJ?5rMY@eetx(;02 zVM{x_T1B%`?X+6yR5!rurTVQaKai)K34HNF4X?RW3VuIRF+jzQ{YTfZ|L73SnWiK@ zaDWUcq$xHwHu3$hZsWC=X{DlXL2O1?`^)ys2%2EiLhnjw2^zd6a5PB%YD;TUCmhc%`sTK`C z6(@>D>3`a*N2#+ARtpl}Nmfl^dLng|ssLKqMa?O}sS-}C6<3rx)4xt(pMQhE(@FbUU!B<=>S!(sHb$b#bj z_TERvfdt*Y)CCbU0uNfSr!WSr(?b0u!so$87$z0%r`l`W?_???inh@&G25;&#STYP z4iQUfhOFD%G7BjmFTj7ecxqQTom(}h1$w<4TRI6Ypx%VuV)D!`t!cOSa2Kss$GO$es2g!GWVg%+F+~ zbEs-?%xJJu3^-@@sfbP9Ozj{pnI9r)aXExhj@9)cUNS%A!{bY1Jp-ImdHAkJkKys- zIi|T!w&cmt!CC0!xZ=ENs(MLHAMspVif|jf0UkfRiu?ASz-yXMbGW-p2o^V2mfOcgjv?Ws8q+ZaxbI1m%YDus-dN1L7}4T7AktwhgZ zdI&U%#aUZWMhtMK$&eAUefKLf2Cb>pZc(=y7SKaHG*^$b$y`;9*G(>3qDJH?AYAQU z*QwQ>JPzb9sNbD*WsS%J-yRf+ac{i=gGTy|^)R3cMkD0;5XGp#-6uEkwFi&m+KVOh z^ywmiW;7o=wTWN*;C;x`c{Ir*$>N3_=>DLNU;V&AZ0U5deRhO@@}}Lm=Hgvv6xFBC zeEorg_?=JOha)HZIDDdy%~6d@g;6lj+#>Z#Nw}E#zx}=2@Vh_vdMwVipZ5C-=jfq( z?|gI_j~^YP-4ca7*os4|5uaLTHF1MTaRNsrV~Ly^N~LWR)=5;`iW^2m4f1s8X%kaX zxm!iv{$L~u4l!ssRP|zMc8VHd8w%^aiRSHc1p~Vk*xf>{;^wKaJEas?n^Bd1YBVE- zu=%G(pG)%@vXRnf9MGRt?sGrn{^s9Zus@mj$h=1lY-(A828S6;;eY?rhwx{geGome zNjhi2Q6tg{u1Teo9jX%X$|8IHT4z^B>S89aQfhF|*qTWJ$ROw4Jn!s!?^ z_t7ZFU)=C0{{5faj}clfbxG%7^ZG&qo!FkC`>Z;W!<1;hO}PO!(Q3l0EB09R9$SKB zMHc?umH#wBKVDDsl+7!g{s!NYqTa~(eW7sPdP(e@{zntVfGM;tt)FSLJq zk;VQmSYG744q&DbwpTHSYI2bMn}eq^a7o-PON%&kQaI9?$kIw-pF9ODZrzHh=??1D z`;cmQP(Q@x4C<{JG+HzK*~0uBN6h{2|NSd2hGz0wawlrhyg&D~{rIt8`#gU2!+UY6 zPxV14sK{AOT-CWC-9Jp96qSygL{gqmnan$;$wn~|z zJ|o(>&$7{edE7j+hS~WAJaTLWKl|Ia;|*6mhJW?$m*S$`OZ=pjuSwA&3jd!zd^dY#A7r`&`x zdC_U~LXFK`v_>K)poRW+GA}k0Lb zZ7CV2V&|CV6&x&%_40je?l$*u+MnW%5ENnh>IacdTRHX9bC*YGuUzm6@+e~_5POM& zd8K+^@G5y_&V&N$Vs(_DAqRF6Vpl4fZuMCC%olfzc=0aY0Fv{jNdsxx!(zR`wKU%U z4@dC1JC5L=yk!sG@~ZPNH&w@tcRh*see_|>F6=NMg?oRG zurjRUz>#$>LlDKHe^Z2(d-omgVx`~2VuyNU(>n?Ih#N?YG<3KzhIJr>$JtwWEmY!}!+$WJDVUW)$2P$TG=en1b?8yzo6pKmYUreBiT>VSc88ho2mv)}BMNN#T`KlFh+^?4glQSfGmo zPDV_nNfdbGi51|wvvDTZ{Rd8QGakyPq*N!7*+U&|KBxt)BVjF`keb42n<+3zQvAxF zJb({xg_n;CHHjt;&opeAIWnrT97s2)B^8bnPYbgmz3UM|U6WvY0fpxZNRb9T^Am6B1Lpl+y)R zj1i@fvZA$^ufjFNKP!c`3sSKI<7PeveJ}u6=SM)uxUGZ@iMBP2r2K*2pm*Djk!A9q7cBf7SWtD;SBvOf3XM@zK*%La!j%cZ@t+$|dY?aL<1|Z1X zeqQ`#jMfr>9y-@1B`HCqcm_mClA(k|7DG(ceb`eap>}^GL;bMeN zp=>srIC63Y{ozOwa-W9O!NL()T=D{kPL9xM&N^fcJkG|7`eRqA^bKcpb*-vA&GUT`RcBEJ&vHMTN~Iju3MQduh7u&7$g16B zP65M5+{7q>j^Hf;Y)B6M0F_8mvkY zA?_nSL1Dgz;<*vUUTL@T^of#u(Z(1}(#!e$nG1Pzn@%z{ZzLyt3e`%eLS#unp``Fp zyI<)u&J{u_p}tXx+^wa9trDEOkdJo6fhHL_K(MQHi zqUlF^=yk0mme9Yh69D-Y3UVWevMP!!-BS~UW~xjFP&SK>uo$#*S3r{fFU?_0cunMjn@vfR^;`Y{Y2THr6d``Vw zEC=Of4ZVEpd#CuxSiioZQ|@msefT6tD<_PpjDBHS*pKURcpIfbAdQL|ljq$y?yv~s zbO%Q>(bX8LERc4P+Y%FnBAJ>}j3kCx>yU6M1X2Ro_@gm?Q4(ALEvMC|oPI@pQ&v{% zxZ%ztc+VU6m^SNAb;&(9-hB)wH#5vGNzlC%uCz%Nj!m_06M$8Du{xX-3V}QZ!oA_`Od( zj^ismTy*xFi}^0O01IUTv53KCg~eM*V?TO$9iO;$8Lg>#M}f7+w@oe<5z52M%|*^W z^+iva@^S&K!ii?uL{(#0cqpODw%l7-R}5ek1I=5*j0}PEh-hJ6A!vaRx_IVFKW{Aq z7RHXbunkqUhsW+Q`4jXCrNG=6emWkX%&DxRs&7SRBk=So*O$acZN)OPm%-h;^n~if zgB?3))Rs$B@!OBATqEiot(UZnAQY5b7&*vZjB=4~yzy>9GB4vK85*NDuF;jLgI}SsX*DXlVJ^ij%OeUB(@Nj zSLsck&U2~`0!Mg4e0xM)CQ}Wqg5=zaA^zCc0Ck5gz&woW_FFgDP*$to>7ff~9rj9c z3iVjoPz*C(3aoApYdTawXzvaV0)0>fEm~AQkFs|Sl&oo|BC3SHv`nfFS*7-|+0Kp= zz0%5c{_q$;``UX7WYdjHl^~T-)k+f8h^XiQJeJ6cM2V@5Guw|*VyQ-P6GIeK(O+vD zo0KDdPb#J}uI0z21f-j+SUD!{x}$JWO)a--SMAliuajVxuK;O0#MlZHF`|UWEK&+r z3ej}hPbT&t2c5&h%=~Umw+8<`5%ap26R)f%Ioe|uqGLNW|2Iw1YPF0hL}p+S+#+%W z1S>9Eww1)xIv|Hq9epB@c2DI+Kr&wbYTfE8iW%hPKcy&*pAXwK!{1)}=6M>xc_6y# zs`26~^KcysNK7CEt%(_p!AY_!_mYtegw za-paSz$)P|vRzDJ?BbP*MWFQ(q5N0h6Dq|A(8aZ`?LqRw7DxUm1QO(=q)~lcSI64( z1(VF6<+IqD!qy0~Oeiv2#v3=Wv}>>jTp}6V3^jGign)Wt<4B>0dj+Nzl6D{cj++pK zaoFo9?rmhCciCbGIHXlRV)*co`Vwz(L_V(vJ8(3*)2 zQ;|tlxXGgjN;A{qfdoL6rO>YDV)p;mGk=N+}czsRk6iynx)*1lba`vYUTUqg^Q zrks9NlazX88g@Jb&ahjq=C^&nmxY2w%IBE zyXL(UCxoR=V(p44{`f|52L^HYb8^t=p`^uA_@|p!7%Jiv9QNuOo(lY2V7rwmCoj7q zQYai^vCndw2}1cd z>{<1WmElM{O-3s-uL#1musz#GfHs4&f&;q=$mqc75hfs@PR%kbvnw9jqEU|ru;}~8 zsJ3UDhO*jScVk7;u$SGcgX!OahWH)zR8~)pqs!j(NDdqe52Yv-L|}@nZ1nV}H*9ES znx?c|sq42P5CJG-VDe1LQdrN`^ezLJir5p)s{*>%!ll1gxw`dBYHq0;KZ?AI4{lW) zVf{mY7b-r&=El0~zGNtsn{BWdRA%j1KwzJh_*fUv70KW3%=j380|0Aq_kUX%E&`aE zRMgwdG)o?fw0rH?~MLq$i3SupNANa?8h(wlmxKgX@4fEnibAy%6QZHu)dRrhA$?bj1>vw(u*0lF73+|-OrNP}A@2WihFjq(hB_<7 z@@rQ)GKpqjeh-~o17ex|G|z>|Ik_RFga*A^S&rrL_GJb^#!4Veo>+8wO3m*#_z*}! zjD+s@8n;(*zY8uF$%s2mRVF*>jqcyr7^Yb#R_Y7hKr4<^N1vzxoA0ctw5*tK?1Dvp zvFy>vj($wt8a+bFudVn}8DCwtx=Z$WSLQahE{{acx#Hmwi#IWKR}n3?5nD>jBWRXR zlzdvo*s9hlClXbusNNl5WZExduv&wxv9Mu{?eRmgd|Bly z)mfPcZ)@IiRH&-Z1Sd;iyBg~q7^pROTGTM&n|Z#%^TPb9Tx}8+oCv!lTBKLf{Gh7; zxZN{0YA=?UmrV-Hngr6YPdb(>1j&F1bFBIu#PVaTGGhwvcvkrsoT3uGjug>*8nraH z_UHJr@vHQ^3EcOuVhJWnql&98#WIny`xrWQv07kT2AdSUVShX|_xKt7jAP*N8!%2i zs91N-e88(LZDI1&f$sYK&6b8^Fkd&AuPScydmEqJJZTW%9SCxLrT zG_rG^B(K{QxbGwVMW2gAG3y@JHEFJ(Irv6QQ}Ie@jKL+7XiGOyA4|Uu=F(}sTw0td zsPj=Q93&HMi4g~mLGJ+QDz95%&j8gx-+yj5RPJ&DxLb#%_2X1mvsAR^T>x#k-)*Qs zHhgZ@m$eIJUy z=x1THc+>#53F1`ck9eCcg?Bf^jKh4Sun7LZ7+d1GJ2DsT4Ouu&oLZ-7=RHh2hpTdrt;}nlP;1dKcyvWV zLxd>ud+@-yXS`hRlt-h;MZ%t6gJflgH|v2j#&CD|3;5fr zL7L-0q;S4U1%79;a)f-;mt4E>>dF-h^!hKif(UfPpUkH&{i>(jNNo|ts7|0dR-AC@ zW13CSjk-)lo3;k<=#kTmuQ`hjS^Waz`z9ZZ0F8Kf`|LPX4h@s63?KN25L;(4@l-Da z{lmXf<@L!)#z9`y3>Xt?%46HOld8L?dXPdaMtq>1^G(4XaY;9}Qe)4oRfL;V>DG+v zVV|HF4S-_czx4-aX(lU1{f*!P9#aMa1qiuq)yqPa&x`{Pe5jWASa45(wm zSv=nfBXj$r3Fd=flQku>`18qYletLihKRM8v1DEvVDI9toqT0s8ATo{@|yWs0niI- zehfzt%$cYnvqD2VkJ)4ZMe5`<0Zc)^_oGA(H_4K5XVHfon2=vLvFhOv*MHbLlLF!$ zEg}JoQ6QdvFj>?2_EXCAVk-$l!+4(=U{;>RqqUS0%L~{w#)iEoD6dgPEwdmZq zaSX{M>R+`y=$)R7g|G<3Q1%G!4{6M80@HGzPqc6uJT{Y%Cql@r)+vl5DT8n|`O?D> zxNF3fA_^ZbkdIF>L@i%0uexYE6*m_FQBU`UJE!x-MsKvaw(R`jsvK3MXG0NU8OI{E zKVudo(Lw^{GiEktBegO|Y!a%B;xu}B){YZXqX5=Ppfyosyf)jc#=Y1SGn}LrPymlN z*ztr_Y11SCrOfVk>u{;g#s6z;I+etT{dcY;1?QUu9Y^_f~Z1Nr&7HW0$Yv z`HEE$SBjtIyhm?Ud5U#w!m{N&<`$hDIRSecC$ThLjIMaef{UaN<#TZMj@jBZ7j!l^ z)|N5st@z@9UO`bJW2@>ogOh0KcIkX+*NJo^(I{xL7fU z07|%BN>Nx}6IK)jP+67{I7Y->B6TN-!1_bkJfr?9x*I2P z)%nxig&8iO%!t4g+5xHg-Pdj%O{M*!zi|?y!K&+{9VeS|>dUxmp#lU;HiDdG@3l^i zSkiS?imD`Cl`o^$R}W2vt@y7E0!+N$lCuCzL6$g9*Whj>-P@G}Nz;`Qh(3=*(uo>^ zpR=c&gD%tmZ)~8XB96(Qu3vTqUV*Vq&KNSc*__ena~nq+xOxz? z46JAXY16*3N4$t_=qLE{5wzG3qUw)S!41 zC#5%8rD9x67~c#p(~aF1#Drjnoh*sPG&Cf?MwG@%5AHt-zKF6atFI`F{;x?aFyf$g z+b7BSVjw|!kYAb z8V(#kYxJc!-b#w)WC;enQ|PZB$L3}aue+o*xcb7Sj%{QRIaboF*7%p-cWHU{+-Nu$ z<>;>+#pbCeQI2{{=0%>?GAeR%0&%nW1kZxCz>GH3kNH(?{V7iI{or(A^$3P z{z@-y6%23bIL0$^1?GboX8ZoRH){(vb4aRkzO^vPDB8Zv0LGU-aATM>t14lv?umyt zx5JiNCER_X7@)U$2*ZtIR9F;C?Tz72ea{|xpka41DUDF(dUh1|?mM~hZ~oxE_D0#M z)sqnyQmHkmvb^>HyFuZiF#$lyWf1C@k;h2v)VtnPAzorW8RaTK1F z$Uyg9$R0A0M7*sdl*0jr!*%5S4X)Ec9o(A5>gfOakqf%lT)K0*EX&k7@FIk^Nd4t+ zJhA%kKe)HEQBK#|jTA*bl+sdM7fwpZO3`nBD7lg2xEIZ?-URR16`u|O5yk{$@PSc2 z9Mg>%@#7G(8RSVnxEa!7q(PwQtrkS)VUrT%iVyhVUB58@h#q3q747j11~bi!F^AQQ z!FB-mse+om@}|2oxY*4Bh?+3(bw;zx&~fdM~?h+w`P9P-6&fk@}uTk8J#> zk3Uqu_sO!=Y<1A6Q+6^1?$ZnHL=DS!D-4v(yiwzPD~hJ_I2G*U2B5L_>?yC@7za}s z3xZNC-As;LaXVSvy9g$h(%1^FKCsDcuC0cuYc{f==TKGR<&j8UP~|%|JTU4>dRQ8^422=Ys0B6X!x zxQC@%EEl3o>zp2l(Pnww1+Ct{dgn#Mv$l0QMOmhkI)F_?XhtKcMvKjEulK2&_u?PE zaT5DapuRbz9%n+G*``nCHXj?HfR@dT0+bA-y*y>a0$D?_+4^89FOwSCPIe$DIeNm4 zpVUc-u5h*j+EFFmU7ec`tzi=-s1hbQoAMMVX>=3Q& z}F8&2x=-R1wuKS9+!CIO4NB%@zXVwR2ocQ}Of}%aO!iW12QqLSto4B0g65 zq<0?0duQZa?w9VI!!BS&BuD3}p?`Dfj?k)&@+)_@hi`w?HhjmmyXgf@#m!0AX%SjB z*Q<|ZJ{tBPJ+wZ!XWwf1;1e6^p%cAqD8=%Vge7u%H3vA zkyVF0ykERixogxzUU?c;3bt^o;M^4yVF=1@(3tcb0hdZb(S}ngE~#21o_%TvMAeF@ zM~Q-#pWzBgxl}B2;sXm!9P|=|01j_)RgjcX7F67Xip9{uc2rNP6@O#m&qDd~OLnw@l&kT7v)+tPiO}}68DWL&exo8E z6{FE;I2;W6(=(l!r~x1YB6NXO8Y~lu1vb8~G6QL$=7e*%-_qYZ&Q4&2uC@rKCNhNh z6&A<$=^9+4Po_Yoa;4r+6+Nrh_&lX(;UwVZr=6$O33SZ({n~o&>5my-g>9Yp6l0zi zo;5d50~bQd=YF1A8_|70d*mq~VQq~l069$9X`;#j>(Ok@}>AXUwZtd+~hhp{^Eqh zv11%}gTY{m4W=3c0)zxYsCSJt()4m>PTOs*b$?HL-{)QXjF2=Vq%7&o*=O&y*Lv6U zKD}mDRaJPBgFel&@aO6y2iMDc_xC#|*0bv5TG1F4d2?J8pr4HXt147{euj3l2_Q!a zprrRJpe##_$7AGqhCHLQ_%7(QT4*$LK9Bw`s|-a^VK5x)Ix0Sw{%y4ym})kV=M}Gw zzCriyk47j9c^vw8I4)7rI$AAReU_oB=$!_N@fZ~fG;=*U%aP?3+RYZm1;Cf7fMz2@ zg)vHcK01edU|2goa4vn*DgCD)gY7Ok0JMxXLRP!=P;S0kex5QsGM44rlhC1%1ZX5!j;2d9Acx?M8)0Gea|PD9i--^n3;3z^LH8ud0mquPn>r zt=G=1yy)VYDFAKRr{~v^JsANw%P)Lh`A8_c;AIl(c{dv*Q+;Qm9N}z>0B2;tHw~D zzXV{9e`sm2{;6-T;ejKVDzi@BY&7@@2;huVybJn7N(7AP{G)EG=XOd^18w z`5$V@YO^NgQW)*uqj z_C&Fbeu-dU#z80h>s3tc#?1wWaX+*0Jz)Y-dNI5WT1te>yM zz_n*2pfRgq1h(%8VhUo@zVe!bWV3zJbM#A<5)pkyM8L4GfFc9h`50I4nZi^XC`Rkm z_g$VZ-*6dAf;OHf2Px^vp|BhL#hs`6pSpcK+iuV01jGYN1(y32#svY$=?#qegp8u? zGC?SLGiOq?lRY(&%haNGGf}EvPZmNlC~_mdw(Uu-TrzO&$l6T}k{vT7P!<@zqu&Z^ zvCS1k;7?UG@tYka03ml+nn{I77-7AJX8IW^a{Q6QX(MuB&T%dAFb=Qkhh2beif99& zlD`u&4<nP1p-cLZ%AFh5hz0u$2{jY~TuaoU3YEnG9buyFBc{26yP z0--Od@aLlJ;e<#hU)9Xs=wG1u-M8ifg^8*WbfM zj3qMXj_4JD9Mq2V`>CQ}TsRU_BoBvKdOuUk#P(2*mgize1eDb0Qq1(K-Q?@Y)w3!` zPTmwYsvT0Y%3`*Laeui6A-7Wk-LohhstkEah$Xxz@DzRCx?(F&5pALr?pdO0#Z^S0 z5*z}Tw_6!O1O}+rVj)jVnXGt_eV?aPax>td*xzPEzy=1Y?13-tY-IU{0$mL;xpXx4ocNII+Dq}T1)>QA zb($ke=xF)MHS|_Nx0TP$(;_C35}Fy{q=^aLPTY5bc?H`=QN^)ELsG>hrAKlzMr88R zF9J^xmzVFDfWXiQI(l@13)5LH`m~AotipL7_3cc(t{T1`Nf;lJ_10g-yG6B$EEaVQ zw0ha+?RYi>QZtYeR|LZWItwH_i}Cy(E#64H@*l$>VrWn4Y7Y(~u%8o!8_I%t{b{ zQohs&k{?5ClAR!J4bFe9Rs6#_Kl~A^A}7P5r_%Lw#V{Hw~6J62XNwAB}F_oc-o*J zxhn*3VN^YWDlj1d>^pTypqpjfS{*{VtPr#jlchZEl2VRZ=fu%4jHgUWq)5?Dzh(+B z+el&(rjl)Z(0ZdAIkAOI! z*QDzt@YGPImt~1&XD<8PeOc$e{cFp)5B`4-j*v|7*uj<7vDGT$aC%T%1VA;(9=AVg z0+Spf{lb%QB6n_rKsC+YXwYA=rauRR)?o+Zl#;pE#=HRY?nZ%%Xyw~{nw@1AP53H|h=;nKJ1ch)+o2% zTt{mY$LX&Xs7UghCg|QNm}=K>P%*4`163<%()L~qHu60@0$VzRdg|o8nxg>`spC#M z$rQMWmmY3SoVMi{f_kS6`GsENRqOIX$fUq9n`(Xdmi6iT_N}gwI`q9Df{_s^HOf@h{e4zfvb~FbN6~e zQFg?C`b#8>(2K^1su5;gQhF{ddVbgomJISU!TVicQtn|+1og}jQ8;ez_a+O(>7U7y zmi?W|25)xP8Aa3^qrD*RTc0~cL~hY}@-~vYy~MaN-T2t8!_NIrtS@WI*|U0>R-7F? zvD%PyhN$Ny$Zsw@rI4si#OS9vNTQQOHX^lsQ_oP0f;yyCkq|b`+^ng6>W&SmBDG2# z$2DV*jj&`ZZKI8cT57jFPZUm3ovG>3$*O8hp)P@xGRe(pszF#P`~7{uAR>1H%b z{c-CtuT_1WrrK7z2a;0gICD_ap%HsYf~2^R5SZp-nZDwY#rero61Qu{n36~*ky^aH zS%qP9y7|#t`@IMEvm|&{)uA8(#^aLR>b&(1Syb1UOvtJ^AsLu88#DqYB9{D;@Hywj zP`DfxDb*x5&3NRjPfZ!-A5FuMY*0#PmiPHL|K#zr2E9*zYe?Se59n`I2`H0Pu4mt) zh&QEsP|}BdW}7U?;y7X;F5|2l?UJbw_4k4@EwC`836eK{E;SYc8@*f9|2HH&<2bZ- zGk#1Jaq3)9Z7cm9llf94c1RoWfo>hsp-s*7k^1?X70kQD|EMI=B)>s6)B4CQ z{oaF5tgJqplAx)es&;K%7?<}~EfHohJU_|HED0v+{xRLz@^2=ihl8s zfM%Ot56W9EiYGa*Q^xPcYe?i#zUzg$isFzYN2gHAgGp`rUi4wN+by)3&b_BsNmB|! zVo*@u!k+R8k~EyyOP-PIxnlg%2NE6TT7$6u_>}&+ZNI|PB}sFUeJ0WC4cKZ`lK?TT z-9C*lH%Vfahru^GPy9Z`6^pys0BNd%OO{l9mELJ&C5HJ-0&LkNw&-2Riygf>7c!cM3`SHP550;ux z(>+X?k8j2s)sTreX81VaY-z@&kiJ9Wu-Q@ob83BrFW!LW{Yk>Oc|{Gim7! zKtp1e^1z2?&YP;E;Ek1T@mVd#!V=5n-^ew^UXn~szZnSxf(;M|Juy=KUR934`KYej zf9DDGe85M1<-@w`HU`v8lL!*UNf+@jr4q=pUi+A9e)t>9(|`FzMgQX6bG_Q5oIL_q zAC5_JNJ|tw8JzE-W=JPDeFp^_bkK`$+9J8O#HU8+E{oWJD)+t!VDOqP#0+9b- z)O1Z|b9?J4{d7mL;SyawWZAIVL5MXsm51w}o{FCid2b}Cp6c~Z_gz)%v><(9iZbq{ zIN$9};L3vg-rZGKjUpkiz8(r!^j)V)NxDWt1FJZT_L*EUWK{$>xwJiAmRGSiupL}Xh>G>eCRiEw z+8@4U4S)3p47bcrbv&Lv(<9(uzfbu{KCJC4uAbzu2W2;9$_48>YA~J7vLW+q9zm7h z`p?v3!JpSpP7Xs_@A)veXrf)35F0bXYjBUmU`DM4s8YQ-7`^&$QcuC}Xf|eC8BBdj zy;=TVA{~WM>*rd2%H{*mxjIe?|*eQ zKX`2Yc$QILf-@5Z<|o7I+FD}t7!bukag?dzaKli$dmK^o9M@1i@_Q2Adlrru*^FE( z__g&&i6Q;2i4$_kihEVBR*xejnui+Q^*Vr1bRry{qNoX@(eJZ0;?lFnB2iNGq4 z+G=ubLr(L~I911jm$j6WSgM!u^B@_5E7mk1RlCd!cv{GN1D#s30H=zX)`xCcpE`PK zutG366Ll!W0c2xp@DC+=c9>xkHO81Dq9Rl`An2!hK`XW%sV4Ei)4|-&Wd!iyYhdGB z;Yd=4^&OM!bw@${n?bD#1t>oM$Igv`ILjBYLL}>8A(2<*%szCH5Od{LV2n@x5_hmZ zxVLDvl1<#U;xbP?LR!DTMe?z3BjlAiJdsO2nM&a8BI+|CirLbzH}!{KU!6XBa(zH* z%roVyF+0kM&bp7Gwj9$KQ_fJ&!MD5?)BH3mGx*Q{HxUH1flR!j%(_-Ej>w(=KOU*n zv@%A6NI263tov#xJr1RprtHQvh=8(^Bo&O(5GYG>xU8Ti#%UtTRqmDZ+}QKEXNyHV zUS$zUl6nJ04Wc$F)ZEO&Bze@y#3&bU@HT?IG{U4HXN6;fsn#ETV+AKy2B)5B#5he4 zoOqq;xf@#iVT0ZKAwAmXH&A!94Es-vFfI#@(1x_&=jo3`pn*q@^pQ8H`IqG@S=C#_ z5Hl8|xOPWP#K&qYWg-Tz&>6yVqtYrk`*tw8O(%D{KPR#}ab;3U?2w3l&cB27aB+#C z7RmlulPCqpIRRUPgqUajmD9zHR#)NAbUWEimSqrH{#|E>V58brV zI=M1fpGdoTIt0L+F2KN}L434?YZ<75Xf;mg>Vph+x>4;0uy3h@U;p$WEUyhh+QU=( z!D(JUlOH_EPdtx&^c-aS{SJ!o_ zI)Ykvh7{pKK32Gy=bokx#U(|~4NIfbTgtU8DLCZ*S=E~9{`R@0dxy0K*2k&Nr%s7; zMdQ1HlTSpVCpbn_A%o+=3Wl8WMy}~Y>(f&o{MyOZsn!14(dMyr2Wf@lbCH5Z6kvHcVA&le6HLXxxC4yvfZ79A&IVR(Y`2B;=Kj}51 z&uN;9KBE+&+qG-bB}C8lUEfJhfhD-c?A54PU>#ee1bhkm zp>ADmfq8Ou9i!2-^jPI4V+Ot$yD&Fv;2BBkuG>I`k0&1L1xrz}gZ-J-AK$V%eAmkw zOTDSq!c%pThB!dC+lrg=6uzh{jryr?G3FG33GRUm-Kkj|UhiSw^4Kj>sb0^O7e0r^ zACrX^kpsm|@Z^xFAoXm;4GMASV@js$cB!dtx<2V{Crzc~6HORQ(pB{{64@FEk_-*= zgjqK?7jvVl~#U&M|?MgzvUJHtR&tO5?B*3K+ zX4iMrCG!T7w8*W!$?xP1^w%paE%&i~aRwu5?yJrazweXMKw}TC1!Gu?rBSozOMpk2 za@42xk&{!?fBemrmA~@xnPIEddP+Tq0s)N1+6K&)Rkteap*@o`(Ujc8L}}zU!stAQ z2iolh+HFk*(8g&ICQ**@ZOtvK9L9x?xkl-EMWi8xcea z(8?=roEq@2N(sS8pB_HudxZ`FwS3Va)~tJ(gQ*i`5pL#fNnq)^*+#ujxtVcGuAbaDLD5)L0bg)N(BrNw(5_mA(GsAh3R8?7)z#95uR zlnPU!DsG*B|FP-zAK!dx<()SytTh^q-jfkQOoiY+;i)K^$Q-m4yHs$e={qwjT22Y$ zO%`FsXjCR+)?$qi&5NLI7d?SRhFwz&%xJ1>3&xy`1M73x{;F~!pHZEFz8{o2uX(xF zArTSOQ&g20j4GTvw}OBD&TZ&*o?buLms~Q1pZo1Y*uOf9MuYOPZS~rNHR#6?>gb<0Bfil_rYoM!3MH}q#LI^)D3IH2fn@_MTDn%#`t%RywSnKj~&76^b}f6 zBNEg9A_PU^_}-Uk^<5qIQOOQF%W7z=-N4;Px-%d8+S2-uynJrdZnaL^hcvcEEYw9+ z&vLZSnT@&=XXbh3ZZp0Jb5-56?JH+nL2BZdG{TpoXy z^lUABHy?jogY|VaYKzHY4$ag1gf)@&fUB=#sSW#NYE)vQ z#Js0?Mr_OIp%H_)b}=T#U90Z+Zpc=DF-3=WaUI#JsD2CIKrvM#R&7= zA$D((`D7a>4{m(exw{uzm}!qN92LRw;)`6wnw%`a;olie&nelsURhnkcyJ6Wt1IXa z3l1L11T#1(r||%1gE3wOc&l+893^t!Q0w6L&Z)KXW{yUCn#EwJ)xn{|%eejCN3k{> z^ZYhx#Uq_7O!|0_pI5h2L8zsy42oF%ZamSu){XHx`MzNJ+dT3;niE?sL@ag8m3B#)QMLw<8$_2kQ&PMRi72u z3UX61{I~)JYiqb@Qy*`=b_$p6n#Kc%MtJ{?C$Lg31V6a6@~};s6sM++&?)2L2s^j5 zuxXa&!#%ycbvt*{Ocy&BTDa%f5K|o^B>$Y$PK5rJCR%263hc<$nqfLy!h622gG+YJ z;^BiMeCpN{*t^t4r!&nn(x_-CWNIcvYPOfTMqT=xV~A1@5D`w8C?(28!=pv3q_Fsde#bESvP3{)E%PIZzvOk(>efhri&W~^Dl2Od=QA>s3 z6a`Taf}gP_dvrbKe+@1I%OG^T*fyeWKW?U*Vc!aZmi(#*EI0MH!NcNf^cdMyz(%`3O8J~8UM#?3;fFGmoPWC zAbln@oEq|=lFBSGzNq7HH6G!Dtuzj6Qu;lW!=B=j9c|=y3=(3G>>#?I1!;xbkp_Hf zX$k-EtsO>w@+y%LPU|2^^20amz^kuZ#~*#|IR5muHLMhKnC*3V+JSWPzRX7&ul z#^P$7a3XeN@jiw2c;$Hq&GszDgJn^*vK*~e2g9PkWBZrz#DNp&bXuI1&~C}7SYeE{ zfT1~qRp6N_D&~r*+)=Hz`J%%z!+j5}OkKMh>sRiXE9)hy z@fu!o$q4VdVF8!zo^^q^*hiG2ibMoIa>EuJI{5@X{LN)-o}Uplhl;pWyw>X?h(SY?o_4P2897=$9_sIg3uS?`DH>En+fl#&byGddHTQ@vfIt_~9G2^D|H$jxEI0 zimmfg_&aYq2XDM)8Nc_X6ZrbWYiP7*(Cd(g#vypJzjX#xs}kd{#QYA!kBa(#Dtwx) zX$JOqv?8Rz$lXAzLk$^93`Z6E{dE+q3K|kfvg@FxNLDT{A|-mJwM%{h!!? z&YM_STg&g;-)mpFXO7ny2*3)QQxhoQq4W4Sj_!;e)34?ISf3gJryGP4=Pb4{+toT& z63RTqMeKkMiMF#gHKpF5$9UuSXo}jdc6mHd@o%9?M6~ zP&EjdTdXw+x#_>bweGr9Xlum=FCsPy5Io?-@T4M*)T(w%vU+9jDo+6FVoH2!QL#%i z15=eS-c-*Gs*kBkvaqr!G1bd4)5-X?9WvmVOgT$0@ZvVr0S&!r!&&#{ex`1So9bzL z7N19#C`POJ{%aa|{R_6D!99LVPkb^Y)ZbZ#zyE_far}e(anF$^x}7EpO?)HHLxfD6 zY<&QXMkB1Rp2FpetJpTLhU+sB0rs86*(P?*t>gBCr!X@+kG!d_MLt3760W++E3B^% zan1Hs{NulTE+_ImSqgxuhov%)mtVFCFTG?AfB5Aic>m2SEDbCQ@5e@o`eFL0Lj~o$ zHA753cM_c&o>XKH%t^&qu`X(5xK}CZGkm(6IBNe^bvs3q>-4rVJDEBS+MG4T559oF zgbeM;R0wC~2FpG~I5sX>PP%#+5d~u;^co1)j56CeJt3zWc1Gde;5Gm!<$RX&5*Dta zFx_1`-R2mtt_^U*g(cp2-L~M`v+n2L?O=OAb?2Xd$9DXy4;;Y$^-btBn;4BN^hcEF z)<>^7!o`~kT(+Zui+0ZA%Ja6O)e-_YlY@Nc|MJH!!=3xq@qwGxvG+uVUb_(xm#4UA zz;IY%NACpw*$?l+Ot`#)5=Nfm( zHUvH&0$paCIEV&hZ%xf()CWqH1m?{lj&7}kVqRJ-9*!E2k5$<9N!^mMQkG^fLph9u zN_H;jO8l5q0$9qp_3hIhNt(I8F)pDsl_FJp?Jmckj&TO>D|xNo0sS0&E>tAK3_UHtqzw&0(=|0s^HPGPY( z#`Wg`FS)pjtIwOk?k!Vjl5g=W9(3RBo2OZ7{mN&KBda<(61Ac1yTr<%K(9E4fBaXr zVf*IZGx9p+-<+@K~IKOcb*&0 zl%w@v<^@yVrYy2OXZcx%Ef#;U8fwiD4cAvD>r%<-KT4bSTV!znET39N-dIdH`F90j z@YGmYpf8TL#YMr%XXXv;KR(9s)si`vP;@M!&qZ`woJRe1xI8#3}284tN7VBY{nJm&IR}BGdUWhQfI)u`v$10 zCc}|cJT*V8^lT!W$a z(>ySNQ}hBAZh*Qh)40D#msT@JK}MQhC25QmI*-;=kSE9Dr6+q*o4`^kK_f}7=VJVqn8XhkL-<-)HCtE`P@IZ6RPq^ zMUbC@q7hR1OefqISra$jaYVj-hRB*fOGs~rc^t>%0{`Lnzm26qPx>|y184{W5u-1P z5q2y9=Pc^yXRw}3f4+L>5tL|(BEt=`)SakYJs`WPyClVv&eQg}(v3z=ib~SnO^H&qMsApT@rn}4`hty-Iqy!E+NW~lAvK+s?4mtpQz+Hnym(&IG*7vcO2qxK3`ij zl4?b2-2Hox;x|9N7Ymy<^DYg>8Lr!P0^4U-xzdac!|?!@pVK?z=PC8OU%%@J9zO;& zsRE6X1WaWJ2ygh{M@K0~u5Wt4AAeZ?*r-uR(YuU^iZO&7&Grmh&2HMSRM*M6J!7k8 zF)6}wN}#I6^0~WnXi7%?goH5Y2;?nv=|$xd!!2dhrEck;yxlkxta zKXg0Btxf25+bF6Iwsj8RFI{yPhW#OmGQ((Gpq&qJ$*!lLZCXEa{qkRY=OBuF3MK2) zG``e^*tyCk%NPg}IHvrjO0p|;w0DB{&U}NUwn~jdm?IJPKd1S@XtXE^P;JVP_HOz@ zoSq}al;p^X$S<~~sc;sPps7FYYJvdP2Ci{!(9!&pI=^TX5s5r8`$W7VF01r3yW?w# z1(14`;K$WZoWw|g?2D;c@)%`Hkp;cSF=5`&9KGHY?%cPECytzQ1oiw=eg5DxcjKFT z3oOjfB5!t3j)(Z6%Rhp(EGaNX8#;2l?e9^ctVL8BheD(LrzIA?Q?=_z&Vp22+}s?#X4yMa zC(-B4fUygtZMoA6N4r3{LCm%c*1masf@rq>b0&piK@4qTv(ZA4^>EW&RFZd=hfSTq zVN!6lKf-_d;9VFs7to|MihLS#js5r=FZx6DvLPNiaV7GM^63kVMgv@W4h7-P(5(wO zzIpcn6j=vN^84r13{3s4wX}FqKeWqMl0O#L5IAs{2vdJvy|#G~o!5|Go0{b!o((GC zY4s9(vA( z_SY(hF|UsrL}t*&iHC8GhUCFx=DZd0oQ%2uO25EG+eY~7-+zTuz@Gbq3`1JuuYKZf z-1T^YUayC&(dMF>AGzYAxOUe~cx-7W4zBD%mjk1e#W=)8yPkQvwH=vyVSeiSufUb( zWLRDwqtzw?;32kJ1*hj)$)velmAgijMsbC8Z$)BDx^fm~@Vux;C&o{$p2H_)3ifjG zN+JoOCT`v+vsq#%5^qJuqVk2A4harPCbp%YT3!zA{!)MnC3&MZ0#8c}1H#)>!X%M2 zSQL9L9&f_&8?f$m`R@ zVARG7x7~;zzUt$s%03=AaS=`pdgwF@j7J6LI%Ax(RXjjv@*J6d^`dh&<3IncYjFL! zW2~(YIJ=bKN^mB44@afIoT9^=t6!j^y`h||3K))n;n+~y&Y>bC`i|@^?ThTS?6Lf& zbEAVL6j%inIW@9dZIT3Cu>pefM55zCbqWp{Yno>9Et&p#?8I{LlV~bLh0%~is}fwT z7B}Ult`5L`7(6#_ZdU5Lv>MWq%M0gcsO-&UdfL!9XV^-$mFRagCu+4n#Psw4WszaI z-$b+3#&oxdCI?a^4~I4*7*eP>8ax;baP_t^{^4J`81udM8Rg5I&BJWR^}z_g{DIq0 zHs{f3HZUwZ*wlC!?|IROFr7ULWIfz>WH*M@ET%F^xxQdq8+$^%!I`Zi(>$jwb6x!6 zPhEmv{@A0q=V%+thT@1I*8k(QX2RqQiZV2oDOX z{;-g?bAfkpNN2tVl>ns8huCWqeJP3IdTT0SI=3=vLp5>wC#$o&aAG7*q?hQuIQGlr-$@+^ucQbYl2Dq)l+- zHr`ltdr6rd4%hL{7iDp_Z}>FofqJJpE)Q*Fw;?(QFpqWrE*b@kXHk2>W*>F z1sSf`-NvQ6=XpKfesBd}xO;%S*<&d#mKhO{*?^Q_XGxvWwpd=v@#x_J#;SM)bvLBR zt4C1rqs2u#If`N!?9wRJT_fQ{FBen0N0h2Ze8trR&P5eq>V2KjO&X*H-_-l!Juz5f znz*7!{81?+AwP*mxx5>O(>ud`zxdb@1I=}-5 z2Dp9S3hq6S;lz4_138^`1IxoPwslY9J#W|%k^g(F_LyTK$TiJ-vVhm^4;;n^zIXr& zo3`@b{c(<$?zj;@bj2r83|2V@>d^869$ngvW>acw8yMr7J&R|3t+^KPx0+47`wiRh z-akEv$Cl@~PIrB6i1BEMxv4R(+*RU*=TrBLdCX0VA#TU(U$B59ClBJQ4^i};U@rJk zvQ1$@D{*`p5|N8zx|5^VZQ|q_r7yS^@io7pNp`}MW{V_Xj&eMZ%0Tu&Mcj*%eIgpu zUK~Hwud6^(G#)w@!+*)z>7B-xule8M{E73d6`p2i1W!|(s3NUxG^n9gKk10pD`vX6 zjyGMmCF*l-d9(p9x|n|EaC~`yyZ5c*u6?U`@DQ*mU&r5h^A2p9X@Ad0)PY{Ps1WItBNU0iogj;nTeaP^*fEY5b*=dJC@8?Rl!Esq?*`e+_) z(l!YBvl6WhW)cN>xm+FR;z$U=u@Svr#`XZc9v9R?(s>fC4ZD3y|Db1ET3HWx?^GZv zhE`vGAU#*2SPLAP>SOi4^%k*qPYE`NC?vy*hEAMVtFX{(spp640yH2-QmCK|k{o4L zun%};Wesn?wuQx66~!UoGPwbpXFGV+mGrZKgU8p9V;0*s_rk!7XY;V(4~F!196qsv zM-H6ALyw=tfupN9d}0+R*Q969$|%QylWk1TOmmdF9IWB5T=NNBz3nCx1M`S9aPOh> zF)XGqRa6*^fjwIr*s)2F@Y&Gja@||93I4$kY{#esc5I$@&+3BywfHFQ(dOAMUUgXu zAHB7Y#rYneL$(-6GkPS8*OTu;Y>OsNt`^*|fOB^EV(JYFI2|d$BEhEOG+G@#e>@%{ z&ziOFB(aYo+a)^p!H&=tWp;Kp%y5b>qge75G248%@ean(&F6362thEjoOS5&6URn4 zzCtO@8JaOfC>2}m6&mp{h1Gt6UA-l|?gba<*C%(|Z-C#J9h=2N@@#v1%m>fu+nMxO zz3qX+xcRRAxc%WJJa%}1V=F^0T%o{BquE5W+2mfC)F5h#`tsyWj7AN-WZT#A!&iS2 z)sPyPkvq7+xLCjgN6$mn=<>s^5Bj)#_cW(?kQe1_SD@Kp-n_+y=?&{1vhVV}H($F2 zpZw+{xc_lrcADBEHYK@^n41QqXkw^n4;9u1#PDbiTP&iA+&k7A3yOKEDscqy3}q;( z*d-vI=CL`gp6Y?;<`*W5;yoBsExzVd|1MtVG?w5k=@{UkJd@Rd_z@N(cBDu@P z6^)a`9ej~-aUpMCuieBqn>@$i8)467DeUFxvV!_@2o zrX?X=qtaBn&_v#7Ga^@c7n`yN@tzld2)*nvl$F%r(xvyW?!?}c=c3g%|2uim#CJ}} zZ|c^wA>lG7^(Q0jr}>UDg{e*xKlaLb{M$c1g{-*=*>KGDSH`5M;{;XhnZtynfY_3O zT_-6tRw!?43V6nSTh%6Lb~zecjE6~3%z}B`yNGK>IDkwW5&HsJP(to)5wo-i*{Jb! zG!Q#<`4cVQ$Hp(nN0Q%e$q=OeXf6mFhZXwc5ngs-g}1zLn{e@`DeIp##CI8+bdS3p zK8z23;Q@T*j$=5nmZ8&~!t}x{X4zjTiFkzU65!KXUViqbG~#WxP!3n{W7mHSmu&3<40bz2iIM^O^}X@+BcGsXLe-I zxN@$-8?M=kzqoT5H$Of^Z;Ap~s^fDYS$p|d>P_92Fi8-qz>IRtJ?Y6PaOYuK6w{D`>i8bFQ+g)vl)wvO)0=( z^(7BT&OaHsXmj?Ba|m7wb*PoftG9maBnouv9tN4tCiRYi$t5|qg^iki;h{$rPLnV>{6TjJ^~3rzKxK9m zZ+`)|6MR0vELWH6<>$`h4OcGVqu-`X(`hb};c`dM?@iMPsAfJ(t3gQnencx%{_@$S zl44yUZ^}d-k_0~WqTOhqqpcw5aE-C3-qiYD#v{ZM96VJh=;twqI~XjUYLysbUw2a! zHCR`s3m*?lY-+FLufAcIE*j7IVJgpq`;Ot?|JF_T<^!vk*|Y@giAJk3+0fc0&za6V9T2&4zKRQ<0p5a(;?1J z1V++9TA@+eN8apW)8;K04F~w|AAbZl-Ejc_;;+99mz=vf5bSe#WQqdsdi6GZ;m#+p zHk1)b5~y{E?OgAY7HvT=FC`q;&#d{fwMMk>%3ZDYyxE`_Ma7137V62Vs7`Z8wN{vq z(WubDGK2^CxG`!OUC-V@9RMF1!p{KtUu0(w-5Tko1 zYMq%E3^dlcIpyAFlyCa(ow#_qQ|0B7))sHBy5bG)1zD zyfe-BZFQ!wdCOMZ_E?Gc{NG=|C%^U(BR?1JKZmf(bOIWSZ?Kc3^q+dF3p`( z=U=d}EwMCa@ui4s*?Cb>Qu?m}LOyZ*?w>>5-;keFo?rg(y=eEgNWcHQjb^JWfF&d+ zu1{VJ*7b$cFhsNtH9QypF~o43VQb?qyyyD&ql<$aB@OxY3@D=fY217GJPa_04ma$P zY+dr8<>XIiLTYfs*D`NnJnUnBA;)mg#lQTGTXFdKGJg68uM;<|amnWbhLzZF6c7uO z9n75*{!m8hklv(aT>&x`$y%@bkbv-1uM$Z;0WqSo7=}5{o~QcWpj3JiPDs*GoyO*k zUhj+bp@LZGV#FbKgU^tN=S5FxRaBVjHt?mp*YK*#58&lj?R-u|xk)ZU~YL)-X)`cnqB0rws;$wEuMcxIY?ZMW;yQa?U&I6E*ptMKUS)I0l}f5oR^}+e_@V~NaTA@qiFUh#_kL_I zPOXjb58m~X=Zpvn?M!{^14r2%Q6&8!J=9H^DDYY`r#Ey8SU4w=O;TDM9?sGrj2p-%O0%qC zHHClvI}hMvUwKeO`BN#>Im>QNGU9&qk8WY)Us&A6ee7w>Pu}jK(V9U{X}P54u%|~V zsHCEaQd|Z3r5}#gymB9;3jOsVUbXYnc-zH)f^s+%PicUOIT3&(Yn1=96RnnxS5+fg zdLfC+nv89le8OrM{m|NIjjbunZ{Cjo^_c_sr4QT^a*w`O>QLqErcZz45&VlE>99JX=4`SEY#eV;jig)Q3{a9L{xS&O2!E%}>0JL=OnLpK~XZ8Y z6Lk)2vFO#MFowW8DNT~FZD8s58gF1H3)xX^ZqaW?(^3T}6@rQw7|`0fA~<2a=W^n3 zUfnSCSl%%*uyki5SI)^`F01p|wQ7ckB2b~kSc;XW=QiQLed1vpII)6%_LHwftJ!!~ z{oIBipZN0q_#dBq4D*ZIc}O*JRYHEs*J0#mZ<$s@S?iFP`JEb2>;NE}CPUdj!d{>A z=f2IVk37E<`5|XK$Nh(QW3}7@4ggEgG8l33zOGLyBUg^B$V4q7^=Pz;O^e&{D}TBd zTQ*PQhhKZy09!z$zq9HhEp>0`9{n7!vl4>G@uPjMQ?MR2%jD`ia&YpuW-F_7Kov+~M ze*EQ_?RB4(O*GE`od*x$KYrkD^yYVh#($hf6#?uSf&}(CB!hl` zjMwh`4Bm19sXhZmU=`0!l5${hyb1RnypTOS0z_?5Vp=Wd#M{JmRU0^U!ivjt6x7;K z^Q>k!ZO8xffje-~ISaV<;_c5G{Bla?9t`o`4}BA#y>%IvUUUH(%`Vzg;;mxG0p&s2 z{4dQ5qAuPiS4J2X4H;)-K`%>{a0T;`cWbg>sHl=!iJ*9^KOra`Hm{6|Z`Moc3gHPr z^rCubL8rJlBCskZe-rv$5;v>t!Gz;kfQ+eDbx`sKoWHGuF4-iZCQ~vgi?OumCQ&{f zb}t(%Jnj5-G2v!DG7Th`m1B@^9na*Ze-()d5v~oU}9v%jyhpqQ40bow^X6 z7HOyyQxHT6C4eD-WVk@Z=ei(bDy(C-b*33*RAd-5H{)Ob)-Cv*fAJ>FPPNZE{PH}* z!K0_}Uq5&Y9y(m%k_&clX=kfLHWPWwI&7~{CZ?#5+VY&4bpwktO+0jP$oub^tXHgWMO^|j~~zRZ{GJ+ z+_U#^aDAPf4HVnry&t+24<7+$XDRa9p|T_K@-*6Ex;X(+deC@eXCuay*^@7y#69Qx zqUs;SUwy&*aqir=P>yNCN$)Qwj5v1FHGsWKyK#K5jf>M0&To4X;x*(ovfhPiFmnIU z2CHh69LA}_d7G!pJa7p3AAkI9H}dGr56c9;^Pz+ISO4=XT!%3?KhFr*YIo6O=0R>^ z8R{`C!9($A&q>wg8sSliUJID%5~16Sh~zGzro<`Sa+qqU^}ya^DZEu}5A#U6jwQA3 z(9Uf2Hk>aj)5XMp(jS**oKN9R7k&!WfFhFV21Hout31bjNA_U7SmYdfNu;wlfWlcjA@KHb z?vdJB>c}Qzj{|4ww&hgeyopVlw%{XQIfz^DJ1CBZ^2}got!JoK`#=5uO*pvHL2r&a zH+0bHPNUuKqSfxO2aTksb^BnAfjZZ_enPAPP${d{3q(7z)RnJ!vPf&XfP`%S|)}{s-DxyCJ)E~|3ude#)EUZg`Z{r;_x;Je$fq_l z!4c9>1W|N;;{3u{tyiXv-Lzya(N9BKl|CkM3BHqV_Ja&&EJwy@RWQc4Pqe)YJ^RQ#0sHO{3kV`%>Jbsj3gbkzhs7MJh>y@!7@8j-DNI366l=#X4!c@ zAVDwv@Pt@VFWkt}Gml8d6DLMEwi2uLgU+mxJsO`%1}U45G^vEtqv4nhe(c1l7O;yU8Vh2$ zfsxm+q6%Z_rrsB8?e6$YRq{pcF%`$en++t0<&$*V^#MgijiOT`6-h*plKWACNL6%r z5L~O%!gZI(h|@FW{$x}Rh9ms`XCFqVx4?;PtTIrvml4mEH&P(QJUeb)ggja#aMn|^ z0;}sIylM9*@rLt1g_4Rv*oSXE>^ROz7=@OBG%`GXd^--V?m~0Qx--{wQrqT)vBZC6 zMTAHKUnwxB*gz9GsM~UZ?$jK9@3Rl%buT;@-7_5IXD;dMF5ZHv?m?Uyb3dtAw!ormp4)QY8I~wf7Da0vW}`jU`jH zY_!pv?&0A>1-|_4$3+D^16#m6g1fd%EU5WYWE_a4w4^;9nwR_fsI_V7IsPRmEBlyUDZx%7q z3}|VQjcm1u^H}0WPsiOVSbWlOvjW#%Fc*R?XL87pj0%5t)8lA%XGPy2K_pNbDI(QmGHgaqR^QtgcE( zUmOeqHW`C1e;Oi6>%}n2XoKrU8Bx2RI!!qEr=6sOJz#pj167lU)b>)q^s3goU{ZB&VmvUo*5oqd$K2)$ZSOucVk3c&c;;KEdJHazOc%D`U zJoLl~d}l9Bf1d&J4!aH|u}$;$^_eW-=zT!O0b;@x)w~wyudU+^yZ;2Q-}4z(eI(!% zyP~B`CiYwC_-|#dwFX;iGji zmATV)t(0*GyNzmx8;!C)BB?rO`{KwZgVz~?Xg$uHuEDBK55XrJbtye;+-2JH-zf$0 zPgdci^D~J^Vl2H*1ADfec|S~B(pSE704t+5`>H9;fm8%(1FmI_rlW`11W}qfeye)_ zm?yXF>3j=6dCdor7u14Xdq2A9{5<)sbE)Hl6*D$+7adM{D4gB2Z$W)YPV_t;~VG%;klRth& zR74Mx7WJ!1Cj+^p8NjjDm;tAwK1YRgk2tw9#L;6XFxMGi%ly=nNTH{8NU=zXuikYW zO=_`6DuETL2QOC&_|x8$xx<*#II{Hv_-ilt0Jcrtfs(@d;n}04^Op@;%68E0HuuZ2X?Sxp!MNl*T2Du@Lz}h|Bc-QeW zZWn31Xwys=3*8Zp96gDXD+8?dsgIFhy$q-pV^<`mp?nzo5lpeoq5=`RoP=5s%V*O2NnqJWorK!QuzfuVNr29`7U=3|#)b-W3kA+;y(pixS# zL2M&vTwPyTV9_NJo1|$q#%NLLBz2z(MIusBMno_wa&)Jr@xcC*c>M4(&f7kBM%lKE zf_a92`p(_BeeVh$Jyzh+Bd2iiWQpZL8*3FwGIGmyxNe#{e+VI%1W5rC8L5wfd!V`I zxys!`Q4zOP3C?wM(uZR}ZK_qoyRHy6WH>HHuI)s44fWz!qe*ClhYQQHS1P`>liFH; z3>3@QHa)_*+grGBTZRj^Hn4kf2HQ8yWAiMjC2^>k+!tr&x6Xh&9$CWDu!Ak3noINf z$z>P{_=BbDw!_|%nIymngCTHk_gi@PwI4*IILZN@C`p|}^)D=TptB7|gElsG4&(I~ zd=*nu4IYienWw5I*x(3KMQs*0A^%jTiy;jIr;d6RuytXP=L_8W_)hF!-l6pr`UO*q zv}U>0Y~fhHfjb^P!31Eic_xQ_?c!bY{G-su(#i-2PmJ-z(LNqLJj6qXN7#3Cgd;0W zRE-(*+Em;V)g7;YY>4;)gx(&F2u=pS%!-i!Vj@=*=7nWc_&5Od(+_zi$xVD_zthn} zPtdyDkQ0Kr7YQ_odoyULCHqy|SMgV0J&VhBb}&y}b2mV5>scz95@+VIu;adc$2sL8 z2{bu7XObtyM>p71qX0gx z#+>(Ki2u? zas0pyd(H}6t$2xTsVt{q6#R4fxzqSQT{o#m4;>ofcmLuP?m67!L4cwf8(7lJ+By{L z8xlwLT5ynTue!+^-8h}5CRlNMbUkrc7TlUM**QaA`?KC3l%+&`b5e*!eLw6yQ+vr? zoyG1t{?(6e#g@6)Vc05{tYS>lgU(v&BI~+Ug}sLc=ycl>o_9WLd*&y%39G33tghn+ z_k04c+w)nJgF>&h!B)vbO_(Er+SVl%GxyN?R5g5XGMiWW#!kI44-O|S2 z`>kVGEnD0+pCZ?RK~5w)8e{Tap(p{8^ITh>Is>pJluob9?7V+!lT5sscB?$}Xos3{Nj zOsB_F_gpj>BEyBfZ{n|A`vGL*<00UcS_=BFfzpH2Nl(#IbkKvkKpCm&cL>PoYtHr2 zAQ^u~>CHLvZU>)v;BENgBX2;bL%s90!?xa7nn=ZonibU#cRM(`Tw-lN=`r7p@Spx+ z42<_w35-)BNL`!n;@pJ-{Xst@`30Gm=#AdVqOXIrjsy{$E8+ZDW9D&bOgS}r*pjki zCsx`VU~-}&e9MV!7BOaNCHA?tpHqF)^!|7O^#Yd#dd&hmXA5kbmCfO%sb?A4H#`(T zjlAK7pUQj=VniqAUp+9gzpP)ilwdK29o* zb?=(p+56JN>tL6V!c-z}71+CU9e(>;Z%5UdLsbqeXdmY`FbfuUs7!urFbtOa)G~aK z!06dLj40?%+vh6mnk&$2kpqMb_E?J|M~J=Kx08f8^CU$LJH@&rGl8`bniv$jQ$(dd z$pdn3BRhOrbewps!rN_d@Fm5Om+Zi!0T@Mzc2?osg$8C@Lo_ftBZKzo9`-bpN=?aE z+{7xZ(}6-|n6+(*+(zpisuF{>HN1JxC-AD>pF=tH5QsVQ&X*Uw6CQc}m%N){!Wln#*bg~hrsBBswK%SoW?5Gl$pl$wFChj+km9HR{TTrhK#3K{RE{U zkm~cHZ@(6Q@yJUt)g`k|dWa?|03j9-V=jsjfdHr{k66@EA2-iSaus(s{*TX()4}C5Eg96o zWMOeKq?oIMWCG;(3fk$>ACqfPydf5#_l~ssvzoZImVE8eV|e$qzmKimdr+2?W$C)z zh41jcsgag%6tOh@H8LQ5a|2xTy_Q6u&%3}K2VR8V{QCEyF}0Zu$%f@Lg_+Do%x05m zNH&)g49d18qW+#94#&v092O<|EJ=Oi+w=>@n4>-Eg0L>=Xh#{Cv+SEwhoS^94%F*W zs;m>`;d-V#`6#jSH-@1hx#ut{Zq3c7n@ib$Yr_hMmqt7h@VP;M3us$$yFQN@hc(qi z4oxD-N(|Nqc*_MJ$1Bez)rY)3PQ~!~ED86L{y<^hG_fs2C{2ue!!I}i(#071bHZU` zjMd@-y!T5#faUCRv|G|6D5G9Nl>W>U-|c(ir23pxL(*eTT7eYsISguu@5kJBV=i)VChWuoYKM-S%{rU#yEnfXw;z2O zW@n{yMV5EDi*%@G@L4nJfeZaLtBNbgXkR!J<~cZyoLs}+L#sHtOo@Y5|FDt%Zpnv{ z(ekLh;8ruH>?dhN8_sr?ViPN?eeMduHi+GdBh$f>h=U8lJ~^(>x^O50v46Fk($41Z z$8Y<3V=jBka*QY#umQ0=B_F|J>t2*2 ziXT{6Va$FCKK$e=mVO-p$|BpOguX9tnLD=TkZ{+c&+=}DuRZ)yeDJo{qc^*WJ6B}X zc|lvZSOhtGwJf-%>0f4pWRx~hV!HF($YXN87n&_I5^ONQnpm;W9e z)9ohOG-KCgfG5^d^2D61&uPwYI`_l4X7Q6K$I{_BaP|%I*(VG)D_IOzk7?%qXJP>p z2PF%ZII?yj-uuNjqTf6ZIn~=z0YCRI(xg6>Zn6MP6!U$I)F`WXm^d)kX*?%;K`A(G zX=WD^eUJ3JI#edYme**W?4~5p;$oOMCa0P@^hFLjsbG@CrD*f?tFG2_(~CDyg|3>Qs*1Mj^0!zczz zp(?8?S0bPLMqlUZKRkt9>AwPjQs0wF&S0%A0Zj$?MQ1 zan|S}rynXs)PnO=rS~$)t5+3@LR!_#&1#zY_lN>4(o3E}PSEpr5AI?sn$^a@s#yfi z?i>_8!`S~0_Y3a>t#*q?Qm2Em9gIS+p|C7F#in?BbtpLI+|6Peln}bNYg#LlEXR<1 z@vb~Eq(whlhhBTW*TBqFj-}NK-4MJo&x)!EYV=a#;I{4o{DW6~2wSJ`rrbB6p^-#i z7g{e^oydERhH}NvU5^hh@;K6l@%@hA7a9y9Y)$4nj{YT`v*7n;&X z)J#5?dK|A6SSjcj7h}xL=2)0kRCt#0-zw_pH&5K5G;&kdY_PSl-dg=|4N{>iMW{6o zd!RX>?r}M1i&Je%EX+*t3H06272@RbGO}z_aD}F#h!#gpp45FtosW$YL%hdvw$QZQ zXH!J0o^Y$(%<Wn-RWCdQR@Ym1W&Q<>=tVG0ygj=A;`T(Wtu5?F*>IBf%w$X6{h zj`lu&>T3Lt8{dj-YL7&+n>{odl+r<2vqS)LMXDl;Irm=mQCGLFc{mSP?(h|Npc1Cb;vrRMGg6AP!sZfc}(t&BVP=f8O;-u0TDxN6TFc5j=< z^i+EyC0B?-yI!7Q!WLbJitI1m(ZP)mj+4Gcf{D?~Ks_s4%@Q|0yahMj{WBO3*U(>I zMltHkloLHqxRr4&b798d7U@KE{;Ab5-gV7i;9tCBKgxA#>?N%bop9XvVB{!JG`8S> zeCdtYw|XV!7icsS^)Tu%=O^!m7~$Gx-DS;j{34{Lr#mwoj&Z@(ZUUP#f-fgCn#V69 zyB*X-YyaVsxZ{zN`0$Mfu`-@RyQAIql4RM`{W6ib^YJnU#)HS_Jl=8`ysXfv8)N@teS{5LX%q`?ptc(-~Pe<=r#J-Jln?k zTYI=-&kQcxvjrFKp63bWy>91>H>Q4EdEPu4IHU`=8dc+zaxWH{G|;)40~#Hat#zPU zMb)HfBXYg~y-e*O>)T^)M-%zwFNkjQ8Ew& zrrI(lmA)5k00UXz>`{%`fd1llHga7!4-$jJI`gVZ!!rP=BUsi%r`tuVu?3^i0Ebov zc;ZAKU%7V`&1^p?V!dUqjq|qkaQ==dyyS`?WYsyGhLUt>94?{dGVCZ`aksGzbj=42lwS6C@BT6SZ64MET ztcyOKg5Iw1@bT;LzrOMPXie|tE^9oghFqWAwoytsO_h^^5GzOz8nY6nRpOEUUt#lf zfveA#MgwOeTy0NozH=YGdgp#Ta$p^g9bUnalS3>I8ay7hkvGt8QMb6wSez%jr3-M( zf=V=1^=5#iJ&$S;D7jzYH~MtGXEF~mwZs#rhIsVo3O;qy0qptOqxje_ z?Z#AFCXPQ7pjxo&6!>``>HXI#aiRqbkP<^C> z1y!}WlrAMI7f1+dh3%gaz-TzawY$66y3li_iBJEqy%>%Q{F~pp8TULf#N5m*w@Pew z=h*2WYh{iirJ3A=i5d}5%7%`S4YDh>S@bD3x^pCv@UhJei(ThT!jrtC-&5@d>953r zq6*Y*OJ<~r%#Ap{3-<^z)Rq!Ce$8eH#-+BtBTog1?Wzs5=`}^BsMqIM+vRGmZ8Ban>I%+PxS$13Z(%blsO$Eyar%axlZiFX2v7C6$w;D&co=$ zC#@!=H+p@EV`xkxQy(*ofk7WH*mVG%&IuHK8ICcDZ#E)S5QRsf_NMTWZ@&gNKK4>f zQ$v78mz&M9_lIYPIg?ve&*<24-4`mfFhaA_16SxfX$%4pYj8OG!7+Rmd$%Q*Y`=Ov^XeSyVq3V)-brU4`Nv2D7Gd zhM5@|Vl2r~?j{qosFBLp7}_nyxj)TzvzVFd6dqfB*Jn)Ue_tdqlq%>aIK0WW=B7XaeCpaF^YDq@{1DHHdDe4*_BL(if zN5g=gG@&v-rox7c{E4U==w?T7_4d1gYEUx_(+3HqM3m*(0q!_>J%011H=sGS$PKM{ zJSuZeDUR{^LO~j7@|QIqvr{DfL6CnmF0jxY;D#%9Cop*?ht(3__tFW`tmMs9-jk-)X##W8)ES_S1_-&8(g|TGOSF*Uh_NCNs8d9-j#Hfi zPaKuJ^)oSvZF1u|i#@#LqBg$t&^o(DIS1wzJ#h|X(7zK&%RSGWZzuHhZctGs@i`Vh5rd6> zg063rXRGjV_v;QGAX5i~Q;=J6&$bSxn#w&1P@xY4A-~KID~nQ7rpKtpBO0`V>2`sG z$Jb<*nd|NHj1C3Z559COzWUHnROIQ=tWEMrM5EX;Ml~>FfY9#;lbM@%#f(xLrjh4k zjtpP0`C)9CI?B5}$!zsH;>KaSDDTbS_ilV0ZaaJfW;ac90l&CBY3Q?ct}w2rcMSEk z5_z2ZJ^G)V=LmSa|| z!wtWvi57A!&H#@b9!Ov;tT`fb>~ZTmuc zO9_uZ388ondy0_P&h${`HVr<_N3Qb7pF`*g)JyGIYTRyY1F% z4h#WN_@vX)PDP=rzlPqX_p67Y-hedf!qFh+AAVD#J-MbmP~kiKd-axqvucqBiz(6_ zn;h+I5)m|8l*56QL5@2gI(k+r$z&LIj=%Eit*FMU>=vXR`k^e(kV~Jj^c`~54ct*^<+a^k0iPsTfYGB{o#plTs& zPvgsX9AzW!Oryd)Ca3~lbnzzKaAAg}<-WRMqpA?wTgmj5XuziK-~?ipNJzEA!x47Q zoxmlFkBa(JTXU>$l`eB=FW`MQQli`S==G>&J7sv1%TVWLFr zSsP%}T<G?%~xPF^Be>?d5EkDXE6zNuB!%Mu9Y&&Tj zu;g;oseBpldE+@X9UEul|L+gRc=XUoJhnWKajQbUI%4FOajsGxYpv0VLsJOWJU(Qv zkmOw_o=DGV?#sG#OgxJ|S8XFtky8bgp-Xcxwd(RlHPII3c)8gmV{$_`mOEMd&Wf$z2#ZSF%2FoXxh4ggTowvN|N=w3#_#Z_^m&%Lr zDlXl82Y};NcH>Gs)Hy(jZp{+=m#@ID-1s)2w+GEONj*t)Bb_=7m{USCTSP#sHbHPn zry`o&qdBm0>J%_z#f6Y$3>f#|zt*k@3=UMXrHN4EoOloT5IwZHp&LPeQ%w+p< z#ny+|(iiTnny@hsy-(TPj$ixA8}aDc)tH)+8O1zbS0kmNZA%iZk7`a(32d#Z9~hTj zUhdk(-KYGpsD1#5-S-^fy zlOH(;JEu=#ZAd+fv>l;ay}?45eF_AZ56AzEMkUT)Jb?>0J;r6l0r}~9*#ON&^_iZ+ zr|x+zKL6lrFgrt0X_~4iiEa`&in9u$TQeGY>62)PPGvhqoN2b&*3J_C@sI50?%LLN z@@yTFaX={sP5je$U5a9mEe}e4!17kJQOU^;lj9>kxywZ#hV(nrH%%`!5(uhQ=x(gr2$K_GFv5ZDET0mA1x5x#Kb;EZa1iK44qp zz?3Era;ca+?|6huHa&ouE>)4)Irgs%vdCK{9y$I3yzizrp*gb)%@%pS+>}boO;Rw) zw3o$Myl~fH&>u?cOTt7QjPk90?pA8{KAjU;a#uX$)$5a z^>~&Jvj<*q!6y8F-?16x`U%|_tDs8*Ru*ST8c;FZC8C{|>$qeS>Hn*)1&hPuj5@mQ zz^{J!O*lNdf}_!S!xG)JExe~Try<89RwYY~c3da@SM*QdpZw4wUU=~$KijjxJnS$q z&|dx6D|g@*esqS3Z#W#$Y+j9y%epA<$ZB|_*D&IQPKr}pi~&Cn3TrG7Rd!#JYv-HG zST0S)_s5r(t;2k*((d;Q&I_{ORk&uzx2OY7xDfl6`Ns6Q4TX?xv6Q;lvn7fmkq)VD z#@vZI9FIoW(m9S_{K>6&{R#teFKm7h4Mr+4;wy{K4EoFnm zXbdz(pi5Yu5pN94HumGPt&ed*j2W$VaCu|5gFm|URru20m$2SXH3u}RiK@>i*T?tm z39>#>4MeJn#wD9i5p?pLku)2x9mCK6zzkl0&6YEs2mDkIMk<<-S5|oAHH-L9@7{`? zy(Nq&1zekG8W)cf-s@M;R~!eJ#1)}3`W-71t%g0lhUIEm@KT^zs(xAUhp9mAaiQaL=}yT5m?HvrWBBVMu|~#jaB@IpV)@$&YyqQxz_1NC{=jt zi?`wb{DEndgQFOZMU2P!ymik*d`%l&j7#jAeFEpss{h}(6RTPo@^*zg4_=Gk{Kgy6 zp4y5$lR0HPrd3miee^k|UBsW*xHn1(TKi~Rp;$kPpZ~!by!nM&rJ&|}48vR*$u)cC z@b7+X8)lm;GM%2Q3DwWz^m%W@>O1JGOiHzj-iw7~9jPg;iJK|tz4n@1VO_~_9I>hzoSGaJ;3^UH} z^~TjbLvOl%3x458<}g(r!O68kJycH2hA_RMtL9@CeO$WuAbRa%8UVJQ_Y&V&DbK-s zzxZaH!ewZ6JE$}_p4A?HW`m0XO{KF%LiOJ22@Edb<@EyH;xPW@kIdowt`p?{UNewX zngV;aP2(l!1FLI&Rc@p*kPaJ@8u_F{e22J6mp5gw=4>zt7>^V;qvb}ifR|$phZUaIINXWU42p{{fn7}eUE~b|8(laqqf*jJI5nZS##yGVm^|sH^zD;nk zmtDGuUwZd;T)gQRjxDWdvN4s3#WvmXpon^fX0?WEw%rG0RQ?!MLsC()sUF^c^J{VI zp_g%;1GhCH?r(+dG`cP1!vq1Y4ut3q6g}Bg${fc}t>Kc*$MH))wF9rXT-2WD3i<7@ z+pi4Bqet1j!cl#2j1E!tLY_rRMIjCl0y2&Z2C3w;?X25Eka58%@!<*SokKY)Qli&x=eYU472LP)Wbn*9 zmxrlCB$3|x)92zxUo=2}`8d{xl#yy~Qt=j1vL743RBG7RkBhhL1*@LzuVJY2MM z_Bl~|PB)MFk%KGv+TE*YH)%K@%@HO?xBAtBVqhqm^mf=l@s4>yUL~~Hhv1x6^SSR^ zw-Hjqwk^&vv$s|$d_up!PFXk#TkD!^mzM@ufg)MtI{h@!iFt{!V8$W492pycSw>Z& zG-il^A+9SLH`>A&{j!Pw_34M6bL3BRhNyv53qSXc^YCwfbQafl=QRG|+t0;Rr+LO>PtW%8+n;_A%l!&1l7>|DMBJ_z zA+HJ!esTpO;e^8!r-y_hAF~>7UhhA#fn z%XXtn1wCpEo~=QGXL8t{ef$1{xc~7LT)k%}C-hNtn=*W*YesAwaBO*m6RXrFPE_ky zA)F#|kbYM0tF;foW(a8_UX3>mL}pa156Vy!87sorF0sg&e#e`-A?4Hb-e@JK%e3=V zH;rbDL<>6=4@aXu0jw=+OozAvF-w_>USZtr;^Q~&#kH4i>5huOnYR(7IVk}Qf zj@T66?Tq!`IgE~b>oiO>`X?o%P z`%mICH|@pSUw!e@mI5|>%pG2!UgJDr&vHdtMSlG*L z6uGTQbBrUaSK(K_`c{nF=V7Wv^$i{FC$K*oNBIokXnXb9n;*el`})|vV;&`FLcPQ`_#8G|sXe}usBDx zt52T9Wix8iiG*h_@yj1{MY<0?-#6|)!9dQbg~_181zR4(_UVJH(os=N(Okr@eesQW z_|!F+n{99l^8zgtBWb%r>JgWJ>PB^%W6X30JWGuRhhKYs2iKfGhn<_JqVqr#+MZ3- zu&UV-*2DG5h|Q)7om}bTgI|0Y?WuW&6SZEnA{jo9|C6i$%A6+YN8^%wt*r#AtXF&t zTg9^7S_cV*iKRW8&SJKt!~y7had^@Zx}eG^aAFl7{QLv>yFYS`sC-X` z^sbui&Ib>nKOEu3SDyQ<*$`F?a`$5^Xf$S6tdslm%54v#)m*}8n4#6n@yWYhjz7Ko z6_{G+agGmh!^?M#uxCq&!Fb4#(_V{80=w8e*Tjzb9(He?!_Il?_aC{HMNgk?#HYhx zcJrN&aZ$_lm+wrxN~a?R%hmeBFWirP$13dD(ZQf-qfxb)^EOH=h?jC$#-l zuni#BvN~Yj`GW7^`tEog#hjR?b#Qc;sX+3C_*;2~lP8w|>|neP5`e}R#RQ@>$3pA_ zuiePQi<`>=8Cp_2;lPSL@%f5*juR^dPOgl?fVxIQI+>ZDd^DtVhzjFjg>luxAAb1& z-tzMEaM7*>c9rrZ_8QXD{qKI{2)=&jL456w1Gw*rb&N-S{L2qx!eYvp7CrQ zhKP?JS-~TR`)IdkSm&K-F5%i84|4i5O`>`1>2>_;cU{a< z?YkYEaS^8LoV^tACp!v-)lGLkj(_-Hzs~g=m+tQ1hO2krHP@eu%g^6BNet!`$usOb zdAQT} zk~W+op;QXlLDd)|ZD++aXlr5@lyQ ze*JTA!xMvRFgr_=Te=wb*YLAHx|5Ngh}qPrkXK|Le^m=5gz&vHZi}+y{ki+0L-?ov z^P8x;TX=lZU61#1>w^#DxBl!QTz=jxUU&UDc-1w#aM8Jo6EOYVPd|X=Q4jMoRLhd_`z51p^6^da`yq;a_><*@c0@|tW)do4tl+aI87&-cC#(=)SN zC%fDqjFcb=SrIe(7(_8!5{{r8)&icJ(X9!~EnQt#)VPTP*opC)g$2g=dAvrjF zbjVm_RK2~Pn?wU6pj;D$&;^>mmY=4_YpkCp#MX{KE?^RgkjxMk0& z3KYpM`lb!BU0#ZmJ6dqqtaTqElRi7vP1*Nz44$cA);BmnM464_sz7IY9`FCk34G+n z{TPo5tPCo&J5%URZN|cswQeVXP{B1NlhHK`^m+xB)-(M4uiS+H{QtQDmz+y!!Bmg@ z%=-%Qrezu17d!1jB+|!gxNPwuZp>NHez;m9;49|TI~{>XGBtP0Es#zYqvD2EwwyzZm>HVV7iy%$SUyn{>xYK?|1t4!)e)NWFnLmh>s(QXR(RRx7pN9Z-%=*`SX zKr_oR+ooCu8Q4csnJ3q%YAu61+#r{v+d@tDIaj-BA%>R`nGS3yRa`eQ9VuB+cot;v|{L4LOK(7a!2mtp859Im~h=x0(J;QR6YS z*=ussSkaRk$hh}RI}C>-0+1%D6;E;@Kl^Buqc@%5#0v0p|LyDeg`c_}-}mARo-q*^ z;oiOX6ozFR-6r|$8`w2{0GI4IgpYscHTd%0mt%T{5TK2<;TV7Am9u#D)!UzU$X}^} z{kfa>;@|x49T?`DF+JUrp?hsD&f$_wY4buVDM#&#A@X8`iqbvHf;l-kHMoNXMS7{8 zncBCLVas(A(kv|WU)2J2LkjQBF-yQyo!IBg_;~64PSj{+(02XcN+n!Uw5JhC zDKNafZEZ}f6NHWL2u(m#9n)D%Uboi|L)wH=dqB7(&&A0l^&&}7h(09FE*>f(FzObE zF-1^iE!Jm}^h@bGBW<<~np9KFjwdeMsW3e~jir-geDL%4;rm{E{xdc%?Q3^Dd>pNI zM{@8-V_bFqop@~dLj1-}Z%5uC<1ojtY~Zr(L;UocFV<9r=MVDBA?x|*mmbDSF^kQ! z)Z0gT_fwt{HMSLR9UT?&l57I<0JKq2+scA+xU3wLfUVv9s3SBpMJwpHf_Fnu&EvPe z{?>d<)19q-Vj9#^qc=zg9r_(IL@ie+jZGy?JgMc5ZqRCdP!u^2n$j=%!O<@MmGE;d z4zWeYp=ENWpX1~o)M9tBJDSz0YQS4_LFB=yd$j3`L=dsaCiIl&&SLag928;Q!%CJ8 z8LLrDT#XgH>E(NPZO_CYHvOMQ{oMD&0G;+MZ}N0=71v)nhu^*V?KnKT5_8jZ?+%*9 z8vge8pTnsW7PWmo9i_HKf8)!~$1RWTW6sYrhq*FM8k1QbKCwp1M=EvP5H-1~8amoL z;FK_=updkSrn)$9mu3YA!k-TM>T1UpH*F{5GT9!j| zmpF$cSj%>jRhEe)3S}gDg+@hQ2r^D9)=39NflbqG_Gj}Io&hd$v@y@{&=V(d=wyM` zH0l32F4#K2k<}OCOOMQBdb-Q|zPvWXkH4aa>o2yl&gU2M(_u?`*%jNcY3>k)Sqm*z zUnpHekUx}V24+X^Ni>yfLDVBpM{Fj{MjUsi@Esovsq0;~g*YN-j}Db+EQVxz(?aUr zBEzXrH<7~I0=d&&t_NV|AJUOOYW`Lo=^=9zk8 z?CHM!;1c=;x%k>_R4tF@@X_0LpxN6>9X2o+HE`bMG5-3S_ng%pMrZrTRChjS%M4y{ z{tN~qG7?pVQPC?oTZXhk2<&ZRiQJIE7wm-4DfR3*qE?rY!I=&(9Rp(#e1wW`pJ0Qf zodyx+%(?UVBdHAIEC!cD9tN1$dz!gS&cCLyeH#=;sIzn1!ichYO<>4l`YIh2DIu>S zPUZH-ix)}pr9GI_-KYYX^>iJ|UD@B#4v9NPbCI{`?-JUk0npSUkhqHDN-8$#TJk-~ z`{wdDHH4(tr@(8jk%4f}wAMgWrV8J@e+gMr+=S%MUl~thxmskGCmZGCRs8*T?8bbL z#*aQbtw_$+Q7SB6f8AE(7--8%QsE>$+gcGCD`MM=y={i<%52mobpJp)Lwf8tT_g&c9mhNt<7gL*WYKD8|t`Yu^w_fzTR(<@DX%yc)yj)f*#RN+Kk1@DZiVXK~kbgpXJn%f&Qja$`XxA&ZF;>r@5KaP`wJxOiJyj+!8!$iE2=3 z%u*lMT_6MD&a~3<_J>cQs9I=*`e-2nT1lr|!{7aZo#=I_zW3QxeJYp6ex~K4m45vd zSI(g-`kWRa;YZKaqk0l0FCn$``w{6Kb#^()+~o9+M1+&Ts-d-d?SuhF`_axZhl|ho zk9e5&T#7XZQLz#gI<06_&B(r^zQ*ub{HmoK+ae5LM$M5zBe?3Ovv_$bwAlcWO|!gh zE)nHPF;cP?a+-W$y-q$bJE2S(1o|dRa(8-o9>!M!tLp`3+7&K4kH#Q9bFNI1iePc~ zBd5@6(~MiP^(b0R&(^@wsWrUgrCnTo{+x7Vcowjq`IM{OAoa?!V$Wz|P9|%;?!tL& z>5Z_~A8OkML2{d1;w!K$NF{%pJ5-J3M3tsP(_bc(g&L<%@GrfBsu6-`+NdnCJ53__ zoA}>!|B|{<>zp3n9eT{2yCUL6^~-Of4PLfR$ELr#Aef%T7L3Px2qu(!Z`SuZh{I%OT%kyj=hVXPS3>4|9&B(3y9l|gC`j_$P zuRox%ji}!~og-6k<6N(etM*Ls5Isg1_bgGpiKK?A*cs^vB9I7cH}$J<{qkD2b-uV3~?^x+e0c;K<4_{Kd) zaP!@V@xbG&+-Lu@w;aHp9SgYPf@j_gtKcNT4CiknyJ_HpO0g?*P(i#_#78iZl`}d6 zHz{zpTrlz$#cTuq#I&mr3HAoBw+(z_TQ?6ZsvF)n5*Nx%+bWv8Lv+B6SL1FmX9;b_ zlAC%8^kOzx2sI+H2lZ<=fyHBz1{GEg(L|b;4i_r)&3-kh*!PT;4Vn zS&S)EKg8N^?PK?&-Cg8C-{SigA31q{e&^Fi z@%gVkhKqK!@uG|8@S1C62Je|3pTFf%eC@7-cy#{~_8wTr@s$#ztc7;FgYN7irWZ)E z4)ITa?H2snKYk5%F3vnHBB=BksdYLXckf+6n-bZmWsRmWCpt~kS|&KGKd+j2&(DAt zyTJll(p=d$L#rdd|2uv!s>(5Y!JHg^nZju0`@>NY2Caqe(3@s^W61{f8oWEam`fa! z{y(Sl2eGHdanz9*@i}*geycB;^TkOO;-PAy64@kl_B&gvaQ>m-mwm3mFzRZ=`9bo- zm1e3U&Gy>3?U51w;~#tnM^3ECa0XZK{Z#5=SJsF4h2Q!X4zJCy{?G1DzD|VF$$l5# zdbEl6eflu|<@;{IaT=5I42^F4&e~vz|MdGe<99#1AK!YU!g4i->CM}*d2talv$JS* zdYrp6Gc$uHmb>_8zjhN=*Qw0%so4aj+7bklrIkK@`H$|vHy`Yy*P%8qQ9>I7^Uo{$ z>YXF@@1*Jyo~x!&i@hM%krApX(#GqgQd9w(KaRGyB22UJW3!CwD58FN(In>W)ux-ay%*@T9Gd0Z}CGyr3njIp58MM1I zoV7VWKZoz^tMIRW{ifjSKHZ(oX^@lac2sbJ;7|YJjrhYGm(Xla1qtpF5Nw0w`_{EN zY)Y(bt84rdxxc>Iwf-b_z{H5BNPIqCY(rJT)$O9LWHR7^saX=A2zLuEUQP{=e1dem zkweUscqa!Cm>%wV#D>AF;N=x#$qW|}VDYt>ENV#kSfM2gxz$9{H`5$JVw99gnq`=t zoyPIOG=Awr_v79F_OtlHw;t2Z){+=ke;n()@Qc5DGd_FUGG^!Ix%x{goJjIW>V*`k z6ErDtk7^lOpnR*x4xWnp@-z=y%cBREu{vy`-Rh#%o-X=${$-LRv+U85l!mzLHkUH;dbigu z72fpku=7byS==sfI@tPRmRGXkaJ`ggnjs!tuZf#9+`uwXwYggk%ujblhETx2^TBTa6sQ^Xa?s;V)wSmM;MF7aq;Tjd~@!)=CPEiAjNsF)K?>^L`fPz=oGDc-H>prNB6cPTxT6{nc_FC^wJOH}dtFxu@@i0@&eYPb3n6~DhNyxFhWp<4Z%7&; zA%hIm`nL>FqcRJhhhm!m@&v&>QO4|5J?2NY~^AkRxw zlqXL;PTNy>@W4P|`}7?$0mcs<95HvN@edwYQiNPz{3~ z&Sys>!YsQ}Lg2o~f11D)Z=E`+e50Uvw&&#FBts zQ>qy`IIq2{1VL`TA(tn_s1AR2w zGoZeLJTjG?2i7H8CQK6NWc9Ubp=!$b*k)Fuoo&Vc?|1IP-#psKi!R=b+aFoNhyVOR z+|$;3 z>#~r(oMqlbG45k(nrerq*>IdDWFSt@$lpPuMfI&Rz(P9unL235pcQIt6gQ+spvZCX z_$n^hCG`hS6aVqVk#(%BH?Tlm^eo-jrTxZoQ+nM%&fy(e8L4RkiFTEtwRtnoUF*ye zM99`_B5%cVh#YHg6Znt&G7XKR))NeJR$)V6SLkHxmL z=2&U=f5M1efJ`!gE#2BC$b{*1vihJlS=c#}YHW|rJzEr+tgbRmve1=?#u;5ra6r+Z zi2@_q^N|E54*{{AXGk0FSx>1j8zIU@cb};Dd+EYN7*r(UbkxS&>W68=sY_jh`;k(% zDwP~_jG^WAe(63D^h!6KJ@JsU6ejm5NrE;WJ#Y%Ix=Je0p6Vfz6xerog-bd)=r++X z)@&xjBl?59Q#6BE%TGn=<*06ljAV{15)&Ysh}td^Q8&3|b8a1Sf_fEre#)(F7hI*5 z*#m(Mai?pSBNpmLY)|xB0UhkjICaP~IfUz6Xg!>zN-68kj(_(e1>1# zIFm%;?Ny>+ZXs$4okyO5GE?sk6?vDGNvfV5>e_7Fk$Hu5oY2cSqSi?#YG8Ah>q_SR z?me_7^ja`BgL3nicynK*P_Gy>H>Md_F`+Y99SSrn z^^XdeUziw0TCDA)gArdGvPS0?>Lem{Mk38rZI)N9ggC`-Oj3f7$oa*i4HXCe=`ATH zU9gDH*narNeMj;5k!9@OO2zX}?I0uV@X|VNx_1@bsd<%YA_Zc$ZQ2|lRGl%{q|S+2 z%5WuIlZUJ#ks84|+6encWLfH=van%ATXM9U9&t1T%^>j}D-UDOeaA)6md zlRQ8ok7`E@ti-@tS~283%(kY<4(&=T3Y6ew2;KtYTBz9ubgo3axmZKj5Z$zNZSf+> z^{mVz{wwwb9zs@5nWMDq1&wQIrY)b+Id(blFcF)TbXfN0O5#@xu$ZU=QF9E&2>!LT|9I+b&Oe*KaX$ z#XC|{UzD*$j&1O&6QFI0sXS)4X`{3tJt7O|GZ^01zex!xV)bN-b->M3t@4YIJ#&;~ zIBTkrewWIyPOgn48P2;wIq}IMbsBz)222z!`o8JDp=dc0PvE*yemPH#c}^TbSqg2C zS9P;F1<1s^PGY4Jie6g_c0*Q^Iu|gOk1;(B zbURHR0ZYj5J!96rKvEM#C25jtl6v!K2MqDmTRJjZ98L{2qzes?by3zJQ2$lWOZ35u z#IHj!GPX!$kvVKY1Pb4@CLlt}NQ)({slp*u+N6O;hdzT47Z|?HBgikoN|ZULY{f@-Z^X z%^^cuAA+Te<;Am+D?LuhFONn?kzezUlEgGODc<03X(%D!Xo-jvurp7M&#EjF7^g{V zHiRzaw7P5J?sYl*8y-&TioTw3mnYe`+LoKt_bPXCUAv}w`&^qu(`3b7A?F7$-EPnz zYMx0OCdACn%mgEoTi@xXOYkE~1xr>FvEz-}c*juRSwm3Pr7e0H?1@Ot^()!4OQ#1+ z}zp>ubK_}ss3P?vho-f7j1(Wv`4pWK?kX(|SN+b3_N$CsJs*y`N zE$F9L=KT{6W|3;iHr2c$HpC+{vVc_Nf^Lv>O&8}ih4dUtV^Ec;vS%__C};N0h#F3E z$w*jqjDgs>K?@3NhzKu-dE@MQCI!;einO@ab&eqB<)7E%ik#$#t!6{8dpk!lmK2pV z6@vA$*flrinWzgZiPmXw>@*}Cc(r4cK_se`Kk2E7F0p`4r!%bFhS-a=GRYH^PtS@x zU)Bm9SPCaWhJ7L^CP#> zg!AxK*LRyeJWfA0j5HlyO()~uhM1M(?%9(TJ=NGi_}H*sp3QRfBW~Kg{0_wXdHb%W z^4HEc?ZQjnT8BW!QM;D2Ax$##siGSCLLpZXriMfWk3%1iemX5u2_U91M6MCj9(oqoqHc{l}YE&z1 z@+PNa^Xw4=N7CLga`2eDPX9=8km&5@MTyVhZKyB{E5PY=%0(T{nO8=iR44KFLflp< zZM18<(15<WXLEssg;Do8}o*~BPb@JZ;W9juFeZg>`+AtYz5&+u6 zF~Qj&<4j#}-M{#kkI)7ADp{Nx0k*bbvHhL`Dl99C&5hO03AvE0E!<00p7fDalq-+| z4hBx+ktU*F;NEUdLKrpWf=1N3ML;8}U!uCH-Yx`Sq%P^f3^V&opCd#&ZT)qi`sysl zhlF`Jrl7`QW~WVR6hYc}i5~0=15)tp`Pp4j5(PLqwbcM$C&wz$8j49GHHqfGS!?0r z0Fk=P)t;$8W^{u(7gktWtvpSnxN*?TZ6LYWir_1+11yE>Bnrz^8ZTw)0?+`ds5e0Y zo@h?Ttz#;Pxc@vry`&=WQl7p2?e$kf&`2S1ER@e|R2T-NHWfjFOe`f5qK|7dok}FV z^wf{iOV?+JxKS&Vq|iLYu;iJ;vm+481cP$YmUlhUyYZt9B26Q{fqr@=SKdkzAn$xx&gab%pTRcz*fDja4`q$9EIABenWI@cO5| z*svcDZJ^er+W8wD78vpBSiD@!%P|PnOYB0R#R7H#as7sPm*_@o@ck!EhC5d;BO|$6 z(_)^u%19u_NhQ}_fFuf!1h)k7>A&d3vS@5DUIWum36ZkU30Oo|r6WGLcO3lemkOff zGZknF5yc~_%n6Yx!KAL&iCa3fPgNkx7XGe^o`2SWgSNrKSfu6qL@LC{AzzAU3CI+) zBnw*M6?1mzHE*B6ww&G4icLHWR$3pn={qQ(e zIAf0(s(l=07z?b4?{L2)0ZiG9X8_?jQWYaS5=W_>X6rmNiCSuR^es5UdN*Llb&ia< zjT?E_C_kvK{|7j^+a)#{{iUk6UC^F0Nb?j78{&aC%#HV%itIguQCHKz-h{+)Oq{wx zkWr>L4_zVVW~WBtiBSqxiQy+k50HcXL`^?F=(sSxpDf_u|NW}_%}e8koN$_j$AqxAun z17w!eljv^2OBBUbtnc*C>ECm;qv5*|>rD@g->b2k0W#6J8Gq? zigyfpeDtl=b|j_H04wd^q8gmuwXPC4z$R*gQNBo&BxsWW&DK^kg7kC#cLG3hqs%*G zYm-CL8>-XtdL$Cgie>n-5VbXRN7s~WxNc*B*+vBF*vtmtPK?n2OK;4_H0~JdQ9@7l zS=E^kR7;;$!5=|pi0Zj-jcIuUI(}qQ)qgkkpz>=n$xhLAvHM&sNuM=JsT$)6z)9P- ztPdy?LeA9*F~HW%vlV6Oc@(T4p%x+08NKqL-{gyGWtSroC*(XYOqys3lGZt%&LCDc zQkN9&lF@-VsL2`@raGCs+4#0ry+STxpL&@{%`Mj+W5JnsHpSm)1M*x7E`|c z8luEV)?Sl}^yl%V6=heBG^lB8ic5~mIu7FvDtS0p9%%!reKE^Mu1^o_n(pg$OS!ap z7wRJVw3iJAk`Ytf917W(zIICy%*7gw$$VRJ)k4X;(Y z8L~=QXU!XBvj9x94Yzk4L~L!mAG-d;qZW6WMrTd;T4973Rgm(B#c0UGB(j$Bsw7gCRll}hlN0Su`pPp#kq~Zb~OWkgB{mT%?bkABk(C$^*QJ;v*~E=*Yl}5%i@EzT(>)^alOHj-B;FNi!sJ!3C%c4fY}8ew$V}@* z?MDbgwM0HG_RvgJo`is%Bna*|m(*vz=TM^PBw$TFoPefd7EURgRBt??T2h!(P7+e( zbwyUp&m4q>Q)#kVXhYvj{UrA6PRi)@H`3YtdMAj%wk2^g#(^3!NwTikx+FNKX$8rv z#;vU-I2^n?T(4S;`dl4nM_^eCGp({3t;LSX>K5~&)pL&+-PMP%e049P98cTm@Zw5- z$3fSrJ>VXp#<8QPsQ$28aWt`>I&hD*RICh)wso4i@2>X)OzdMIbx z=m@;psgs`Lc#anNlRMnv!*{}4-g1wfq&=Z|6(_F9+;u_mPu#C@efpEc_C1hO5^~F$ zlt|oVU}8ty;Ti`RxDyYIT`O`cn_(p?M_mf|V40y5{bj{Hbr8GO;VA0VPf5^rQgs1W}d3Afdn+JIz^niBO#vpIu-s~jd0tvs(W#`?y|+cDoK7SUKA%pyFe zCOjw7&gWQd%%!8!E6ggUUk7!?J$y~(r2A2&AKEu8G?+?hOMgx!nO72$<(fCi2u!_$ z_Usdq)2U@K-^@Oh6nUQy6gj?0C*J`ieP+tY?XRA|Ih&iK%lB*vidN3U)kp=Jn`*xN z()qRi>JkR)C%A)}Ja`R>T~H?;lS7IpfD^3zP&}NfA5I6ffefk7-m1CMYkT*krAi2} zHBY{VKpTzM3_>R`7Y}4F;T%!cBobfE)}osin>Se%R^;Ha7U@J0IHk*Jn9$7=71T=# zd&X2^7)LZ!CsAi7^m9Gf#jGlx1q2hOLFYtQIUWAG6ShFeDo}z6afs8{b&ijo&T$}3 z37p}b>~VT+dG-o=+2JN8&n%+($$Y8J`h?)u7{>PJOIqrozWvGGs6?*6n~K%4s@!-Sy_L6qcl;o+dI@l!F<)hkI^?VaO0gf za=s*$-C@sTppXiY8W<0jF<3c@^?n~OyLf7F`FZm_pCn>>j%;7v=>3f!xG>w?St}?i zJUDd-{gtDflP>+}Wwky<*P~ZGdK#WD;bIQ^oUSae^5>*Vd<^>NBbyp!h+MmRB)Sdc zZH;Ks71j5~WiLfB6V-@xr^JougjW2(e_v-WdztSRlPHH?<4RUo7l*YHtJ?X-6l1!u zNGk4zV@U04cmt$swZyh2pB0d-Ya+KNkoATVc%x{$ogLQdQaGa1Kr)wAAq>)&ugMLN zOZ3-{puc<=<8g`k)>`qNx1CR?_k7M!92TZkSr_bDZ2!F8SB_%!_&$vK zr?~2i`IZ@9fg>2@`AD8ciX&ud3Pl7?Fftvr*SK^b7Y#xML<;~*i&Z9&$TpMVW(KNq z4QJ5C7jcyd2MW4nDgjI)m^4kE)ETE@9Ibs9V)>X=5^zQq057D_TxyKV=???^@Py}zVN`> zfBVxzv)$fYo>xO28PuS`Y&?&uhn&agXkwarO+sm*MfZ#&S)jPC9EOCQ`U%mUW<}F- zB$-&6b?PONQ82);Kb0%a)@%cj`6sUa@^;jFR|<4 z+R5_oylvackH7KKsj{kC9{D#UfH=IM82s*^-QR!T=MK%HJ(sts+i+=x%A&(o+_1^b zV&aE$J%0lBq;gT(Z^wL{xC6RLQJBQbB%T=+bpbsr5E9do4Ml=j5A3U+OKSaqJm3}8 z60NJI#^?jv`Ss5Q5nOJx)>B(FI#RLM$L-QC4Ozu?L^sRqH0I#BnIk9{F^npq5xmAQ zGM^plId(+DKx!%xk_xx*uaT9(TFW{O4s{9OmSauS3}(^kVN@9L%K<*@DI3F7k1m62 z*@aK-VAip{%yO))>O)q}2FZV6T=s5$X|?IfUAS$Y26OJ4y@p zbVO+1m5`2yo23Z&_=Kq@2F@%rtqM_RMP!zbR+gy}GeEdj%#?-rm8rLJ4;5_!z(bJE z_RcJ6<6AnDIe_2JQ%T1?t+FOY<1w=FYIWV7&fsU?ana!N^EORW58REA|Fi@UH<}-( zJhi+!`t(hYRA0UKRQd4Xs=Yj<#@p2NNv3&}I`=p6-D`ltbUon?9uagmNqmJZ(9KpQ zJL#QZC6b~1G9s|utKR(8$?p&mw0TmIAe2F?Ex@V$I!N0#idx5WR}EdVJtH+(vWDe` zVB%(U(k-YW7XJ6@gAz|b{s^O(OJm*K;&%-OwjOp+aLYE6mQvspW@jlu@OqtKt`xV~ zAm=eaqzo`6BGS2~ z4uY0Fqb$FQ#}df|d8+)E&^e`fkH^En{rO(pM>a>3+J|ePo+5>e%v2K*OcPhgpEXdZ zVZ){+bxtY9u3flvx1+zBxg?t~zf?PkCP&g*A|l95WICr2t!(_b9HS^{JtSGE*)Clv z<7c7ei?eaUwsE=yFjN@~jL> z*#$yont#SU#%bm-{}7DnJ`r|ybee56X)>dethDFFc&vz@@p|b!3cj*4MpZ8(K!RIv zt?KnzO66Hqlm)iUw#o~(w#zFnSin^mY^6zpQ#IUu<^;f-rIhMg$`KUD425DmULW*V zr+Rbqli%EECW`4F^`n;e9*)Kto_o4=Je_k-x8~E$d}%xnp6}_bIeVTw-_u<)A2#A$ jM)G{pJk00000NkvXXu0mjf#I%@D literal 0 HcmV?d00001 diff --git a/frondend/public/favicon-32x32.png b/frondend/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..ba1a47012ed7b17cefb834c9513cdd86e41ac6a4 GIT binary patch literal 2444 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 KMNUMnLSTa2w8p&v literal 0 HcmV?d00001 diff --git a/frondend/public/favicon-48x48.png b/frondend/public/favicon-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..65d0f643c28e8dec7f695501e796083fb465204d GIT binary patch literal 4618 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 AMF0Q* literal 0 HcmV?d00001 diff --git a/frondend/public/favicon-512x512.png b/frondend/public/favicon-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..3e04f59e84a7f40cf42eb25b4a214741048d8f48 GIT binary patch literal 265899 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

    #^=LBDmZJR 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

    IH}y4S(o4#=wrzhwnbtGWl)a?Z_|_rfun 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

  1. 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

    l3PhOLuk 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 z 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ð35k`nd|>{e_8i5KfBHos_GuN$Kk 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

    KHlb47$n_~$R(dtdcz4OHIr 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
    ?^e@ZtH47Bd82s$$UYI0SYIHxT3riK-Iz$;9n$U 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
    X3h#_Cx>@XWpkk{xQ3>I`j?@*pvDNo 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

    Ok-J)(zaw&n}~A7e*i@2x5=uK@=Sypg_j9<+v_H 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
    50uMlf>r43 z*_|aCm}zeI8x1|tIREbL+YcVS_)vyWslSJ>x{m>y12ip@F5x*y=$E-5;;EIe?gonk zbz6eXTUE!4n$OM6Q+3Ymu6P{w(H)q~n+3**=|ZETv#NhfWWUN~s+_p(S9cR28EU@H zV6dV5OyNPO#IWKNyhF3FGnrM`(js70bYrkz(tE{!!*J1Tqj9 zb)^KkppS9vU7R3PX0Bx0#Y4ZoT8G$mA2SZfRGcpbG%|rQ;#OwZqdQ91Nk*$?oJ6nO zu%7jctjv;iEoIk=mdzZsP$1Lxa@b;(h+J-*y|l)FC&l|v;`n}XKOt~nW-$EfwS;wJ zdHuqEE^(P18x$miDNh$d_$Q+91U-F4NL`qlVA1@~llRd*8_Eli9pml4U*^o?h-@w( z%>VrNiOwsGDccbau!yQ;PUg1J=Q49dXDtefw_rPbWWFk!azbm7 z_CrSrLo*{s1QCW^Wqw^LM_lXA$VJMBU!A{bky!E*q($_Oz>JvkUgg7syV0`r(=S{X zH&^3{k@+|8^M*_%T>!q;<(IqEb z*{lGY1w!sC%a1VhYQT{^{mvrTJ2 z06`5SI&9xuAH$)-2gMjMEFrGcu=xC_miq3B;_ETwW&HRspcJCM3^o4uE?9}YiFbzv zJDO}_B;^LTWr>h@|H*eOUTocP+(4~t5fUx2|BO(akVl8^^dN?E6&Qti#b;7kPvx$lT``Wi3k-#S5Ei5G`sJy61_>l}Ey~UG!2RFe$h!N#?fE+T>|*O7N?yjPWQM_&b?MH#)xhS? zxt?)9oQDe@%&BC9vpX&e^bD1VLcB$)=$j#yE?(aLOC1Chks8bmzf^C3Q%^07WAZ=@ zTh_Eixjpvo*JLlrOos9+V7Rl7M@DwmhO|!!JnHW9{*)ftkf8DBoo#JNMT^fbt9aVb z@@Cb(xy(J8JB5P~RaQ8L_L@0@&*3@$dHJNiT!CGNgcU!o+}oS&$a(mj1{m^aNe;=& zV+g}Yaoc1|N?Lc=Gt{Q%rk?f(evvUwoTLpTb?j3r^jYIAk@i?u0$TvCWCW$;^lccXTzal) z5BK(;s*}YBOmUztBmP#vSUF#GQ0gQKX z!a^Y~Zdlw(dY)(K_z-+S(CEV@#F;9GL< zUNw~(f6H;R=zMw9-}~Nvo35>RL$Q5L=9_T9vs%;xH<#4ZI1$&KeRBsVzd+si3Xay&ehzVJKfblD271QZG)uM8KXzFf0l1@uLT?$Avp+1Wmxh#zxQ(6!{z z=dP8D{zJ4(m}JQOS1-{>ki|fr7*JP{zdx>ZvXuL%S!MG%p*s{4n#T(bFG$$1@gfH# z%1};BG8Rz?S++$cPYHoijywTAsnM&IQDdvuJfTWW%=XHV@YJkG+_1h@l>Q`@a}CDW zW%&4#tO|mH-+jW?iIle-UuAdh$nd2^$%{k35-p$z)u@4Fdi`7t37i^r7b0y@ccG2> zM#AFg*%DdJa)ywyJ*OQ|kNS>JHi6YpeziqE;MMYRl0S&0635MWhE1Kt_)T;w0z@z_z-k0J>lZk4F(^Oy~!X;gn5+~RG1mc=t9a@ zrRpT9T(JvJ(dbxmdv^={NGY`|Z!F5s<1^JeWE6sIM&y@!+B4@z8X6eQ$?joT?zXF@ z8=80PA%h;ddihmQ1A(UO+I1bg_bhqC>Yq&~ir{J06D8>}XO>@`CXS0rXXoX_UDK`p z=kEDgM*`4cVx-q zj66N?l=Ic4q2C9vpw=3+ddaS5Mb2V@L5L)(ljV6Sli0zq#JGZ_z)uS1^eJEZP5+k* zz_rLWHmNR(#vOSf9hwibPM3Gb`w@ebg?uP64W<*MYg`{(Zqh_+xev#Np!iW^Z zNHDq94@qxGETy1M3rWvuy!B)6CIEb-LE2Hb41qmwu%JL5kdKMS9qM&QnfaK5vP1x; zoGJ){5)_q~&9_Ka;f75Bo36PfR4yYnAhd9r&v7=r{)=FNJU zEuGa^wW*8rI1>{%Z^^VIU@8U?B8U5RQ6zctU|sV`5}LUhMyp)o{K7Bn0ckb$Glmyb ziaZ{ku_*F~M>fS%%-Dr?;Ey&Nx;eUs?kuSyOiK%GKx|*UBvITWyzTiT$s2k+WcEWZ$9v4Q6WxsF2!4?_ zi0G%-gn-LToXigZ+R0;KUI&!~(#rV@7O)4^`*Fq>L_!3LI^i-@M7-WCr~=86r-zI3 z>e}3iX$~M>!%A}ZJo4^mmdWz&5E)WNjaN>2uomh;p1Xi!oDlX`^D`1A9-uvQlF;MD zmTUlk3!_k~O|h^r#x*U7V--VT$D8BqCFi_#FmiLLBsc&kS*AJ8{kCZ{PXdEeGr!A; z(gr*V^gagR-2W5bfHFANa@zM0w2>phw;l}|;ecq%As`S5#|^4Hew%6#5*crW%+*kD zj#!Rf9^&RlK0?4Hmo6)R^F7gOyya3oAVaC^V=cU-#%`*4`Ki!h9dwt6Jn4G@qtQcv zG6Shm~l8aDw2fTQBbcEqg>tGX5&OoJ(ISN zb)~r2qDdC}9FA-WkOYS|Q>iP$7^~X!Sz8)>Rd)a%r2i`nf6noHe0l3cK^C|=Q{jx_ z-1>NAU;Rm@91JM?q^462>$b)NE^-4W`Bs94sK9wlQVD0W*WJY!#N6Cm-01`)iM>rD zL8kjDSpNS8ISN;awI16xP$&h`>R{neqlmQ=GSye_N5@LMP_`18Qnu2!kZ}e%e$su= z&LZ<#Ensp0eF6fl^iARf$YESuPy3z|B#483ZLere%vqZx8Pf@iw7t}07b`0>-2F_a ze5vdLDM`T^qk!ZHdn;sYD@k-_o~K)A?(ySiCET%?#CYu&!+mY1n@Hc$Fty1ct@~au zq^1A?_20g(4^>UFy%K-3n(T42J}_ZzY{=S#oT~Ma5m%9de`bV%VY`&k=R9(MZ>wGa z?;_+^2y{fwL_u+h&bV){Zc1=iG=oP>OathdhiaH-wA7*YYNRv(d2)D#T};pO!F*!j z|Ft;8k(98h+0cB@(%GE!W?S&=(uH|Q@}w{!ITcfZoFEP-0Z0`yS39z5Ix>1Yxi(ID z(fkrp$B9tbCG=WyuqxKCnMPFNy1LVMYnkpU@3nE_1fw2KHxmT8)@TMzZxmPRc2_u| zz6&C84_b17;F4jGU?aNGwx~z53z$*N)#Ux8)+R%}kfg})0}Ro?f+c@#8iOT{ujsTQ zTAF5)@H2OFZK=F~bf0y>D&E-t!E=X|b_oldV~phPfAg+DNwt+KZ*Q;<1VvOB(t{2;p0ulE%}8PS@4BtvX0<|rT)IcMdvPs^`7{Ov2`$pS9; zZx=c9C+_KON`HcEI9yVUkqPcn`Kt#qZeD2_=2T&`D)*!)mTzXWtbu1RJ+Tz)J4y8B z-CD>IiEBFZ=2#8xv04-DT!Y@DA{4hk&;oXxZzrOuIq(yvl0(ity;~t_DXxWThy(0> z74x^)Hl$@x1+qU43(4P|k1kY8EagfgW^b>zAJCQmuCOmN+Lp8RIjU5nE$`Fq@ z3ojgapOYHD?8Ok35EsG_(5fU*By~)2S?WL=N9>@mbDpi&l___G4@xtu71;>W{qQ&2){29#-ZHjWNtgEH+$MCP6{%C5C{Xk%u&?>8S$ zKN)=a*N$J5dDp*_d3*e}*ZFBT+jq3xc)k1CVCS!|)W14V5~o`G$Nj6u`N^8cQShCY zRjj!HGXnZ?W@cV0I!_-Vnwi5&5JnQxrSzcW^Fhs%p)WMp!K{h+=a0@plWNlk4Dk!g zY)CCWKDyHwlMbp_nMd)*W9YNrsuLaUVMyPeD}n^W<&-Sld$*Wr%T1%VduMkY0X+ut z&SqPgQXqK55EK6B$J^Pk&`*tjRGerfbs0p<<=%y!BEvzh3JL4+VRBT8&t|Fi*IFl@+Zmua14}WWO~otHAMLpjUlgI5cur z$%zj&1nL010lox+54=2@v!teB-oXZB zGVM{VF879R2<3d6MJd^Wkyu&%$|C`>8S2K>CB<#`E<3u}RuA2(A~dC>7mhx{y_s{YR|@BkX^|#D6lDTK6Ufu6}c|{3wuW%Idp=u*8O7NBH>W-=ri?j~BE2Wh*dKNoa0jQl*gg z5PgJ4L*BgxQ5n8F$P|#zck)5EmHgsuE8rHG;nWz4~IZgAYI^JGitvV@7&H9{I zQ`7eSZ+|PM7go`0G6nl5EJWBETzJpaa)8V0@;pd zz8#v^&+YZ#hc37)v*v|Lq*4_lOj8ZhCdlUJeuVC6h zA#fVXPCq!~#6&l@!a+{3n6~lgf3OZdBVm~2mKkSNeYGF{7m4hQy_tCuPw9|<9X!C> zAL=vwstGYAZWtwD?Qe+8@L6)5P{0A)+;lY( zxrk@*09a9VdbN;ck^HKgUsptaA1MX~MsVgcmMmPnt%MHK3+e zY$0b<XU3cCFn7sP&Bpw8wd@PqO6Pa zy^iZRDPTe`Fc-x*UUxxvhs@ZAM2|gUqAllr{`J=nqTfKG1YvUAW(X~ID0d{!7bx`n)h!Bto7+^&1hrGG&sIsKA-*b4HO@@}gA;mP z#*F2+{4-FNzIw)3cJb~1#+Ll?N43l#zjLHJ`W{)JVg|4g1&b-?N^$ux2D0Vpc&%Zx zVoMUda!uid-W~FD-rVY|Qe%Jd*_3^aQAS!M*KU3YZwTG8_7RL1@UjAtnp)p3J0 z!$Sx7*9?C|+e8U|PTo!qeqnirC=`iJ61K%nm!a*NmU36O?$h@+*!58LUb8fsochp$ ztArY#+{xL?ljVejqrU288iPK2YKgJqRZa4JS*?So}PGkaI}B{d51XAO3$#y$f8=_xu0lv3Je+S_4o*&HHg z9b|cZ|8Dh-6nFuv@M_$= zCYG|*t=(OX&+sQ0-sBi?#qC94%_=SUOe0zss-w`%DrdTofi_zSrJe3J}w{W_lkO@e_ccRs!); z*e~~|ANKq359Hgb^TgSFPe-0HwK;qRCqQR$Qk&?hU1CLobI3XptohlDOW~&r!7jfY5PT8L#xA+Av7jp z^{^^%!@7_u1Y1pzeRcDh^#R!x;}0^;|A60RSA1RwErZjy>{(4rqBLOB8RcX4taW_H zeN!d|A6>yGt0*sRiO1KA*v~VnpRu+cd2)l}BD;FkxyAsrE=d5);kVIbN&0KyP z_mo7QiZ1uRVXa0p?h;pcW3Pe%d)7Njt}7hI)!mYtBTpCSlwk$NY^oNn(uV{9T0Y)7 zfB~r-Yw-SiGP`Zucpwsc0~PXT0L6LB5|$i=^ic8=eUZgLDzRVGKB z!u_W>%nYq^J<}QH`b@RU57!$TUO9$E3hz{J>hZ7RC&_)xa|WLl0F`MqRVv+kI(MTf z-HlqIIUjXo?!5&G*D|Dr?sP+A-|`ghMCjTUv3vo}~2t z0I70^7%)y~h0(DwXHSuPbh;T@BAlGU0SR-OsZ*yOgSjlbM#eV)&8eSn390?FuU^*3 z_})(@F><&CnA#=fHnEMX+kl7H@AekMEah=)**ZQNHv3B!{iY9B0=5@O}x#Q$dJIhyO@UFw>Hmq_;N!ZxC;49sOtRcdQXTLkB_-4GR zvuA>fn=;0AW(A<3;)XGK+3y>WUei7WF4dX-OvIJ^M?4+m|I`Y zI`lc21iMt5M~9x)owg}=wWa*+l!RdmkG8gK>OKeiBin<7IiuJaRzP8e0#W*A-UIXSC`R=TS60kTb}Y5(N{%oKy4JI%k78$-uWU z27LPu=50|PHm6+qF6p`DjLzRIEv%o&W8mh*X5_k6m&KZ38{Pkminw01sFLy@}iM93Fz7g9MD-sL8(g)XgjH-y?TPdhW zCq^;KL_a?BlRCY*mDIR@0a!x88fd1l3Gyt?;#XUSTd2!Doaj)h74qmv>>0r{B|^*D zAl`4nv_)K8jgf=68P4X9et?vOU#RnYdveE8DtRNKb-W3VQ=yQcQkO`}xB<2fD*Gux zIr{J3+3@CDb;L%1nP4PJFxtBDJ?HsZkfryUix&rKaH)H@!vz~0lL~AqBbY$syH6y8 zJS_R(If0XB%5Y>yFT#wTpn}6ZAxb^29ya;L?O(|jA`y1+>v+?7>ty!Z1V*M1}!>` z!em5VCnVcjG$f?|<&K=Tl#fViV@*2O{l({Z&v{v9G&S!_pBh5=&l&Rnt2}{F{!Zpk zy)y(334=~4f_D@H!o?wmZPXTOx^Jowp(e#~iy+ebZd=%7Oca&I2FGp;EHOSlg{X=0 zlcF!AjZGy{!^5eO6XU>skyj)|kf#cz&_RjmS#!uZPhC$ZM$xOI{$3@jEOyp!pD>P^=F8zr>{ZkLY|xtIM6fH7f>zGdj&D9M>RHpKOA5*8 zk>RXo05~4&KsdY&hKn2Fj;_P`iP*jb%t-1=@MuRnfSoRZ3Sj{Jatl#X-%e!NSq?E z^G@cIwQH?0_>%v{x-K%5O0>z%2{49n)m4(e4d@B_Y;uh{q7i@xQ!emq>=2OuS~)U{ z#1^2}5_tB_H~A7*zPVQV<&pBZMOc-rvbvo73h-RhZ-yoq*X|KGBk1LSerp6Q12+qc z7`6!;KfrPK92IDN-p%~Mr|^sdu6#x8P6Wmx-=oNX$QhAG$&r_TOd`arN!WJFpK6f= zW%vgzUk<|*QXHycE{q5srULU-Rl39u?s6TL#+$|v$Vh34lp;`8KXf#lj-UVb%;QsU1JaYu;Exk-eLf|M zKk@7JMdJsTU0+nM<3_jYTpB0?2AM>s!;tWP6LYH;JrX+6Yq z&4fgvx#2B_VOd-PdCml__X88e;1L+bPHcFMG~1BpRv8?_52|Uo?I){3hksj6 zYg^1VTOwK)V_oos(Ibl2A(p&miH|3doPOoQIq~6Mv3!cFjK)>*mhTUc4_ou*&8_kh z*q2_dx<-eEFkLA0g^nop8FZiF1P=?|k?E9~Ga7&@mY&z9 zSAa8}JvYPvRU&ZU`hwldZW$I^oWc!mV7$zm?oRahIfAak5A#jS~eYvF$s<-1=M9KUID+1P|hfMSSiI zu1_-%4y2Mi3hB&{9OQ*(wXS}kTtv#Rtavciqn-Yl(s!-p^86;NfCyby!2f+vO}EKym231=CiEOk#keomwZH8a}L1K+(dJ^y2q_=7*k4=lycp6wWxn!EbY-@lI6dr=+QgNDPQdjv)Dn82SbH|O;) zAn5uR$Qc0Dgq8GKo(PBmDx^<|dehpmQ7wUKY>D;oIG!Ma0gtzIYOZjo^{8A^f08sT z#9*v)sG3DdZvrx)lTq*D^C^o9^Cnnzx@S0baf>$n^aF&zDb)r9DQo#8g97Etu3=tu zp%5JXD~FU{_23iW3se-r+1Km-e7^pZkkGW##STyx95OXbl+WmDyiLbcIeZIP4f3st zLed{IpCiP?J#Apt5c&Rb|8@O~^X>}Dbd5bs=_ET@Vi{mp{%#`Ro?V@zF^x{m-?nl3 zp+{eZ5n@Zf$nD(ySBRE#EDC2k$DYqH(O}UZ9hws-KlTo=kl<#07+)F}qM)=f6>Yl} ztFqCqa=v8fT}EDpbHk?GGq&1LL&;9zt?XK$J2H?c+{Wf$0)S6UA?b(belxuFUFMNR z0fJ%@K;o*VMdi_#k;mQRIUH`YXhMOTtmkrzOW>hQm~$2_HinZqSRdPujF|7(b@IgB zKXD1yHA$S(>$bYcw{9&qA^@~Rt$EAoajX*9RJ0*`^fvhEntjjKdB1Hy#eKew9-&$& zv@&yZph!9Kuvj>Xlvd99y&l!-;B=mQN7`^Cr!-KL#<`j|-)zJSheiHSYc=tap%FA7 zckc5GpXjgr+Kg_+p}qzFP6tuA2|DxJ#kNGNbHc6Uy8yQDfajymF8g6iE%OX&%8HWF zXP3Pl93nDL><&2(LOJEjtYEGvmD8Wv8bV36cY@mo1H$8%`1t!?>B(*Ia!f(p&;`N0 zj_+ws0j)@5beelG3pim=zI5Zx3`uVH!#a@F#zNUXXiSr!1RELmwm7ztItPUluXNC6 z?cb8TFk2YNqvu6Hw}^d4^uQrLmOru$zFBQoP^{kE5=i#^_GM*=&8`W9QpO(0-1WQb zyO)>}iN74p;m$K07TtV03`<7Xt#14U#A|d&rtNR9`IUMPQ$T93tLin5?5UHdgeg zL}mA)p*=PS1+$%Kbk3p#);;%}``4XMP>D|BC(1LTTKhX1(`-Gu&pl50*x%S-l~UN- zKk{Pj(1I0AaIIMU+lgmPwQL{P%r=M_qTH6Y2a|(q1`cs@>{0Rj-5y;(WlJ+6uE6=# zQk#U$XN^p?ri)%nxxv~rUDILAFK7UPWwsi?LioW6fQuNtY0MyFL9)L7jE!AqCxdBN zU5Ro_KQV*-K(t9Uih*GGPbpKZkxBJ8Q#N30sskS@)l$-tGq(9x=;sP;8`s*1=|xweirZp{NEA@`b6HgO!pddtw%mNN*h*MTVvV>&PRi; zrFPP8+`BrNCS~2a&RSz&-I1J@%TKOY9Ey%`LzkIfFr&^+%et-=U%4Jgx7*!mHL5M9 z>XJPyP9(1z1RI1K^dq1)zw>QTTQG0-M_wrI!PagE1S-qy`M|B!} zRItLsYR>>uu4leykVZ0Dj)#VdDWs2r99ZsZZfRVF61U{Z&@>tdcR#4vKA(JDr?|SS z*_8Clk;6Bc%0p74v7eb4RS%6(w5B%{)c$<&=*JRvDr(t9)vOxpXr1JouiZ8~KN_(I znX!M<27XNFkMlK_+-jZhkGGd=Q%zW^Pvl^2ht>&``d?gtv3VylEV!&)qr8M++VUPB z87A4GWB`HZ(GnFs=#A2odz*a|qZZAcp|?X$kN!&A8B$Dg&fC!av($%CU$Wwi?jA?`W69tNCcTeC}ggWR%O6|jku$ncG4``IYI4WGaX{Y=ix(~gR5h|+__xx%b zgpNGUoRfo=@W0~TGzU6oj$N+G7-C$4Dg6~RnVqLt9FRq^=C|L5jy~?@Qw!M+!3WnF zP)D6RkQvB&j8n%5_si@Xp&sW@XPXr-uU>t7QDKi&>;dAfNT>#I5*y|j^k4vU);dhw zr8HNE1;<8=sB9m*=mr)K_D2GbJ!;hQ&uZo)Em5&@^{%7mMoAR9XKRR78fG7x9H0xu z7f3(YY06C(W;UxQm{`}A!0OO}0Z9F|yyqZ6hwicv-q_RtKAoRKMc>es9;WnhNX6*& z+-2;6e=(FPEY7+K=rFr(|#D+5E$c8G@AvPis<4}gB z#Ii|_r!E2E)2`ZQECE&5bKZL{?cj!#hwS~42`6KP;^xo(wmqF2+ zP1#+NIZ@Y~(Al5u@(AVG_UT?N$65xZ2Xil$H%i&5rj>M#=DJOpS!R#i(xiT)$EMBa z`}4711=0Ezd+VF#Q$Jdx+0c&EE$8w$PRSfGtPMZdG_ZX;<5=f4;yZ@6W3dVYwL}Gt zpD&5sA24&2H=jD-*r0YM<&i-Q_KC%y+On{)(~QCp)hW*wU1%yM7$!;9HMC!%={FSB za9?P{*$;vvV*~T)+^XnU*TvK7ZS3wjNHR38J&ITb$Ua}bzo$4RdLfIF%D?I~IwN`0 z<#Cp@;0tN&GMbcZpz;e z!q!9@yUN~l>NGlar@O88_F$kK5tu|QI8#5RM@BV9 zLY-R7$eQk@uC9mxE%1?ymanik&G+;Q5BsDB$sT7e9#8x-Rz6@F4dKG}@!xik^rMTT z%d)-S#w`Z}ozsFBY_UV`X)XVX6SzCutUe#{`Lt({_nto64qjkfkULFQ;)tw?6Jw)2 zF2C?t(xzJT&o3=3EJaKHWy23-9M-SktDbDfv&>)=J^ENWLSikupEGBUsY&jo+OZaP z5oIyUKQ6V|rfze7;Bq3jZ0l0jzwRf<*s;nv{=@u)1+SasT*@d?pWBVu8P3CXA!PcD7bewlY0Pwvy>KfIpNO=`ne?p@83l#~bj;fkej z^1s;J@hB{}Fh&`tnLQ;N5tD2pl zt^`j}lef%+Xdj}kN?VW9$K?86Q8C88r05-%Gb>)jY*=MDHmGo`)YUUzg4QGzmMO=2#Ns z^kD-H?wP{(77Lkm|L1vIAecuI-!OUcPNq+l#d1K2R*Ax-Ca0`O{tuu@<|Q0&W^sWf z#{PBsB%qDWd^zcSnM~I>0nxR#z$ak~yXUCA;pcaUl9x~mH)Z2?xCU6u%bp^9`;c#) z9JQ7eO4r&ia{6(LBWb{z8tCh^gr0tpq*Kg0JZEfzSO2`7jkZ2rFRuxW)c0AuDZtUY zAS+GipE7`V%)OOrJ$b)o8%wIzhz}$9&ntGDk45dhLCF93+sO+e!p&eB-&wMjT_ANx_B~)$9Uu3 z-x-kvAql+Zp06XL8cioL{j}#j6EHWlP0*ZIe=|ATmqgc6WehP+hc34>?}3(P)rV#I z+j#``O?@JN$@Q@AAfpu#m+xa3P~JcKyscA;3iDQ{UYY^xLe}S6PK)|anZ?d)UF;GJiF}lF4-r5 zL>LukS+WlHbT4(l#2SP-r!kajOXTFU^OUorc;7&5(SYC0nMp~zktxFu3nWqZV@w2l zuUroaOGUCohPfoi`80iUu&&>`WM>w)B8fkDZj+M0xJ|)f_m8LDIL83*)RW)ywIx%6 z!rbdod*zYw_gb4?vjdBsU*?m~l&hqLQpI2x!3puZ^(et4;9}m>=FPTmbo!I~r(n*b z(PVXs9Siw{Jd$_+$i&*ba@qLuOQ<|5_A9xlIyc?uQSn=kjx%C14_;v9Y*_I9JAlGT z&Xz&s1IGF4D}5Y(dFSm=)_&WcI+muv!shX#!vnTv2RP^1IaNYCJ}UKMG%59&4n}Cr zx8hHx`?~A)x!XS4ID4}mfk#n#GV9$bJ~`edrBZvV4h03pCQ5|f4lM$!y=76v)nLI# zOq;5B;9}=`)UNy-{K0i58pm{ijxci}=vcgK@gxQqV{?oKQA_zbOm?>&9UfMf4Wxek zHg_+&Q}kN>?1a~+6K8t9QrO zhX*OCOyMfl1(tw|vhOK-(v;`#>)%|U%%35LEE6@co$CQF`!U@+p6D`Zb5!vmpWD|i ztXMq6o?#;D4Qlq znv@uh!of-9PFPd6o;S1AI3o1L^l1Ux4u-i#A1j>P;)z#Mza3zG5pgW#(E7TsBC4fc zwpT`EZVRh7!kcH1cIJ{sk{4?~pduu}z&zdSYwRG(gW7eCtys;?*%NAC|6ZC;#ShDv z<6+~ua#p;C4%vXm2M?^8e%4G%s6RlM%&1+^aC!zuWEsTxX;wM&7**pEEEO(sv+!Qd z6FRu_xtGAu1;AhFJjvaIfcKkQ@=4@^1s0fcRz zFV|6Y-L&wb+0&{yVLs&R=I_FS$2ups?(`HMuWjQi83)^>ZQ=FZXyG(AKG?d|%X;f$rk8qmwe_o5203R@Kl_qk zBIqO~p$*E&KTDX4ExX0Oo+IK@1 z_-?cHYvMOLCx3;9X+f$>!ipLj@qSoRFZLE3O*8|5Z&=NpiFXwF0mpXpaj4|*dRP<5 z9HNGkOgqT8&LS2pPW=j`PJ8(~dt#H{DQXg#!*n4Teo;a{?^WB1S?&2jW9)61VspeY z#-Vr|+r`248v2rP3m`kL@cr!(+n%hi3(>GxVB@jlq$v;o+bOy9+DgidZCd52hScCm z!v}@}B7@)S3FXlz^{6N3ZEvUv^mO&JXT#2J`fT&VW-F_fR`R8}i`wI862nHkrcO;? z!P4#p$$oDEGl#|ROg3%k{7C}tS9;#6d=6StTMML;Xu|5MGkp3e5FCq&1$F&$)3)Sd zvlZU@&7nUYdhzh!q1eAgge3>_CnDhymACXD*viHUb>#hLeNXkrvS5Q5$NoG{>PG!50uv@G^Bae_R~V>j!sKD zYfRP^pRdW$dy7j)RQ@%BlPVU+6buFsfMu}D9BjHl=7w~8a^b_qJen$kkwnV7(2TQ6 zG0MG+YDKDJ6*R(g6iVwx7IRWIf0lQSbQ(Cxdx3kkw*WHfE?co4;YIqV-uP>M9a&1Q zwm4148Nycwo#Ql!_+U@)hK78~)8YRKt+RNTK2KZY6Eg!$&*SM|zkI`}=ES;9Nv2Rl zrRyD-U!EVuS2;Cium-%j@nthTb)fBJ*QEN*n38(G4pWgl?ZFO%_5}J)I)(&p)}!y* zd7OUDyePiO%1{T-7y@MP$XRr7McmK)hgqiZeIB);QVf<10-1;^%*!AfAL~QbB!N3Hz`H#qC+%M? zzzLDM8I1Z017~9slWjPwU*6+5-RsoC-tHe24WhTcLk4f_Um+n8uc{|s3)14w7=~iQ zvZhZ8W~JLSC=gh7`^t9%gBSF={WxQ@njla2bmL4%8h)NR*+YJ`x-i>FUS6xZkN=YS zJpoo>+JKB)Piw%U0qvjWXE4(A$7kT=d&F00u!@j&jPT*XKx(S|r@S_X7e+kcmQs3E zSc}cCNO6iX3K9~zPg7?IFarv|Wn0?@2r6=%UXjJA5>GQ~Lf&f*6)ka+E#JQ_Y5X=* z)gR{W{y#EAk8x>3T!|N8JCfWJU=S4L6e};>KGqx-ysRKiQ0>2!o49su&lRMnUXJXz z8c6Y`+0|ag0rV;;|El$7&%4pCXpx6)56RDx9VH8fi`#oJ3{Mc?_~dZ&ZBoJmsZs`R z?>FV;|8)CFsu2{Tk(s%My8nULQILCPM zD(5GJJ__y%T0FID*SyHqF)8*oe6?n#qcTjmZ~b6<=?aI_3GTz5Ov$%ZR|B!_=fcnS-ZgY#`1S{VnobR3=P{`bx=Z@Fsx9 zR>TvTM;;ee1n;S2_rb?C!8)`#$ne%!fe7Y7i7OkJghDvDY}v=M-eTpII_hQB=yE;3c6BgFsGjnE8~L3eH>F_RQ<7 zTKL|?gk`TcO7*SchEd50n6j<=3GU>twD&1!(2|Ak9dHo2j*^!N+g#5@o=aAz*C&)i<^+fGvOpCd?|! zSm;+U*nHj!z@ZL14ci5W`%_npoCX4e1jQSH9HiwGBK=Q6TD3Y27O^xwSS!hA?oG{H zCK&)G zu2O@89IN_YJB(}5G9@LUkdkgTNaLc38TQ~}r%tQ!^#b-opbay8c;I1Zl9Zma3YZi< zJtM4Ddc77TVHmGS2m)63U~hBouD_`I2S*0c4fP-Ad zNAbRO*H2z+4_R~XouaFI9LZ~SxO+s<^YE2DBXi)wDNVhD?5CZQ)U95Ru9%>Z?v{{2 z=J#eVdLxj+(%$MFenc@FC)6Xr)ztR?D*L-0$_oqKKJ(z=dC%6q)8O?PJ8b+je){U^ z%OeGyzi9sQ&@%-UG)gybxPxZfGM9utS$fMX}J6OgGIMuX{X<(lJe>sE9^ zzyy~DZlA^86uwmOWo3OuT!oo3Mez51r zk>%4gqz#O#*1+#sCxe)v=hI}MPQ|==WeKm_B(FHRB!Q6B%-$dJI{``TU^>qqZd+-> z6_ZJQK-~%GeUGZ7rlte6#Q7MEX}QtZ6o+3Z5f=c1g&_~19w#u!0(0AdHl`a0G}Us$ z3;`JF+_{~}QRX8(EuK(tti49i(;nn-oW}h;#s;L@WHUy7Uz$K54 zv|d|Tcp`|3S}?p-ZdB^Nx{C^j)^r*wo|TAE^?NjgUtZr>TBr?~k(=Y`RyY zJOaW;03t+5Pobmo0LkkMg?RWjdyC4-I*qtip1?1fI&WS-Dgl6CW_nb{=6=(87V2$_P7<|~%&nHkN2h~H<}gPHY*61k7=FZ=so?Ct&|DuAz!l05L> z)j&fCv9R~01SaOEPJL1xbA&}_V;aQvGz@^x6VGN|E4eeG;`WHO-Nv+7$mf-xGFAw9 zR|OtJ466-lvZF!TP$Q+MGhssh(0oeKkHl;&5;I(;XEIKS1;KHn+}LNQ_)5s$njO5X ze3;`qp;k{mZ;h1YbjS-UDkfkWcQ2|HS+v(4S}1Nsy`8ZVN10HMW%aahAuf;`WpPXf6Y{r z_k|LS>?a#m6H(aB=Vj@vKdqeC)wRnEqC-t2! zV!?ZIC=U1VtE;nb9;x{K2sK&r%=hknZr8xAAo%2YdARVfh9-|3(uLVn$W5g@gTcaj zLf+7cxMFqb@*6{YvP;4h$0>g(0B>&JZP`q-M(i8f#>zKY!~e&_c4d2P_ID0axp?v7 ziM|(WcqW=+Fd_z397s>N*1pl89H%8qmJmC*)Av5_-6q`^cW%Q_Cf%1`3VC<`+S^Ya z^w{JpJ6(UYDYE7+|0?8uJmwW?AD2I9%YX&W5{@|es&oyBp|@y5gCo=B{k}#OUH<$% z8r|MabAJxt`ot$~qDV^L5*{pfV1Aa7l?M{QPt;HyB zS+i(kzGLe@!~my@utUkzu0u%@IA?Y6)@xMn18QF)%zd?$(LXm?>@2ek@pBJjmiBX8gM5#ZSmXYOr9 zaL$a_8HqV#;snl%`Xne5LPF>ECTj7heQu9JXdx3D8AgztS0+US^z_dMl}<4F88=Wb zs&MYlLIixuaCS7?oIQ80?4LV><(i?u<&VyR|3Xx9A_A;slWCn_-EagCpaw@v`P2ji zT!zu5p%&d=cGqpXSNu%UF7G)w5J$+q@5T4BJYnx|`W$;>y$Lw0=a!r` z#M<*`gJ@K@k>6}iUcBkX!7JCM{gL?lbgz{&lSg_-)(>m9!znz&HFL+TvZpN{Uh5HW z=YP3HcmMoe?ap)vMZ`nlrb#qSd^IX|_PHH9E`GFc)0Ig;9qiOq#0QtH7Oz4lREKo! zHG@|F>a!^u<+~SM9DTJVW?aFc)UmCgK%}W+C;015__M)U=!yXfcuOTkM~}XZpfYmP z?STiL4x_PbY6()V*n}lBqamD4lc%4HvAVr3>5@9@xZ# zlx%DEtX)l#-U63FI;_C?P>0n}X>lD4iyW+olX1IFB0f#|yYV?$8RXb43g5Ywf}Hyi z-pZLP<{VmZ<3=to$Yd~n%IiD($@3Zsskom2JoPXmx+_D*SyBO!>*XBZr%g^*_ z1;qeNbOLB!3q`4kil?!6%@qGO>B&nAPgwGt!ujx%zed&)4K`ls?(#EMr(Qb-Da^4~ za}@0d`H+RTl12>rBCc@E=FfiM8>v@DT3J+>H-wT?c`qXM7#|9bJu>zE{}hqHF}#ny z94&U}!Gn*ncmGdHujDt%hFvVN>>M(lG^ieSpl>v=>(2|0G@xyq;@xA~vCcx>zZ-r< zt%Djq|0ec@7Z#I8OTXxSYoq#u!C|~1LKTm0OyAT^%3L?y^>Py!rOS zcIVm!DlYD^gen|=Hj4$H?wubltQUY*l43Rhh5N{!U6gRV_U`A|rSEfh2QVv*lf~IYs z-0mZUr_0*|ByemYU$O zl(b_Xj>b>^@)`kq!K9&)Ds)>ss$lftxq;Xynr@7$Z!a}~V9fqc|CmOD^WM{SNl_WE z5GTPuxyD9`0VZ8LtGd905P>&sMsQ%yns7X_;JY$u5`P2JW%-3x@rP=M=F7HY#F1vo zVb#r8pOGixueA?M%NLA9ej*p6Lu1JPgv9>PS>846oXj3oNcG6d#Su3Lf|Ch-)AQ** zf4k>J)2Chi;;N3N&SX-rZEIa%aKca0ri~rF^Lc~(p`&$2iGE2~-AP1=&mZ(ox*bVJ z(UlYiS}<+cycs_DEqg+grTb4**DAh)U18dx8kn?pOfkiHx)t;AoLB`nMtI$7Cm5n>Qz)sF8LoPpGmuGdHLy zB~P2pr)Pe1>ji@DXK-Y;T7cxwdy_ei#z!!p+7>DqM>p7)*$;V zDI#iXsDJGQXWXYSA44dy?s9beXm?u`<)j<=RJY|dlJa>bWq))+o-udc%SL8=DJfZ3 z_Lc7*K(@uP;C(mgKp?KKo_zj{{T^QMb^;f_bh=lqT65S!5;w7eEesuCU@#C=y9X8+ z-i5IVS-6X7@>RIx^hMc>>4;-Lb=Si?%lRc20ti3*{)fU$hkmg)yA>!>%f->x(D-5G ziASWOw2C?HP&#$oGpOrl2CB@l8}IaUXRCKRQ#h{9P*Yq!nnJ>e`>@e4l6L;kTQl)u zeHHh>y(ZhvfUCqEu0Okv&!pQCiE-ig#FzMZQ_r7)Aviu7u55X(#P1E=W*1@@bMp95 zg5CrL9L#lT%gOH~;=t~Rr8pzI^QA4o%*46G1}UN$g8?|X{EVWefg{v}p3BUqdtN6V zU%wu`d2H(WV2s_W9z83K)c$Q761rhiMG|W;iG<{NAyN4O6ULKRT)nd~OevMk4cmH33kc$Z%3}*K?e48L`1TWlM={YzCoGA2M-=ho;=wbSd~s0 z&BmA48nLk^@Nx(EUE(GIRSSLQCJ6qL-=llp{=c(MltSR5wS`0DUPn}mn|7^am7L^g zdTz%N{0z$&5E_ktH?kIcw^mr1&wW`m7)ebVZFZn0tO}>;@Fdq?BLSdZr|FA3~?WC4s6Zo=Zt_Mt-CLnnmFIRd)F|z#@pfPrjYj*7Ur2e zDRi!m_cW!~N38ywjus0n3XbQgJBjr4UGq~9V>YPb$%wUgUD>XqZ_9QH2UaKewQY0j zTIHh=w;y4EO&A1{C5p2JM5%27onSW5MS9O|uj?HFEmU|C+9{RwZOp+GRz!s2Xv={c zii8x@N4*`~W7BxkO%dD(5)#+6^Qalj!0pB%fm;ujRlMk?A-=BXh@ov_zMe}l&BCvh zav2;U(}>m>`!#V6yw|I@aHjo-A{aID~=SZrcbY9X_e8?Y{pT;Cx7YddyIcKvh~ zwX1N?a{u6TRN@b#f_ckVk50gDt6Bq5JrF1d)>D;$`B$>LN8>J*qhSlhKa~bL{XEoA z4ymzDXp(TnGYFSZ-XbSuQ6bzKBI_LS^G-Lz=CZ_2G`PQjdlUVDvH z0r)%h&9$ol9$eD*0j4aRS=JEBe^o$t#Nn;k&&L?ls(e$$5;o#P!3MBU0?@!cV#!7m z+s=YSR}Xb+Zfj$S7W8*sW<506sx4@mEo25m?fqJ2SRorEh=5}_`HtNWpJslI+)KgK zA(gzEHS|J>J(m@yh$-05sQUGedzkt9m1NtEl-?v=QC&yAn@yssTK;BGITZn~e47cS zKbBbS2Vk*jln#Y&)Q;{8FKRA(R{3IZ*};=N3g-77y_1iECp{C2*vP}__bmwSYhUzv zVK%PBrF%3u@+!2kYVeWOdvA!9XStA-G$m45%dTf8Q1W%dIhlx*6!j5p8MR^nJDh}h zgUeT96i-cHIb1n!xfc0y$c#e;1sRn}IGfLS!e77qqTy)|`|*1y6jG8How94N=(B#I z7vd#0J-2H_#zB^#<#(xXac7~|yMdD>Xt9U=zFAP4nPYV9^;0I8_B2!2}; z*$@~%y|}0`uh1qXHa-Ei19BWLFgRrPuHe91qo{#^kx*?sPlnHEMC^`c7aLPlZMUiO zi%|z3~=@75wpc#WMp( z{#;co3*@NX6%K1%6?J+#J>pQ!?aS$bD?G3seHy;nVLKC&KzSLip1h>qPI6oil@dzo zv*eMNqa~uB?&TD=*QHT$X0mo(DW>Rd(|p_Q9F`bkaUo2KuVT1iV5pKMCtK^B{$FJK z83NJ!cJ)@;A;Izr{e6v?Q*)97NDq-vy}byrh1-ep#)lfTI4YXZ2-1k|U=(M3s&6hX zk#*U7aR~W(cK=ZXbO+7TZ0kdirktRk7LqvtAU*6Y%l|20=d!>+`|Qf3*N6 z@-pvb$DoExE{n;rb2_k|B+jpe5M*6Y$4;GY+&+Dm$m8|MB#|zD*}~(-ZVlj7F&zxj z9zS~CTeqLOGjHdhmdt01zqr`IQsK%uv3h6(ip45sxC)46bl^iQM_7? z+w0?6Luah!GYavtYc2uDE^Tb7X$#gRlIu2& zA@o*jWdSB_dsWt=2=sMtyZ25)Jtrn?gd;7KbPTMuJmA(s-JE*Do9~8-ebfkBYBQ(~ z(Y&=$Um-MK&kXqnqw_+@$KruOLC+K~$@4chhoa+|_41$g z2q=*LGND(xyuJCS#l1&ESX_&(?8Yon#=(%X2FNt#_I5}!77w+TwQJ*x^y+OO4(SP4 z5iHGK1A75GD^~RA?h8DO7#5XA<%pvwW-_o@J{6}%212bE9BOs_A=Z*Okg&fvP(n4t22lvzX%1W}-TmM7>QNaJF*dR2Ct4QSk~^}AY?)7_6}Nv; zUZ6Q4OQ^^W(E7Dm2AURJhMz8f^k(e6)@!47iYa)b%-bRUQnoC;WMreVhC)q8a88Hggh< zfU25|b5pj&Oiowep~avL#@w-O&3J6{sfOtQ7p+UL19ex~c+})8BSJUcne*3u<);n5hv!(y;}Xo4{p_}mDCKWy?V#*< z)N};)6KoPdfKp^`?0%>Vy!g^eY9Aw7E@v#&ob#J8#8F zNq-2TEV5&--HrZcYtM?F{*m~EleP#>0_nwrLb<6#T;Me-A$nILN=w@qJobnXMInsL zdy%mq2-uB)I%;gZ`;HWA1EV^|Hk-|00oBI-%(f8v;QpLmi~58wu2r6eTVrZg^{(Oo zA%Zebl{+IO(!W5^(alcs-Ijpw`nm203kmM56jOqk?v+GM%5cVb8-{^sOWgV9t_N{Y z%XB)VCPicfFF^Q!v>0Zfu^Gx_B}`7n5nHM^D1Aqr)PSFn4kiA)-G+{W)!9Sh`IY&KglD! zeU6VnEtR6)!;?x9SHt^fdZmL4xXP4y=}!jpfo^OO+^20?@w7+fstM*t?Ulu%hcHQE zRXIyM+>+ahOGot7YalFZd<-6qf8vZAghtc)1MOGt%LY*^P$Qipkj52uK+ytfps|Ct zy7W=(5$)Q6%u4PHZ8h4=z`A$4>3$BW>r5TYX^K0+m@PnmOWT`jy5G#Fm4ms$U?(OXVkgtYLn3gDK0AfF=>JA(oqF`R z%PBz*bFsw3-GvvfC|xJCrstyf;zNVf?UEj50{=dQ7pcV60uxTzW<+i+S~DcR(~(6X zrwGpoJT~dbcX#+sKbh?d78lMTGIoH$QZz`q!yf`@-wA_7<^YRzCFk=yrE70V%eEqs zSfMVJPffs5qZZWCIuZ}{gScyJS78Q&H6XsE%xu+3duTCMl*@JBx9#JQRvZQj!||$h z8#iwEM|sjdXIT5)gA~sE4Ss%H`^Qk?^Je|o4S1x^L2vODhc33|n`=486vin4D~rQ- zz7EUrx_I+Mex3aX!^^!8n#4JzxEtkeBtccr${2_Eqrv#Mz==h>=`C$RLXoZd8#@ox z`Qib~cSTh(d>oDV*VP+%>sl0TgWL--4fI5@94JYm(qai1>>*SNERn9Fao+{BGJAY> z_+ivNSI5VjPM%3~V5==(pkuqQ!--3h&cIs0j@YxJZo|rSI0DK$M%K%x|FgF8(~5=J z3!U>T%@F_mJ67*0Av5KCEo~%`xp)mL%{pknKhdo4FB=gf_C2C!{0>{qPmsvre!-~< zND{zttl?qU&@SdfTwK*&OCsF_z>%H}rZKc`VXV{*?=ZgAcqi2KO>L(K__oVvyUkd9 zCMt8@OSjO1JWVKb@B_aMAWy)R%NBx=^?q*+MLTrwh5SrJ12MTOOvQNO&B*p@MZo?& z6l&k7gCb`6*q+MtUYtqAupPlWs zs;}M*r#o;+gK%r8x~$Ec*WYKa0DtMM)uih#*;qze!n3XT2v`UN%_vrQ*vAT{1n z;$crd91io&Mv2RAaB`V(F#WXXgSHEgtZF%L&WajC;~!2#64;ArHA5amnCt%C-w14D zl$IgzcQ1{x(BsNh4bo#?Z+pRV_>5v=I|3 zjI%3_)Ue(tqK^q0Kl9YSf#17+x87nCrxuGDD@ZSXosa5*U4`@zDOr8CL0E8G7O=bX z20{&jsYp}>c%Lz8#>z=GocHd{-#bQhTTSkEUY0h?D3Cgh4{b@MPAkI7pdz%8p;t*O zZULpw)vDT$CUGn-3C=`C@f{xgfJ__Ent?0ANN-n|N!-+<@&m=(OA@q^6kL+ANoZ#K zHNa&t)CcUE-%RLE^Y~Ua5NJ4VP`PXT65L7hif#Jj3%jO7JkkQdkx;#7?_N9ro0bH% zL1I%s+iqQ!`B%zlep~iUupKCut>r!6r;8g7t;{anF6J*QXDs7SRizMm((gEqANwz# z)cTJdnw&kisXKk;`nBuqrSRdVP|L#vqCAlL_KPnb?fyA=apebQKd0$l+P3}ln`N8l zb-i7XSeco9c~DI?FsKvht`gK%hL5@H0COu!pm7F+LHxdkFqH~byN16+IYgn(!fsy& z3QA`HvJ`qA3c)ykt)1|**%ZDL;T;j%vLNBTx45Zs*=Oj&23HsDkS02_RJon?bR?HPXLI1fB$3wJ}5N9N7Aevc^IGdCxi2|J~4< z>=%;Z7RS6K$P8S6d zi{n6kStK|5*z(7&3wFiF+&)Kx=q4psBG$^9&|#eS=o}UWKAXM=qI=FvJvztd~w$J zj(lV(=zyoJmbSfmXmdG;FxwjuVPe^ov>V7>Z{18 z{e6;*ZOOf0acYE;CxLG-c37}a5@nuA%=!r&-6l_tq^ju?%*8b@7>J*uH)w+n-DDZR9b)Ag663j*YY*w;GmuSnm!)}2fd_Y5<;gK>Hea; zQKNh7lJvBV;c!STbekMJoQGo{U#xeHyX&1^jn%ajCSlgOpBJJK5&f`PEERGF&^XtH zAq|wm)XPf!bnmoI7mBH^-!fHMA3vW>8=M|5GTZYJEZ|Fcf~jm@$1&eHo( z`u4EA|Kp0q#7SgJt)&c=_vm!5*dHUj3%qY-B)5jOKozdg#SiMJvtY4itJ>>U)~VB2 z!!E4#rq@7nV7dY=2AALBv^DH>Plra@F(@q}Pk<7PUTp{Munuu`C}yOO9k^5Px0NYd zp24RrB(D5q=k%jJwJQ3GabuR8*uH%B-+$U({JMH8zjt-5YNt?c)rdZ@Ue*rN=hjm0 zRnU=06?nd73vvHazsJwFZ`SaJLBb$mR(lw{1oev4My|1RP(nz#TE9xU#9?BLb@+Gx zG`#5fnxWoR{}aO+W}o7Ri1B55-6xJ^i2w~rFdlu)0Ny@L974#(-a>Z36Jk0VT%_Gy zu{%R>mmG!w7ncEEIr1PoF*}~giy6nsT&DS_(>XNI)k5W?0gA~Gkw_5#jePvbRG+8m z?6D`5Bb*|DiTC7}9pO-de9f}c0B~5X-Yb`aK)NJ(xR0mnKRTe9n8>I9cqPA6&}(3* zXA@gKtDT>!Y-9TwMI!7LbRLJt(!JO1Ee`?w`ubBcUD={2Fja zji|M(o9GSK=?Pdult&n$cxx?vfV>^bmw$u6nqg4-Pdtdu3Q9~8Z5pGx-7to%YU=SR zq)p%~K>T5@hnrb-8k7JLRiLc;=C2j4e?cuXnYfA2F>4gEtbCbWgY)*CtH%{mDI2Ds1`pc%=guZaD*pn@ z`H}#TIn+6NFj^>`I?bM6IH!nj|FkQSg#tVbKz4rJ!#nFI)s@D1-Gum)ONRbzh8j_4 zeV~>sc0stQaSjp&p%8XmUsWBJIy9tiUL3#qLP>+RY)WqJ(qSn2fi?6{p;Lal@oc#i ze*{8wF!fQI+q)sfldZZ4;fXrFoP8|H`W*A!md#K&2}Xlu-{BOe1LwrYPHJYm_2^B> zCTTOtq!BL-Wnm5}^r?a>nP743%il+omtI_Mar)Xmz8?Dqb@>}-Xg?A4i*#Lf`eo|n zji%|CTzX~FF1gJiqd=P7+ksfvK7VL^vJs&iT=doO;>b zhPeWtw^V7(h!BJiZ73^5R9>i4{9B8a94;10DT3*34B{3F)%^#o&; z4p0B_jH$_!FV5QMY`pone~+hFkE`FiILmt*9tzaNyv#@KLkq_JA4 zOd{6+080m`ZUj;V22rcVDMDQB$NTH|BvODujZb9~fFbuA?$raWQAOVFwLwz;GoP}G zVhWOju16xHk1?RkEm%eOD%j|?Tsz#Nm)ie1w$h={GK0gm0pX9yt$wL0c7;;AijocVWfI>Qs_*Nm|c3WNuUs; zt4g7V%zKp7Y2{Wl^76g&CG2gh6lR>hcg;!IV}(3X6~=aQNEIHWeP|r9=T&D4d>_NU z&#}jjH;&!F%)rTg<2O@EIhx_Uf%OD2455&2Nsn@&-nDiOXr09*9%7_fm6%P6!Wz2= zo^^7IvqPZjP_d&JnV~A{$|B_dyoCvL)kPK!jRVZp$p5wLISnA)e;9gab}!f^Ju{Ps zr&8}n%x=*5X}-L_vZPMGL83ZY&-)bY1`LYeiFItl$Wc1H~Y{LU&0P$X&zpQh;QNL@RKp-Ot(s-JhfzPJcetJv%?eNon$n zzu!W(XdoiykfNh3z&IZAc^=4p7|U*RdWG)U>ApwTH zaLL@&vgr_(`@c&qVHU{hhB_+!$#4pB>dnIDn;%Sl@plvI znf!!%J#g;+#J+8Mb_ZAJJF0r14M2HKQ@2lOI9e0Na(ozxpo?M8paSIHix(>NI%LTA{ks#zl*BN?_Kp-UY=;kvzm$W2&FkXv!+k*GrD!~QN<+2 zQL+$YTu5G==<5LxU3}Fr*@@qG*~5ZigPk85e4^8=7k{@hW;e!~&|AI#e_SiR z*)lo{gvim4ei&@+c{NbXm&xSYr>&Y3SQu!Ck1$9yi`Q6ITSUatOG-5$p|=!>M#+tk zE`w=Wexp$WKl<;%nafS~%jnxt)vG-!A>hhzXN2zG{(XN8RkMHcJ8|IBkqP@4&WShu zH16hu2cJJ`%x>}|#%GLq%mZ!%S?ED61T%_gQ-ILGkyi8cJMMhU*HRg$0YZls&|uQ` zj!-;|AU9B0iM(ev@L1`IvNI4VzwG*~ACIpX33tT$vyh)!Wld!jCoiOIr_SwMt}ZKI z9(7*BCbeH_e3(nw#sn0~R=tWmRX67?GH;wDk99J!2EpL-6QO^0hajbGabW##zfIad z^)JT*ZbL<9_`@ZG9Khk+DfB2n`7|y`1kxI~TeTv2VGISrfi|oo@SSIhQPZCt+YcU; z-YhnhIBgkZkqn%4QFwxn!sG|)Tdi>sJVWL5BF ziwmp>M_#Bvnyv*Vep;&n?)Mi%Iu~H-3ac5HVCT8j))5hT`5!%~iG~^%Kd_ml@7`Af zH2m0aCwgc*LgtQ>7Vb!GqBT!Rgh|@LvRglgMRv zS>I28@T}53vtH~c+uzD=V6p4ev3}3j!gt;6QufEjIJbyqFW3EklW`TO*uYun<*#NA zINAD-ozJm@(SPuS$gstWy3=?@OIFs&@6|Tr$D$uLw8z2m<_~{i^cxvqLOP_4(rL+O ztlGj2P@4PVk2cHSe%Uyig%}6J?j0Z0j#EH#O>_PG?|#y>2^l`XZ_p1PkQGbqJQrO| zKmzyl&r?(;=8rgtllt&_mPJRCHDxI{`H#-LA5l2Ek{kvHpE%|aFJZILv3tcD;#SDM zh^0w(tRtU+$~*s!#JIvPFPeXgdT?bO{NN}yn1`p!VS`cUWV5L4=P}q7g1_UV2aOT7dy3^D5tE4Dl z$D5&j{>o5aujWGr92>g5TuV6>me0 zh1ZX!d`081v)~d|RPxGp2w~P0!~W$Y?~6zY5@6>q?7oDv8G+M;wdr&(O@NL#d@O5e z%vwwmfPVKU&S=V!yBb^hnaE*qKBh^+Hjo;j^^04WY-v?#EK#o4Lzw=gWcCj=oD9Gn za=75F>i+05aK=2tGsf5~fQ1|0H8wD`e%18|JYSmQ>rd4#2R|)&+VRVHjH#Jv^>V_- zNi$PGGFL4U`DJ&AuvPrY_#2b3&C9^KTv9EZTPY)(0T3CjXG zzw;q*_!!=9x|i07H0)l!)a25E_pb*`Ld^`GeFcmFX9Hu0YYgAyj7;CqLy}f=?@iPW z4SXp+bhOEL13cs~IflhV6R||)Wgnp0Ko^LdA4@!8=KB*{6yMu@$$Dmi=1u=DdB*2! zYo9)AV7ucH8RTQ|SyHlOJXc1{E9iA< znGxqo{?VM4-+TrE*$~L17mVUi;L-9?QeoFx@C2OAFMnSL4OUuFJPqPQ`BmO!ut}q% za9*-EhnC7qwCv9Np)Hfw$;>TqA!=_jI%${@y1I2cV(EVB48waO-OE~$?q5qPJV)Oh ziW{jJpN=oCQ!}4;)Z3lbd*`ZY=qG=^cfhSP62fEN=;< z(%&ILnmO&|KcO<@0U+%(i1PJz=t=2;Jihy=vfj1-zI0BBrSv{B&LJdy^jeRJ|9$@X zrE&fa5$#+mdN~gNeYZ|_zXD7q_P;2CXF7Fe5Mv}#4AB0QpaycCuIQK>7BX~50M02q zDt9*PDCR&ox|v)T*#4Yod#u^^04_c(!wEh2I5YGz^nW;U&8| ze)f;2*H_m}Vi!;zQ^ay3kBplKvEL5b0Aio-_b&c%f&@5=co_c>?ZSuP1*?r$dW9kO zm5Xs1W=y-8?ZvCzHJjFdb9n$}wj3+{&6|q`~N?F%tU4)D`rmZDqPvAIRYV~~zW2vF`+UBCoZC5Pqps`ye!ZSQ z9*@WK@f?tPZpx?pwcb+(1K=zz`(#zO^EI?u7`Sza$26_naBIT=oYVXN$4%ava|Z*p z4r~8Tc2f8+C$jw|WHX(ZSeTA)qCp$M2nd(hD3BBf1hmINLPRJnJ5{yf6-k4GrCcT+ zhT|nZ2TLe_GPlw9nM1rFlT*K#Ykdo&tkM(Lp_e?e4H1Ms9O7vC{z-6+qdHow zkZ~Vdj%ceTj_AkwFA1|}99wyU@K=~ldy~2Hgkz;dbG>@88O?(H9g4+ok99#pB@!aU zGbadTaXZfv)tSz^vjtN;;vh7Uhg1CzB@aj0>XUh0cyvGnFx`qpCXeLKT^<(Gj)|qz zSCY~YsdM0J2({r!01SA7PnG4H=EoJ^A1=Ow@7#V8rB_irfFI5;y9(0)tfs$vuf%d> z=OZ7k3@p&m9+_%nngfyW<(6XKvdTk4!n$!y5kzV?Kz1~H=bz%)@s26=WaWsdT<}12Z~P=31-Fd6uNWNeSJV(Xp>; zzHY?MvwBZdfWXs^f3)e4yh5(Q4nd22Jw5WG??vdz%ydfPnv85bW>vlCkIcT}Sha9W_fFGIe4?khw;X?f2PkC%NK( zM`biGoosGsPXv(VDH&P=60{&MxA4KMfpcncEHv46+#_sKm?B`L8d3n~usd^?5T-dE z0qV=6g@dqsIFA!HtqD#%6+y-)xcf8gTow8ihA^+LwM|cxpbJiZ{N1r3BCy-n`iSI5T+UEJKV!dIb}q z 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 literal 0 HcmV?d00001 diff --git a/frondend/public/site.webmanifest b/frondend/public/site.webmanifest new file mode 100644 index 0000000..1a1c79b --- /dev/null +++ b/frondend/public/site.webmanifest @@ -0,0 +1,21 @@ +{ + "name": "PyDocAI", + "short_name": "PyDocAI", + "description": "AI-Powered Python Documentation Generator", + "start_url": "/", + "display": "standalone", + "background_color": "#ffffff", + "theme_color": "#4c8df3", + "icons": [ + { + "src": "/favicon-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/favicon-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} \ No newline at end of file diff --git a/backend/apps/__init__.py b/services/ai/__init__.py similarity index 100% rename from backend/apps/__init__.py rename to services/ai/__init__.py diff --git a/backend/apps/admin_dashboard/__init__.py b/services/ai/api/__init__.py similarity index 100% rename from backend/apps/admin_dashboard/__init__.py rename to services/ai/api/__init__.py diff --git a/services/ai/api/deps.py b/services/ai/api/deps.py new file mode 100644 index 0000000..25993f5 --- /dev/null +++ b/services/ai/api/deps.py @@ -0,0 +1,21 @@ +from fastapi import HTTPException, Depends +from fastapi.security import APIKeyHeader +from sqlalchemy.orm import Session + +from ..config.config import settings +from ..database import get_db as _get_db + +api_key_header = APIKeyHeader(name="X-Internal-Api-Key", auto_error=False) + + +def verify_internal_key(key: str = Depends(api_key_header)): + if settings.INTERNAL_API_KEY and key != settings.INTERNAL_API_KEY: + raise HTTPException(401, "Invalid or missing internal API key") + return key + + +def get_db() -> Session: + """Returns DB session for AI service's own pgvector storage only. + Project/file data is fetched from Django via internal API. + """ + yield from _get_db() diff --git a/backend/apps/ai/__init__.py b/services/ai/api/routes/__init__.py similarity index 100% rename from backend/apps/ai/__init__.py rename to services/ai/api/routes/__init__.py diff --git a/services/ai/api/routes/generate.py b/services/ai/api/routes/generate.py new file mode 100644 index 0000000..3e53aa8 --- /dev/null +++ b/services/ai/api/routes/generate.py @@ -0,0 +1,237 @@ +import os +import tempfile +import shutil +import logging +import time as _time + +from fastapi import APIRouter, HTTPException, BackgroundTasks, Depends +from sqlalchemy.orm import Session + +from ...schemas.requests import GenerateRequest +from ...schemas.responses import GenerateResponse +from ...services.groq import call_groq +from ...services.markdown import sanitize_markdown +from ...services.generation import generate_file_docs, generate_project_summary, mock_docs, retrieve_project_context +from ...services.docs_builder import build_api_docs +from ...common.django_client import get_project, get_project_files, send_ai_docs, update_project +from ...rag import embed_and_store_chunks +from ..deps import get_db, verify_internal_key +from ...config.config import settings + +router = APIRouter() +logger = logging.getLogger("ai.generate") + + +def _call_ai_section(prompt_body: str, key_offset: int, label: str, max_tokens: int = 4096) -> str: + plen = len(prompt_body) + if plen > 12000: + prompt_body = prompt_body[:12000] + "\n... (truncated)" + return call_groq(prompt_body, max_tokens=max_tokens, model="llama-3.3-70b-versatile", key_start=key_offset) + + +def _build_project_context( + project: dict, summary: dict, fw_name: str, fw_block: str, + tree_trunc: str, deps: list, clone_hint: str, db: Session, +) -> str: + return ( + f"Project Name: {project.get('name')}\n" + f"Description: {project.get('description') or 'No description provided'}\n" + f"Framework: {fw_name}\n" + f"Architecture: {summary.get('architecture', 'monolith')}\n" + f"Total Files: {summary['file_count']}{fw_block}\n\n" + f"Project Structure:\n{tree_trunc}\n\n" + f"Dependencies:\n{chr(10).join(deps)}\n\n" + f"Apps/Modules: {', '.join(summary.get('apps', [])) or 'None detected'}\n" + f"Package Manager: {summary.get('package_manager', 'pip')}\n" + f"Relevant Code Context:\n{retrieve_project_context(str(project.get('id')), project.get('name', ''), db)}\n" + f"{clone_hint}\n" + ) + + +@router.post("/generate/", response_model=GenerateResponse) +def generate_docs(req: GenerateRequest, background_tasks: BackgroundTasks, db: Session = Depends(get_db), _auth: str = Depends(verify_internal_key)): + project = get_project(req.project_id) + if not project: + raise HTTPException(404, "Project not found") + + update_project(req.project_id, {"status": "processing"}) + + files_data = get_project_files(req.project_id) + if not files_data: + raise HTTPException(400, "No parsed files found. Run parser first.") + + try: + fw_info = project.get("framework_info") or {} + source_type = project.get("source_type", "file") + + if source_type == "file" and len(files_data) == 1: + f = files_data[0] + parsed = f.get("parsed_data") or {} + file_name = f.get("file_name", "untitled.py") + + if req.use_ai and settings.GROQ_API_KEY: + try: + embed_and_store_chunks(req.project_id, files_data, db) + except Exception as e: + logger.warning("Embedding failed (continuing without RAG): %s", e) + docs = generate_file_docs(parsed, file_name, fw_info, db, req.project_id) + else: + docs = mock_docs(parsed, file_name, fw_info) + + send_ai_docs(req.project_id, { + "generated_docs": sanitize_markdown(docs), + "status": "done", + }) + else: + temp_dir = tempfile.mkdtemp() + try: + for f in files_data: + content = f.get("content") or "" + if content: + fp = os.path.join(temp_dir, f["file_path"]) + os.makedirs(os.path.dirname(fp), exist_ok=True) + with open(fp, "w") as fh: + fh.write(content) + + summary = generate_project_summary(temp_dir, project.get("name")) + update_project(req.project_id, {"project_info": summary}) + + if req.use_ai and settings.GROQ_API_KEY: + try: + embed_and_store_chunks(req.project_id, files_data, db) + except Exception as e: + logger.warning("Embedding failed (continuing without RAG): %s", e) + + fw_name = fw_info.get("primary_framework", summary.get("framework", "python")) + fw_summary = fw_info.get("summary", "") + fw_block = f"\nDetected Frameworks: {fw_summary}\n" if fw_summary else "" + + tree_lines = (summary.get("project_tree") or "").splitlines() + if len(tree_lines) > 30: + tree_lines = tree_lines[:28] + ["... (truncated)"] + tree_trunc = "\n".join(tree_lines) + + deps = summary.get("dependencies", []) + if len(deps) > 20: + deps = deps[:18] + ["... (truncated)"] + + clone_url = (project.get("github_url") or "").strip() + repo_dir = project.get("name", "project") + clone_hint = "" + if clone_url: + clone_hint = f"\nClone URL: {clone_url}" + repo_dir = clone_url.rstrip("/").split("/")[-1].replace(".git", "") or repo_dir + + api_docs = build_api_docs(files_data) + update_project(req.project_id, {"api_docs": api_docs}) + _time.sleep(3) + + has_root_req = any(f.get("file_path") == "requirements.txt" for f in files_data) + has_root_manage = any(f.get("file_path") == "manage.py" for f in files_data) + cd_dir = "." if (has_root_req or has_root_manage) else (repo_dir or ".") + + project_context = _build_project_context( + project, summary, fw_name, fw_block, tree_trunc, + deps, clone_hint, db, + ) + + detected_apps = summary.get("apps", []) + app_labels = [a.split(".")[-1].replace("_", " ").title() for a in detected_apps] + mermaid_lines = ["flowchart TD", " A[Client] --> B[Backend]"] + for i, label in enumerate(app_labels): + node = chr(67 + i) if i < 24 else f"N{i}" + mermaid_lines.append(f" B --> {node}[{label}]") + mermaid_block = "\n".join(mermaid_lines) + app_list_str = ", ".join(f"`{a}`" for a in detected_apps) if detected_apps else "the detected modules" + + summary_prompt = f"""{project_context} + +Generate a project summary with two parts. + +Part 1 โ€” Overview: 2-3 paragraphs on the project's purpose, architecture, data flow. Include exactly ONE detailed mermaid flowchart based on the actual apps above (do NOT add a second simplified version): + +```mermaid +{mermaid_block} +``` + +Part 2 โ€” App-by-App Breakdown: For EACH app/module detected in this project, write one paragraph explaining what that app does, its key files, and how it fits the architecture. Include ALL of: {app_list_str}. Do NOT skip any. + +Output ONLY the summary content.""" + summary_result = _call_ai_section(summary_prompt, 1, "SUMMARY", max_tokens=2048) + tree_block = "\n\n---\n\n## Project Structure\n\n```\n" + summary.get("project_tree", "") + "\n```\n" + generated = sanitize_markdown(summary_result + tree_block) if summary_result else tree_block.strip() + + _time.sleep(3) + + readme_prompt = f"""{project_context} + +Write a README with: + +## Title & Description +What the project is and who it's for (3-4 sentences). + +## Key Features +5-7 bullet features from the app modules. + +## Quick Start +```bash +git clone {clone_url or ''} +cd {cd_dir} +{pm_cmd} +``` +Then run: `python manage.py migrate && python manage.py runserver` (or equivalent for the framework). + +## Architecture & Project Structure +Describe the monolithic layout, the apps under `backend/apps/`, and the data flow (2-3 paragraphs). + +Output ONLY the README content.""" + readme_result = _call_ai_section(readme_prompt, 0, "README", max_tokens=2048) + readme = sanitize_markdown(readme_result) if readme_result else f"# {project.get('name')}\n\nNo README generated." + + send_ai_docs(req.project_id, { + "generated_docs": generated, + "readme_docs": readme, + "status": "done", + }) + else: + fallback = f"""# {project.get('name')} + +## Overview +Mock project documentation for {project.get('name')}. + +## Project Structure +{summary['project_tree']} + +## Dependencies +{' '.join(summary.get('dependencies', [])) or 'Not detected'} + +> Configure GROQ_API_KEY to generate AI-powered documentation.""" + send_ai_docs(req.project_id, { + "generated_docs": sanitize_markdown(fallback), + "readme_docs": sanitize_markdown(fallback), + "status": "done", + }) + + finally: + shutil.rmtree(temp_dir, ignore_errors=True) + + project = get_project(req.project_id) + return GenerateResponse( + project_id=req.project_id, + status="done", + generated_docs=project.get("generated_docs"), + readme_docs=project.get("readme_docs"), + api_docs=project.get("api_docs"), + ) + + except Exception as e: + import traceback + logger.error("Generation failed: %s\n%s", str(e), traceback.format_exc()) + send_ai_docs(req.project_id, { + "status": "failed", + "error_message": str(e), + }) + return GenerateResponse( + project_id=req.project_id, + status="failed", + ) diff --git a/services/ai/api/routes/health.py b/services/ai/api/routes/health.py new file mode 100644 index 0000000..05ba17e --- /dev/null +++ b/services/ai/api/routes/health.py @@ -0,0 +1,14 @@ +from fastapi import APIRouter +from ...config.config import settings + +router = APIRouter() + + +@router.get("/health") +def health(): + return { + "status": "ok", + "service": "ai", + "groq_configured": bool(settings.GROQ_API_KEY), + "embedding_model": settings.EMBEDDING_MODEL, + } diff --git a/services/ai/api/routes/status.py b/services/ai/api/routes/status.py new file mode 100644 index 0000000..72c3e48 --- /dev/null +++ b/services/ai/api/routes/status.py @@ -0,0 +1,17 @@ +from fastapi import APIRouter, HTTPException, Depends +from ...common.django_client import get_project +from ..deps import verify_internal_key + +router = APIRouter() + + +@router.get("/status/{project_id}") +def ai_status(project_id: str, _auth: str = Depends(verify_internal_key)): + project = get_project(project_id) + if not project: + raise HTTPException(404, "Project not found") + return { + "project_id": project_id, + "status": project.get("status"), + "has_docs": bool(project.get("generated_docs")), + } diff --git a/backend/apps/ai/migrations/__init__.py b/services/ai/common/__init__.py similarity index 100% rename from backend/apps/ai/migrations/__init__.py rename to services/ai/common/__init__.py diff --git a/services/ai/common/auth.py b/services/ai/common/auth.py new file mode 100644 index 0000000..3f77041 --- /dev/null +++ b/services/ai/common/auth.py @@ -0,0 +1,27 @@ +import os +import jwt +from fastapi import HTTPException, Depends +from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials + +security = HTTPBearer(auto_error=False) + + +def verify_django_jwt(credentials: HTTPAuthorizationCredentials = Depends(security)): + """Verify a Django SimpleJWT access token. + Shared across FastAPI services for authentication via Django-issued JWTs. + """ + if credentials is None: + raise HTTPException(401, "Missing authorization header") + token = credentials.credentials + try: + payload = jwt.decode( + token, + os.getenv("DJANGO_SECRET_KEY", ""), + algorithms=["HS256"], + options={"verify_exp": True}, + ) + return payload + except jwt.ExpiredSignatureError: + raise HTTPException(401, "Token expired") + except jwt.InvalidTokenError: + raise HTTPException(401, "Invalid token") diff --git a/services/ai/common/django_client.py b/services/ai/common/django_client.py new file mode 100644 index 0000000..d6390bc --- /dev/null +++ b/services/ai/common/django_client.py @@ -0,0 +1,62 @@ +import os +import httpx +from typing import Any + +DJANGO_INTERNAL_URL = os.getenv( + "DJANGO_INTERNAL_URL", + "http://django:8000/api/internal", +) +INTERNAL_API_KEY = os.getenv("INTERNAL_API_KEY", "") + + +def _headers() -> dict: + return { + "X-Internal-Api-Key": INTERNAL_API_KEY, + "Content-Type": "application/json", + } + + +def get_project(project_id: str) -> dict[str, Any] | None: + resp = httpx.get( + f"{DJANGO_INTERNAL_URL}/projects/{project_id}/", + headers=_headers(), + timeout=30, + ) + if resp.status_code == 404: + return None + resp.raise_for_status() + return resp.json() + + +def update_project(project_id: str, data: dict) -> dict[str, Any]: + resp = httpx.patch( + f"{DJANGO_INTERNAL_URL}/projects/{project_id}/", + headers=_headers(), + json=data, + timeout=30, + ) + resp.raise_for_status() + return resp.json() + + +def get_project_files(project_id: str) -> list[dict[str, Any]]: + resp = httpx.get( + f"{DJANGO_INTERNAL_URL}/projects/{project_id}/files/", + headers=_headers(), + timeout=30, + ) + if resp.status_code == 404: + return [] + resp.raise_for_status() + return resp.json() + + +def send_ai_docs(project_id: str, data: dict): + resp = httpx.post( + f"{DJANGO_INTERNAL_URL}/projects/{project_id}/ai-docs/", + headers=_headers(), + json=data, + timeout=30, + ) + resp.raise_for_status() + return resp.json() diff --git a/backend/apps/comments/__init__.py b/services/ai/config/__init__.py similarity index 100% rename from backend/apps/comments/__init__.py rename to services/ai/config/__init__.py diff --git a/services/ai/config/config.py b/services/ai/config/config.py new file mode 100644 index 0000000..333004f --- /dev/null +++ b/services/ai/config/config.py @@ -0,0 +1,16 @@ +import os + + +class Settings: + GROQ_API_KEY: str = os.getenv("GROQ_API_KEY", "") + GROQ_API_KEY_2: str = os.getenv("GROQ_API_KEY_2", "") + INTERNAL_API_KEY: str = os.getenv("INTERNAL_API_KEY", "") + EMBEDDING_MODEL: str = os.getenv("EMBEDDING_MODEL", "all-MiniLM-L6-v2") + DATABASE_URL: str = os.getenv( + "DATABASE_URL", + "postgresql://pydocai_user:pydocai_pass@localhost:5433/pydocai" + ) + CORS_ALLOWED_ORIGINS: str = os.getenv("CORS_ALLOWED_ORIGINS", "http://localhost:5173") + + +settings = Settings() diff --git a/backend/services/ai/database.py b/services/ai/database.py similarity index 83% rename from backend/services/ai/database.py rename to services/ai/database.py index 27b8fa8..a105d21 100644 --- a/backend/services/ai/database.py +++ b/services/ai/database.py @@ -7,7 +7,13 @@ "postgresql://pydocai_user:pydocai_pass@localhost:5433/pydocai" ) -engine = create_engine(DATABASE_URL, pool_pre_ping=True) +engine = create_engine( + DATABASE_URL, + pool_pre_ping=True, + pool_size=10, + max_overflow=20, + pool_recycle=3600, +) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) Base = declarative_base() diff --git a/services/ai/docker/Dockerfile b/services/ai/docker/Dockerfile new file mode 100644 index 0000000..eb7954e --- /dev/null +++ b/services/ai/docker/Dockerfile @@ -0,0 +1,36 @@ +FROM python:3.11-slim AS builder + +RUN apt-get update && apt-get install -y --no-install-recommends gcc && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /app + +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +FROM python:3.11-slim + +RUN groupadd -r app && useradd -r -g app app + +RUN apt-get update && apt-get install -y --no-install-recommends \ + libgomp1 \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages +COPY --from=builder /usr/local/bin /usr/local/bin + +WORKDIR /app + +COPY . . + +RUN python -c "from sentence_transformers import SentenceTransformer; SentenceTransformer('all-MiniLM-L6-v2')" && \ + chown -R app:app /app + +USER app + +EXPOSE 8003 + +HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \ + CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:8003/health')" || exit 1 + +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8003", "--workers", "2"] diff --git a/services/ai/main.py b/services/ai/main.py new file mode 100644 index 0000000..fb50e4e --- /dev/null +++ b/services/ai/main.py @@ -0,0 +1,57 @@ +import os +import logging +from contextlib import asynccontextmanager +from fastapi import FastAPI, Request +from fastapi.middleware.cors import CORSMiddleware +from fastapi.responses import JSONResponse +from database import create_tables, engine +from config.config import settings + +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s [%(levelname)s] %(name)s: %(message)s", +) +logger = logging.getLogger(__name__) + + +@asynccontextmanager +async def lifespan(app: FastAPI): + logger.info("Starting AI service โ€” creating tables if needed") + create_tables() + yield + logger.info("Shutting down AI service โ€” disposing connection pool") + engine.dispose() + + +app = FastAPI( + title="PyDocAI AI Generator Service", + version="0.2.0", + lifespan=lifespan, +) + +origins = os.getenv("CORS_ALLOWED_ORIGINS", "http://localhost:5173").split(",") +app.add_middleware( + CORSMiddleware, + allow_origins=origins if origins != ["*"] else ["*"], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + + +@app.exception_handler(Exception) +async def global_exception_handler(request: Request, exc: Exception): + logger.exception("Unhandled exception on %s %s", request.method, request.url.path) + return JSONResponse( + status_code=500, + content={"detail": "Internal server error"}, + ) + + +from api.routes.health import router as health_router +from api.routes.generate import router as generate_router +from api.routes.status import router as status_router + +app.include_router(health_router) +app.include_router(generate_router, prefix="/api/ai") +app.include_router(status_router, prefix="/api/ai") diff --git a/services/ai/models/__init__.py b/services/ai/models/__init__.py new file mode 100644 index 0000000..aafb569 --- /dev/null +++ b/services/ai/models/__init__.py @@ -0,0 +1,3 @@ +from .code_embedding import CodeEmbedding + +__all__ = ["CodeEmbedding"] diff --git a/services/ai/models/code_embedding.py b/services/ai/models/code_embedding.py new file mode 100644 index 0000000..974833c --- /dev/null +++ b/services/ai/models/code_embedding.py @@ -0,0 +1,19 @@ +import uuid +from datetime import datetime +from sqlalchemy import Column, String, Text, DateTime, JSON, ForeignKey, Integer +from sqlalchemy.dialects.postgresql import UUID +from pgvector.sqlalchemy import Vector +from ..database import Base + + +class CodeEmbedding(Base): + __tablename__ = "code_embeddings" + + id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) + project_id = Column(UUID(as_uuid=True), ForeignKey("projects.id"), nullable=False, index=True) + file_path = Column(String(500), nullable=False) + chunk_type = Column(String(20), nullable=False) + chunk_text = Column(Text, nullable=False) + embedding = Column(Vector(384), nullable=False) + chunk_metadata = Column("metadata", JSON, default=dict) + created_at = Column(DateTime, default=datetime.utcnow) diff --git a/backend/services/ai/rag.py b/services/ai/rag.py similarity index 94% rename from backend/services/ai/rag.py rename to services/ai/rag.py index 955bdbf..d08581b 100644 --- a/backend/services/ai/rag.py +++ b/services/ai/rag.py @@ -8,6 +8,17 @@ _model = None +def _ensure_dict(f): + if isinstance(f, dict): + return f + return { + "file_path": f.file_path, + "parsed_data": getattr(f, "parsed_data", {}), + "content": getattr(f, "content", ""), + "file_name": getattr(f, "file_name", ""), + } + + def get_embedding_model(): global _model if _model is None: @@ -26,8 +37,9 @@ def embed_text(text: str) -> list[float]: def chunk_parsed_data(project_id: str, files: list) -> list[dict]: chunks = [] for f in files: - file_path = f.file_path - parsed = f.parsed_data or {} + d = _ensure_dict(f) + file_path = d["file_path"] + parsed = d.get("parsed_data") or {} if parsed.get("module_docstring") or parsed.get("imports"): lines = [f"File: {file_path}"] diff --git a/backend/services/ai/requirements.txt b/services/ai/requirements.txt similarity index 100% rename from backend/services/ai/requirements.txt rename to services/ai/requirements.txt diff --git a/backend/apps/comments/migrations/__init__.py b/services/ai/schemas/__init__.py similarity index 100% rename from backend/apps/comments/migrations/__init__.py rename to services/ai/schemas/__init__.py diff --git a/services/ai/schemas/requests.py b/services/ai/schemas/requests.py new file mode 100644 index 0000000..c4a7e76 --- /dev/null +++ b/services/ai/schemas/requests.py @@ -0,0 +1,8 @@ +from typing import Optional +from pydantic import BaseModel + + +class GenerateRequest(BaseModel): + project_id: str + file_path: Optional[str] = None + use_ai: bool = True diff --git a/services/ai/schemas/responses.py b/services/ai/schemas/responses.py new file mode 100644 index 0000000..b5c2b5c --- /dev/null +++ b/services/ai/schemas/responses.py @@ -0,0 +1,10 @@ +from typing import Optional +from pydantic import BaseModel + + +class GenerateResponse(BaseModel): + project_id: str + status: str + generated_docs: Optional[str] = None + readme_docs: Optional[str] = None + api_docs: Optional[str] = None diff --git a/backend/apps/exports/__init__.py b/services/ai/services/__init__.py similarity index 100% rename from backend/apps/exports/__init__.py rename to services/ai/services/__init__.py diff --git a/services/ai/services/docs_builder.py b/services/ai/services/docs_builder.py new file mode 100644 index 0000000..c39fbc9 --- /dev/null +++ b/services/ai/services/docs_builder.py @@ -0,0 +1,195 @@ +def _ensure_dict(f): + """Normalize file data to dict (works with SQLAlchemy objects or API dicts).""" + if isinstance(f, dict): + return f + return { + "file_path": f.file_path, + "content": getattr(f, "content", ""), + "parsed_data": getattr(f, "parsed_data", {}), + "file_name": getattr(f, "file_name", ""), + "file_size": getattr(f, "file_size", 0), + } + + +def build_structure_tree(ordered_items: list) -> str: + lines = [] + for item in ordered_items: + typ = item["type"] + data = item["data"] + prefix = "โ”œโ”€โ”€ " if item != ordered_items[-1] else "โ””โ”€โ”€ " + if typ == "import": + lines.append(f"{prefix}[Import] {data.get('display', '')}") + elif typ == "function": + args = ", ".join(a["name"] for a in data.get("args", [])) + lines.append(f"{prefix}[Function] {data['name']}({args}) -> {data.get('returns', 'None')}") + elif typ == "class": + bases = ", ".join(data.get("bases", [])) + base_str = f"({bases})" if bases else "" + lines.append(f"{prefix}[Class] {data['name']}{base_str}") + for i, m in enumerate(data.get("methods", [])): + m_prefix = " โ”œโ”€โ”€ " if i < len(data["methods"]) - 1 else " โ””โ”€โ”€ " + m_args = ", ".join(a["name"] for a in m.get("args", [])) + lines.append(f"{m_prefix}{m['name']}({m_args})") + return "\n".join(lines) + + +def postman_body_example(route: str) -> str: + examples = { + "register": '\n\n{\n "username": "johndoe",\n "email": "john@example.com",\n "password": "********"\n}', + "login": '\n\n{\n "username": "johndoe",\n "password": "********"\n}', + "change-password": '\n\n{\n "old_password": "********",\n "new_password": "********"\n}', + "password-reset": '\n\n{\n "email": "john@example.com"\n}', + "password-reset/confirm": '\n\n{\n "token": "...",\n "new_password": "********"\n}', + "import": '\n\n{\n "repo_url": "https://github.com/user/repo"\n}', + "folder": '\n\n{\n "folder_path": "src/"\n}', + "file": '\n\n{\n "file_path": "src/main.py",\n "content": "# code here"\n}', + "auth/github": '\n\n{\n "code": "github_oauth_code"\n}', + } + for key, body in examples.items(): + if key in route: + return body + return '\n\n{\n \n}' + + +def build_api_docs(files: list) -> str: + import re as _re + view_routes = {} + url_prefixes = {} + + dict_files = [_ensure_dict(f) for f in files] + + for f in dict_files: + fp = f["file_path"] + content = f.get("content") or "" + if fp.endswith("urls.py") and content: + for m in _re.finditer( + r"(?:path|re_path)\(\s*(['\"])(.+?)\1\s*,\s*include\((['\"])(.+?)\3\)", + content, + ): + route, included = m.group(2), m.group(4) + included_path = included.replace(".urls", "").replace(".", "/") + url_prefixes[included_path] = route + + for f in dict_files: + fp = f["file_path"] + content = f.get("content") or "" + if fp.endswith("urls.py") and content: + file_key = fp.replace("\\", "/") + parts = file_key.split("/") + prefix = "" + for p in range(len(parts)): + candidate = "/".join(parts[p:]).replace("/urls.py", "").replace(".", "/") + if candidate in url_prefixes: + prefix = url_prefixes[candidate] + break + + for m in _re.finditer( + r"(?:path|re_path)\(\s*(['\"])(.+?)\1\s*,\s*([^)]+)", + content, + ): + route = m.group(2) + view_expr = m.group(3).strip() + if view_expr.startswith("include") or view_expr.startswith("("): + continue + name_match = _re.search(r'(\w+)\.as_view\(', view_expr) + if name_match: + view_name = name_match.group(1) + else: + name_match = _re.search(r'(\w+)$', view_expr) + if name_match: + view_name = name_match.group(1) + else: + continue + full_route = f"{prefix.strip('/')}/{route.strip('/')}" + view_routes[view_name] = full_route + + app_docs = {} + for f in dict_files: + parsed = f.get("parsed_data") or {} + if not parsed: + continue + fp = f["file_path"] + if not (fp.endswith("views.py") or fp.endswith("admin.py")): + continue + parts = fp.replace("\\", "/").split("/") + app_name = "other" + for i, p in enumerate(parts): + if p == "apps" and i + 1 < len(parts): + app_name = parts[i + 1] + break + if p == "config": + app_name = "config" + break + if app_name not in app_docs: + app_docs[app_name] = [] + + for item in parsed.get("ordered_items", []): + if item["type"] not in ("function", "class"): + continue + data = item["data"] + name = data["name"] + docstring = (data.get("docstring") or "")[:150] + route = view_routes.get(name, "") + methods = [] + if item["type"] == "class": + for m in data.get("methods", []): + mname = m["name"] + if mname in ("get", "post", "put", "patch", "delete", "head", "options"): + methods.append(mname.upper()) + else: + methods.append(mname) + desc = docstring.replace("\n", " ") if docstring else "" + if not route and not methods: + continue + dedup_methods = list(dict.fromkeys(methods)) + http_verbs = [m for m in dedup_methods if m in ("GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS")] + custom_methods = [m for m in dedup_methods if m not in ("GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS")] + app_docs[app_name].append({ + "name": name, "type": item["type"], "route": route, + "http_verbs": http_verbs, "custom_methods": custom_methods, + "description": desc, "file": fp, + }) + + if not app_docs: + return "# API Documentation\n\nNo API endpoints found." + + lines = ["# API Documentation\n"] + for app_name in sorted(app_docs.keys()): + entries = app_docs[app_name] + if not entries: + continue + lines.append(f"## {app_name}\n") + for e in entries: + name = e["name"] + desc = e["description"] if e["description"] else "โ€”" + file_path = e["file"] + + if e["route"]: + clean_route = f"/{e['route'].strip('/')}" + methods_line = "`, `".join(e["http_verbs"]) if e["http_verbs"] else "โ€”" + lines.append(f"### {name}\n") + lines.append(f"`{methods_line}` `{clean_route}`\n") + lines.append(f"{desc}\n") + if e["custom_methods"]: + lines.append(f"**Custom methods:** `{', '.join(e['custom_methods'])}`\n") + methods_lower = set(m.lower() for m in e["http_verbs"]) + body = postman_body_example(clean_route) if any(v in methods_lower for v in ("post","put","patch")) else "" + if "post" in methods_lower: + lines.append(f"**Postman:**\n```\nPOST http://localhost:8000{clean_route}\nAuthorization: Bearer \nContent-Type: application/json{body}\n```\n") + elif "put" in methods_lower: + lines.append(f"**Postman:**\n```\nPUT http://localhost:8000{clean_route}\nAuthorization: Bearer \nContent-Type: application/json{body}\n```\n") + elif "patch" in methods_lower: + lines.append(f"**Postman:**\n```\nPATCH http://localhost:8000{clean_route}\nAuthorization: Bearer \nContent-Type: application/json{body}\n```\n") + elif "delete" in methods_lower: + lines.append(f"**Postman:**\n```\nDELETE http://localhost:8000{clean_route}\nAuthorization: Bearer \n```\n") + elif "get" in methods_lower: + lines.append(f"**Postman:**\n```\nGET http://localhost:8000{clean_route}\nAuthorization: Bearer \n```\n") + else: + methods_str = ", ".join(e["http_verbs"] + e["custom_methods"]) if (e["http_verbs"] or e["custom_methods"]) else "โ€”" + lines.append(f"### {name}\n") + lines.append(f"**Methods:** `{methods_str}`\n") + lines.append(f"{desc}\n") + + lines.append(f"**File:** `{file_path}`\n") + lines.append("---\n") + return "\n".join(lines) diff --git a/services/ai/services/generation.py b/services/ai/services/generation.py new file mode 100644 index 0000000..738fc0e --- /dev/null +++ b/services/ai/services/generation.py @@ -0,0 +1,278 @@ +import os +import json +import logging +from typing import Optional +from sqlalchemy.orm import Session + +from ..services.groq import call_groq +from ..services.markdown import sanitize_markdown +from ..services.prompts import get_item_docs_prompt +from ..services.docs_builder import build_structure_tree, build_api_docs +from ..rag import embed_and_store_chunks, retrieve_context, store_generated_doc + + +def retrieve_project_context(project_id: str, project_name: str, db: Session) -> str: + try: + rag_text, _ = retrieve_context( + project_id, + f"Project {project_name}: architecture, components, data flow, dependencies", + top_k=5, + db=db, + ) + if rag_text: + return rag_text + return "No additional code context available." + except Exception: + return "No additional code context available." + + +def mock_docs(parsed: dict, file_path: str, _framework_info: Optional[dict] = None) -> str: + imports = parsed.get("imports", []) + ordered = parsed.get("ordered_items", []) + + import_lines = [] + for imp in imports: + if isinstance(imp, dict): + import_lines.append(f'- `{imp.get("display", str(imp))}` (line {imp.get("line", "?")})') + else: + import_lines.append(f"- `{imp}`") + + doc_sections = [] + for item in ordered: + typ = item["type"] + data = item["data"] + if typ == "import": + pass + elif typ == "function": + args = ", ".join(a["name"] for a in data.get("args", [])) + returns = data.get("returns") or "None" + line = data.get("line", "?") + connections = data.get("connections", []) + conn_str = f" (calls: {', '.join(connections)})" if connections else "" + doc_sections.append( + f'### `{data["name"]}({args}) -> {returns}`\n' + f'- **Line:** {line}{conn_str}\n' + f'- **Purpose:** Mock documentation' + ) + elif typ == "class": + line = data.get("line", "?") + bases = ", ".join(data.get("bases", [])) + base_str = f"({bases})" if bases else "" + connections = data.get("connections", []) + conn_str = f" (uses: {', '.join(connections)})" if connections else "" + doc_sections.append( + f'### `{data["name"]}{base_str}`\n' + f'- **Line:** {line}{conn_str}\n' + f'- **Methods:** {", ".join(m["name"] for m in data.get("methods", []))}' + ) + + return f"""# {file_path} + +## Overview +Mock documentation generated for development purposes. This shows how the documentation will be structured with source order preserved. + +## Imports +{chr(10).join(import_lines) or 'No imports'} + +## Detailed Documentation (IN SOURCE ORDER) + +{chr(10).join(doc_sections) or 'No functions or classes'} + +> This is mock documentation. Configure GROQ_API_KEY to generate real AI-powered docs. +""" + + +def generate_file_docs(parsed: dict, file_path: str, framework_info: Optional[dict] = None, db: Session = None, project_id: str = None) -> str: + ordered_items = parsed.get("ordered_items", []) + module_doc = parsed.get("module_docstring") or "No module docstring" + imports = parsed.get("imports", []) + + import_displays = [] + for imp in imports: + if isinstance(imp, dict): + import_displays.append(imp.get("display", str(imp))) + else: + import_displays.append(str(imp)) + + structure_tree = build_structure_tree(ordered_items) + + fw_header = "" + fw_instructions = "" + if framework_info and framework_info.get("primary_framework"): + fw = framework_info["primary_framework"] + fw_header = f"\nFramework: {fw}\n" + fw_type = framework_info.get("primary_type", "") + if fw_type == "web": + fw_instructions = "\nSpecial instructions: When documenting Python web framework code, include details about routes, middleware, request/response handling, and dependency injection where applicable." + elif fw_type == "task_queue": + fw_instructions = "\nSpecial instructions: When documenting task queue code, include details about task signatures, queues, retries, and result backends where applicable." + elif fw_type == "orm": + fw_instructions = "\nSpecial instructions: When documenting ORM code, include details about model definitions, relationships, sessions, and query patterns where applicable." + elif fw_type == "ai": + fw_instructions = "\nSpecial instructions: When documenting AI/LLM code, include details about model configuration, prompts, streaming, and error handling where applicable." + + rag_context = "" + if db and project_id: + try: + rag_context, _ = retrieve_context(project_id, f"Module overview of {file_path}: {module_doc}", top_k=3, db=db) + except Exception: + pass + + rag_block = f"\n\nRelevant code context from project:\n{rag_context}\n\n---\n" if rag_context else "" + + overview_prompt = f"""{rag_block} +Generate the beginning sections for the Python file {file_path}.{fw_header} +Module docstring: {module_doc} +Imports: {', '.join(import_displays)} + +Output ONLY the following sections in markdown (nothing else): + +# {file_path} + +## Overview +3-5 detailed paragraphs on what this module does, its purpose, architecture, and key components. Include a mermaid flowchart showing the module architecture and data flow. + +## Code Structure (Source Order) +Paste the structure tree below EXACTLY as shown: + +{structure_tree} + +## Imports +For each import, provide a DETAILED table row with ALL columns: +| Import | Purpose | Where Used | Notes | +|--------|---------|----------|-------| +| ... | ... | ... | ... | + +## Notes +Any additional observations about the module. +""" + overview_docs = call_groq(overview_prompt, max_tokens=2048, key_start=0) + + item_docs = [] + for i, item in enumerate(ordered_items): + typ = item["type"] + data = item["data"] + if typ == "import": + continue + elif typ in ("function", "class"): + item_prompt = get_item_docs_prompt(typ, data, file_path) + if db and project_id: + try: + item_rag, is_pattern = retrieve_context( + project_id, f"{typ}: {data.get('name', '')} in {file_path}", top_k=3, db=db + ) + if item_rag: + item_prompt = get_item_docs_prompt(typ, data, file_path, is_pattern=is_pattern) + item_prompt = f"Relevant code context from project:\n{item_rag}\n\n---\n\n" + item_prompt + except Exception: + pass + docs = call_groq(item_prompt, max_tokens=2048, key_start=(i + 1) % 2) + item_docs.append(docs) + if db and project_id and docs: + try: + store_generated_doc(project_id, typ, data["name"], file_path, docs, db) + except Exception: + pass + + result = overview_docs + "\n\n" + result += "## Detailed Documentation (IN SOURCE ORDER)\n\n" + result += "\n\n---\n\n".join(item_docs) + result += "\n\n## End of Documentation" + + return result.strip() + + +def generate_project_summary(project_path: str, project_name: str = None) -> dict: + summary = { + "name": project_name or os.path.basename(project_path), + "framework": "python", + "architecture": "monolith", + "apps": [], + "dependencies": [], + "file_count": 0, + "project_tree": "", + "package_manager": "pip", + } + + root_contents = set(os.listdir(project_path)) + if "uv.lock" in root_contents or "uv.toml" in root_contents: + summary["package_manager"] = "uv" + elif "poetry.lock" in root_contents: + summary["package_manager"] = "poetry" + elif "Pipfile" in root_contents: + summary["package_manager"] = "pipenv" + elif "pyproject.toml" in root_contents: + summary["package_manager"] = "pip" + else: + summary["package_manager"] = "pip" + + dir_map = {} + for root, dirs, files in os.walk(project_path): + dirs[:] = [d for d in dirs if d not in { + "venv", ".venv", "__pycache__", "node_modules", + "migrations", ".git", "build", "dist", ".egg-info" + }] + rel_dir = os.path.relpath(root, project_path) + if rel_dir == ".": + rel_dir = "" + for f in files: + if f.endswith(".py"): + dir_map.setdefault(rel_dir, []).append(f) + + summary["file_count"] = sum(len(v) for v in dir_map.values()) + + def _build_tree(dir_map): + root = {} + for dir_path, files in dir_map.items(): + if not dir_path: + continue + parts = dir_path.replace("\\", "/").split("/") + node = root + for p in parts: + node = node.setdefault(p, {}) + node["__files__"] = files + return root + + def _render_tree(node, prefix="", is_last=True): + lines = [] + items = list(node.items()) + items.sort(key=lambda x: (x[0] == "__files__", x[0])) + for i, (key, val) in enumerate(items): + if key == "__files__": + files = sorted(val) + for fi, f in enumerate(files): + conn = "โ””โ”€โ”€ " if fi == len(files) - 1 else "โ”œโ”€โ”€ " + lines.append(f"{prefix}{conn}{f}") + else: + conn = "โ””โ”€โ”€ " if i == len(items) - 1 else "โ”œโ”€โ”€ " + lines.append(f"{prefix}{conn}{key}/") + ext = " " if i == len(items) - 1 else "โ”‚ " + sub_lines = _render_tree(val, prefix + ext, i == len(items) - 1) + lines.extend(sub_lines) + return lines + + tree = _build_tree(dir_map) + tree_lines = [] + top_dirs = sorted(k for k in tree if k != "__files__") + for ti, td in enumerate(top_dirs): + tree_lines.append(f"{td}/") + sub = _render_tree(tree[td], "", ti == len(top_dirs) - 1) + tree_lines.extend(sub) + summary["project_tree"] = "\n".join(tree_lines) + + for root, dirs, files in os.walk(project_path): + rel = os.path.relpath(root, project_path) + if rel == ".": + continue + if "apps.py" in files or "models.py" in files: + summary["apps"].append(rel.replace(os.sep, ".")) + + req_files = ["requirements.txt", "pyproject.toml", "Pipfile"] + for rf in req_files: + rpath = os.path.join(project_path, rf) + if os.path.exists(rpath): + with open(rpath) as f: + summary["dependencies"] = f.read().splitlines() + break + + return summary diff --git a/services/ai/services/groq.py b/services/ai/services/groq.py new file mode 100644 index 0000000..e90696e --- /dev/null +++ b/services/ai/services/groq.py @@ -0,0 +1,43 @@ +import os +import time +from fastapi import HTTPException +from ..config.config import settings + + +def call_groq(prompt: str, max_tokens: int = 2048, key_start: int = 0, model: str = "llama-3.1-8b-instant") -> str: + from groq import Groq + + key_pool = [] + if settings.GROQ_API_KEY: + key_pool.append(("key1", settings.GROQ_API_KEY)) + if settings.GROQ_API_KEY_2: + key_pool.append(("key2", settings.GROQ_API_KEY_2)) + if not key_pool: + raise HTTPException(503, "No Groq API keys configured") + keys_to_try = key_pool[key_start:] + key_pool[:key_start] + for name, key in keys_to_try: + for attempt in range(3): + try: + client = Groq(api_key=key) + response = client.chat.completions.create( + model=model, + messages=[{"role": "user", "content": prompt}], + max_tokens=max_tokens, + ) + result = response.choices[0].message.content.strip() + if result.startswith("```"): + result = result.split("```", 2)[-1].strip() + if result.endswith("```"): + result = result[:-3].strip() + return result + except Exception as e: + status_code = getattr(e, 'status_code', 0) or getattr(e, 'status', 0) + body = getattr(e, 'body', '') or (str(e.args) if e.args else str(e))[:200] + if status_code in (401, 403): + break + if status_code == 429: + break + wait = 2 ** attempt + time.sleep(wait) + continue + raise HTTPException(503, "All Groq API keys failed") diff --git a/services/ai/services/markdown.py b/services/ai/services/markdown.py new file mode 100644 index 0000000..214e4a0 --- /dev/null +++ b/services/ai/services/markdown.py @@ -0,0 +1,45 @@ +import re + + +def sanitize_markdown(text: str) -> str: + if not text: + return text + text = re.sub(r'(^|\n)mermaid\s*\n', r'\1```mermaid\n', text) + lines = text.split("\n") + result = [] + i = 0 + while i < len(lines): + line = lines[i] + if line.startswith("```mermaid"): + result.append(line) + i += 1 + while i < len(lines): + if lines[i].strip() == "```": + result.append(lines[i]) + i += 1 + break + elif lines[i].startswith("```mermaid"): + result.append("```") + break + elif lines[i].startswith("##") or lines[i].startswith("# "): + result.append("```") + result.append(lines[i]) + i += 1 + break + else: + result.append(lines[i]) + i += 1 + else: + result.append("```") + else: + result.append(lines[i]) + i += 1 + text = "\n".join(result) + text = re.sub(r'\bcode\s*\n\s*Copy\s*\n\s*python\s*\n', '```python\n', text) + text = re.sub(r'\bcode\s*\n\s*Copy\s*\n\s*(\w+)\s*\n', r'```\1\n', text) + text = re.sub(r'\bcode\s*\n\s*Copy\s*\n', '```\n', text) + text = re.sub(r'\n\s*```\s*\n\s*```\s*\n', '\n```\n', text) + text = re.sub(r'([^\n])\n(#{1,6} )', r'\1\n\n\2', text) + text = re.sub(r'(#{1,6} .+)\n([^\n#])', r'\1\n\n\2', text) + text = re.sub(r'\n{3,}', '\n\n', text) + return text.strip() diff --git a/services/ai/services/prompts.py b/services/ai/services/prompts.py new file mode 100644 index 0000000..b979130 --- /dev/null +++ b/services/ai/services/prompts.py @@ -0,0 +1,103 @@ +from typing import Optional + + +def get_item_docs_prompt(item_type: str, data: dict, file_path: str, is_pattern: bool = False) -> str: + if item_type == "function": + args_table = "| Parameter | Type | Description | Default | Constraints |\n|---|---|---|---|---|\n" + for a in data.get("args", []): + args_table += f"| {a['name']} | {a['type'] or 'Any'} | ... | ... | ... |\n" + connections = data.get("connections", []) + conn_str = ", ".join(connections) if connections else "None" + + if is_pattern: + return f"""This function follows the same pattern as other functions in this project. +Write a SHORT, differential doc focusing only on what makes THIS one unique. + +Function: `{data['name']}` +File: `{file_path}` +Line: {data.get('line', '?')} +Async: {data.get('is_async', False)} +Decorators: {', '.join(data.get('decorators', [])) or 'None'} +Parameters: +{args_table} +Returns: `{data.get('returns', 'None')}` +Calls/References: {conn_str} + +Provide ONLY: +- ### Purpose (1 sentence) +- ### Unique behavior (what differs from the pattern) +- ### Parameters table (just name and type) +- ### Returns (1 line) + +Output in clean markdown with headings. Keep it short.""" + return f"""Document the following Python function in detail using markdown. + +Function: `{data['name']}` +File: `{file_path}` +Line: {data.get('line', '?')} +Async: {data.get('is_async', False)} +Decorators: {', '.join(data.get('decorators', [])) or 'None'} +Parameters: +{args_table} +Returns: `{data.get('returns', 'None')}` +Calls/References: {conn_str} + +Provide: +- ### Purpose (2-3 sentences) +- ### Behavior (step-by-step) +- ### Parameters table (Parameter | Type | Description | Default | Constraints) +- ### Returns (type, description, possible values) +- ### Raises (all exceptions that can be raised) +- ### Relationships (Calls, Called By, Uses) +- ### Example Usage (Input/Output) +- ### Edge Cases +- ### Complexity (Big O) + +Output in clean markdown with headings.""" + elif item_type == "class": + methods_str = "" + for m in data.get("methods", []): + m_args = ", ".join(a["name"] for a in m.get("args", [])) + methods_str += f"- `{m['name']}({m_args}) -> {m.get('returns', 'None')}` (line {m.get('line', '?')})\n" + connections = data.get("connections", []) + conn_str = ", ".join(connections) if connections else "None" + + if is_pattern: + return f"""This class follows the same pattern as other classes in this project. +Write a SHORT, differential doc focusing only on what makes THIS one unique. + +Class: `{data['name']}` +File: `{file_path}` +Line: {data.get('line', '?')} +Bases: {', '.join(data.get('bases', [])) or 'None'} +Methods: +{methods_str} +Uses/References: {conn_str} + +Provide ONLY: +- ### Purpose (1 sentence) +- ### Unique behavior (what differs from the pattern) +- ### Attributes table (just name and type) +- ### Methods (1 line summary per method) + +Output in clean markdown with headings. Keep it short.""" + return f"""Document the following Python class in detail using markdown. + +Class: `{data['name']}` +File: `{file_path}` +Line: {data.get('line', '?')} +Bases: {', '.join(data.get('bases', [])) or 'None'} +Methods: +{methods_str} +Uses/References: {conn_str} + +Provide: +- ### Purpose (2-3 sentences) +- ### Attributes table (Attribute | Type | Description | Default) +- ### Methods (for each: purpose, parameters, returns, example) +- ### Inherits from (bases, inherited methods) +- ### Usage Example +- ### Relationships to other classes + +Output in clean markdown with headings.""" + return "" diff --git a/backend/apps/exports/migrations/__init__.py b/services/ai/tests/__init__.py similarity index 100% rename from backend/apps/exports/migrations/__init__.py rename to services/ai/tests/__init__.py diff --git a/services/ai/tests/test_routes.py b/services/ai/tests/test_routes.py new file mode 100644 index 0000000..d8540e8 --- /dev/null +++ b/services/ai/tests/test_routes.py @@ -0,0 +1,95 @@ +from uuid import uuid4 +from unittest.mock import patch, MagicMock + +import pytest +from fastapi.testclient import TestClient + +from main import app + +client = TestClient(app) + + +@pytest.fixture(autouse=True) +def mock_env(monkeypatch): + monkeypatch.setenv("INTERNAL_API_KEY", "") + monkeypatch.setenv("DATABASE_URL", "sqlite:///:memory:") + monkeypatch.setenv("DJANGO_INTERNAL_URL", "http://localhost:8000/api/internal") + + +@pytest.fixture +def mock_db(): + session = MagicMock() + + def gen(): + yield session + + with patch("api.deps.get_db", return_value=gen()): + yield session + + +class TestHealth: + def test_health_endpoint(self): + resp = client.get("/health") + assert resp.status_code == 200 + data = resp.json() + assert data["status"] == "ok" + assert data["service"] == "ai" + + +class TestGenerateDocs: + @patch("api.routes.generate.get_project") + def test_404_for_missing_project(self, mock_get): + mock_get.return_value = None + resp = client.post( + "/api/ai/generate/", + json={"project_id": str(uuid4())}, + ) + assert resp.status_code == 404 + + @patch("api.routes.generate.get_project") + @patch("api.routes.generate.get_project_files") + @patch("api.routes.generate.send_ai_docs") + @patch("api.routes.generate.update_project") + @patch("config.config.settings.GROQ_API_KEY", None) + def test_no_groq_key_uses_mock(self, mock_update, mock_send, mock_files, mock_get, mock_db): + pid = str(uuid4()) + mock_get.return_value = {"id": pid, "name": "Test", "source_type": "file", "framework_info": {}} + mock_files.return_value = [{ + "file_name": "test.py", + "file_path": "test.py", + "parsed_data": { + "functions": [{"name": "foo", "args": []}], + "classes": [], "imports": [], "error": False, + }, + "content": "def foo(): pass", + }] + + resp = client.post( + "/api/ai/generate/", + json={"project_id": pid}, + ) + assert resp.status_code == 200 + data = resp.json() + assert data["status"] == "done" + + +class TestAIStatus: + @patch("api.routes.status.get_project") + def test_returns_project_status(self, mock_get): + mock_get.return_value = { + "id": str(uuid4()), + "status": "done", + "generated_docs": "# Docs", + } + + resp = client.get(f"/api/ai/status/{uuid4()}") + assert resp.status_code == 200 + data = resp.json() + assert data["status"] == "done" + assert data["has_docs"] is True + + @patch("api.routes.status.get_project") + def test_404_for_unknown(self, mock_get): + mock_get.return_value = None + resp = client.get("/api/ai/status/00000000-0000-0000-0000-000000000000") + assert resp.status_code == 404 diff --git a/backend/.gitignore b/services/core/.gitignore similarity index 100% rename from backend/.gitignore rename to services/core/.gitignore diff --git a/backend/.python-version b/services/core/.python-version similarity index 100% rename from backend/.python-version rename to services/core/.python-version diff --git a/backend/README.md b/services/core/README.md similarity index 100% rename from backend/README.md rename to services/core/README.md diff --git a/backend/apps/feedback/__init__.py b/services/core/apps/__init__.py similarity index 100% rename from backend/apps/feedback/__init__.py rename to services/core/apps/__init__.py diff --git a/backend/apps/feedback/migrations/__init__.py b/services/core/apps/admin_dashboard/__init__.py similarity index 100% rename from backend/apps/feedback/migrations/__init__.py rename to services/core/apps/admin_dashboard/__init__.py diff --git a/backend/apps/admin_dashboard/apps.py b/services/core/apps/admin_dashboard/apps.py similarity index 100% rename from backend/apps/admin_dashboard/apps.py rename to services/core/apps/admin_dashboard/apps.py diff --git a/services/core/apps/admin_dashboard/tests/__init__.py b/services/core/apps/admin_dashboard/tests/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/services/core/apps/admin_dashboard/tests/__init__.py @@ -0,0 +1 @@ + diff --git a/services/core/apps/admin_dashboard/tests/test_projects.py b/services/core/apps/admin_dashboard/tests/test_projects.py new file mode 100644 index 0000000..c32c1a2 --- /dev/null +++ b/services/core/apps/admin_dashboard/tests/test_projects.py @@ -0,0 +1,66 @@ +import pytest +from django.urls import reverse +from rest_framework import status + + +pytestmark = pytest.mark.django_db + + +class TestAdminProjectListView: + def test_non_admin_forbidden(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('admin-project-list') + response = api_client.get(url) + assert response.status_code == status.HTTP_403_FORBIDDEN + + def test_admin_can_list(self, api_client, admin_user, project): + api_client.force_authenticate(user=admin_user) + url = reverse('admin-project-list') + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert response.data['count'] >= 1 + assert 'stats' in response.data + assert 'results' in response.data + + def test_search(self, api_client, admin_user, project): + api_client.force_authenticate(user=admin_user) + url = reverse('admin-project-list') + '?search=Test Project' + response = api_client.get(url) + assert response.data['count'] >= 1 + + def test_filter_by_status(self, api_client, admin_user, project): + api_client.force_authenticate(user=admin_user) + url = reverse('admin-project-list') + '?status=done' + response = api_client.get(url) + assert response.data['count'] >= 1 + + +class TestAdminUserProjectsView: + def test_list_user_published_projects(self, api_client, admin_user, user, published_project): + api_client.force_authenticate(user=admin_user) + url = reverse('admin-user-projects', args=[user.id]) + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert len(response.data) >= 1 + + def test_unpublished_not_included(self, api_client, admin_user, user, project): + api_client.force_authenticate(user=admin_user) + url = reverse('admin-user-projects', args=[user.id]) + response = api_client.get(url) + published = [p for p in response.data if p['is_published']] + assert len(published) == 0 + + +class TestAdminProjectDetailView: + def test_admin_can_view(self, api_client, admin_user, project): + api_client.force_authenticate(user=admin_user) + url = reverse('admin-project-detail', args=[project.id]) + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert response.data['id'] == str(project.id) + + def test_not_found(self, api_client, admin_user): + api_client.force_authenticate(user=admin_user) + url = reverse('admin-project-detail', args=['00000000-0000-0000-0000-000000000000']) + response = api_client.get(url) + assert response.status_code == status.HTTP_404_NOT_FOUND diff --git a/services/core/apps/admin_dashboard/tests/test_stats.py b/services/core/apps/admin_dashboard/tests/test_stats.py new file mode 100644 index 0000000..902bf68 --- /dev/null +++ b/services/core/apps/admin_dashboard/tests/test_stats.py @@ -0,0 +1,35 @@ +import pytest +from django.urls import reverse +from rest_framework import status + + +pytestmark = pytest.mark.django_db + + +class TestAdminStatsView: + def test_non_admin_forbidden(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('admin-stats') + response = api_client.get(url) + assert response.status_code == status.HTTP_403_FORBIDDEN + + def test_admin_can_access(self, api_client, admin_user): + api_client.force_authenticate(user=admin_user) + url = reverse('admin-stats') + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert 'users' in response.data + assert 'projects' in response.data + assert 'top_users' in response.data + + def test_user_stats(self, api_client, admin_user, user, other_user): + api_client.force_authenticate(user=admin_user) + url = reverse('admin-stats') + response = api_client.get(url) + assert response.data['users']['total'] >= 3 + + def test_project_stats(self, api_client, admin_user, project): + api_client.force_authenticate(user=admin_user) + url = reverse('admin-stats') + response = api_client.get(url) + assert response.data['projects']['total'] >= 1 diff --git a/services/core/apps/admin_dashboard/tests/test_users.py b/services/core/apps/admin_dashboard/tests/test_users.py new file mode 100644 index 0000000..542211b --- /dev/null +++ b/services/core/apps/admin_dashboard/tests/test_users.py @@ -0,0 +1,83 @@ +import pytest +from django.urls import reverse +from rest_framework import status + + +pytestmark = pytest.mark.django_db + + +class TestAdminUserListView: + def test_non_admin_forbidden(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('admin-user-list') + response = api_client.get(url) + assert response.status_code == status.HTTP_403_FORBIDDEN + + def test_admin_can_list(self, api_client, admin_user, user): + api_client.force_authenticate(user=admin_user) + url = reverse('admin-user-list') + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert len(response.data) >= 2 + + def test_search(self, api_client, admin_user, user): + api_client.force_authenticate(user=admin_user) + url = reverse('admin-user-list') + '?search=test@example.com' + response = api_client.get(url) + assert len(response.data) >= 1 + assert response.data[0]['email'] == 'test@example.com' + + +class TestAdminUserDetailView: + def test_admin_can_view(self, api_client, admin_user, user): + api_client.force_authenticate(user=admin_user) + url = reverse('admin-user-detail', args=[user.id]) + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert response.data['email'] == user.email + + def test_not_found(self, api_client, admin_user): + api_client.force_authenticate(user=admin_user) + url = reverse('admin-user-detail', args=['00000000-0000-0000-0000-000000000000']) + response = api_client.get(url) + assert response.status_code == status.HTTP_404_NOT_FOUND + + +class TestAdminUserDeleteView: + def test_admin_can_delete(self, api_client, admin_user, user): + api_client.force_authenticate(user=admin_user) + url = reverse('admin-user-delete', args=[user.id]) + response = api_client.post(url, {'reason': 'Inactive'}, format='json') + assert response.status_code == status.HTTP_200_OK + + def test_not_found(self, api_client, admin_user): + api_client.force_authenticate(user=admin_user) + url = reverse('admin-user-delete', args=['00000000-0000-0000-0000-000000000000']) + response = api_client.post(url, {'reason': 'Test'}, format='json') + assert response.status_code == status.HTTP_404_NOT_FOUND + + +class TestAdminUserBlockView: + def test_admin_can_block(self, api_client, admin_user, user): + api_client.force_authenticate(user=admin_user) + url = reverse('admin-user-block', args=[user.id]) + response = api_client.post(url, format='json') + assert response.status_code == status.HTTP_200_OK + assert response.data['is_active'] is False + user.refresh_from_db() + assert user.is_active is False + + def test_admin_can_unblock(self, api_client, admin_user, user): + user.is_active = False + user.save() + api_client.force_authenticate(user=admin_user) + url = reverse('admin-user-block', args=[user.id]) + response = api_client.post(url, format='json') + assert response.status_code == status.HTTP_200_OK + assert response.data['is_active'] is True + + def test_cannot_block_self(self, api_client, admin_user): + api_client.force_authenticate(user=admin_user) + url = reverse('admin-user-block', args=[admin_user.id]) + response = api_client.post(url, format='json') + assert response.status_code == status.HTTP_400_BAD_REQUEST diff --git a/backend/apps/admin_dashboard/urls.py b/services/core/apps/admin_dashboard/urls.py similarity index 100% rename from backend/apps/admin_dashboard/urls.py rename to services/core/apps/admin_dashboard/urls.py diff --git a/services/core/apps/admin_dashboard/views/__init__.py b/services/core/apps/admin_dashboard/views/__init__.py new file mode 100644 index 0000000..2754b5e --- /dev/null +++ b/services/core/apps/admin_dashboard/views/__init__.py @@ -0,0 +1,14 @@ +from .stats import AdminStatsView +from .users import AdminUserListView, AdminUserDetailView, AdminUserDeleteView, AdminUserBlockView +from .projects import AdminProjectListView, AdminUserProjectsView, AdminProjectDetailView + +__all__ = [ + 'AdminStatsView', + 'AdminUserListView', + 'AdminUserDetailView', + 'AdminUserDeleteView', + 'AdminUserBlockView', + 'AdminProjectListView', + 'AdminUserProjectsView', + 'AdminProjectDetailView', +] diff --git a/services/core/apps/admin_dashboard/views/projects.py b/services/core/apps/admin_dashboard/views/projects.py new file mode 100644 index 0000000..dc72a01 --- /dev/null +++ b/services/core/apps/admin_dashboard/views/projects.py @@ -0,0 +1,89 @@ +from django.db.models import Count, Q +from rest_framework.permissions import IsAdminUser +from rest_framework.response import Response +from rest_framework.views import APIView + +from apps.projects.models import Project +from apps.projects.serializers import ProjectListSerializer, ProjectSerializer + + +class AdminProjectListView(APIView): + permission_classes = [IsAdminUser] + + def get(self, request): + qs = Project.objects.select_related('user') \ + .annotate(file_count=Count('files')) + + search = request.query_params.get('search') + if search: + qs = qs.filter( + Q(name__icontains=search) | + Q(user__email__icontains=search) | + Q(user__name__icontains=search) + ) + + for field in ['status', 'source_type']: + val = request.query_params.get(field) + if val: + qs = qs.filter(**{field: val}) + + ordering = request.query_params.get('ordering', '-created_at') + allowed = ['created_at', 'name', 'status', '-created_at', '-name', '-status'] + if ordering not in allowed: + ordering = '-created_at' + qs = qs.order_by(ordering) + + stats = { + 'total': qs.count(), + 'done': qs.filter(status='done').count(), + 'processing': qs.filter(status='processing').count(), + 'failed': qs.filter(status='failed').count(), + 'pending': qs.filter(status='pending').count(), + 'by_source': list( + qs.values('source_type') + .annotate(count=Count('id')) + .order_by('-count') + ), + } + + page_size = int(request.query_params.get('page_size', 25)) + page = int(request.query_params.get('page', 1)) + start = (page - 1) * page_size + end = start + page_size + total = qs.count() + + page_qs = qs[start:end] + serializer = ProjectListSerializer(page_qs, many=True) + + return Response({ + 'stats': stats, + 'results': serializer.data, + 'count': total, + 'page': page, + 'page_size': page_size, + }) + + +class AdminUserProjectsView(APIView): + permission_classes = [IsAdminUser] + + def get(self, request, pk): + qs = (Project.objects + .filter(user_id=pk, is_published=True) + .select_related('user') + .annotate(file_count=Count('files')) + .order_by('-updated_at')) + serializer = ProjectListSerializer(qs, many=True) + return Response(serializer.data) + + +class AdminProjectDetailView(APIView): + permission_classes = [IsAdminUser] + + def get(self, request, pk): + try: + project = Project.objects.select_related('user').get(pk=pk) + except Project.DoesNotExist: + return Response({'detail': 'Not found.'}, status=404) + serializer = ProjectSerializer(project) + return Response(serializer.data) diff --git a/services/core/apps/admin_dashboard/views/stats.py b/services/core/apps/admin_dashboard/views/stats.py new file mode 100644 index 0000000..0735e4e --- /dev/null +++ b/services/core/apps/admin_dashboard/views/stats.py @@ -0,0 +1,57 @@ +from datetime import timedelta + +from django.db.models import Count, Q +from django.utils import timezone +from rest_framework import status +from rest_framework.permissions import IsAuthenticated +from rest_framework.response import Response +from rest_framework.views import APIView + +from apps.notifications.tasks import send_email_task +from apps.projects.models import Project +from apps.users.models import User + + +class AdminStatsView(APIView): + permission_classes = [IsAuthenticated] + + def get(self, request): + if not request.user.is_staff and not request.user.is_admin: + return Response({'detail': 'Forbidden.'}, status=status.HTTP_403_FORBIDDEN) + + now = timezone.now() + week = now - timedelta(days=7) + month = now - timedelta(days=30) + + stats = { + 'users': { + 'total': User.objects.count(), + 'verified': User.objects.filter(is_verified=True).count(), + 'github_connected': User.objects.exclude(github_token__isnull=True).exclude(github_token='').count(), + 'new_this_week': User.objects.filter(created_at__gte=week).count(), + 'new_this_month': User.objects.filter(created_at__gte=month).count(), + }, + 'projects': { + 'total': Project.objects.count(), + 'done': Project.objects.filter(status='done').count(), + 'processing': Project.objects.filter(status='processing').count(), + 'failed': Project.objects.filter(status='failed').count(), + 'pending': Project.objects.filter(status='pending').count(), + 'new_this_week': Project.objects.filter(created_at__gte=week).count(), + 'new_this_month': Project.objects.filter(created_at__gte=month).count(), + 'by_source': list( + Project.objects.values('source_type') + .annotate(count=Count('id')) + .order_by('-count') + ), + }, + 'top_users': list( + User.objects.annotate( + project_count=Count('projects'), + published_count=Count('projects', filter=Q(projects__is_published=True)), + ) + .order_by('-project_count') + .values('id', 'email', 'name', 'project_count', 'published_count')[:10] + ), + } + return Response(stats) diff --git a/services/core/apps/admin_dashboard/views/users.py b/services/core/apps/admin_dashboard/views/users.py new file mode 100644 index 0000000..d569bc3 --- /dev/null +++ b/services/core/apps/admin_dashboard/views/users.py @@ -0,0 +1,112 @@ +from django.conf import settings +from django.db.models import Count, Q +from django.template.loader import render_to_string +from rest_framework import status +from rest_framework.permissions import IsAdminUser +from rest_framework.response import Response +from rest_framework.views import APIView + +from apps.notifications.tasks import send_email_task +from apps.users.models import User +from apps.users.serializers import AdminUserSerializer, UserSerializer + + +class AdminUserListView(APIView): + permission_classes = [IsAdminUser] + + def get(self, request): + qs = User.objects.annotate( + project_count=Count('projects'), + published_count=Count('projects', filter=Q(projects__is_published=True)), + ) + + search = request.query_params.get('search') + if search: + qs = qs.filter( + Q(email__icontains=search) | + Q(username__icontains=search) | + Q(name__icontains=search) + ) + + for field in ['is_active', 'is_verified', 'role']: + val = request.query_params.get(field) + if val is not None: + qs = qs.filter(**{field: val}) + + ordering = request.query_params.get('ordering', '-created_at') + allowed = ['created_at', 'email', 'username', '-created_at', '-email', '-username'] + if ordering not in allowed: + ordering = '-created_at' + qs = qs.order_by(ordering) + + serializer = AdminUserSerializer(qs, many=True) + return Response(serializer.data) + + +class AdminUserDetailView(APIView): + permission_classes = [IsAdminUser] + + def get(self, request, pk): + try: + user = User.objects.get(pk=pk) + except User.DoesNotExist: + return Response({'detail': 'Not found.'}, status=status.HTTP_404_NOT_FOUND) + serializer = UserSerializer(user) + return Response(serializer.data) + + +class AdminUserDeleteView(APIView): + permission_classes = [IsAdminUser] + + def post(self, request, pk): + try: + target = User.objects.get(pk=pk) + except User.DoesNotExist: + return Response({'detail': 'User not found.'}, status=status.HTTP_404_NOT_FOUND) + + reason = request.data.get('reason', 'No reason provided.') + + if settings.EMAIL_HOST_USER: + subject = 'Your PyDocAI account has been deleted' + send_email_task.delay( + subject=subject, + message=f'Your PyDocAI account has been deleted.\n\nReason: {reason}', + recipient_list=[target.email], + html_message=render_to_string('emails/account_deleted.html', { + 'reason': reason, + }), + ) + + target.projects.all().delete() + target.delete() + return Response({'detail': 'User deleted successfully.'}, status=status.HTTP_200_OK) + + +class AdminUserBlockView(APIView): + permission_classes = [IsAdminUser] + + def post(self, request, pk): + try: + target = User.objects.get(pk=pk) + except User.DoesNotExist: + return Response({'detail': 'User not found.'}, status=status.HTTP_404_NOT_FOUND) + + if target == request.user: + return Response({'detail': 'You cannot block yourself.'}, status=status.HTTP_400_BAD_REQUEST) + + target.is_active = not target.is_active + target.save(update_fields=['is_active']) + + action = 'blocked' if not target.is_active else 'unblocked' + + if settings.EMAIL_HOST_USER: + send_email_task.delay( + subject=f'Your PyDocAI account has been {action}', + message=f'Your PyDocAI account has been {action} by an administrator.', + recipient_list=[target.email], + html_message=render_to_string('emails/account_blocked.html', { + 'action': action, + }), + ) + + return Response({'detail': f'User {action} successfully.', 'is_active': target.is_active}) diff --git a/backend/apps/github_integration/__init__.py b/services/core/apps/ai/__init__.py similarity index 100% rename from backend/apps/github_integration/__init__.py rename to services/core/apps/ai/__init__.py diff --git a/backend/apps/ai/apps.py b/services/core/apps/ai/apps.py similarity index 100% rename from backend/apps/ai/apps.py rename to services/core/apps/ai/apps.py diff --git a/backend/apps/github_integration/migrations/__init__.py b/services/core/apps/ai/migrations/__init__.py similarity index 100% rename from backend/apps/github_integration/migrations/__init__.py rename to services/core/apps/ai/migrations/__init__.py diff --git a/services/core/apps/ai/tests/__init__.py b/services/core/apps/ai/tests/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/services/core/apps/ai/tests/__init__.py @@ -0,0 +1 @@ + diff --git a/services/core/apps/ai/tests/test_views.py b/services/core/apps/ai/tests/test_views.py new file mode 100644 index 0000000..e5fe4bc --- /dev/null +++ b/services/core/apps/ai/tests/test_views.py @@ -0,0 +1,72 @@ +from unittest.mock import patch + +import pytest +from django.urls import reverse +from rest_framework import status + + +pytestmark = pytest.mark.django_db + + +class TestAIStatusView: + def test_unauthenticated(self, api_client): + url = reverse('ai-status') + response = api_client.get(url) + assert response.status_code == status.HTTP_401_UNAUTHORIZED + + def test_no_keys_configured(self, api_client, user): + api_client.force_authenticate(user=user) + with patch('django.conf.settings.GROQ_API_KEY', None): + with patch('django.conf.settings.GROQ_API_KEY_2', None): + url = reverse('ai-status') + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert response.data['providers']['groq_primary']['configured'] is False + assert response.data['providers']['groq_fallback']['configured'] is False + + def test_primary_key_configured(self, api_client, user): + api_client.force_authenticate(user=user) + with patch('django.conf.settings.GROQ_API_KEY', 'test-key-1'): + with patch('django.conf.settings.GROQ_API_KEY_2', None): + url = reverse('ai-status') + response = api_client.get(url) + assert response.data['providers']['groq_primary']['configured'] is True + assert response.data['providers']['groq_fallback']['configured'] is False + + def test_both_keys_configured(self, api_client, user): + api_client.force_authenticate(user=user) + with patch('django.conf.settings.GROQ_API_KEY', 'test-key-1'): + with patch('django.conf.settings.GROQ_API_KEY_2', 'test-key-2'): + url = reverse('ai-status') + response = api_client.get(url) + assert response.data['providers']['groq_primary']['configured'] is True + assert response.data['providers']['groq_fallback']['configured'] is True + + @patch('groq.Groq') + def test_primary_active(self, mock_groq, api_client, user): + api_client.force_authenticate(user=user) + with patch('django.conf.settings.GROQ_API_KEY', 'test-key-1'): + with patch('django.conf.settings.GROQ_API_KEY_2', None): + url = reverse('ai-status') + response = api_client.get(url) + assert response.data['providers']['groq_primary']['status'] == 'active' + + @patch('groq.Groq') + def test_primary_invalid(self, mock_groq, api_client, user): + mock_groq.side_effect = Exception('Invalid API key') + api_client.force_authenticate(user=user) + with patch('django.conf.settings.GROQ_API_KEY', 'bad-key'): + with patch('django.conf.settings.GROQ_API_KEY_2', None): + url = reverse('ai-status') + response = api_client.get(url) + assert response.data['providers']['groq_primary']['status'] == 'invalid' + + def test_response_structure(self, api_client, user): + api_client.force_authenticate(user=user) + with patch('django.conf.settings.GROQ_API_KEY', None): + with patch('django.conf.settings.GROQ_API_KEY_2', None): + url = reverse('ai-status') + response = api_client.get(url) + assert 'providers' in response.data + assert 'fallback_order' in response.data + assert response.data['fallback_order'] == ['groq_primary', 'groq_fallback'] diff --git a/backend/apps/ai/urls.py b/services/core/apps/ai/urls.py similarity index 100% rename from backend/apps/ai/urls.py rename to services/core/apps/ai/urls.py diff --git a/services/core/apps/ai/views/__init__.py b/services/core/apps/ai/views/__init__.py new file mode 100644 index 0000000..ecc5cbe --- /dev/null +++ b/services/core/apps/ai/views/__init__.py @@ -0,0 +1,5 @@ +from .status import AIStatusView + +__all__ = [ + 'AIStatusView', +] diff --git a/backend/apps/ai/views.py b/services/core/apps/ai/views/status.py similarity index 90% rename from backend/apps/ai/views.py rename to services/core/apps/ai/views/status.py index 5204e92..fc01938 100644 --- a/backend/apps/ai/views.py +++ b/services/core/apps/ai/views/status.py @@ -5,10 +5,6 @@ class AIStatusView(APIView): - """ - Check the status and metadata of configured Groq API keys. - Provider hierarchy: Groq primary -> Groq fallback. - """ permission_classes = [IsAuthenticated] def get(self, request): @@ -33,7 +29,6 @@ def get(self, request): 'fallback_order': ['groq_primary', 'groq_fallback'], } - # Check primary Groq key if groq_key: try: from groq import Groq @@ -44,7 +39,6 @@ def get(self, request): status_data['providers']['groq_primary']['status'] = 'invalid' status_data['providers']['groq_primary']['error'] = str(e) - # Check fallback Groq key if groq_key_2: try: from groq import Groq diff --git a/backend/apps/internal/__init__.py b/services/core/apps/comments/__init__.py similarity index 100% rename from backend/apps/internal/__init__.py rename to services/core/apps/comments/__init__.py diff --git a/backend/apps/comments/apps.py b/services/core/apps/comments/apps.py similarity index 100% rename from backend/apps/comments/apps.py rename to services/core/apps/comments/apps.py diff --git a/backend/apps/comments/migrations/0001_initial.py b/services/core/apps/comments/migrations/0001_initial.py similarity index 100% rename from backend/apps/comments/migrations/0001_initial.py rename to services/core/apps/comments/migrations/0001_initial.py diff --git a/backend/apps/notifications/__init__.py b/services/core/apps/comments/migrations/__init__.py similarity index 100% rename from backend/apps/notifications/__init__.py rename to services/core/apps/comments/migrations/__init__.py diff --git a/backend/apps/comments/models.py b/services/core/apps/comments/models.py similarity index 100% rename from backend/apps/comments/models.py rename to services/core/apps/comments/models.py diff --git a/backend/apps/comments/serializers.py b/services/core/apps/comments/serializers/__init__.py similarity index 98% rename from backend/apps/comments/serializers.py rename to services/core/apps/comments/serializers/__init__.py index e4145ad..1b83636 100644 --- a/backend/apps/comments/serializers.py +++ b/services/core/apps/comments/serializers/__init__.py @@ -1,6 +1,6 @@ from rest_framework import serializers -from .models import Comment +from ..models import Comment class CommentSerializer(serializers.ModelSerializer): diff --git a/services/core/apps/comments/tests/__init__.py b/services/core/apps/comments/tests/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/services/core/apps/comments/tests/__init__.py @@ -0,0 +1 @@ + diff --git a/services/core/apps/comments/tests/test_models.py b/services/core/apps/comments/tests/test_models.py new file mode 100644 index 0000000..b3f591c --- /dev/null +++ b/services/core/apps/comments/tests/test_models.py @@ -0,0 +1,40 @@ +import pytest +from django.db import models as db_models + +from apps.comments.models import Comment + + +class TestCommentModel: + def test_fields(self): + fields = [f.name for f in Comment._meta.get_fields()] + assert 'id' in fields + assert 'project' in fields + assert 'user' in fields + assert 'parent' in fields + assert 'content' in fields + assert 'created_at' in fields + assert 'updated_at' in fields + + def test_str(self, comment): + assert comment.user.email in str(comment) + assert comment.project.name in str(comment) + + def test_ordering(self): + assert Comment._meta.ordering == ['created_at'] + + def test_db_table(self): + assert Comment._meta.db_table == 'comments' + + def test_indexes(self): + field_names = [list(idx.fields) for idx in Comment._meta.indexes] + assert ['project', 'created_at'] in field_names + assert ['user', 'created_at'] in field_names + + def test_parent_relation(self, comment, user, project): + reply = Comment.objects.create(project=project, user=user, parent=comment, content='A reply') + assert reply.parent == comment + assert list(comment.replies.all()) == [reply] + + def test_content_max_length(self): + field = Comment._meta.get_field('content') + assert isinstance(field, db_models.TextField) diff --git a/services/core/apps/comments/tests/test_serializers.py b/services/core/apps/comments/tests/test_serializers.py new file mode 100644 index 0000000..b0ba42c --- /dev/null +++ b/services/core/apps/comments/tests/test_serializers.py @@ -0,0 +1,47 @@ +import pytest + +from apps.comments.serializers import CommentCreateSerializer, CommentSerializer + + +class TestCommentSerializer: + def test_serialize(self, comment): + serializer = CommentSerializer(comment) + assert serializer.data['id'] == str(comment.id) + assert serializer.data['content'] == comment.content + assert serializer.data['user_name'] == comment.user.name + assert serializer.data['user_email'] == comment.user.email + assert 'replies' in serializer.data + assert 'parent_content' in serializer.data + + def test_serialize_with_replies(self, comment, user, project): + reply = comment.replies.create(project=project, user=user, content='Reply') + serializer = CommentSerializer(comment) + assert len(serializer.data['replies']) == 1 + assert serializer.data['replies'][0]['content'] == 'Reply' + + def test_serialize_depth_limit(self, comment): + serializer = CommentSerializer(comment, context={'depth': 3}) + assert 'replies' not in serializer.data + + def test_parent_content(self, comment, user, project): + reply = comment.replies.create(project=project, user=user, content='Reply') + serializer = CommentSerializer(reply) + assert serializer.data['parent_content'] == comment.content + + def test_no_parent_content(self, comment): + serializer = CommentSerializer(comment) + assert serializer.data['parent_content'] is None + + +class TestCommentCreateSerializer: + def test_validate_valid_data(self): + serializer = CommentCreateSerializer(data={'content': 'Nice project!'}) + assert serializer.is_valid() + + def test_validate_empty_content(self): + serializer = CommentCreateSerializer(data={'content': ''}) + assert not serializer.is_valid() + + def test_serialize_created(self, comment): + serializer = CommentCreateSerializer(comment) + assert serializer.data['content'] == comment.content diff --git a/services/core/apps/comments/tests/test_throttles.py b/services/core/apps/comments/tests/test_throttles.py new file mode 100644 index 0000000..37721a8 --- /dev/null +++ b/services/core/apps/comments/tests/test_throttles.py @@ -0,0 +1,25 @@ +from unittest.mock import Mock + +from apps.comments.throttles import CommentRateThrottle + + +class TestCommentRateThrottle: + def test_get_cache_key_authenticated(self): + throttle = CommentRateThrottle() + request = Mock() + request.user.is_authenticated = True + request.user.pk = 'user-123' + view = Mock() + key = throttle.get_cache_key(request, view) + assert key == 'comment_create:user-123' + + def test_get_cache_key_unauthenticated(self): + throttle = CommentRateThrottle() + request = Mock() + request.user.is_authenticated = False + view = Mock() + key = throttle.get_cache_key(request, view) + assert key is None + + def test_scope(self): + assert CommentRateThrottle.scope == 'comment_create' diff --git a/services/core/apps/comments/tests/test_views.py b/services/core/apps/comments/tests/test_views.py new file mode 100644 index 0000000..7025390 --- /dev/null +++ b/services/core/apps/comments/tests/test_views.py @@ -0,0 +1,115 @@ +import pytest +from django.urls import reverse +from rest_framework import status + + +pytestmark = pytest.mark.django_db + + +class TestCommentListView: + def test_public_published_project(self, api_client, published_project): + url = reverse('comment_list', args=[published_project.id]) + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert 'comments' in response.data + assert 'has_next' in response.data + + def test_unpublished_requires_auth(self, api_client, project): + url = reverse('comment_list', args=[project.id]) + response = api_client.get(url) + assert response.status_code == status.HTTP_404_NOT_FOUND + + def test_unpublished_owner_can_view(self, api_client, project, user): + api_client.force_authenticate(user=user) + url = reverse('comment_list', args=[project.id]) + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + + def test_non_owner_cannot_view_unpublished(self, api_client, project, other_user): + api_client.force_authenticate(user=other_user) + url = reverse('comment_list', args=[project.id]) + response = api_client.get(url) + assert response.status_code == status.HTTP_404_NOT_FOUND + + def test_not_found(self, api_client): + url = reverse('comment_list', args=['00000000-0000-0000-0000-000000000000']) + response = api_client.get(url) + assert response.status_code == status.HTTP_404_NOT_FOUND + + def test_returns_top_level_only(self, api_client, published_project, user): + from apps.comments.models import Comment + top = Comment.objects.create(project=published_project, user=user, content='Top') + Comment.objects.create(project=published_project, user=user, parent=top, content='Reply') + api_client.force_authenticate(user=user) + url = reverse('comment_list', args=[published_project.id]) + response = api_client.get(url) + assert len(response.data['comments']) == 1 + assert response.data['comments'][0]['content'] == 'Top' + + def test_pagination(self, api_client, published_project, user): + from apps.comments.models import Comment + for i in range(5): + Comment.objects.create(project=published_project, user=user, content=f'C{i}') + url = reverse('comment_list', args=[published_project.id]) + response = api_client.get(url + '?limit=2') + assert len(response.data['comments']) == 2 + assert response.data['has_next'] is True + + +class TestCommentCreateView: + def test_unauthenticated(self, api_client, published_project): + url = reverse('comment_create', args=[published_project.id]) + response = api_client.post(url, {'content': 'Great!'}) + assert response.status_code == status.HTTP_401_UNAUTHORIZED + + def test_create_comment(self, api_client, published_project, user): + api_client.force_authenticate(user=user) + url = reverse('comment_create', args=[published_project.id]) + response = api_client.post(url, {'content': 'Nice project!'}) + assert response.status_code == status.HTTP_201_CREATED + assert response.data['content'] == 'Nice project!' + + def test_create_reply(self, api_client, published_project, user, comment): + api_client.force_authenticate(user=user) + url = reverse('comment_create', args=[published_project.id]) + response = api_client.post(url, {'content': 'A reply', 'parent': str(comment.id)}) + assert response.status_code == status.HTTP_201_CREATED + assert response.data['parent'] == comment.id + + def test_project_not_found(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('comment_create', args=['00000000-0000-0000-0000-000000000000']) + response = api_client.post(url, {'content': 'Test'}) + assert response.status_code == status.HTTP_404_NOT_FOUND + + def test_invalid_data(self, api_client, published_project, user): + api_client.force_authenticate(user=user) + url = reverse('comment_create', args=[published_project.id]) + response = api_client.post(url, {}) + assert response.status_code == status.HTTP_400_BAD_REQUEST + + +class TestCommentDeleteView: + def test_unauthenticated(self, api_client, comment): + url = reverse('comment_delete', args=[comment.id]) + response = api_client.delete(url) + assert response.status_code == status.HTTP_401_UNAUTHORIZED + + def test_delete_own_comment(self, api_client, comment, user): + api_client.force_authenticate(user=user) + url = reverse('comment_delete', args=[comment.id]) + response = api_client.delete(url) + assert response.status_code == status.HTTP_204_NO_CONTENT + + def test_cannot_delete_others_comment(self, api_client, comment, other_user): + api_client.force_authenticate(user=other_user) + url = reverse('comment_delete', args=[comment.id]) + response = api_client.delete(url) + assert response.status_code == status.HTTP_404_NOT_FOUND + + def test_delete_sets_deleted(self, api_client, comment, user): + api_client.force_authenticate(user=user) + url = reverse('comment_delete', args=[comment.id]) + api_client.delete(url) + comment.refresh_from_db() + assert comment.content == '[deleted]' diff --git a/backend/apps/comments/throttles.py b/services/core/apps/comments/throttles.py similarity index 100% rename from backend/apps/comments/throttles.py rename to services/core/apps/comments/throttles.py diff --git a/backend/apps/comments/urls.py b/services/core/apps/comments/urls.py similarity index 100% rename from backend/apps/comments/urls.py rename to services/core/apps/comments/urls.py diff --git a/services/core/apps/comments/views/__init__.py b/services/core/apps/comments/views/__init__.py new file mode 100644 index 0000000..bb5705f --- /dev/null +++ b/services/core/apps/comments/views/__init__.py @@ -0,0 +1 @@ +from .comments import CommentCreateView, CommentDeleteView, CommentListView diff --git a/backend/apps/comments/views.py b/services/core/apps/comments/views/comments.py similarity index 70% rename from backend/apps/comments/views.py rename to services/core/apps/comments/views/comments.py index 29edb3b..29efaa0 100644 --- a/backend/apps/comments/views.py +++ b/services/core/apps/comments/views/comments.py @@ -1,14 +1,14 @@ from django.db import connection -from rest_framework import generics, permissions, status +from rest_framework import permissions, status from rest_framework.response import Response from rest_framework.views import APIView from apps.notifications.utils import notify_comment, notify_reply from apps.projects.models import Project -from .models import Comment -from .serializers import CommentCreateSerializer, CommentSerializer -from .throttles import CommentRateThrottle +from ..models import Comment +from ..serializers import CommentCreateSerializer, CommentSerializer +from ..throttles import CommentRateThrottle class CommentListView(APIView): @@ -45,19 +45,28 @@ def get(self, request, project_id): }) -class CommentCreateView(generics.CreateAPIView): +class CommentCreateView(APIView): permission_classes = [permissions.IsAuthenticated] - serializer_class = CommentCreateSerializer throttle_classes = [CommentRateThrottle] - def perform_create(self, serializer): - project = Project.objects.get(pk=self.kwargs['project_id']) - comment = serializer.save(user=self.request.user, project=project) + def post(self, request, project_id): + try: + project = Project.objects.get(pk=project_id) + except Project.DoesNotExist: + return Response({"detail": "Not found."}, status=status.HTTP_404_NOT_FOUND) + + serializer = CommentCreateSerializer(data=request.data) + if not serializer.is_valid(): + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + comment = serializer.save(user=request.user, project=project) if comment.parent: notify_reply(comment) else: notify_comment(comment) + return Response(CommentSerializer(comment).data, status=status.HTTP_201_CREATED) + class CommentDeleteView(APIView): permission_classes = [permissions.IsAuthenticated] @@ -68,9 +77,6 @@ def delete(self, request, pk): except Comment.DoesNotExist: return Response({"detail": "Not found."}, status=status.HTTP_404_NOT_FOUND) - with connection.cursor() as cursor: - cursor.execute( - "UPDATE comments SET content = '[deleted]', user_id = NULL WHERE id = %s", - [comment.id] - ) + comment.content = '[deleted]' + comment.save(update_fields=['content']) return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/backend/apps/notifications/migrations/__init__.py b/services/core/apps/common/__init__.py similarity index 100% rename from backend/apps/notifications/migrations/__init__.py rename to services/core/apps/common/__init__.py diff --git a/services/core/apps/common/apps.py b/services/core/apps/common/apps.py new file mode 100644 index 0000000..f992f88 --- /dev/null +++ b/services/core/apps/common/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class CommonConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'apps.common' diff --git a/services/core/apps/common/config.py b/services/core/apps/common/config.py new file mode 100644 index 0000000..419c44f --- /dev/null +++ b/services/core/apps/common/config.py @@ -0,0 +1,3 @@ +import os + +INTERNAL_API_KEY = os.getenv("INTERNAL_API_KEY", "pydocai-internal-key") diff --git a/services/core/apps/common/github.py b/services/core/apps/common/github.py new file mode 100644 index 0000000..1a394d1 --- /dev/null +++ b/services/core/apps/common/github.py @@ -0,0 +1,115 @@ +import io +import zipfile + +import requests +from django.conf import settings +from github import Github, GithubException + + +def get_github_client(github_token=None): + if github_token: + return Github(github_token, timeout=10, retry=0) + api_token = getattr(settings, 'GITHUB_API_TOKEN', None) + if api_token and api_token.strip(): + return Github(api_token, timeout=10, retry=0) + return Github(timeout=10, retry=0) + + +def _github_api_headers(): + api_token = getattr(settings, 'GITHUB_API_TOKEN', None) + headers = {'Accept': 'application/vnd.github+json'} + if api_token and api_token.strip(): + headers['Authorization'] = f'token {api_token}' + return headers + + +def fetch_public_repo_api(full_name): + headers = _github_api_headers() + resp = requests.get( + f'https://api.github.com/repos/{full_name}', + headers=headers, timeout=10, + ) + if resp.status_code == 404: + raise GithubException(404, {'message': 'Not Found'}) + if resp.status_code == 403: + raise GithubException(403, {'message': 'Rate limit exceeded or forbidden'}) + resp.raise_for_status() + return resp.json() + + +def fetch_public_tree_api(full_name, branch): + headers = _github_api_headers() + resp = requests.get( + f'https://api.github.com/repos/{full_name}/git/trees/{branch}?recursive=1', + headers=headers, timeout=10, + ) + if resp.status_code == 404: + raise GithubException(404, {'message': 'Not Found'}) + if resp.status_code == 403: + raise GithubException(403, {'message': 'Rate limit exceeded or forbidden'}) + resp.raise_for_status() + return resp.json() + + +def download_zipball(url, headers, folder_path, file_filter=None): + """Download a GitHub zipball and extract files. + + file_filter: optional callable(file_name) -> bool to filter files. + By default (None), extracts ALL files except directories. + """ + resp = requests.get(url, headers=headers, timeout=30, stream=True) + resp.raise_for_status() + zip_bytes = resp.content + + files = [] + with zipfile.ZipFile(io.BytesIO(zip_bytes)) as zf: + names = zf.namelist() + prefix = '' + if names: + first = names[0] + if '/' in first: + prefix = first.split('/', 1)[0] + '/' + + for name in names: + if name.endswith('/'): + continue + if file_filter and not file_filter(name): + continue + rel_path = name[len(prefix):] if prefix else name + if folder_path and folder_path != '/' and not rel_path.startswith(folder_path.lstrip('/')): + continue + try: + content = zf.read(name).decode('utf-8', errors='ignore').replace('\x00', '') + files.append({'file_path': rel_path, 'content': content}) + except Exception: + files.append({'file_path': rel_path, 'content': '[binary file]'}) + return files + + +def get_repo_tree_items(github_token, full_name, branch=None): + g = Github(github_token) + repo = g.get_repo(full_name) + branch = branch or repo.default_branch + tree = repo.get_git_tree(branch, recursive=True) + items = [] + for item in tree.tree: + items.append({ + 'path': item.path, + 'type': item.type, + 'size': item.size, + }) + return items + + +def get_public_repo_tree_items(full_name, branch=None): + repo_data = fetch_public_repo_api(full_name) + branch = branch or repo_data.get('default_branch') or 'main' + tree_data = fetch_public_tree_api(full_name, branch) + items = [] + for item in tree_data.get('tree', []): + items.append({ + 'path': item['path'], + 'type': item['type'], + 'size': item.get('size', 0), + }) + return items diff --git a/services/core/apps/common/health.py b/services/core/apps/common/health.py new file mode 100644 index 0000000..95be16f --- /dev/null +++ b/services/core/apps/common/health.py @@ -0,0 +1,4 @@ +from django.http import JsonResponse + +def health_check(request): + return JsonResponse({"status": "healthy"}) diff --git a/services/core/apps/common/pagination.py b/services/core/apps/common/pagination.py new file mode 100644 index 0000000..2238e02 --- /dev/null +++ b/services/core/apps/common/pagination.py @@ -0,0 +1,17 @@ +from rest_framework.pagination import PageNumberPagination + + +class NoPagination(PageNumberPagination): + page_size = None + + +class AdminUserPage(PageNumberPagination): + page_size = 50 + page_size_query_param = 'page_size' + max_page_size = 200 + + +class PublicProjectPage(PageNumberPagination): + page_size = 12 + page_size_query_param = 'page_size' + max_page_size = 50 diff --git a/backend/apps/parser/__init__.py b/services/core/apps/common/tests/__init__.py similarity index 100% rename from backend/apps/parser/__init__.py rename to services/core/apps/common/tests/__init__.py diff --git a/services/core/apps/common/tests/test_config.py b/services/core/apps/common/tests/test_config.py new file mode 100644 index 0000000..550672b --- /dev/null +++ b/services/core/apps/common/tests/test_config.py @@ -0,0 +1,6 @@ +from apps.common.config import INTERNAL_API_KEY + + +class TestInternalApiKey: + def test_has_default(self): + assert INTERNAL_API_KEY == 'pydocai-internal-key' diff --git a/services/core/apps/common/tests/test_github.py b/services/core/apps/common/tests/test_github.py new file mode 100644 index 0000000..4897e85 --- /dev/null +++ b/services/core/apps/common/tests/test_github.py @@ -0,0 +1,95 @@ +from unittest.mock import patch + +from github import GithubException + +from apps.common.github import ( + download_zipball, + fetch_public_repo_api, + get_github_client, +) + + +class TestGetGithubClient: + def test_with_token(self): + client = get_github_client('test-token') + assert client is not None + + def test_without_token(self): + with patch('django.conf.settings.GITHUB_API_TOKEN', None): + client = get_github_client() + assert client is not None + + +class TestFetchPublicRepoApi: + def test_success(self): + with patch('apps.common.github.requests.get') as mock: + mock.return_value.status_code = 200 + mock.return_value.json.return_value = {'id': 1, 'name': 'repo'} + result = fetch_public_repo_api('owner/repo') + assert result['id'] == 1 + assert result['name'] == 'repo' + + def test_not_found(self): + with patch('apps.common.github.requests.get') as mock: + mock.return_value.status_code = 404 + mock.return_value.json.return_value = {'message': 'Not Found'} + import pytest + with pytest.raises(GithubException) as exc: + fetch_public_repo_api('owner/repo') + assert exc.value.status == 404 + + def test_forbidden(self): + with patch('apps.common.github.requests.get') as mock: + mock.return_value.status_code = 403 + mock.return_value.json.return_value = {'message': 'Forbidden'} + import pytest + with pytest.raises(GithubException) as exc: + fetch_public_repo_api('owner/repo') + assert exc.value.status == 403 + + +class TestDownloadZipball: + def test_basic_download(self): + with patch('apps.common.github.requests.get') as mock_get: + import io, zipfile + buf = io.BytesIO() + with zipfile.ZipFile(buf, 'w') as zf: + zf.writestr('repo-owner-sha/file.py', 'print("hello")') + buf.seek(0) + mock_get.return_value.status_code = 200 + mock_get.return_value.content = buf.read() + + files = download_zipball('http://example.com/zip', {}, '/') + assert len(files) == 1 + assert files[0]['file_path'] == 'file.py' + assert files[0]['content'] == 'print("hello")' + + def test_with_file_filter(self): + with patch('apps.common.github.requests.get') as mock_get: + import io, zipfile + buf = io.BytesIO() + with zipfile.ZipFile(buf, 'w') as zf: + zf.writestr('repo/file.py', 'code') + zf.writestr('repo/readme.txt', 'docs') + buf.seek(0) + mock_get.return_value.status_code = 200 + mock_get.return_value.content = buf.read() + + files = download_zipball('http://example.com/zip', {}, '/', file_filter=lambda n: n.endswith('.py')) + assert len(files) == 1 + assert files[0]['file_path'] == 'file.py' + + def test_folder_path_filter(self): + with patch('apps.common.github.requests.get') as mock_get: + import io, zipfile + buf = io.BytesIO() + with zipfile.ZipFile(buf, 'w') as zf: + zf.writestr('repo/src/main.py', 'code') + zf.writestr('repo/tests/test_main.py', 'test') + buf.seek(0) + mock_get.return_value.status_code = 200 + mock_get.return_value.content = buf.read() + + files = download_zipball('http://example.com/zip', {}, 'src') + assert len(files) == 1 + assert files[0]['file_path'] == 'src/main.py' diff --git a/services/core/apps/common/tests/test_pagination.py b/services/core/apps/common/tests/test_pagination.py new file mode 100644 index 0000000..58e72c8 --- /dev/null +++ b/services/core/apps/common/tests/test_pagination.py @@ -0,0 +1,35 @@ +from apps.common.pagination import AdminUserPage, NoPagination, PublicProjectPage + + +class TestNoPagination: + def test_page_size_none(self): + paginator = NoPagination() + assert paginator.page_size is None + + +class TestAdminUserPage: + def test_page_size(self): + paginator = AdminUserPage() + assert paginator.page_size == 50 + + def test_page_size_query_param(self): + paginator = AdminUserPage() + assert paginator.page_size_query_param == 'page_size' + + def test_max_page_size(self): + paginator = AdminUserPage() + assert paginator.max_page_size == 200 + + +class TestPublicProjectPage: + def test_page_size(self): + paginator = PublicProjectPage() + assert paginator.page_size == 12 + + def test_page_size_query_param(self): + paginator = PublicProjectPage() + assert paginator.page_size_query_param == 'page_size' + + def test_max_page_size(self): + paginator = PublicProjectPage() + assert paginator.max_page_size == 50 diff --git a/services/core/apps/conftest.py b/services/core/apps/conftest.py new file mode 100644 index 0000000..3112ae5 --- /dev/null +++ b/services/core/apps/conftest.py @@ -0,0 +1,112 @@ +import uuid + +import pytest +from rest_framework.test import APIClient + +from apps.projects.models import Project, ProjectFile +from apps.users.models import User + + +@pytest.fixture +def api_client(): + return APIClient() + + +@pytest.fixture +def user(db): + return User.objects.create_user( + email='test@example.com', + password='testpass123', + name='Test User', + username='testuser', + ) + + +@pytest.fixture +def other_user(db): + return User.objects.create_user( + email='other@example.com', + password='otherpass123', + name='Other User', + username='otheruser', + ) + + +@pytest.fixture +def admin_user(db): + return User.objects.create_user( + email='admin@example.com', + password='adminpass123', + name='Admin User', + username='admin', + role='admin', + is_staff=True, + ) + + +@pytest.fixture +def project(db, user): + return Project.objects.create( + user=user, + name='Test Project', + description='A test project', + source_type=Project.SourceType.FILE, + status=Project.Status.DONE, + ) + + +@pytest.fixture +def published_project(db, user, project): + project.is_published = True + project.public_slug = uuid.uuid4() + project.save(update_fields=['is_published', 'public_slug']) + return project + + +@pytest.fixture +def project_file(db, project): + return ProjectFile.objects.create( + project=project, + file_name='main.py', + file_path='src/main.py', + content='print("hello")', + ) + + +@pytest.fixture +def comment(db, published_project, user): + from apps.comments.models import Comment + return Comment.objects.create( + project=published_project, + user=user, + content='Great project!', + ) + + +@pytest.fixture +def notification(db, user): + from apps.notifications.models import Notification + return Notification.objects.create( + user=user, + message='Someone commented on your project', + ) + + +@pytest.fixture +def notification_with_comment(db, user, comment): + from apps.notifications.models import Notification + return Notification.objects.create( + user=user, + comment=comment, + message='Someone commented on your project', + ) + + +@pytest.fixture +def feedback(db, user): + from apps.feedback.models import Feedback + return Feedback.objects.create( + user=user, + category='bug', + message='Found a bug in the export feature', + ) diff --git a/backend/apps/parser/migrations/__init__.py b/services/core/apps/exports/__init__.py similarity index 100% rename from backend/apps/parser/migrations/__init__.py rename to services/core/apps/exports/__init__.py diff --git a/backend/apps/exports/apps.py b/services/core/apps/exports/apps.py similarity index 100% rename from backend/apps/exports/apps.py rename to services/core/apps/exports/apps.py diff --git a/backend/apps/exports/generators.py b/services/core/apps/exports/generators.py similarity index 95% rename from backend/apps/exports/generators.py rename to services/core/apps/exports/generators.py index 8f24bc3..e8c4901 100644 --- a/backend/apps/exports/generators.py +++ b/services/core/apps/exports/generators.py @@ -5,7 +5,7 @@ def export_project_as_markdown(project_id: str) -> str: project = Project.objects.get(id=project_id) # Check if project-level docs exist (new feature) - if project.readme_docs or (project.project_info and project.project_info.get('summary')): + if project.readme_docs or project.project_info: combined = "" # Add README if available diff --git a/backend/apps/projects/__init__.py b/services/core/apps/exports/migrations/__init__.py similarity index 100% rename from backend/apps/projects/__init__.py rename to services/core/apps/exports/migrations/__init__.py diff --git a/services/core/apps/exports/tests/__init__.py b/services/core/apps/exports/tests/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/services/core/apps/exports/tests/__init__.py @@ -0,0 +1 @@ + diff --git a/services/core/apps/exports/tests/test_generators.py b/services/core/apps/exports/tests/test_generators.py new file mode 100644 index 0000000..dfea435 --- /dev/null +++ b/services/core/apps/exports/tests/test_generators.py @@ -0,0 +1,46 @@ +import pytest + +from apps.exports.generators import export_project_as_markdown + + +pytestmark = pytest.mark.django_db + + +class TestExportProjectAsMarkdown: + def test_project_with_readme(self, project): + project.readme_docs = '# Project README' + project.save() + result = export_project_as_markdown(str(project.id)) + assert '# Project README' in result + assert project.name in result + + def test_project_with_summary(self, project): + project.project_info = {'summary': 'Project summary'} + project.save() + result = export_project_as_markdown(str(project.id)) + assert 'Project summary' in result + + def test_project_with_info_json(self, project): + project.project_info = {'key': 'value'} + project.save() + result = export_project_as_markdown(str(project.id)) + assert 'key' in result + assert 'value' in result + + def test_fallback_to_per_file_docs(self, project, project_file): + project_file.generated_docs = '## Function docs' + project_file.save() + result = export_project_as_markdown(str(project.id)) + assert project_file.file_path in result + assert 'Function docs' in result + + def test_no_files(self, project): + result = export_project_as_markdown(str(project.id)) + assert '_No files found for this project._' in result + + def test_project_with_parsed_no_docs(self, project, project_file): + project_file.parsed_data = {'functions': ['foo']} + project_file.generated_docs = None + project_file.save() + result = export_project_as_markdown(str(project.id)) + assert 'parsed_data present: True' in result diff --git a/services/core/apps/exports/tests/test_views.py b/services/core/apps/exports/tests/test_views.py new file mode 100644 index 0000000..4ce10bb --- /dev/null +++ b/services/core/apps/exports/tests/test_views.py @@ -0,0 +1,70 @@ +from unittest.mock import patch + +import pytest +from django.urls import reverse +from rest_framework import status + + +pytestmark = pytest.mark.django_db + + +class TestExportProjectMarkdownView: + def test_export_success(self, api_client, user, project): + api_client.force_authenticate(user=user) + with patch('apps.exports.views.markdown.export_project_as_markdown', return_value='# Docs'): + url = reverse('export-markdown', args=[project.id]) + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert response.content.decode() == '# Docs' + assert response['Content-Type'] == 'text/markdown' + assert 'attachment' in response['Content-Disposition'] + + def test_export_failure(self, api_client, user, project): + api_client.force_authenticate(user=user) + with patch('apps.exports.views.markdown.export_project_as_markdown', side_effect=Exception('Error')): + url = reverse('export-markdown', args=[project.id]) + response = api_client.get(url) + assert response.status_code == status.HTTP_404_NOT_FOUND + + +class TestExportFolderDocsView: + def test_export_all(self, api_client, user, project): + api_client.force_authenticate(user=user) + project.readme_docs = '# README' + project.generated_docs = '# Summary' + project.api_docs = '# API' + project.save() + url = reverse('export-folder', args=[project.id]) + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + content = response.content.decode() + assert '# README' in content + assert '# Project Documentation' in content + assert '# API Documentation' in content + + def test_export_readme_only(self, api_client, user, project): + api_client.force_authenticate(user=user) + project.readme_docs = '# README' + project.save() + url = reverse('export-folder', args=[project.id]) + '?type=readme' + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert response.content.decode() == '# README' + + def test_export_readme_not_found(self, api_client, user, project): + api_client.force_authenticate(user=user) + url = reverse('export-folder', args=[project.id]) + '?type=readme' + response = api_client.get(url) + assert response.status_code == status.HTTP_404_NOT_FOUND + + def test_project_not_found(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('export-folder', args=['00000000-0000-0000-0000-000000000000']) + response = api_client.get(url) + assert response.status_code == status.HTTP_404_NOT_FOUND + + def test_none_available(self, api_client, user, project): + api_client.force_authenticate(user=user) + url = reverse('export-folder', args=[project.id]) + response = api_client.get(url) + assert response.status_code == status.HTTP_404_NOT_FOUND diff --git a/backend/apps/exports/urls.py b/services/core/apps/exports/urls.py similarity index 100% rename from backend/apps/exports/urls.py rename to services/core/apps/exports/urls.py diff --git a/services/core/apps/exports/views/__init__.py b/services/core/apps/exports/views/__init__.py new file mode 100644 index 0000000..56665c0 --- /dev/null +++ b/services/core/apps/exports/views/__init__.py @@ -0,0 +1,7 @@ +from .markdown import ExportProjectMarkdownView +from .folder import ExportFolderDocsView + +__all__ = [ + 'ExportProjectMarkdownView', + 'ExportFolderDocsView', +] diff --git a/backend/apps/exports/views.py b/services/core/apps/exports/views/folder.py similarity index 72% rename from backend/apps/exports/views.py rename to services/core/apps/exports/views/folder.py index 8db5253..b104e56 100644 --- a/backend/apps/exports/views.py +++ b/services/core/apps/exports/views/folder.py @@ -1,34 +1,14 @@ +import uuid + from django.http import Http404, HttpResponse from rest_framework.views import APIView -from apps.exports.generators import export_project_as_markdown - - -class ExportProjectMarkdownView(APIView): - # permission_classes = [IsAuthenticated] # Disabled for testing - - def get(self, request, project_id): - try: - markdown = export_project_as_markdown(str(project_id)) - except Exception as e: - raise Http404(f"Export failed: {e}") - - return HttpResponse( - markdown, - content_type='text/markdown', - headers={'Content-Disposition': f'attachment; filename="project_{project_id}_docs.md"'} - ) +from apps.projects.models import Project class ExportFolderDocsView(APIView): - """Export project-level documentation for folder uploads.""" - permission_classes = [] # Disabled for testing def get(self, request, project_id): - import uuid - - from apps.projects.models import Project - try: project_id_uuid = uuid.UUID(str(project_id)) project = Project.objects.get(id=project_id_uuid) diff --git a/services/core/apps/exports/views/markdown.py b/services/core/apps/exports/views/markdown.py new file mode 100644 index 0000000..3904837 --- /dev/null +++ b/services/core/apps/exports/views/markdown.py @@ -0,0 +1,19 @@ +from django.http import Http404, HttpResponse +from rest_framework.views import APIView + +from apps.exports.generators import export_project_as_markdown + + +class ExportProjectMarkdownView(APIView): + + def get(self, request, project_id): + try: + markdown = export_project_as_markdown(str(project_id)) + except Exception as e: + raise Http404(f"Export failed: {e}") + + return HttpResponse( + markdown, + content_type='text/markdown', + headers={'Content-Disposition': f'attachment; filename="project_{project_id}_docs.md"'} + ) diff --git a/backend/apps/projects/migrations/__init__.py b/services/core/apps/feedback/__init__.py similarity index 100% rename from backend/apps/projects/migrations/__init__.py rename to services/core/apps/feedback/__init__.py diff --git a/backend/apps/feedback/admin.py b/services/core/apps/feedback/admin.py similarity index 100% rename from backend/apps/feedback/admin.py rename to services/core/apps/feedback/admin.py diff --git a/backend/apps/feedback/apps.py b/services/core/apps/feedback/apps.py similarity index 100% rename from backend/apps/feedback/apps.py rename to services/core/apps/feedback/apps.py diff --git a/backend/apps/feedback/email_utils.py b/services/core/apps/feedback/email_utils.py similarity index 100% rename from backend/apps/feedback/email_utils.py rename to services/core/apps/feedback/email_utils.py diff --git a/backend/apps/feedback/migrations/0001_initial.py b/services/core/apps/feedback/migrations/0001_initial.py similarity index 100% rename from backend/apps/feedback/migrations/0001_initial.py rename to services/core/apps/feedback/migrations/0001_initial.py diff --git a/backend/apps/feedback/migrations/0002_feedback_admin_response.py b/services/core/apps/feedback/migrations/0002_feedback_admin_response.py similarity index 100% rename from backend/apps/feedback/migrations/0002_feedback_admin_response.py rename to services/core/apps/feedback/migrations/0002_feedback_admin_response.py diff --git a/backend/apps/feedback/migrations/0003_remove_feedback_admin_response_and_more.py b/services/core/apps/feedback/migrations/0003_remove_feedback_admin_response_and_more.py similarity index 100% rename from backend/apps/feedback/migrations/0003_remove_feedback_admin_response_and_more.py rename to services/core/apps/feedback/migrations/0003_remove_feedback_admin_response_and_more.py diff --git a/backend/apps/feedback/migrations/0004_remove_feedback_is_public.py b/services/core/apps/feedback/migrations/0004_remove_feedback_is_public.py similarity index 100% rename from backend/apps/feedback/migrations/0004_remove_feedback_is_public.py rename to services/core/apps/feedback/migrations/0004_remove_feedback_is_public.py diff --git a/backend/apps/universal/__init__.py b/services/core/apps/feedback/migrations/__init__.py similarity index 100% rename from backend/apps/universal/__init__.py rename to services/core/apps/feedback/migrations/__init__.py diff --git a/backend/apps/feedback/models.py b/services/core/apps/feedback/models.py similarity index 100% rename from backend/apps/feedback/models.py rename to services/core/apps/feedback/models.py diff --git a/backend/apps/feedback/serializers.py b/services/core/apps/feedback/serializers/__init__.py similarity index 96% rename from backend/apps/feedback/serializers.py rename to services/core/apps/feedback/serializers/__init__.py index 747baec..a6f86de 100644 --- a/backend/apps/feedback/serializers.py +++ b/services/core/apps/feedback/serializers/__init__.py @@ -1,6 +1,6 @@ from rest_framework import serializers -from .models import Feedback, FeedbackReply +from ..models import Feedback, FeedbackReply class FeedbackReplySerializer(serializers.ModelSerializer): @@ -28,4 +28,3 @@ class Meta: 'replies', 'created_at', 'updated_at', ] read_only_fields = ['id', 'user', 'user_name', 'is_resolved', 'replies', 'created_at', 'updated_at'] - diff --git a/backend/apps/feedback/tasks.py b/services/core/apps/feedback/tasks.py similarity index 100% rename from backend/apps/feedback/tasks.py rename to services/core/apps/feedback/tasks.py diff --git a/services/core/apps/feedback/tests/__init__.py b/services/core/apps/feedback/tests/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/services/core/apps/feedback/tests/__init__.py @@ -0,0 +1 @@ + diff --git a/services/core/apps/feedback/tests/test_email_utils.py b/services/core/apps/feedback/tests/test_email_utils.py new file mode 100644 index 0000000..866b294 --- /dev/null +++ b/services/core/apps/feedback/tests/test_email_utils.py @@ -0,0 +1,37 @@ +from unittest.mock import patch + +import pytest + + +pytestmark = pytest.mark.django_db + + +class TestSendFeedbackConfirmationEmail: + def test_sends_email(self, feedback): + from apps.feedback.email_utils import send_feedback_confirmation_email + with patch('django.conf.settings.DEFAULT_FROM_EMAIL', 'noreply@test.com'): + with patch('apps.feedback.email_utils.send_mail') as mock: + send_feedback_confirmation_email(feedback) + mock.assert_called_once() + args = mock.call_args[1] + assert 'We received your feedback' in args['subject'] + assert feedback.user.email in args['recipient_list'] + + def test_logs_on_failure(self, feedback, caplog): + import logging + from apps.feedback.email_utils import send_feedback_confirmation_email + with patch('apps.feedback.email_utils.send_mail', side_effect=Exception('SMTP error')): + with caplog.at_level(logging.ERROR): + send_feedback_confirmation_email(feedback) + assert 'Failed to send feedback confirmation' in caplog.text + + +class TestSendFeedbackReplyEmail: + def test_sends_email(self, feedback, user): + from apps.feedback.email_utils import send_feedback_reply_email + reply = feedback.replies.create(user=user, message='Reply') + with patch('django.conf.settings.DEFAULT_FROM_EMAIL', 'noreply@test.com'): + with patch('apps.feedback.email_utils.send_mail') as mock: + send_feedback_reply_email(reply) + mock.assert_called_once() + assert 'New reply on your feedback' in mock.call_args[1]['subject'] diff --git a/services/core/apps/feedback/tests/test_models.py b/services/core/apps/feedback/tests/test_models.py new file mode 100644 index 0000000..ba590b7 --- /dev/null +++ b/services/core/apps/feedback/tests/test_models.py @@ -0,0 +1,46 @@ +import pytest + +from apps.feedback.models import Feedback, FeedbackReply + + +class TestFeedbackModel: + def test_create(self, user): + fb = Feedback.objects.create(user=user, category='bug', message='Found a bug') + assert fb.user == user + assert fb.category == 'bug' + assert fb.message == 'Found a bug' + assert fb.is_resolved is False + + def test_str(self, user): + fb = Feedback.objects.create(user=user, message='Test') + assert user.email in str(fb) + assert fb.category in str(fb) + + def test_ordering(self): + assert Feedback._meta.ordering == ['-created_at'] + + def test_db_table(self): + assert Feedback._meta.db_table == 'feedback' + + def test_categories(self): + assert Feedback.Category.GENERAL == 'general' + assert Feedback.Category.BUG == 'bug' + assert Feedback.Category.FEATURE == 'feature' + + +class TestFeedbackReplyModel: + def test_create(self, user, feedback): + reply = FeedbackReply.objects.create(feedback=feedback, user=user, message='Thanks!') + assert reply.feedback == feedback + assert reply.user == user + assert reply.message == 'Thanks!' + + def test_str(self, user, feedback): + reply = FeedbackReply.objects.create(feedback=feedback, user=user, message='Thanks!') + assert user.email in str(reply) + + def test_ordering(self): + assert FeedbackReply._meta.ordering == ['created_at'] + + def test_db_table(self): + assert FeedbackReply._meta.db_table == 'feedback_replies' diff --git a/services/core/apps/feedback/tests/test_serializers.py b/services/core/apps/feedback/tests/test_serializers.py new file mode 100644 index 0000000..518428e --- /dev/null +++ b/services/core/apps/feedback/tests/test_serializers.py @@ -0,0 +1,43 @@ +import pytest + +from apps.feedback.serializers import FeedbackReplySerializer, FeedbackSerializer + + +class TestFeedbackSerializer: + def test_serialize(self, feedback): + serializer = FeedbackSerializer(feedback) + assert serializer.data['id'] == str(feedback.id) + assert serializer.data['message'] == feedback.message + assert serializer.data['user_name'] == feedback.user.name + assert serializer.data['category'] == feedback.category + assert serializer.data['is_resolved'] is False + + def test_read_only_fields(self, feedback): + serializer = FeedbackSerializer(feedback) + read_only = ['id', 'user', 'user_name', 'is_resolved', 'replies', 'created_at', 'updated_at'] + for field in read_only: + assert field in serializer.data + + def test_replies_included(self, feedback, user): + reply = feedback.replies.create(user=user, message='Reply') + serializer = FeedbackSerializer(feedback) + assert len(serializer.data['replies']) == 1 + assert serializer.data['replies'][0]['message'] == 'Reply' + + +class TestFeedbackReplySerializer: + def test_serialize(self, feedback, user): + reply = feedback.replies.create(user=user, message='A reply') + serializer = FeedbackReplySerializer(reply) + assert serializer.data['message'] == 'A reply' + assert serializer.data['user_name'] == user.name + + def test_is_admin(self, feedback, admin_user): + reply = feedback.replies.create(user=admin_user, message='Admin reply') + serializer = FeedbackReplySerializer(reply) + assert serializer.data['is_admin'] is True + + def test_is_not_admin(self, feedback, user): + reply = feedback.replies.create(user=user, message='User reply') + serializer = FeedbackReplySerializer(reply) + assert serializer.data['is_admin'] is False diff --git a/services/core/apps/feedback/tests/test_tasks.py b/services/core/apps/feedback/tests/test_tasks.py new file mode 100644 index 0000000..b8e131c --- /dev/null +++ b/services/core/apps/feedback/tests/test_tasks.py @@ -0,0 +1,31 @@ +from unittest.mock import patch + +import pytest + + +pytestmark = pytest.mark.django_db + + +class TestSendFeedbackConfirmationTask: + def test_calls_email_utils(self, feedback): + from apps.feedback.tasks import send_feedback_confirmation_task + with patch('apps.feedback.email_utils.send_feedback_confirmation_email') as mock: + send_feedback_confirmation_task(feedback.id) + mock.assert_called_once() + assert mock.call_args[0][0] == feedback + + def test_handles_missing_feedback(self): + from apps.feedback.tasks import send_feedback_confirmation_task + with patch('apps.feedback.tasks.logger.error') as mock_log: + send_feedback_confirmation_task(999) + mock_log.assert_called_once() + + +class TestSendFeedbackReplyTask: + def test_calls_email_utils(self, feedback, user): + from apps.feedback.tasks import send_feedback_reply_task + reply = feedback.replies.create(user=user, message='Reply') + with patch('apps.feedback.email_utils.send_feedback_reply_email') as mock: + send_feedback_reply_task(reply.id) + mock.assert_called_once() + assert mock.call_args[0][0] == reply diff --git a/services/core/apps/feedback/tests/test_views.py b/services/core/apps/feedback/tests/test_views.py new file mode 100644 index 0000000..7179035 --- /dev/null +++ b/services/core/apps/feedback/tests/test_views.py @@ -0,0 +1,102 @@ +import pytest +from django.urls import reverse +from rest_framework import status + + +pytestmark = pytest.mark.django_db + + +class TestFeedbackCreateView: + def test_unauthenticated(self, api_client): + url = reverse('feedback-create') + response = api_client.post(url, {'message': 'Great app!', 'category': 'general'}) + assert response.status_code == status.HTTP_401_UNAUTHORIZED + + def test_create_feedback(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('feedback-create') + response = api_client.post(url, {'message': 'Awesome!', 'category': 'general'}) + assert response.status_code == status.HTTP_201_CREATED + assert response.data['message'] == 'Awesome!' + + def test_invalid_data(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('feedback-create') + response = api_client.post(url, {}) + assert response.status_code == status.HTTP_400_BAD_REQUEST + + +class TestFeedbackListView: + def test_unauthenticated(self, api_client): + url = reverse('feedback-my') + response = api_client.get(url) + assert response.status_code == status.HTTP_401_UNAUTHORIZED + + def test_returns_own_feedback(self, api_client, user, feedback): + api_client.force_authenticate(user=user) + url = reverse('feedback-my') + response = api_client.get(url) + assert len(response.data) == 1 + assert response.data[0]['message'] == feedback.message + + def test_does_not_return_others_feedback(self, api_client, other_user, feedback): + api_client.force_authenticate(user=other_user) + url = reverse('feedback-my') + response = api_client.get(url) + assert response.data == [] + + def test_filter_by_category(self, api_client, user): + from apps.feedback.models import Feedback + Feedback.objects.create(user=user, category='bug', message='Bug!') + Feedback.objects.create(user=user, category='feature', message='Feature!') + api_client.force_authenticate(user=user) + url = reverse('feedback-my') + '?category=bug' + response = api_client.get(url) + assert len(response.data) == 1 + assert response.data[0]['category'] == 'bug' + + +class TestAdminFeedbackView: + def test_non_admin_gets_empty_list(self, api_client, user, feedback): + api_client.force_authenticate(user=user) + url = reverse('feedback-admin') + response = api_client.get(url) + assert response.data == [] + + def test_admin_views_all(self, api_client, admin_user, feedback): + api_client.force_authenticate(user=admin_user) + url = reverse('feedback-admin') + response = api_client.get(url) + assert len(response.data) >= 1 + + +class TestAdminFeedbackResolveView: + def test_resolve(self, api_client, admin_user, feedback): + api_client.force_authenticate(user=admin_user) + url = reverse('feedback-resolve', args=[feedback.id]) + response = api_client.patch(url) + assert response.status_code == status.HTTP_200_OK + assert response.data['is_resolved'] is True + + def test_non_admin_cannot_resolve(self, api_client, user, feedback): + api_client.force_authenticate(user=user) + url = reverse('feedback-resolve', args=[feedback.id]) + response = api_client.patch(url) + assert response.status_code == status.HTTP_403_FORBIDDEN + + +class TestFeedbackReplyListCreateView: + def test_get_replies(self, api_client, user, feedback): + feedback.replies.create(user=user, message='Reply 1') + api_client.force_authenticate(user=user) + url = reverse('feedback-replies', args=[feedback.id]) + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert len(response.data) == 1 + + def test_create_reply(self, api_client, user, feedback): + api_client.force_authenticate(user=user) + url = reverse('feedback-replies', args=[feedback.id]) + response = api_client.post(url, {'message': 'Thanks!'}) + assert response.status_code == status.HTTP_201_CREATED + assert response.data['message'] == 'Thanks!' diff --git a/backend/apps/feedback/urls.py b/services/core/apps/feedback/urls.py similarity index 100% rename from backend/apps/feedback/urls.py rename to services/core/apps/feedback/urls.py diff --git a/services/core/apps/feedback/views/__init__.py b/services/core/apps/feedback/views/__init__.py new file mode 100644 index 0000000..e1ea28f --- /dev/null +++ b/services/core/apps/feedback/views/__init__.py @@ -0,0 +1,10 @@ +from .feedback import FeedbackCreateView, FeedbackListView, AdminFeedbackView, AdminFeedbackResolveView +from .replies import FeedbackReplyListCreateView + +__all__ = [ + 'FeedbackCreateView', + 'FeedbackListView', + 'AdminFeedbackView', + 'AdminFeedbackResolveView', + 'FeedbackReplyListCreateView', +] diff --git a/services/core/apps/feedback/views/feedback.py b/services/core/apps/feedback/views/feedback.py new file mode 100644 index 0000000..1ab5353 --- /dev/null +++ b/services/core/apps/feedback/views/feedback.py @@ -0,0 +1,100 @@ +from django.db.models import Q +from rest_framework import permissions, status +from rest_framework.response import Response +from rest_framework.views import APIView + +from ..models import Feedback +from ..serializers import FeedbackSerializer +from ..tasks import send_feedback_confirmation_task + + +class FeedbackCreateView(APIView): + permission_classes = [permissions.IsAuthenticated] + + def post(self, request): + serializer = FeedbackSerializer(data=request.data) + if not serializer.is_valid(): + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + feedback = serializer.save(user=request.user) + send_feedback_confirmation_task.delay(feedback.id) + return Response(serializer.data, status=status.HTTP_201_CREATED) + + +class FeedbackListView(APIView): + permission_classes = [permissions.IsAuthenticated] + + def get(self, request): + qs = Feedback.objects.filter(user=request.user).prefetch_related('replies__user') + + search = request.query_params.get('search') + if search: + qs = qs.filter( + Q(category__icontains=search) | + Q(message__icontains=search) + ) + + for field in ['category', 'is_resolved']: + val = request.query_params.get(field) + if val is not None: + qs = qs.filter(**{field: val}) + + ordering = request.query_params.get('ordering', '-created_at') + allowed = ['created_at', 'category', '-created_at', '-category'] + if ordering not in allowed: + ordering = '-created_at' + qs = qs.order_by(ordering) + + serializer = FeedbackSerializer(qs, many=True) + return Response(serializer.data) + + +class AdminFeedbackView(APIView): + permission_classes = [permissions.IsAuthenticated] + + def get(self, request): + user = request.user + if not (user.is_staff or user.is_admin): + return Response([]) + + qs = Feedback.objects.select_related('user', 'project').prefetch_related('replies__user').all() + + category = request.query_params.get('category') + if category: + qs = qs.filter(category=category) + + resolved = request.query_params.get('resolved') + if resolved is not None: + qs = qs.filter(is_resolved=resolved.lower() == 'true') + + search = request.query_params.get('search') + if search: + qs = qs.filter( + Q(message__icontains=search) | + Q(user__name__icontains=search) | + Q(user__email__icontains=search) | + Q(category__icontains=search) + ) + + ordering = request.query_params.get('ordering', '-created_at') + allowed = ['created_at', 'category', 'is_resolved', '-created_at', '-category', '-is_resolved'] + if ordering not in allowed: + ordering = '-created_at' + qs = qs.order_by(ordering) + + serializer = FeedbackSerializer(qs, many=True) + return Response(serializer.data) + + +class AdminFeedbackResolveView(APIView): + permission_classes = [permissions.IsAuthenticated] + + def patch(self, request, pk): + if not (request.user.is_staff or request.user.is_admin): + return Response({'detail': 'Forbidden.'}, status=status.HTTP_403_FORBIDDEN) + try: + fb = Feedback.objects.prefetch_related('replies__user').get(pk=pk) + except Feedback.DoesNotExist: + return Response({'detail': 'Not found.'}, status=status.HTTP_404_NOT_FOUND) + fb.is_resolved = True + fb.save() + return Response(FeedbackSerializer(fb).data) diff --git a/services/core/apps/feedback/views/replies.py b/services/core/apps/feedback/views/replies.py new file mode 100644 index 0000000..5b97caa --- /dev/null +++ b/services/core/apps/feedback/views/replies.py @@ -0,0 +1,29 @@ +from django.shortcuts import get_object_or_404 +from rest_framework import permissions, status +from rest_framework.response import Response +from rest_framework.views import APIView + +from ..models import Feedback, FeedbackReply +from ..serializers import FeedbackReplySerializer +from ..tasks import send_feedback_reply_task + + +class FeedbackReplyListCreateView(APIView): + permission_classes = [permissions.IsAuthenticated] + + def get(self, request, feedback_pk): + qs = FeedbackReply.objects.filter( + feedback_id=feedback_pk + ).select_related('user') + serializer = FeedbackReplySerializer(qs, many=True) + return Response(serializer.data) + + def post(self, request, feedback_pk): + feedback = get_object_or_404(Feedback, pk=feedback_pk) + serializer = FeedbackReplySerializer(data=request.data) + if not serializer.is_valid(): + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + reply = serializer.save(feedback=feedback, user=request.user) + if reply.user != feedback.user: + send_feedback_reply_task.delay(reply.id) + return Response(serializer.data, status=status.HTTP_201_CREATED) diff --git a/backend/apps/users/__init__.py b/services/core/apps/github_integration/__init__.py similarity index 100% rename from backend/apps/users/__init__.py rename to services/core/apps/github_integration/__init__.py diff --git a/backend/apps/github_integration/apps.py b/services/core/apps/github_integration/apps.py similarity index 100% rename from backend/apps/github_integration/apps.py rename to services/core/apps/github_integration/apps.py diff --git a/services/core/apps/github_integration/fetcher.py b/services/core/apps/github_integration/fetcher.py new file mode 100644 index 0000000..cf9988a --- /dev/null +++ b/services/core/apps/github_integration/fetcher.py @@ -0,0 +1,98 @@ +from django.conf import settings + +from apps.common.github import ( + download_zipball, + fetch_public_repo_api, + get_github_client, + get_public_repo_tree_items, + get_repo_tree_items, +) + + +def get_user_repos(github_token: str) -> list: + g = get_github_client(github_token) + user = g.get_user() + repos = [] + for repo in user.get_repos(sort='updated'): + repos.append({ + 'id': repo.id, + 'name': repo.name, + 'full_name': repo.full_name, + 'description': repo.description, + 'private': repo.private, + 'url': repo.html_url, + 'updated_at': repo.updated_at.isoformat(), + 'language': repo.language, + 'default_branch': repo.default_branch, + }) + return repos + + +def get_public_repo(full_name: str, github_token=None) -> dict: + data = fetch_public_repo_api(full_name) + return { + 'id': data['id'], + 'name': data['name'], + 'full_name': data['full_name'], + 'description': data.get('description') or '', + 'private': data['private'], + 'url': data['html_url'], + 'default_branch': data.get('default_branch') or 'main', + 'language': data.get('language') or '', + 'stargazers_count': data.get('stargazers_count', 0), + 'forks_count': data.get('forks_count', 0), + } + + +def get_repo_tree(github_token: str, full_name: str, branch: str = None) -> list: + return get_repo_tree_items(github_token, full_name, branch) + + +def get_public_repo_tree(full_name: str, branch: str = None, github_token=None) -> list: + return get_public_repo_tree_items(full_name, branch) + + +def _py_file_filter(name): + return name.endswith('.py') + + +def get_repo_folders(github_token: str, full_name: str, branch: str = None) -> list: + tree = get_repo_tree(github_token, full_name, branch) + folders = [item for item in tree if item['type'] == 'tree'] + folders.insert(0, {'path': '/', 'type': 'tree', 'size': 0}) + return folders + + +def get_public_repo_folders(full_name: str, branch: str = None, github_token=None) -> list: + tree = get_public_repo_tree(full_name, branch, github_token) + folders = [item for item in tree if item['type'] == 'tree'] + folders.insert(0, {'path': '/', 'type': 'tree', 'size': 0}) + return folders + + +def import_folder_from_repo(github_token, full_name, folder_path, branch=None): + g = get_github_client(github_token) + repo = g.get_repo(full_name) + branch = branch or repo.default_branch + + url = f'https://api.github.com/repos/{full_name}/zipball/{branch}' + headers = { + 'Accept': 'application/vnd.github+json', + 'Authorization': f'token {github_token}', + } + return download_zipball(url, headers, folder_path, file_filter=_py_file_filter) + + +def import_public_folder_from_repo(full_name, folder_path, branch=None, github_token=None): + repo_data = fetch_public_repo_api(full_name) + branch = branch or repo_data.get('default_branch') or 'main' + + api_token = github_token or getattr(settings, 'GITHUB_API_TOKEN', None) + headers = {'Accept': 'application/vnd.github+json'} + if api_token and api_token.strip(): + headers['Authorization'] = f'token {api_token}' + url = f'https://api.github.com/repos/{full_name}/zipball/{branch}' + else: + url = f'https://github.com/{full_name}/archive/refs/heads/{branch}.zip' + + return download_zipball(url, headers, folder_path, file_filter=_py_file_filter) diff --git a/backend/apps/users/migrations/__init__.py b/services/core/apps/github_integration/migrations/__init__.py similarity index 100% rename from backend/apps/users/migrations/__init__.py rename to services/core/apps/github_integration/migrations/__init__.py diff --git a/backend/apps/github_integration/serializers.py b/services/core/apps/github_integration/serializers/__init__.py similarity index 100% rename from backend/apps/github_integration/serializers.py rename to services/core/apps/github_integration/serializers/__init__.py diff --git a/backend/apps/github_integration/tasks.py b/services/core/apps/github_integration/tasks.py similarity index 100% rename from backend/apps/github_integration/tasks.py rename to services/core/apps/github_integration/tasks.py diff --git a/services/core/apps/github_integration/tests/__init__.py b/services/core/apps/github_integration/tests/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/services/core/apps/github_integration/tests/__init__.py @@ -0,0 +1 @@ + diff --git a/services/core/apps/github_integration/tests/test_serializers.py b/services/core/apps/github_integration/tests/test_serializers.py new file mode 100644 index 0000000..2fc00b6 --- /dev/null +++ b/services/core/apps/github_integration/tests/test_serializers.py @@ -0,0 +1,26 @@ +from apps.github_integration.serializers import RepoImportSerializer + + +class TestRepoImportSerializer: + def test_valid_data(self): + serializer = RepoImportSerializer(data={'full_name': 'owner/repo'}) + assert serializer.is_valid() + assert serializer.validated_data['full_name'] == 'owner/repo' + assert serializer.validated_data['folder_path'] == '/' + + def test_all_fields(self): + data = { + 'full_name': 'owner/repo', + 'folder_path': 'src/', + 'branch': 'main', + 'name': 'My Repo', + 'description': 'A test repo', + 'custom_info': {'key': 'value'}, + } + serializer = RepoImportSerializer(data=data) + assert serializer.is_valid() + + def test_missing_full_name(self): + serializer = RepoImportSerializer(data={}) + assert not serializer.is_valid() + assert 'full_name' in serializer.errors diff --git a/services/core/apps/github_integration/tests/test_views.py b/services/core/apps/github_integration/tests/test_views.py new file mode 100644 index 0000000..912824a --- /dev/null +++ b/services/core/apps/github_integration/tests/test_views.py @@ -0,0 +1,119 @@ +from unittest.mock import patch + +import pytest +from django.urls import reverse +from rest_framework import status + + +pytestmark = pytest.mark.django_db + + +class TestUserReposView: + def test_unauthenticated(self, api_client): + url = reverse('github-repos') + response = api_client.get(url) + assert response.status_code == status.HTTP_401_UNAUTHORIZED + + def test_no_token(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('github-repos') + response = api_client.get(url) + assert response.status_code == status.HTTP_400_BAD_REQUEST + assert 'GitHub account not connected' in response.data['detail'] + + def test_with_token(self, api_client, user): + user.github_token = 'test-token' + user.save() + api_client.force_authenticate(user=user) + with patch('apps.github_integration.views.user.get_user_repos', return_value=[{'id': 1, 'name': 'repo1'}]): + url = reverse('github-repos') + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert response.data[0]['name'] == 'repo1' + + def test_github_error(self, api_client, user): + user.github_token = 'bad-token' + user.save() + api_client.force_authenticate(user=user) + with patch('apps.github_integration.views.user.get_user_repos', side_effect=Exception('API error')): + url = reverse('github-repos') + response = api_client.get(url) + assert response.status_code == status.HTTP_400_BAD_REQUEST + + +class TestRepoFoldersView: + def test_missing_repo_param(self, api_client, user): + user.github_token = 'token' + user.save() + api_client.force_authenticate(user=user) + url = reverse('github-repo-folders') + response = api_client.get(url) + assert response.status_code == status.HTTP_400_BAD_REQUEST + + def test_returns_folders(self, api_client, user): + user.github_token = 'token' + user.save() + api_client.force_authenticate(user=user) + with patch('apps.github_integration.views.user.get_repo_folders', return_value=[{'path': '/', 'type': 'tree'}]): + url = reverse('github-repo-folders') + '?repo=owner/repo' + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + + +class TestImportRepoView: + def test_import(self, api_client, user): + user.github_token = 'token' + user.save() + api_client.force_authenticate(user=user) + with patch('apps.github_integration.views.user.import_github_repo_task.delay'): + url = reverse('github-repo-import') + response = api_client.post(url, {'full_name': 'owner/repo', 'name': 'My Repo'}, format='json') + assert response.status_code == status.HTTP_202_ACCEPTED + assert 'project_id' in response.data + + +class TestParseGithubUrl: + def test_valid_url(self): + from apps.github_integration.views.user import parse_github_url + result = parse_github_url('https://github.com/owner/repo') + assert result == 'owner/repo' + + def test_valid_url_with_git(self): + from apps.github_integration.views.user import parse_github_url + result = parse_github_url('https://github.com/owner/repo.git') + assert result == 'owner/repo' + + def test_invalid_url(self): + from apps.github_integration.views.user import parse_github_url + result = parse_github_url('https://example.com/not-github') + assert result is None + + def test_empty_url(self): + from apps.github_integration.views.user import parse_github_url + result = parse_github_url('') + assert result is None + + +class TestPublicRepoInfoView: + def test_with_url(self, api_client, user): + api_client.force_authenticate(user=user) + with patch('apps.github_integration.views.public.get_public_repo', return_value={'id': 1, 'name': 'repo'}): + url = reverse('github-public-repo-info') + '?url=https://github.com/owner/repo' + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + + def test_with_full_name(self, api_client, user): + api_client.force_authenticate(user=user) + with patch('apps.github_integration.views.public.get_public_repo', return_value={'id': 1, 'name': 'repo'}): + url = reverse('github-public-repo-info') + '?full_name=owner/repo' + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + + +class TestImportPublicRepoView: + def test_import(self, api_client, user): + api_client.force_authenticate(user=user) + with patch('apps.github_integration.views.public.import_public_repo_task.delay'): + url = reverse('github-public-repo-import') + response = api_client.post(url, {'full_name': 'owner/repo'}, format='json') + assert response.status_code == status.HTTP_202_ACCEPTED diff --git a/backend/apps/github_integration/urls.py b/services/core/apps/github_integration/urls.py similarity index 100% rename from backend/apps/github_integration/urls.py rename to services/core/apps/github_integration/urls.py diff --git a/services/core/apps/github_integration/views/__init__.py b/services/core/apps/github_integration/views/__init__.py new file mode 100644 index 0000000..be48655 --- /dev/null +++ b/services/core/apps/github_integration/views/__init__.py @@ -0,0 +1,12 @@ +from .user import UserReposView, RepoFoldersView, ImportRepoView, parse_github_url +from .public import PublicRepoInfoView, PublicRepoFoldersView, ImportPublicRepoView + +__all__ = [ + 'UserReposView', + 'RepoFoldersView', + 'ImportRepoView', + 'parse_github_url', + 'PublicRepoInfoView', + 'PublicRepoFoldersView', + 'ImportPublicRepoView', +] diff --git a/backend/apps/github_integration/views.py b/services/core/apps/github_integration/views/public.py similarity index 53% rename from backend/apps/github_integration/views.py rename to services/core/apps/github_integration/views/public.py index e9f5cfe..e190d98 100644 --- a/backend/apps/github_integration/views.py +++ b/services/core/apps/github_integration/views/public.py @@ -1,5 +1,3 @@ -import re - from github import GithubException from rest_framework import status from rest_framework.permissions import IsAuthenticated @@ -8,109 +6,15 @@ from apps.projects.models import Project -from .fetcher import get_public_repo, get_public_repo_folders, get_repo_folders, get_user_repos -from .serializers import RepoImportSerializer -from .tasks import import_github_repo_task, import_public_repo_task - - -def parse_github_url(url: str) -> str | None: - """Extract owner/repo from a GitHub URL. Returns None if invalid.""" - patterns = [ - r'github\.com[:/]([^/]+/[^/]+?)(?:\.git)?(?:/|$)', - r'github\.com[:/]([^/]+/[^/]+?)(?:\.git)?$', - ] - for pattern in patterns: - match = re.search(pattern, url) - if match: - full_name = match.group(1) - # Strip trailing slashes or dots - full_name = full_name.rstrip('/.') - if '/' in full_name and not full_name.endswith('.'): - return full_name - return None - - -class UserReposView(APIView): - permission_classes = [IsAuthenticated] - - def get(self, request): - user = request.user - if not user.github_token: - return Response({'detail': 'GitHub account not connected.'}, status=status.HTTP_400_BAD_REQUEST) - try: - repos = get_user_repos(user.github_token) - return Response(repos) - except Exception as e: - return Response({'detail': str(e)}, status=status.HTTP_400_BAD_REQUEST) - - -class RepoFoldersView(APIView): - permission_classes = [IsAuthenticated] - - def get(self, request): - full_name = request.query_params.get('repo') - branch = request.query_params.get('branch', None) - if not full_name: - return Response({'detail': 'repo parameter is required'}, status=status.HTTP_400_BAD_REQUEST) - user = request.user - if not user.github_token: - return Response({'detail': 'GitHub account not connected.'}, status=status.HTTP_400_BAD_REQUEST) - try: - folders = get_repo_folders(user.github_token, full_name, branch) - return Response(folders) - except Exception as e: - return Response({'detail': str(e)}, status=status.HTTP_400_BAD_REQUEST) - - -class ImportRepoView(APIView): - permission_classes = [IsAuthenticated] - - def post(self, request): - serializer = RepoImportSerializer(data=request.data) - if not serializer.is_valid(): - return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - - data = serializer.validated_data - full_name = data['full_name'] - folder_path = data.get('folder_path', '/') - branch = data.get('branch') or None - name = data.get('name') or full_name.split('/')[-1] - description = data.get('description', '') - custom_info = data.get('custom_info', {}) - - user = request.user - if not user.github_token: - return Response({'detail': 'GitHub account not connected.'}, status=status.HTTP_400_BAD_REQUEST) - - # Create project immediately and return โ€” all slow GitHub work happens in Celery - project = Project.objects.create( - user=user, - name=name, - description=description, - source_type=Project.SourceType.GITHUB, - github_url=f'https://github.com/{full_name}', - status=Project.Status.PENDING, - custom_details=custom_info or None, - ) - - import_github_repo_task.delay( - project.id, - user.github_token, - full_name, - folder_path, - branch, - description, - custom_info or None, - ) - - return Response({'project_id': str(project.id)}, status=status.HTTP_202_ACCEPTED) +from .user import parse_github_url +from ..fetcher import get_public_repo, get_public_repo_folders +from ..tasks import import_public_repo_task class PublicRepoInfoView(APIView): permission_classes = [IsAuthenticated] def get(self, request): - """Get info about a public repo from URL or full_name.""" url = request.query_params.get('url') full_name = request.query_params.get('full_name') @@ -138,7 +42,6 @@ class PublicRepoFoldersView(APIView): permission_classes = [IsAuthenticated] def get(self, request): - """Get folders from a public repo.""" full_name = request.query_params.get('full_name') url = request.query_params.get('url') branch = request.query_params.get('branch', None) @@ -167,7 +70,6 @@ class ImportPublicRepoView(APIView): permission_classes = [IsAuthenticated] def post(self, request): - """Import a public GitHub repo using URL or full_name (no OAuth required).""" url = request.data.get('url') full_name = request.data.get('full_name') folder_path = request.data.get('folder_path', '/') diff --git a/services/core/apps/github_integration/views/user.py b/services/core/apps/github_integration/views/user.py new file mode 100644 index 0000000..96a50d7 --- /dev/null +++ b/services/core/apps/github_integration/views/user.py @@ -0,0 +1,103 @@ +import re + +from github import GithubException +from rest_framework import status +from rest_framework.permissions import IsAuthenticated +from rest_framework.response import Response +from rest_framework.views import APIView + +from apps.projects.models import Project + +from ..fetcher import get_repo_folders, get_user_repos +from ..serializers import RepoImportSerializer +from ..tasks import import_github_repo_task + + +def parse_github_url(url: str) -> str | None: + patterns = [ + r'github\.com[:/]([^/]+/[^/]+?)(?:\.git)?(?:/|$)', + r'github\.com[:/]([^/]+/[^/]+?)(?:\.git)?$', + ] + for pattern in patterns: + match = re.search(pattern, url) + if match: + full_name = match.group(1) + full_name = full_name.rstrip('/.') + if '/' in full_name and not full_name.endswith('.'): + return full_name + return None + + +class UserReposView(APIView): + permission_classes = [IsAuthenticated] + + def get(self, request): + user = request.user + if not user.github_token: + return Response({'detail': 'GitHub account not connected.'}, status=status.HTTP_400_BAD_REQUEST) + try: + repos = get_user_repos(user.github_token) + return Response(repos) + except Exception as e: + return Response({'detail': str(e)}, status=status.HTTP_400_BAD_REQUEST) + + +class RepoFoldersView(APIView): + permission_classes = [IsAuthenticated] + + def get(self, request): + full_name = request.query_params.get('repo') + branch = request.query_params.get('branch', None) + if not full_name: + return Response({'detail': 'repo parameter is required'}, status=status.HTTP_400_BAD_REQUEST) + user = request.user + if not user.github_token: + return Response({'detail': 'GitHub account not connected.'}, status=status.HTTP_400_BAD_REQUEST) + try: + folders = get_repo_folders(user.github_token, full_name, branch) + return Response(folders) + except Exception as e: + return Response({'detail': str(e)}, status=status.HTTP_400_BAD_REQUEST) + + +class ImportRepoView(APIView): + permission_classes = [IsAuthenticated] + + def post(self, request): + serializer = RepoImportSerializer(data=request.data) + if not serializer.is_valid(): + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + data = serializer.validated_data + full_name = data['full_name'] + folder_path = data.get('folder_path', '/') + branch = data.get('branch') or None + name = data.get('name') or full_name.split('/')[-1] + description = data.get('description', '') + custom_info = data.get('custom_info', {}) + + user = request.user + if not user.github_token: + return Response({'detail': 'GitHub account not connected.'}, status=status.HTTP_400_BAD_REQUEST) + + project = Project.objects.create( + user=user, + name=name, + description=description, + source_type=Project.SourceType.GITHUB, + github_url=f'https://github.com/{full_name}', + status=Project.Status.PENDING, + custom_details=custom_info or None, + ) + + import_github_repo_task.delay( + project.id, + user.github_token, + full_name, + folder_path, + branch, + description, + custom_info or None, + ) + + return Response({'project_id': str(project.id)}, status=status.HTTP_202_ACCEPTED) diff --git a/backend/config/settings/__init__.py b/services/core/apps/internal/__init__.py similarity index 100% rename from backend/config/settings/__init__.py rename to services/core/apps/internal/__init__.py diff --git a/services/core/apps/internal/tests/__init__.py b/services/core/apps/internal/tests/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/services/core/apps/internal/tests/__init__.py @@ -0,0 +1 @@ + diff --git a/services/core/apps/internal/tests/test_views.py b/services/core/apps/internal/tests/test_views.py new file mode 100644 index 0000000..d4f0faa --- /dev/null +++ b/services/core/apps/internal/tests/test_views.py @@ -0,0 +1,137 @@ +from unittest.mock import patch + +import pytest +from django.urls import reverse +from rest_framework import status + + +pytestmark = pytest.mark.django_db + + +INTERNAL_KEY = 'test-internal-key' + + +@pytest.fixture(autouse=True) +def internal_key(): + with patch('apps.internal.views.receive.INTERNAL_API_KEY', INTERNAL_KEY): + yield + + +def _auth_header(): + return {'HTTP_X_INTERNAL_API_KEY': INTERNAL_KEY} + + +class TestProjectDetail: + def test_get_project(self, api_client, project): + url = reverse('internal-project', args=[project.id]) + response = api_client.get(url, **_auth_header()) + assert response.status_code == status.HTTP_200_OK + assert response.data['id'] == str(project.id) + assert response.data['name'] == project.name + + def test_get_not_found(self, api_client): + url = reverse('internal-project', args=['00000000-0000-0000-0000-000000000000']) + response = api_client.get(url, **_auth_header()) + assert response.status_code == status.HTTP_404_NOT_FOUND + + def test_patch_project(self, api_client, project): + url = reverse('internal-project', args=[project.id]) + response = api_client.patch(url, {'name': 'Updated'}, format='json', **_auth_header()) + assert response.status_code == status.HTTP_200_OK + assert response.data['name'] == 'Updated' + + def test_forbidden_without_key(self, api_client, project): + url = reverse('internal-project', args=[project.id]) + response = api_client.get(url) + assert response.status_code == status.HTTP_403_FORBIDDEN + + def test_forbidden_with_wrong_key(self, api_client, project): + url = reverse('internal-project', args=[project.id]) + response = api_client.get(url, HTTP_X_INTERNAL_API_KEY='wrong-key') + assert response.status_code == status.HTTP_403_FORBIDDEN + + +class TestProjectFileList: + def test_get_files(self, api_client, project, project_file): + url = reverse('internal-project-files', args=[project.id]) + response = api_client.get(url, **_auth_header()) + assert response.status_code == status.HTTP_200_OK + assert len(response.data) == 1 + assert response.data[0]['file_name'] == project_file.file_name + + def test_get_empty_file_list(self, api_client, project): + url = reverse('internal-project-files', args=[project.id]) + response = api_client.get(url, **_auth_header()) + assert response.status_code == status.HTTP_200_OK + assert response.data == [] + + def test_post_file(self, api_client, project): + url = reverse('internal-project-files', args=[project.id]) + data = {'file_name': 'test.py', 'file_path': 'src/test.py', 'content': 'print("hello")'} + response = api_client.post(url, data, format='json', **_auth_header()) + assert response.status_code == status.HTTP_201_CREATED + assert response.data['file_name'] == 'test.py' + + def test_forbidden_without_key(self, api_client, project): + url = reverse('internal-project-files', args=[project.id]) + response = api_client.get(url) + assert response.status_code == status.HTTP_403_FORBIDDEN + + +class TestReceiveParsedData: + def test_receive_parsed_data(self, api_client, project): + url = reverse('internal-parsed', args=[project.id]) + data = {'parsed_data': {'functions': ['foo']}, 'file_count': 5} + response = api_client.post(url, data, format='json', **_auth_header()) + assert response.status_code == status.HTTP_200_OK + assert response.data['status'] == 'ok' + project.refresh_from_db() + assert project.parsed_data == {'functions': ['foo']} + assert project.project_info['files_parsed'] == 5 + assert project.status == 'processing' + + def test_receive_with_parsed_key(self, api_client, project): + url = reverse('internal-parsed', args=[project.id]) + data = {'parsed': {'classes': ['Bar']}, 'file_count': 3} + response = api_client.post(url, data, format='json', **_auth_header()) + assert response.status_code == status.HTTP_200_OK + project.refresh_from_db() + assert project.parsed_data == {'classes': ['Bar']} + + def test_project_not_found(self, api_client): + url = reverse('internal-parsed', args=['00000000-0000-0000-0000-000000000000']) + response = api_client.post(url, {}, format='json', **_auth_header()) + assert response.status_code == status.HTTP_404_NOT_FOUND + + +class TestReceiveAIDocs: + def test_receive_docs_done(self, api_client, project): + url = reverse('internal-ai-docs', args=[project.id]) + data = { + 'generated_docs': '# Docs', + 'readme_docs': '# README', + 'api_docs': '# API', + 'project_info': {'summary': 'A project'}, + 'status': 'done', + } + response = api_client.post(url, data, format='json', **_auth_header()) + assert response.status_code == status.HTTP_200_OK + project.refresh_from_db() + assert project.generated_docs == '# Docs' + assert project.readme_docs == '# README' + assert project.api_docs == '# API' + assert project.status == 'done' + + def test_receive_docs_failed(self, api_client, project): + url = reverse('internal-ai-docs', args=[project.id]) + data = {'status': 'failed', 'error_message': 'AI error'} + response = api_client.post(url, data, format='json', **_auth_header()) + assert response.status_code == status.HTTP_200_OK + project.refresh_from_db() + assert project.status == 'failed' + assert project.error_message == 'AI error' + + def test_project_not_found(self, api_client): + url = reverse('internal-ai-docs', args=['00000000-0000-0000-0000-000000000000']) + response = api_client.post(url, {}, format='json', **_auth_header()) + assert response.status_code == status.HTTP_404_NOT_FOUND diff --git a/services/core/apps/internal/urls.py b/services/core/apps/internal/urls.py new file mode 100644 index 0000000..d1c4e1a --- /dev/null +++ b/services/core/apps/internal/urls.py @@ -0,0 +1,10 @@ +from django.urls import path + +from . import views + +urlpatterns = [ + path('projects//', views.ProjectDetail.as_view(), name='internal-project'), + path('projects//files/', views.ProjectFileList.as_view(), name='internal-project-files'), + path('projects//parsed/', views.ReceiveParsedData.as_view(), name='internal-parsed'), + path('projects//ai-docs/', views.ReceiveAIDocs.as_view(), name='internal-ai-docs'), +] diff --git a/services/core/apps/internal/views/__init__.py b/services/core/apps/internal/views/__init__.py new file mode 100644 index 0000000..7da4243 --- /dev/null +++ b/services/core/apps/internal/views/__init__.py @@ -0,0 +1,8 @@ +from .receive import ProjectDetail, ProjectFileList, ReceiveParsedData, ReceiveAIDocs + +__all__ = [ + 'ProjectDetail', + 'ProjectFileList', + 'ReceiveParsedData', + 'ReceiveAIDocs', +] diff --git a/services/core/apps/internal/views/receive.py b/services/core/apps/internal/views/receive.py new file mode 100644 index 0000000..a0df7ae --- /dev/null +++ b/services/core/apps/internal/views/receive.py @@ -0,0 +1,152 @@ +import logging + +from rest_framework.views import APIView +from rest_framework.response import Response +from rest_framework.permissions import AllowAny + +from apps.common.config import INTERNAL_API_KEY +from apps.projects.models import Project, ProjectFile +from apps.projects.serializers import ProjectSerializer, ProjectFileSerializer + +logger = logging.getLogger(__name__) + + +class InternalAuthMixin: + def _verify_key(self, request): + key = request.META.get("HTTP_X_INTERNAL_API_KEY", "") + if INTERNAL_API_KEY and key != INTERNAL_API_KEY: + return Response({"error": "Forbidden"}, status=403) + return None + + +class ProjectDetail(InternalAuthMixin, APIView): + permission_classes = [AllowAny] + + def get(self, request, project_id): + forbidden = self._verify_key(request) + if forbidden: + return forbidden + try: + project = Project.objects.get(id=project_id) + except Project.DoesNotExist: + return Response({"error": "Project not found"}, status=404) + serializer = ProjectSerializer(project) + return Response(serializer.data) + + def patch(self, request, project_id): + forbidden = self._verify_key(request) + if forbidden: + return forbidden + try: + project = Project.objects.get(id=project_id) + except Project.DoesNotExist: + return Response({"error": "Project not found"}, status=404) + serializer = ProjectSerializer(project, data=request.data, partial=True) + if serializer.is_valid(): + serializer.save() + return Response(serializer.data) + return Response(serializer.errors, status=400) + + +class ProjectFileList(InternalAuthMixin, APIView): + permission_classes = [AllowAny] + + def get(self, request, project_id): + forbidden = self._verify_key(request) + if forbidden: + return forbidden + try: + project = Project.objects.get(id=project_id) + except Project.DoesNotExist: + return Response({"error": "Project not found"}, status=404) + files = project.files.all() + serializer = ProjectFileSerializer(files, many=True) + return Response(serializer.data) + + def post(self, request, project_id): + forbidden = self._verify_key(request) + if forbidden: + return forbidden + try: + project = Project.objects.get(id=project_id) + except Project.DoesNotExist: + return Response({"error": "Project not found"}, status=404) + data = request.data.copy() if hasattr(request.data, 'copy') else dict(request.data) + data["project"] = str(project.id) + serializer = ProjectFileSerializer(data=data) + if serializer.is_valid(): + serializer.save() + return Response(serializer.data, status=201) + return Response(serializer.errors, status=400) + + +class ReceiveParsedData(InternalAuthMixin, APIView): + permission_classes = [AllowAny] + + def post(self, request, project_id): + forbidden = self._verify_key(request) + if forbidden: + return forbidden + try: + project = Project.objects.get(id=project_id) + except Project.DoesNotExist: + return Response({"error": "Project not found"}, status=404) + + parsed_data = request.data.get("parsed_data") or request.data.get("parsed") + file_count = request.data.get("file_count", 0) + + if parsed_data: + project.parsed_data = parsed_data + if file_count: + project.project_info = { + **(project.project_info or {}), + "files_parsed": file_count, + } + + project.status = Project.Status.PROCESSING + project.save() + + logger.info("Internal: Parsed data received for project %s, %d files", project_id, file_count) + + return Response({"status": "ok", "project_id": project_id}) + + +class ReceiveAIDocs(InternalAuthMixin, APIView): + permission_classes = [AllowAny] + + def post(self, request, project_id): + forbidden = self._verify_key(request) + if forbidden: + return forbidden + try: + project = Project.objects.get(id=project_id) + except Project.DoesNotExist: + return Response({"error": "Project not found"}, status=404) + + generated_docs = request.data.get("generated_docs") + readme_docs = request.data.get("readme_docs") + api_docs = request.data.get("api_docs") + project_info = request.data.get("project_info") + status_str = request.data.get("status", "done") + error_message = request.data.get("error_message") + + if generated_docs: + project.generated_docs = generated_docs + if readme_docs: + project.readme_docs = readme_docs + if api_docs: + project.api_docs = api_docs + if project_info: + project.project_info = project_info + + if status_str == "done": + project.status = Project.Status.DONE + elif status_str == "failed": + project.status = Project.Status.FAILED + project.error_message = error_message or "AI generation failed" + + project.save() + + logger.info("Internal: AI docs received for project %s, status=%s", project_id, status_str) + + return Response({"status": "ok", "project_id": project_id}) diff --git a/services/core/apps/notifications/__init__.py b/services/core/apps/notifications/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/apps/notifications/apps.py b/services/core/apps/notifications/apps.py similarity index 100% rename from backend/apps/notifications/apps.py rename to services/core/apps/notifications/apps.py diff --git a/backend/apps/notifications/migrations/0001_initial.py b/services/core/apps/notifications/migrations/0001_initial.py similarity index 100% rename from backend/apps/notifications/migrations/0001_initial.py rename to services/core/apps/notifications/migrations/0001_initial.py diff --git a/services/core/apps/notifications/migrations/__init__.py b/services/core/apps/notifications/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/apps/notifications/models.py b/services/core/apps/notifications/models.py similarity index 100% rename from backend/apps/notifications/models.py rename to services/core/apps/notifications/models.py diff --git a/backend/apps/notifications/serializers.py b/services/core/apps/notifications/serializers/__init__.py similarity index 92% rename from backend/apps/notifications/serializers.py rename to services/core/apps/notifications/serializers/__init__.py index 7eb36e5..9cf9cb1 100644 --- a/backend/apps/notifications/serializers.py +++ b/services/core/apps/notifications/serializers/__init__.py @@ -2,7 +2,7 @@ from apps.comments.serializers import CommentSerializer -from .models import Notification +from ..models import Notification class NotificationSerializer(serializers.ModelSerializer): diff --git a/backend/apps/notifications/tasks.py b/services/core/apps/notifications/tasks.py similarity index 100% rename from backend/apps/notifications/tasks.py rename to services/core/apps/notifications/tasks.py diff --git a/services/core/apps/notifications/tests/__init__.py b/services/core/apps/notifications/tests/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/services/core/apps/notifications/tests/__init__.py @@ -0,0 +1 @@ + diff --git a/services/core/apps/notifications/tests/test_models.py b/services/core/apps/notifications/tests/test_models.py new file mode 100644 index 0000000..8fdab6a --- /dev/null +++ b/services/core/apps/notifications/tests/test_models.py @@ -0,0 +1,34 @@ +import pytest + +from apps.notifications.models import Notification + + +class TestNotificationModel: + def test_create(self, user): + notification = Notification.objects.create( + user=user, + message='Someone commented on your project', + ) + assert notification.user == user + assert notification.message == 'Someone commented on your project' + assert notification.is_read is False + + def test_str(self, notification): + assert notification.user.email in str(notification) + assert notification.message[:50] in str(notification) + + def test_mark_read(self, notification): + notification.is_read = True + notification.save(update_fields=['is_read']) + notification.refresh_from_db() + assert notification.is_read is True + + def test_ordering(self): + assert Notification._meta.ordering == ['-created_at'] + + def test_db_table(self): + assert Notification._meta.db_table == 'notifications' + + def test_indexes(self): + field_names = [list(idx.fields) for idx in Notification._meta.indexes] + assert ['user', 'is_read', 'created_at'] in field_names diff --git a/services/core/apps/notifications/tests/test_serializers.py b/services/core/apps/notifications/tests/test_serializers.py new file mode 100644 index 0000000..10cb238 --- /dev/null +++ b/services/core/apps/notifications/tests/test_serializers.py @@ -0,0 +1,29 @@ +import pytest + +from apps.notifications.serializers import NotificationSerializer + + +class TestNotificationSerializer: + def test_serialize(self, notification): + serializer = NotificationSerializer(notification) + assert serializer.data['id'] == str(notification.id) + assert serializer.data['message'] == notification.message + assert serializer.data['is_read'] is False + assert 'comment' in serializer.data + assert 'created_at' in serializer.data + + def test_serialize_with_comment(self, notification_with_comment): + serializer = NotificationSerializer(notification_with_comment) + assert serializer.data['comment'] is not None + assert serializer.data['comment']['content'] == 'Great project!' + assert serializer.data['project_slug'] == str(notification_with_comment.comment.project.public_slug) + + def test_read_only_fields(self, notification): + serializer = NotificationSerializer(notification) + for field in ['id', 'message', 'is_read', 'created_at']: + assert field in serializer.data + + def test_project_slug_with_comment(self, notification_with_comment): + serializer = NotificationSerializer(notification_with_comment) + assert 'project_slug' in serializer.data + assert serializer.data['project_slug'] == str(notification_with_comment.comment.project.public_slug) diff --git a/services/core/apps/notifications/tests/test_tasks.py b/services/core/apps/notifications/tests/test_tasks.py new file mode 100644 index 0000000..9af2df3 --- /dev/null +++ b/services/core/apps/notifications/tests/test_tasks.py @@ -0,0 +1,35 @@ +from unittest.mock import patch + +import pytest +from django.conf import settings + + +pytestmark = pytest.mark.django_db + + +class TestSendEmailTask: + def test_sends_email(self): + from apps.notifications.tasks import send_email_task + with patch('django.conf.settings.EMAIL_HOST_USER', 'test@example.com'): + with patch('apps.notifications.tasks.send_mail') as mock: + send_email_task( + subject='Test', + message='Body', + recipient_list=['user@test.com'], + html_message='

    Body

    ', + ) + mock.assert_called_once_with( + subject='Test', + message='Body', + from_email=settings.DEFAULT_FROM_EMAIL, + recipient_list=['user@test.com'], + html_message='

    Body

    ', + fail_silently=True, + ) + + def test_skips_when_no_email_host(self): + from apps.notifications.tasks import send_email_task + with patch('django.conf.settings.EMAIL_HOST_USER', None): + with patch('apps.notifications.tasks.send_mail') as mock: + send_email_task('Test', 'Body', ['user@test.com']) + mock.assert_not_called() diff --git a/services/core/apps/notifications/tests/test_utils.py b/services/core/apps/notifications/tests/test_utils.py new file mode 100644 index 0000000..5c76e4b --- /dev/null +++ b/services/core/apps/notifications/tests/test_utils.py @@ -0,0 +1,99 @@ +from unittest.mock import patch + +import pytest + +from apps.notifications.models import Notification + + +pytestmark = pytest.mark.django_db + + +class TestNotifyComment: + def test_creates_notification_for_project_owner(self, project, other_user): + from apps.comments.models import Comment + comment = Comment.objects.create(project=project, user=other_user, content='Nice!') + from apps.notifications.utils import notify_comment + notify_comment(comment) + assert Notification.objects.filter(user=project.user).count() == 1 + + def test_skips_when_commenter_is_owner(self, project, user): + from apps.comments.models import Comment + comment = Comment.objects.create(project=project, user=user, content='Self comment') + from apps.notifications.utils import notify_comment + notify_comment(comment) + assert Notification.objects.filter(user=project.user).count() == 0 + + def test_message_format(self, project, other_user): + from apps.comments.models import Comment + comment = Comment.objects.create(project=project, user=other_user, content='Nice project!') + from apps.notifications.utils import notify_comment + notify_comment(comment) + notification = Notification.objects.get(user=project.user) + assert comment.user.name in notification.message + assert project.name in notification.message + assert comment.content[:80] in notification.message + + def test_sends_email_when_configured(self, project, other_user): + from apps.comments.models import Comment + comment = Comment.objects.create(project=project, user=other_user, content='Nice!') + from apps.notifications.utils import notify_comment + with patch('django.conf.settings.EMAIL_HOST_USER', 'test@example.com'): + with patch('apps.notifications.utils.send_email_task.delay') as mock: + notify_comment(comment) + mock.assert_called_once() + args = mock.call_args[1] + assert 'New comment' in args['subject'] + assert project.user.email in args['recipient_list'] + + def test_skips_email_when_not_configured(self, project, other_user): + from apps.comments.models import Comment + comment = Comment.objects.create(project=project, user=other_user, content='Nice!') + from apps.notifications.utils import notify_comment + with patch('django.conf.settings.EMAIL_HOST_USER', None): + with patch('apps.notifications.utils.send_email_task.delay') as mock: + notify_comment(comment) + mock.assert_not_called() + + def test_links_comment_to_notification(self, project, other_user): + from apps.comments.models import Comment + comment = Comment.objects.create(project=project, user=other_user, content='Nice!') + from apps.notifications.utils import notify_comment + notify_comment(comment) + notification = Notification.objects.get(user=project.user) + assert notification.comment == comment + + +class TestNotifyReply: + def test_creates_notification_for_parent_author(self, project, other_user): + from apps.comments.models import Comment + parent = Comment.objects.create(project=project, user=other_user, content='Original') + reply = Comment.objects.create(project=project, user=project.user, parent=parent, content='A reply') + from apps.notifications.utils import notify_reply + notify_reply(reply) + assert Notification.objects.filter(user=other_user).count() == 1 + + def test_skips_if_no_parent(self, project, other_user): + from apps.comments.models import Comment + comment = Comment.objects.create(project=project, user=other_user, content='No parent') + from apps.notifications.utils import notify_reply + notify_reply(comment) + assert Notification.objects.count() == 0 + + def test_skips_if_replier_is_parent(self, project, user): + from apps.comments.models import Comment + parent = Comment.objects.create(project=project, user=user, content='My comment') + reply = Comment.objects.create(project=project, user=user, parent=parent, content='Self reply') + from apps.notifications.utils import notify_reply + notify_reply(reply) + assert Notification.objects.count() == 0 + + def test_sends_email_when_configured(self, project, other_user): + from apps.comments.models import Comment + parent = Comment.objects.create(project=project, user=other_user, content='Original') + reply = Comment.objects.create(project=project, user=project.user, parent=parent, content='Reply') + from apps.notifications.utils import notify_reply + with patch('django.conf.settings.EMAIL_HOST_USER', 'test@example.com'): + with patch('apps.notifications.utils.send_email_task.delay') as mock: + notify_reply(reply) + mock.assert_called_once() + assert 'New reply' in mock.call_args[1]['subject'] diff --git a/services/core/apps/notifications/tests/test_views.py b/services/core/apps/notifications/tests/test_views.py new file mode 100644 index 0000000..6d4d2df --- /dev/null +++ b/services/core/apps/notifications/tests/test_views.py @@ -0,0 +1,100 @@ +import pytest +from django.urls import reverse +from rest_framework import status + + +pytestmark = pytest.mark.django_db + + +class TestNotificationListView: + def test_unauthenticated(self, api_client): + url = reverse('notification_list') + response = api_client.get(url) + assert response.status_code == status.HTTP_401_UNAUTHORIZED + + def test_returns_user_notifications(self, api_client, user, notification): + api_client.force_authenticate(user=user) + url = reverse('notification_list') + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert len(response.data) == 1 + assert response.data[0]['message'] == notification.message + + def test_does_not_return_other_user_notifications(self, api_client, other_user, notification): + api_client.force_authenticate(user=other_user) + url = reverse('notification_list') + response = api_client.get(url) + assert response.data == [] + + def test_limit_param(self, api_client, user): + for i in range(5): + from apps.notifications.models import Notification + Notification.objects.create(user=user, message=f'Notification {i}') + api_client.force_authenticate(user=user) + url = reverse('notification_list') + '?limit=2' + response = api_client.get(url) + assert len(response.data) == 2 + + +class TestUnreadCountView: + def test_unauthenticated(self, api_client): + url = reverse('notification_unread_count') + response = api_client.get(url) + assert response.status_code == status.HTTP_401_UNAUTHORIZED + + def test_count(self, api_client, user, notification): + api_client.force_authenticate(user=user) + url = reverse('notification_unread_count') + response = api_client.get(url) + assert response.data['unread_count'] == 1 + + def test_zero_when_all_read(self, api_client, user, notification): + notification.is_read = True + notification.save() + api_client.force_authenticate(user=user) + url = reverse('notification_unread_count') + response = api_client.get(url) + assert response.data['unread_count'] == 0 + + +class TestMarkReadView: + def test_mark_read(self, api_client, user, notification): + api_client.force_authenticate(user=user) + url = reverse('notification_mark_read', args=[notification.id]) + response = api_client.patch(url) + assert response.status_code == status.HTTP_204_NO_CONTENT + notification.refresh_from_db() + assert notification.is_read is True + + +class TestMarkAllReadView: + def test_mark_all_read(self, api_client, user): + from apps.notifications.models import Notification + Notification.objects.create(user=user, message='N1') + Notification.objects.create(user=user, message='N2') + api_client.force_authenticate(user=user) + url = reverse('notification_mark_all_read') + response = api_client.patch(url) + assert response.status_code == status.HTTP_204_NO_CONTENT + assert Notification.objects.filter(user=user, is_read=False).count() == 0 + + +class TestNotificationDeleteView: + def test_delete(self, api_client, user, notification): + api_client.force_authenticate(user=user) + url = reverse('notification_delete', args=[notification.id]) + response = api_client.delete(url) + assert response.status_code == status.HTTP_204_NO_CONTENT + assert not type(notification).objects.filter(id=notification.id).exists() + + +class TestClearAllNotificationsView: + def test_clear_all(self, api_client, user): + from apps.notifications.models import Notification + Notification.objects.create(user=user, message='N1') + Notification.objects.create(user=user, message='N2') + api_client.force_authenticate(user=user) + url = reverse('notification_clear_all') + response = api_client.delete(url) + assert response.status_code == status.HTTP_204_NO_CONTENT + assert Notification.objects.filter(user=user).count() == 0 diff --git a/backend/apps/notifications/urls.py b/services/core/apps/notifications/urls.py similarity index 100% rename from backend/apps/notifications/urls.py rename to services/core/apps/notifications/urls.py diff --git a/services/core/apps/notifications/utils.py b/services/core/apps/notifications/utils.py new file mode 100644 index 0000000..74540df --- /dev/null +++ b/services/core/apps/notifications/utils.py @@ -0,0 +1,66 @@ +from django.conf import settings +from django.template.loader import render_to_string + +from .models import Notification +from .tasks import send_email_task + + +def _snippet(text, maxlen=80): + if not text: + return '' + return text[:maxlen] + ('...' if len(text) > maxlen else '') + + +def notify_comment(comment): + project = comment.project + owner = project.user + if owner == comment.user: + return + + commenter = comment.user.name or comment.user.email + snippet = _snippet(comment.content) + message = f'{commenter} commented on "{project.name}": "{snippet}"' + Notification.objects.create(user=owner, comment=comment, message=message) + + if settings.EMAIL_HOST_USER: + public_url = f'{settings.SITE_URL}/public/{project.public_slug}#comment-{comment.id}' + send_email_task.delay( + subject=f'New comment on "{project.name}"', + message=comment.content, + recipient_list=[owner.email], + html_message=render_to_string('emails/notification_comment.html', { + 'project_name': project.name, + 'commenter': commenter, + 'comment_content': comment.content, + 'public_url': public_url, + }), + ) + + +def notify_reply(comment): + parent = comment.parent + if not parent or not parent.user: + return + if parent.user == comment.user: + return + + project = comment.project + replier = comment.user.name or comment.user.email + snippet = _snippet(comment.content) + message = f'{replier} replied to your comment on "{project.name}": "{snippet}"' + Notification.objects.create(user=parent.user, comment=comment, message=message) + + if settings.EMAIL_HOST_USER: + public_url = f'{settings.SITE_URL}/public/{project.public_slug}#comment-{comment.id}' + send_email_task.delay( + subject=f'New reply on "{project.name}"', + message=comment.content, + recipient_list=[parent.user.email], + html_message=render_to_string('emails/notification_reply.html', { + 'project_name': project.name, + 'replier': replier, + 'parent_content': parent.content, + 'reply_content': comment.content, + 'public_url': public_url, + }), + ) diff --git a/services/core/apps/notifications/views/__init__.py b/services/core/apps/notifications/views/__init__.py new file mode 100644 index 0000000..771e77d --- /dev/null +++ b/services/core/apps/notifications/views/__init__.py @@ -0,0 +1,8 @@ +from .notifications import ( + ClearAllNotificationsView, + MarkAllReadView, + MarkReadView, + NotificationDeleteView, + NotificationListView, + UnreadCountView, +) diff --git a/backend/apps/notifications/views.py b/services/core/apps/notifications/views/notifications.py similarity index 95% rename from backend/apps/notifications/views.py rename to services/core/apps/notifications/views/notifications.py index 6f1d1b1..3dc5df9 100644 --- a/backend/apps/notifications/views.py +++ b/services/core/apps/notifications/views/notifications.py @@ -2,8 +2,8 @@ from rest_framework.response import Response from rest_framework.views import APIView -from .models import Notification -from .serializers import NotificationSerializer +from ..models import Notification +from ..serializers import NotificationSerializer class NotificationListView(APIView): diff --git a/services/core/apps/parser/__init__.py b/services/core/apps/parser/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/apps/parser/apps.py b/services/core/apps/parser/apps.py similarity index 100% rename from backend/apps/parser/apps.py rename to services/core/apps/parser/apps.py diff --git a/backend/apps/parser/ast_parser.py b/services/core/apps/parser/ast_parser.py similarity index 94% rename from backend/apps/parser/ast_parser.py rename to services/core/apps/parser/ast_parser.py index abe7112..6811f2f 100644 --- a/backend/apps/parser/ast_parser.py +++ b/services/core/apps/parser/ast_parser.py @@ -25,12 +25,12 @@ def parse_python_file(source_code: str) -> dict: # First pass: collect top-level definitions to know what names exist for node in tree.body: - if isinstance(node, ast.FunctionDef): + if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)): top_level_names.add(node.name) elif isinstance(node, ast.ClassDef): top_level_names.add(node.name) for item in node.body: - if isinstance(item, ast.FunctionDef): + if isinstance(item, (ast.FunctionDef, ast.AsyncFunctionDef)): top_level_names.add(item.name) # Second pass: ordered traversal of tree.body @@ -44,7 +44,7 @@ def parse_python_file(source_code: str) -> dict: "data": import_entry }) - elif isinstance(node, ast.FunctionDef): + elif isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)): func_data = _extract_function(node, top_level_names) result["functions"].append(func_data) result["ordered_items"].append({ @@ -110,7 +110,7 @@ def _extract_class(node, available_names: set) -> dict[str, Any]: # Process class body in order for item in node.body: - if isinstance(item, ast.FunctionDef): + if isinstance(item, (ast.FunctionDef, ast.AsyncFunctionDef)): method_connections = _find_connections(item, available_names) methods.append({ "name": item.name, diff --git a/services/core/apps/parser/migrations/__init__.py b/services/core/apps/parser/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/apps/parser/tasks.py b/services/core/apps/parser/tasks.py similarity index 98% rename from backend/apps/parser/tasks.py rename to services/core/apps/parser/tasks.py index 55d4347..ef42f94 100644 --- a/backend/apps/parser/tasks.py +++ b/services/core/apps/parser/tasks.py @@ -6,6 +6,7 @@ from celery import shared_task +from apps.common.config import INTERNAL_API_KEY from apps.parser.validators import should_exclude from apps.projects.models import Project @@ -13,7 +14,6 @@ PARSER_URL = os.getenv("PARSER_URL", "http://fastapi-parser:8002") AI_URL = os.getenv("AI_URL", "http://fastapi-ai:8003") -INTERNAL_API_KEY = os.getenv("INTERNAL_API_KEY", "pydocai-internal-key") def _call_fastapi(method: str, url: str, **kwargs): diff --git a/services/core/apps/parser/tests/__init__.py b/services/core/apps/parser/tests/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/services/core/apps/parser/tests/__init__.py @@ -0,0 +1 @@ + diff --git a/services/core/apps/parser/tests/test_ast_parser.py b/services/core/apps/parser/tests/test_ast_parser.py new file mode 100644 index 0000000..60b1416 --- /dev/null +++ b/services/core/apps/parser/tests/test_ast_parser.py @@ -0,0 +1,100 @@ +from apps.parser.ast_parser import parse_python_file + + +class TestParsePythonFile: + def test_empty_file(self): + result = parse_python_file('') + assert result['error'] is False + assert result['imports'] == [] + assert result['functions'] == [] + assert result['classes'] == [] + assert result['ordered_items'] == [] + + def test_syntax_error(self): + result = parse_python_file('def foo(:') + assert result['error'] is True + assert 'SyntaxError' in result['error_message'] + + def test_simple_function(self): + code = ''' +def greet(name): + """Say hello.""" + return f"Hello {name}" +''' + result = parse_python_file(code) + assert result['error'] is False + assert len(result['functions']) == 1 + assert result['functions'][0]['name'] == 'greet' + assert result['functions'][0]['docstring'] == 'Say hello.' + assert result['functions'][0]['args'][0]['name'] == 'name' + assert result['functions'][0]['returns'] is None + + def test_class_with_methods(self): + code = ''' +class Calculator: + """A simple calculator.""" + + def add(self, a, b): + return a + b + + def subtract(self, a, b): + return a - b +''' + result = parse_python_file(code) + assert result['error'] is False + assert len(result['classes']) == 1 + cls = result['classes'][0] + assert cls['name'] == 'Calculator' + assert cls['docstring'] == 'A simple calculator.' + assert len(cls['methods']) == 2 + assert cls['methods'][0]['name'] == 'add' + assert cls['methods'][1]['name'] == 'subtract' + + def test_imports(self): + code = ''' +import os +import sys +from datetime import datetime, timedelta +''' + result = parse_python_file(code) + assert len(result['imports']) == 3 + + def test_module_docstring(self): + code = '''"""This module does things.""" +def foo(): + pass +''' + result = parse_python_file(code) + assert result['module_docstring'] == 'This module does things.' + + def test_async_function(self): + code = ''' +async def fetch_data(url): + """Fetch data from URL.""" + return await request(url) +''' + result = parse_python_file(code) + assert len(result['functions']) == 1 + assert result['functions'][0]['is_async'] is True + + def test_connections(self): + code = ''' +def helper(): + pass + +def caller(): + return helper() +''' + result = parse_python_file(code) + assert 'helper' in result['functions'][1]['connections'] + + def test_decorators(self): + code = ''' +@staticmethod +@log +def method(): + pass +''' + result = parse_python_file(code) + assert len(result['functions'][0]['decorators']) == 2 + assert 'staticmethod' in result['functions'][0]['decorators'][0] diff --git a/services/core/apps/parser/tests/test_tasks.py b/services/core/apps/parser/tests/test_tasks.py new file mode 100644 index 0000000..596b657 --- /dev/null +++ b/services/core/apps/parser/tests/test_tasks.py @@ -0,0 +1,20 @@ +import pytest + + +pytestmark = pytest.mark.django_db + + +class TestParseFolderTask: + def test_missing_zip(self, project): + from apps.parser.tasks import parse_folder_task + result = parse_folder_task(project.id, ['main.py'], zip_base64=None) + assert result['error'] == 'No ZIP data provided' + project.refresh_from_db() + assert project.status == 'failed' + + +class TestParseAndGenerateDocsTask: + def test_project_not_found(self): + from apps.parser.tasks import parse_and_generate_docs_task + result = parse_and_generate_docs_task(999, 'print("x")', 'test.py', 10) + assert 'error' in result diff --git a/services/core/apps/parser/tests/test_validators.py b/services/core/apps/parser/tests/test_validators.py new file mode 100644 index 0000000..5b73cb2 --- /dev/null +++ b/services/core/apps/parser/tests/test_validators.py @@ -0,0 +1,55 @@ +from apps.parser.validators import should_exclude, validate_python_code + + +class TestValidatePythonCode: + def test_valid_code(self): + is_valid, error = validate_python_code('print("hello")') + assert is_valid is True + assert error is None + + def test_empty_code(self): + is_valid, error = validate_python_code('') + assert is_valid is False + assert 'empty' in error + + def test_whitespace_only(self): + is_valid, error = validate_python_code(' ') + assert is_valid is False + + def test_syntax_error(self): + is_valid, error = validate_python_code('def foo(:') + assert is_valid is False + assert 'SyntaxError' in error + + +class TestShouldExclude: + def test_normal_file(self): + assert should_exclude('myproject/utils/helpers.py') is False + assert should_exclude('src/main.py') is False + + def test_venv(self): + assert should_exclude('venv/lib/site.py') is True + + def test_node_modules(self): + assert should_exclude('project/node_modules/react/index.js') is True + + def test_pycache(self): + assert should_exclude('project/__pycache__/main.cpython-310.pyc') is True + + def test_git(self): + assert should_exclude('.git/config') is True + assert should_exclude('.github/workflows/build.yml') is True + + def test_egg_info(self): + assert should_exclude('src/foo.egg-info/PKG-INFO') is True + + def test_build_dirs(self): + assert should_exclude('build/output.o') is True + assert should_exclude('dist/bundle.js') is True + + def test_migrations(self): + assert should_exclude('app/migrations/0001_initial.py') is True + + def test_mixed_path(self): + assert should_exclude('project/sub/venv/lib/file.py') is True + assert should_exclude('project/sub/not-venv/lib/file.py') is False diff --git a/services/core/apps/parser/tests/test_views.py b/services/core/apps/parser/tests/test_views.py new file mode 100644 index 0000000..d83574f --- /dev/null +++ b/services/core/apps/parser/tests/test_views.py @@ -0,0 +1,113 @@ +import io +from unittest.mock import patch + +import pytest +from django.urls import reverse +from rest_framework import status + + +pytestmark = pytest.mark.django_db + + +class TestAnalyseSingleFileView: + def test_unauthenticated(self, api_client): + url = reverse('analyse_file') + response = api_client.post(url) + assert response.status_code == status.HTTP_401_UNAUTHORIZED + + def test_no_file(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('analyse_file') + response = api_client.post(url, {'name': 'Test'}) + assert response.status_code == status.HTTP_400_BAD_REQUEST + + def test_non_py_file(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('analyse_file') + f = io.BytesIO(b'print("hello")') + f.name = 'test.js' + response = api_client.post(url, {'file': f, 'name': 'Test'}) + assert response.status_code == status.HTTP_400_BAD_REQUEST + + def test_valid_file(self, api_client, user): + api_client.force_authenticate(user=user) + with patch('apps.parser.views.file.parse_and_generate_docs_task.delay'): + url = reverse('analyse_file') + f = io.BytesIO(b'print("hello")') + f.name = 'test.py' + response = api_client.post(url, {'file': f, 'name': 'Test'}) + assert response.status_code == status.HTTP_202_ACCEPTED + assert 'project_id' in response.data + + def test_non_utf8(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('analyse_file') + f = io.BytesIO(b'\xff\xfe\x00\x01') + f.name = 'test.py' + response = api_client.post(url, {'file': f, 'name': 'Test'}) + assert response.status_code == status.HTTP_400_BAD_REQUEST + + +class TestAnalyseFolderView: + def test_unauthenticated(self, api_client): + url = reverse('analyse_folder') + response = api_client.post(url) + assert response.status_code == status.HTTP_401_UNAUTHORIZED + + def test_no_zip(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('analyse_folder') + response = api_client.post(url, {'name': 'Test', 'custom_info': '{}'}) + assert response.status_code == status.HTTP_400_BAD_REQUEST + + def test_no_custom_info(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('analyse_folder') + response = api_client.post(url, {'name': 'Test'}) + assert response.status_code == status.HTTP_400_BAD_REQUEST + + def test_valid_zip(self, api_client, user): + import zipfile + from django.core.files.uploadedfile import SimpleUploadedFile + api_client.force_authenticate(user=user) + with patch('apps.parser.views.folder.parse_folder_task.delay'): + buf = io.BytesIO() + with zipfile.ZipFile(buf, 'w') as zf: + zf.writestr('main.py', 'print("hello")') + buf.seek(0) + uploaded = SimpleUploadedFile('test.zip', buf.read(), content_type='application/zip') + url = reverse('analyse_folder') + response = api_client.post(url, { + 'folder': uploaded, + 'name': 'Test', + 'custom_info': '{"details": "test"}', + }) + assert response.status_code == status.HTTP_202_ACCEPTED + assert 'project_id' in response.data + + def test_invalid_zip(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('analyse_folder') + f = io.BytesIO(b'not a zip file') + f.name = 'test.zip' + response = api_client.post(url, { + 'folder': f, + 'name': 'Test', + 'custom_info': '{"details": "test"}', + }) + assert response.status_code == status.HTTP_400_BAD_REQUEST + + def test_no_py_files_in_zip(self, api_client, user): + import zipfile + api_client.force_authenticate(user=user) + buf = io.BytesIO() + with zipfile.ZipFile(buf, 'w') as zf: + zf.writestr('readme.txt', 'Hello') + buf.seek(0) + url = reverse('analyse_folder') + response = api_client.post(url, { + 'folder': buf, + 'name': 'Test', + 'custom_info': '{"details": "test"}', + }) + assert response.status_code == status.HTTP_400_BAD_REQUEST diff --git a/backend/apps/parser/urls.py b/services/core/apps/parser/urls.py similarity index 100% rename from backend/apps/parser/urls.py rename to services/core/apps/parser/urls.py diff --git a/backend/apps/parser/validators.py b/services/core/apps/parser/validators.py similarity index 100% rename from backend/apps/parser/validators.py rename to services/core/apps/parser/validators.py diff --git a/services/core/apps/parser/views/__init__.py b/services/core/apps/parser/views/__init__.py new file mode 100644 index 0000000..21e915c --- /dev/null +++ b/services/core/apps/parser/views/__init__.py @@ -0,0 +1,7 @@ +from .folder import AnalyseFolderView +from .file import AnalyseSingleFileView + +__all__ = [ + 'AnalyseFolderView', + 'AnalyseSingleFileView', +] diff --git a/services/core/apps/parser/views/file.py b/services/core/apps/parser/views/file.py new file mode 100644 index 0000000..6c00f2b --- /dev/null +++ b/services/core/apps/parser/views/file.py @@ -0,0 +1,46 @@ +from rest_framework import status +from rest_framework.permissions import IsAuthenticated +from rest_framework.response import Response +from rest_framework.views import APIView + +from apps.parser.tasks import parse_and_generate_docs_task +from apps.projects.models import Project + + +class AnalyseSingleFileView(APIView): + permission_classes = [IsAuthenticated] + + def post(self, request): + uploaded_file = request.FILES.get('file') + name = request.data.get('name', 'Untitled Project') + description = request.data.get('description', '') + + if not uploaded_file: + return Response({'error': 'No file uploaded'}, status=400) + + if not uploaded_file.name.endswith('.py'): + return Response({'error': 'Only .py files are allowed'}, status=400) + + try: + source_code = uploaded_file.read().decode('utf-8') + fname = uploaded_file.name + fsize = uploaded_file.size + except UnicodeDecodeError: + return Response({'error': 'File must be UTF-8 encoded'}, status=400) + + project = Project.objects.create( + user=request.user, + name=name, + description=description, + source_type=Project.SourceType.FILE, + file_name=fname, + file_size=fsize, + status=Project.Status.PENDING, + ) + + parse_and_generate_docs_task.delay(project.id, source_code, fname, fsize) + + return Response( + {'project_id': str(project.id)}, + status=status.HTTP_202_ACCEPTED + ) diff --git a/backend/apps/parser/views.py b/services/core/apps/parser/views/folder.py similarity index 61% rename from backend/apps/parser/views.py rename to services/core/apps/parser/views/folder.py index 5ee08f9..b4d35cc 100644 --- a/backend/apps/parser/views.py +++ b/services/core/apps/parser/views/folder.py @@ -8,7 +8,7 @@ from rest_framework.response import Response from rest_framework.views import APIView -from apps.parser.tasks import parse_and_generate_docs_task, parse_folder_task +from apps.parser.tasks import parse_folder_task from apps.parser.validators import should_exclude from apps.projects.models import Project @@ -21,19 +21,15 @@ def post(self, request): name = request.data.get('name', 'Untitled Project') description = request.data.get('description', '') - # Optional user-provided project details for documentation user_description = request.data.get('user_description', None) - # Parse custom_info (Mandatory) custom_info = request.data.get('custom_info', None) if not custom_info: return Response({'error': 'additional project details (custom_info) are mandatory for folder uploads'}, status=400) if isinstance(custom_info, str): try: - # Try parsing as JSON first custom_info = json.loads(custom_info) except json.JSONDecodeError: - # If it's just plain text, wrap it in a JSON object custom_info = {"details": custom_info} if not zip_file: @@ -80,42 +76,3 @@ def post(self, request): except zipfile.BadZipFile: return Response({'error': 'Invalid zip file'}, status=400) - - -class AnalyseSingleFileView(APIView): - permission_classes = [IsAuthenticated] - - def post(self, request): - uploaded_file = request.FILES.get('file') - name = request.data.get('name', 'Untitled Project') - description = request.data.get('description', '') - - if not uploaded_file: - return Response({'error': 'No file uploaded'}, status=400) - - if not uploaded_file.name.endswith('.py'): - return Response({'error': 'Only .py files are allowed'}, status=400) - - try: - source_code = uploaded_file.read().decode('utf-8') - fname = uploaded_file.name - fsize = uploaded_file.size - except UnicodeDecodeError: - return Response({'error': 'File must be UTF-8 encoded'}, status=400) - - project = Project.objects.create( - user=request.user, - name=name, - description=description, - source_type=Project.SourceType.FILE, - file_name=fname, - file_size=fsize, - status=Project.Status.PENDING, - ) - - parse_and_generate_docs_task.delay(project.id, source_code, fname, fsize) - - return Response( - {'project_id': str(project.id)}, - status=status.HTTP_202_ACCEPTED - ) diff --git a/services/core/apps/projects/__init__.py b/services/core/apps/projects/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/apps/projects/admin.py b/services/core/apps/projects/admin.py similarity index 100% rename from backend/apps/projects/admin.py rename to services/core/apps/projects/admin.py diff --git a/backend/apps/projects/apps.py b/services/core/apps/projects/apps.py similarity index 100% rename from backend/apps/projects/apps.py rename to services/core/apps/projects/apps.py diff --git a/backend/apps/projects/migrations/0001_initial.py b/services/core/apps/projects/migrations/0001_initial.py similarity index 100% rename from backend/apps/projects/migrations/0001_initial.py rename to services/core/apps/projects/migrations/0001_initial.py diff --git a/backend/apps/projects/migrations/0002_project_project_info_project_readme_docs.py b/services/core/apps/projects/migrations/0002_project_project_info_project_readme_docs.py similarity index 100% rename from backend/apps/projects/migrations/0002_project_project_info_project_readme_docs.py rename to services/core/apps/projects/migrations/0002_project_project_info_project_readme_docs.py diff --git a/backend/apps/projects/migrations/0003_project_api_docs.py b/services/core/apps/projects/migrations/0003_project_api_docs.py similarity index 100% rename from backend/apps/projects/migrations/0003_project_api_docs.py rename to services/core/apps/projects/migrations/0003_project_api_docs.py diff --git a/backend/apps/projects/migrations/0004_project_custom_details.py b/services/core/apps/projects/migrations/0004_project_custom_details.py similarity index 100% rename from backend/apps/projects/migrations/0004_project_custom_details.py rename to services/core/apps/projects/migrations/0004_project_custom_details.py diff --git a/backend/apps/projects/migrations/0005_remove_file_fields.py b/services/core/apps/projects/migrations/0005_remove_file_fields.py similarity index 100% rename from backend/apps/projects/migrations/0005_remove_file_fields.py rename to services/core/apps/projects/migrations/0005_remove_file_fields.py diff --git a/backend/apps/projects/migrations/0006_project_framework_info_project_is_published_and_more.py b/services/core/apps/projects/migrations/0006_project_framework_info_project_is_published_and_more.py similarity index 100% rename from backend/apps/projects/migrations/0006_project_framework_info_project_is_published_and_more.py rename to services/core/apps/projects/migrations/0006_project_framework_info_project_is_published_and_more.py diff --git a/services/core/apps/projects/migrations/__init__.py b/services/core/apps/projects/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/services/core/apps/projects/models/__init__.py b/services/core/apps/projects/models/__init__.py new file mode 100644 index 0000000..c7173e9 --- /dev/null +++ b/services/core/apps/projects/models/__init__.py @@ -0,0 +1,4 @@ +from .project import Project +from .file import ProjectFile + +__all__ = ['Project', 'ProjectFile'] diff --git a/services/core/apps/projects/models/file.py b/services/core/apps/projects/models/file.py new file mode 100644 index 0000000..1bb0041 --- /dev/null +++ b/services/core/apps/projects/models/file.py @@ -0,0 +1,26 @@ +import uuid + +from django.db import models + + +class ProjectFile(models.Model): + + id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) + project = models.ForeignKey('projects.Project', on_delete=models.CASCADE, related_name='files') + + file_path = models.CharField(max_length=500) + file_name = models.CharField(max_length=255) + file_size = models.PositiveIntegerField(blank=True, null=True) + content = models.TextField(blank=True) + + parsed_data = models.JSONField(blank=True, null=True) + generated_docs = models.TextField(blank=True, null=True) + + created_at = models.DateTimeField(auto_now_add=True) + + class Meta: + db_table = 'project_files' + ordering = ['file_path'] + + def __str__(self): + return f'{self.project.name} / {self.file_path}' diff --git a/backend/apps/projects/models.py b/services/core/apps/projects/models/project.py similarity index 57% rename from backend/apps/projects/models.py rename to services/core/apps/projects/models/project.py index 9c59d07..4a13c9c 100644 --- a/backend/apps/projects/models.py +++ b/services/core/apps/projects/models/project.py @@ -2,8 +2,6 @@ from django.db import models -from apps.users.models import User - class Project(models.Model): @@ -19,33 +17,27 @@ class SourceType(models.TextChoices): GITHUB = 'github', 'GitHub Link' id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) - user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='projects') + user = models.ForeignKey('users.User', on_delete=models.CASCADE, related_name='projects') name = models.CharField(max_length=255) description = models.TextField(blank=True) status = models.CharField(max_length=20, choices=Status.choices, default=Status.PENDING) source_type = models.CharField(max_length=20, choices=SourceType.choices, default=SourceType.FILE) - # single file metadata file_name = models.CharField(max_length=255, blank=True) file_size = models.PositiveIntegerField(blank=True, null=True) - # folder / zip (metadata only, never stored on disk) - - # github github_url = models.URLField(blank=True, null=True) github_branch = models.CharField(max_length=100, blank=True, default='main') - # results parsed_data = models.JSONField(blank=True, null=True) generated_docs = models.TextField(blank=True, null=True) - readme_docs = models.TextField(blank=True, null=True) # Generated README - api_docs = models.TextField(blank=True, null=True) # API Documentation - project_info = models.JSONField(blank=True, null=True) # Project structure info - custom_details = models.JSONField(blank=True, null=True) # Extra user-provided context - framework_info = models.JSONField(blank=True, null=True) # Auto-detected framework + readme_docs = models.TextField(blank=True, null=True) + api_docs = models.TextField(blank=True, null=True) + project_info = models.JSONField(blank=True, null=True) + custom_details = models.JSONField(blank=True, null=True) + framework_info = models.JSONField(blank=True, null=True) error_message = models.TextField(blank=True, null=True) - # publish / share is_published = models.BooleanField(default=False) public_slug = models.UUIDField(default=uuid.uuid4, unique=True, editable=False) published_description = models.TextField(blank=True) @@ -65,7 +57,7 @@ class Meta: ] def __str__(self): - return f'{self.name} ({self.source_type}) โ€” {self.user.email}' + return f'{self.name} ({self.source_type}) \u2014 {self.user.email}' @property def is_done(self): @@ -74,26 +66,3 @@ def is_done(self): @property def is_failed(self): return self.status == self.Status.FAILED - - -class ProjectFile(models.Model): - - id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) - project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name='files') - - file_path = models.CharField(max_length=500) # e.g. src/utils/helpers.py - file_name = models.CharField(max_length=255) - file_size = models.PositiveIntegerField(blank=True, null=True) - content = models.TextField(blank=True) # raw source code - - parsed_data = models.JSONField(blank=True, null=True) # ast result - generated_docs = models.TextField(blank=True, null=True) # ai result - - created_at = models.DateTimeField(auto_now_add=True) - - class Meta: - db_table = 'project_files' - ordering = ['file_path'] - - def __str__(self): - return f'{self.project.name} / {self.file_path}' diff --git a/services/core/apps/projects/serializers/__init__.py b/services/core/apps/projects/serializers/__init__.py new file mode 100644 index 0000000..c23b2e0 --- /dev/null +++ b/services/core/apps/projects/serializers/__init__.py @@ -0,0 +1,10 @@ +from .project import ProjectFileSerializer, ProjectSerializer, ProjectListSerializer +from .public import PublicProjectSerializer, PublicProjectListSerializer + +__all__ = [ + 'ProjectFileSerializer', + 'ProjectSerializer', + 'ProjectListSerializer', + 'PublicProjectSerializer', + 'PublicProjectListSerializer', +] diff --git a/backend/apps/projects/serializers.py b/services/core/apps/projects/serializers/project.py similarity index 58% rename from backend/apps/projects/serializers.py rename to services/core/apps/projects/serializers/project.py index 3b87001..b423d32 100644 --- a/backend/apps/projects/serializers.py +++ b/services/core/apps/projects/serializers/project.py @@ -1,6 +1,6 @@ from rest_framework import serializers -from .models import Project, ProjectFile +from ..models import Project, ProjectFile class ProjectFileSerializer(serializers.ModelSerializer): @@ -8,6 +8,7 @@ class Meta: model = ProjectFile fields = '__all__' + class ProjectSerializer(serializers.ModelSerializer): files = ProjectFileSerializer(many=True, read_only=True) @@ -27,10 +28,14 @@ class Meta: 'public_slug', ] + class ProjectListSerializer(serializers.ModelSerializer): user_name = serializers.CharField(source='user.name', read_only=True) user_email = serializers.EmailField(source='user.email', read_only=True) - file_count = serializers.IntegerField(read_only=True) + file_count = serializers.SerializerMethodField() + + def get_file_count(self, obj): + return getattr(obj, 'file_count', obj.files.count()) class Meta: model = Project @@ -39,29 +44,3 @@ class Meta: 'is_published', 'public_slug', 'published_description', 'created_at', 'updated_at', 'user_name', 'user_email', 'file_count', 'framework_info', ] - -class PublicProjectSerializer(serializers.ModelSerializer): - user_name = serializers.CharField(source='user.name', read_only=True) - file_count = serializers.IntegerField(read_only=True) - - class Meta: - model = Project - fields = [ - 'id', 'name', 'description', 'published_description', - 'generated_docs', 'readme_docs', 'api_docs', - 'user_name', 'file_count', 'public_slug', 'source_type', - 'github_url', 'github_branch', - 'created_at', 'updated_at', - ] - -class PublicProjectListSerializer(serializers.ModelSerializer): - user_name = serializers.CharField(source='user.name', read_only=True) - file_count = serializers.IntegerField(read_only=True) - - class Meta: - model = Project - fields = [ - 'id', 'name', 'description', 'published_description', - 'user_name', 'file_count', 'public_slug', 'source_type', - 'created_at', 'updated_at', - ] diff --git a/services/core/apps/projects/serializers/public.py b/services/core/apps/projects/serializers/public.py new file mode 100644 index 0000000..044caf7 --- /dev/null +++ b/services/core/apps/projects/serializers/public.py @@ -0,0 +1,37 @@ +from rest_framework import serializers + +from ..models import Project + + +class PublicProjectSerializer(serializers.ModelSerializer): + user_name = serializers.CharField(source='user.name', read_only=True) + file_count = serializers.SerializerMethodField() + + def get_file_count(self, obj): + return getattr(obj, 'file_count', obj.files.count()) + + class Meta: + model = Project + fields = [ + 'id', 'name', 'description', 'published_description', + 'generated_docs', 'readme_docs', 'api_docs', + 'user_name', 'file_count', 'is_published', 'public_slug', 'source_type', + 'github_url', 'github_branch', + 'created_at', 'updated_at', + ] + + +class PublicProjectListSerializer(serializers.ModelSerializer): + user_name = serializers.CharField(source='user.name', read_only=True) + file_count = serializers.SerializerMethodField() + + def get_file_count(self, obj): + return getattr(obj, 'file_count', obj.files.count()) + + class Meta: + model = Project + fields = [ + 'id', 'name', 'description', 'published_description', + 'user_name', 'file_count', 'public_slug', 'source_type', + 'created_at', 'updated_at', + ] diff --git a/services/core/apps/projects/tests/__init__.py b/services/core/apps/projects/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/services/core/apps/projects/tests/test_models.py b/services/core/apps/projects/tests/test_models.py new file mode 100644 index 0000000..f493c57 --- /dev/null +++ b/services/core/apps/projects/tests/test_models.py @@ -0,0 +1,58 @@ +import pytest + +from apps.projects.models import Project, ProjectFile + + +class TestProjectModel: + def test_create(self, user): + project = Project.objects.create( + user=user, + name='Test Project', + source_type=Project.SourceType.FILE, + ) + assert project.user == user + assert project.name == 'Test Project' + assert project.status == 'pending' + assert project.is_published is False + assert project.public_slug is not None + + def test_status_choices(self): + assert Project.Status.PENDING == 'pending' + assert Project.Status.PROCESSING == 'processing' + assert Project.Status.DONE == 'done' + assert Project.Status.FAILED == 'failed' + + def test_source_type_choices(self): + assert Project.SourceType.FILE == 'file' + assert Project.SourceType.FOLDER == 'folder' + assert Project.SourceType.GITHUB == 'github' + + def test_str(self, project): + expected = f'{project.name} ({project.source_type}) โ€” {project.user.email}' + assert str(project) == expected + + def test_ordering(self): + assert Project._meta.ordering == ['-created_at'] + + def test_db_table(self): + assert Project._meta.db_table == 'projects' + + +class TestProjectFileModel: + def test_create(self, project): + pf = ProjectFile.objects.create( + project=project, + file_name='main.py', + file_path='src/main.py', + content='print("hello")', + ) + assert pf.project == project + assert pf.file_name == 'main.py' + assert pf.file_path == 'src/main.py' + assert pf.content == 'print("hello")' + + def test_str(self, project_file): + assert project_file.file_name in str(project_file) + + def test_db_table(self): + assert ProjectFile._meta.db_table == 'project_files' diff --git a/services/core/apps/projects/tests/test_serializers.py b/services/core/apps/projects/tests/test_serializers.py new file mode 100644 index 0000000..5f52692 --- /dev/null +++ b/services/core/apps/projects/tests/test_serializers.py @@ -0,0 +1,62 @@ +import pytest + +from apps.projects.serializers import ( + ProjectFileSerializer, + ProjectListSerializer, + ProjectSerializer, + PublicProjectListSerializer, + PublicProjectSerializer, +) + + +class TestProjectSerializer: + def test_serialize(self, project): + serializer = ProjectSerializer(project) + assert serializer.data['id'] == str(project.id) + assert serializer.data['name'] == project.name + assert serializer.data['status'] == project.status + + def test_includes_files(self, project, project_file): + serializer = ProjectSerializer(project) + assert 'files' in serializer.data + assert len(serializer.data['files']) >= 1 + + def test_read_only_fields(self, project): + serializer = ProjectSerializer(project) + for field in ['id', 'user', 'status', 'created_at', 'updated_at', 'public_slug']: + assert field in serializer.data + + +class TestProjectListSerializer: + def test_serialize(self, project): + serializer = ProjectListSerializer(project) + assert serializer.data['id'] == str(project.id) + assert serializer.data['name'] == project.name + + def test_file_count(self, project, project_file): + serializer = ProjectListSerializer(project) + assert serializer.data['file_count'] >= 1 + + +class TestProjectFileSerializer: + def test_serialize(self, project_file): + serializer = ProjectFileSerializer(project_file) + assert serializer.data['file_name'] == project_file.file_name + assert serializer.data['file_path'] == project_file.file_path + + def test_content_excluded_in_list(self, project_file): + serializer = ProjectFileSerializer(project_file) + assert 'content' in serializer.data + + +class TestPublicProjectSerializer: + def test_serialize(self, published_project): + serializer = PublicProjectSerializer(published_project) + assert serializer.data['name'] == published_project.name + assert serializer.data['is_published'] is True + + +class TestPublicProjectListSerializer: + def test_serialize(self, published_project): + serializer = PublicProjectListSerializer(published_project) + assert serializer.data['name'] == published_project.name diff --git a/services/core/apps/projects/tests/test_views.py b/services/core/apps/projects/tests/test_views.py new file mode 100644 index 0000000..6ea7e70 --- /dev/null +++ b/services/core/apps/projects/tests/test_views.py @@ -0,0 +1,125 @@ +from unittest.mock import patch + +import pytest +from django.urls import reverse +from rest_framework import status + + +pytestmark = pytest.mark.django_db + + +class TestProjectListView: + def test_unauthenticated(self, api_client): + url = reverse('project_list') + response = api_client.get(url) + assert response.status_code == status.HTTP_401_UNAUTHORIZED + + def test_list_own_projects(self, api_client, user, project): + api_client.force_authenticate(user=user) + url = reverse('project_list') + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert response.data['count'] >= 1 + assert 'stats' in response.data + assert 'results' in response.data + + def test_does_not_show_others_projects(self, api_client, other_user, project): + api_client.force_authenticate(user=other_user) + url = reverse('project_list') + response = api_client.get(url) + assert response.data['count'] == 0 + + def test_filter_by_status(self, api_client, user, project): + api_client.force_authenticate(user=user) + url = reverse('project_list') + '?status=done' + response = api_client.get(url) + assert response.data['count'] >= 1 + + +class TestProjectDetailView: + def test_get_own_project(self, api_client, user, project): + api_client.force_authenticate(user=user) + url = reverse('project_detail', args=[project.id]) + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert response.data['id'] == str(project.id) + + def test_cannot_get_others_project(self, api_client, other_user, project): + api_client.force_authenticate(user=other_user) + url = reverse('project_detail', args=[project.id]) + response = api_client.get(url) + assert response.status_code == status.HTTP_404_NOT_FOUND + + def test_not_found(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('project_detail', args=['00000000-0000-0000-0000-000000000000']) + response = api_client.get(url) + assert response.status_code == status.HTTP_404_NOT_FOUND + + def test_delete_project(self, api_client, user, project): + api_client.force_authenticate(user=user) + url = reverse('project_detail', args=[project.id]) + response = api_client.delete(url) + assert response.status_code == status.HTTP_200_OK + + +class TestPublishProjectView: + def test_publish(self, api_client, user, project): + api_client.force_authenticate(user=user) + url = reverse('project_publish', args=[project.id]) + response = api_client.patch(url, {'is_published': True, 'published_description': 'My docs'}, format='json') + assert response.status_code == status.HTTP_200_OK + assert response.data['is_published'] is True + + def test_unpublish(self, api_client, user, project): + project.is_published = True + project.save() + api_client.force_authenticate(user=user) + url = reverse('project_publish', args=[project.id]) + response = api_client.patch(url, {'is_published': False}, format='json') + assert response.status_code == status.HTTP_200_OK + assert response.data['is_published'] is False + + def test_missing_field(self, api_client, user, project): + api_client.force_authenticate(user=user) + url = reverse('project_publish', args=[project.id]) + response = api_client.patch(url, {}, format='json') + assert response.status_code == status.HTTP_400_BAD_REQUEST + + def test_not_owner(self, api_client, other_user, project): + api_client.force_authenticate(user=other_user) + url = reverse('project_publish', args=[project.id]) + response = api_client.patch(url, {'is_published': True}, format='json') + assert response.status_code == status.HTTP_404_NOT_FOUND + + +class TestPublicProjectListView: + def test_list_published(self, api_client, published_project): + url = reverse('public_project_list') + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert len(response.data['results']) >= 1 + + def test_unpublished_not_listed(self, api_client, project): + url = reverse('public_project_list') + response = api_client.get(url) + for p in response.data['results']: + assert p['is_published'] is True + + def test_search(self, api_client, published_project): + url = reverse('public_project_list') + '?search=Test' + response = api_client.get(url) + assert len(response.data['results']) >= 1 + + +class TestPublicProjectDetailView: + def test_get_published(self, api_client, published_project): + url = reverse('public_project_detail', args=[published_project.public_slug]) + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert response.data['name'] == published_project.name + + def test_not_found(self, api_client): + url = reverse('public_project_detail', args=['00000000-0000-0000-0000-000000000000']) + response = api_client.get(url) + assert response.status_code == status.HTTP_404_NOT_FOUND diff --git a/backend/apps/projects/throttles.py b/services/core/apps/projects/throttles.py similarity index 100% rename from backend/apps/projects/throttles.py rename to services/core/apps/projects/throttles.py diff --git a/backend/apps/projects/urls.py b/services/core/apps/projects/urls.py similarity index 100% rename from backend/apps/projects/urls.py rename to services/core/apps/projects/urls.py diff --git a/services/core/apps/projects/views/__init__.py b/services/core/apps/projects/views/__init__.py new file mode 100644 index 0000000..53148af --- /dev/null +++ b/services/core/apps/projects/views/__init__.py @@ -0,0 +1,10 @@ +from .project import ProjectListView, ProjectDetailView, PublishProjectView +from .public import PublicProjectListView, PublicProjectDetailView + +__all__ = [ + 'ProjectListView', + 'ProjectDetailView', + 'PublishProjectView', + 'PublicProjectListView', + 'PublicProjectDetailView', +] diff --git a/services/core/apps/projects/views/project.py b/services/core/apps/projects/views/project.py new file mode 100644 index 0000000..b1e6558 --- /dev/null +++ b/services/core/apps/projects/views/project.py @@ -0,0 +1,137 @@ +from django.contrib.auth import get_user_model +from django.core.cache import cache +from django.db import connection +from django.db.models import Count, Q +from rest_framework import permissions, status +from rest_framework.response import Response +from rest_framework.views import APIView + +from apps.common.pagination import NoPagination +from ..models import Project +from ..serializers import ProjectListSerializer, ProjectSerializer +from ..throttles import PublishRateThrottle + +User = get_user_model() + + +class ProjectListView(APIView): + permission_classes = [permissions.IsAuthenticated] + + def get(self, request): + qs = (Project.objects + .filter(user=request.user) + .select_related('user') + .annotate(file_count=Count('files')) + .order_by('-created_at')) + + search = request.query_params.get('search') + if search: + qs = qs.filter( + Q(name__icontains=search) | + Q(description__icontains=search) | + Q(status__icontains=search) | + Q(source_type__icontains=search) + ) + + for field in ['status', 'source_type', 'is_published']: + val = request.query_params.get(field) + if val is not None: + qs = qs.filter(**{field: val}) + + ordering = request.query_params.get('ordering', '-created_at') + allowed = ['created_at', 'name', 'status', 'source_type', + '-created_at', '-name', '-status', '-source_type'] + if ordering not in allowed: + ordering = '-created_at' + qs = qs.order_by(ordering) + + cache_key = f'project_stats_{request.user.id}' + stats = cache.get(cache_key) + if not stats: + base = Project.objects.filter(user=request.user).order_by() + counts = base.values('status').annotate(count=Count('id')) + status_map = {c['status']: c['count'] for c in counts} + stats = { + 'total': sum(status_map.values()), + 'done': status_map.get('done', 0), + 'processing': status_map.get('processing', 0), + 'failed': status_map.get('failed', 0), + 'pending': status_map.get('pending', 0), + 'published': base.filter(is_published=True).count(), + 'total_files': base.aggregate(total=Count('files', distinct=True))['total'] or 0, + 'by_source': list( + base.values('source_type') + .annotate(count=Count('id', distinct=True)) + .order_by('-count') + ), + } + cache.set(cache_key, stats, 60) + + page_size = int(request.query_params.get('page_size', 25)) + page = int(request.query_params.get('page', 1)) + start = (page - 1) * page_size + end = start + page_size + total = qs.count() + page_qs = qs[start:end] + serializer = ProjectListSerializer(page_qs, many=True) + + return Response({ + 'stats': stats, + 'results': serializer.data, + 'count': total, + 'page': page, + 'page_size': page_size, + }) + + +class ProjectDetailView(APIView): + permission_classes = [permissions.IsAuthenticated] + + def get_object(self, pk, user): + if user.is_staff or getattr(user, 'is_admin', False): + qs = Project.objects.all() + else: + qs = Project.objects.filter(user=user) + try: + return qs.get(pk=pk) + except Project.DoesNotExist: + return None + + def get(self, request, id): + project = self.get_object(id, request.user) + if not project: + return Response({"detail": "Not found."}, status=status.HTTP_404_NOT_FOUND) + serializer = ProjectSerializer(project) + return Response(serializer.data) + + def delete(self, request, id): + project = self.get_object(id, request.user) + if not project: + return Response({"detail": "Not found."}, status=status.HTTP_404_NOT_FOUND) + with connection.cursor() as cursor: + cursor.execute("DELETE FROM feedback WHERE project_id = %s", [str(project.id)]) + project.files.all().delete() + project.delete() + return Response({"detail": "Project has been deleted successfully"}, status=status.HTTP_200_OK) + + +class PublishProjectView(APIView): + permission_classes = [permissions.IsAuthenticated] + throttle_classes = [PublishRateThrottle] + + def patch(self, request, pk): + try: + project = Project.objects.get(pk=pk, user=request.user) + except Project.DoesNotExist: + return Response({"detail": "Not found."}, status=status.HTTP_404_NOT_FOUND) + + is_published = request.data.get("is_published") + if is_published is None: + return Response({"detail": "is_published is required."}, status=status.HTTP_400_BAD_REQUEST) + + project.is_published = is_published + if is_published and request.data.get("published_description"): + project.published_description = request.data["published_description"] + project.save(update_fields=["is_published", "published_description", "updated_at"]) + cache.delete(f'project_stats_{request.user.id}') + return Response(ProjectSerializer(project).data) diff --git a/services/core/apps/projects/views/public.py b/services/core/apps/projects/views/public.py new file mode 100644 index 0000000..5ce8dcf --- /dev/null +++ b/services/core/apps/projects/views/public.py @@ -0,0 +1,58 @@ +from django.core.cache import cache +from django.db.models import Count, Q +from rest_framework.response import Response +from rest_framework.views import APIView + +from apps.common.pagination import PublicProjectPage +from ..models import Project +from ..serializers import PublicProjectListSerializer, PublicProjectSerializer +from ..throttles import PublicRateThrottle + + +class PublicProjectListView(APIView): + permission_classes = [] + throttle_classes = [PublicRateThrottle] + + def get(self, request): + qs = (Project.objects + .filter(is_published=True, status='done') + .select_related('user') + .annotate(file_count=Count('files')) + .order_by('-updated_at')) + + search = request.query_params.get('search') + if search: + qs = qs.filter( + Q(name__icontains=search) | + Q(description__icontains=search) + ) + + paginator = PublicProjectPage() + page = paginator.paginate_queryset(qs, request, view=self) + if page is not None: + serializer = PublicProjectListSerializer(page, many=True) + return paginator.get_paginated_response(serializer.data) + + serializer = PublicProjectListSerializer(qs, many=True) + return Response(serializer.data) + + +class PublicProjectDetailView(APIView): + permission_classes = [] + throttle_classes = [PublicRateThrottle] + + def get(self, request, slug): + cache_key = f'public_project_{slug}' + data = cache.get(cache_key) + if not data: + try: + project = (Project.objects + .filter(public_slug=slug, is_published=True) + .select_related('user') + .prefetch_related('files') + .get()) + except Project.DoesNotExist: + return Response({"detail": "Not found."}, status=404) + data = PublicProjectSerializer(project).data + cache.set(cache_key, data, 300) + return Response(data) diff --git a/services/core/apps/universal/__init__.py b/services/core/apps/universal/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/apps/universal/apps.py b/services/core/apps/universal/apps.py similarity index 100% rename from backend/apps/universal/apps.py rename to services/core/apps/universal/apps.py diff --git a/backend/apps/universal/prompts.py b/services/core/apps/universal/prompts.py similarity index 100% rename from backend/apps/universal/prompts.py rename to services/core/apps/universal/prompts.py diff --git a/backend/apps/universal/tasks.py b/services/core/apps/universal/tasks.py similarity index 87% rename from backend/apps/universal/tasks.py rename to services/core/apps/universal/tasks.py index 680de80..2e985e8 100644 --- a/backend/apps/universal/tasks.py +++ b/services/core/apps/universal/tasks.py @@ -1,9 +1,6 @@ -import io import logging import os -import zipfile -import requests from celery import shared_task from django.conf import settings from groq import Groq @@ -248,45 +245,7 @@ def generate_universal_docs_task(self, project_id, mode): # โ”€โ”€ GitHub Import (Universal, all file types) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ -def _download_github_zipball(url: str, headers: dict, folder_path: str) -> list: - """Download a GitHub zipball and extract ALL files (no .py filter).""" - resp = requests.get(url, headers=headers, timeout=30, stream=True) - resp.raise_for_status() - zip_bytes = resp.content - - files = [] - with zipfile.ZipFile(io.BytesIO(zip_bytes)) as zf: - names = zf.namelist() - prefix = '' - if names: - first = names[0] - if '/' in first: - prefix = first.split('/', 1)[0] + '/' - for name in names: - if name.endswith('/'): - continue - rel_path = name[len(prefix):] if prefix else name - if folder_path and folder_path != '/' and not rel_path.startswith(folder_path.lstrip('/')): - continue - try: - content = zf.read(name).decode('utf-8', errors='ignore').replace('\x00', '') - files.append({'file_path': rel_path, 'content': content}) - except Exception: - files.append({'file_path': rel_path, 'content': '[binary file]'}) - return files - - -def _fetch_public_repo_api(full_name: str) -> dict: - api_token = getattr(settings, 'GITHUB_API_TOKEN', None) - headers = {'Accept': 'application/vnd.github+json'} - if api_token and api_token.strip(): - headers['Authorization'] = f'token {api_token}' - resp = requests.get( - f'https://api.github.com/repos/{full_name}', - headers=headers, timeout=10, - ) - resp.raise_for_status() - return resp.json() +from apps.common.github import download_zipball, fetch_public_repo_api @shared_task(bind=True, max_retries=2, default_retry_delay=30) @@ -306,7 +265,7 @@ def import_universal_github_task(self, project_id, mode, full_name, folder_path, 'Authorization': f'token {github_token}', } else: - repo_data = _fetch_public_repo_api(full_name) + repo_data = fetch_public_repo_api(full_name) branch = branch or repo_data.get('default_branch') or 'main' api_token = getattr(settings, 'GITHUB_API_TOKEN', None) headers = {'Accept': 'application/vnd.github+json'} @@ -316,7 +275,7 @@ def import_universal_github_task(self, project_id, mode, full_name, folder_path, else: url = f'https://github.com/{full_name}/archive/refs/heads/{branch}.zip' - raw_files = _download_github_zipball(url, headers, folder_path) + raw_files = download_zipball(url, headers, folder_path) if not raw_files: project.status = Project.Status.FAILED diff --git a/services/core/apps/universal/tests/__init__.py b/services/core/apps/universal/tests/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/services/core/apps/universal/tests/__init__.py @@ -0,0 +1 @@ + diff --git a/services/core/apps/universal/tests/test_prompts.py b/services/core/apps/universal/tests/test_prompts.py new file mode 100644 index 0000000..9906b49 --- /dev/null +++ b/services/core/apps/universal/tests/test_prompts.py @@ -0,0 +1,47 @@ +from apps.universal.prompts import MAX_SOURCE_CHARS, get_prompt + + +class TestGetPrompt: + def test_basic_prompt(self): + prompt = get_prompt( + mode='universal', + source_code='print("hello")', + project_name='Test Project', + file_list=['main.py'], + github_url='https://github.com/owner/repo', + file_tree='main.py', + req_files=['requirements.txt'], + ) + assert 'Test Project' in prompt + assert 'print("hello")' in prompt + assert 'https://github.com/owner/repo' in prompt + assert 'requirements.txt' in prompt + assert 'main.py' in prompt + + def test_truncates_large_source(self): + large_source = 'x' * (MAX_SOURCE_CHARS + 1000) + prompt = get_prompt( + mode='universal', + source_code=large_source, + project_name='Test', + file_list=['main.py'], + ) + assert len(prompt) < len(large_source) + 5000 + assert '[truncated]' in prompt + + def test_escapes_code_blocks(self): + prompt = get_prompt( + mode='universal', + source_code='```dangerous```', + project_name='Test', + ) + assert '```' not in prompt + + def test_max_chars_param(self): + prompt = get_prompt( + mode='universal', + source_code='test code', + project_name='Test', + max_chars=10, + ) + assert 'test code' in prompt diff --git a/services/core/apps/universal/tests/test_tasks.py b/services/core/apps/universal/tests/test_tasks.py new file mode 100644 index 0000000..4a6addd --- /dev/null +++ b/services/core/apps/universal/tests/test_tasks.py @@ -0,0 +1,68 @@ +from unittest.mock import patch + +import pytest + + +pytestmark = pytest.mark.django_db + + +class TestGenerateUniversalDocsTask: + def test_project_not_found(self): + from apps.universal.tasks import generate_universal_docs_task + result = generate_universal_docs_task(999, 'universal') + assert 'error' in result + + def test_sets_processing_status(self, project): + from apps.universal.tasks import generate_universal_docs_task + with patch('apps.universal.tasks.generate_universal_docs_task.retry'): + result = generate_universal_docs_task(project.id, 'universal') + project.refresh_from_db() + assert 'error' in result or project.status is not None + + def test_rejected_response(self, project): + from apps.universal.tasks import generate_universal_docs_task + with patch('apps.universal.tasks._call_groq', return_value='REJECT: Not a valid project'): + generate_universal_docs_task(project.id, 'universal') + project.refresh_from_db() + assert project.status == 'failed' + assert 'REJECT' in project.error_message + + +class TestFilePriority: + def test_high_priority(self): + from apps.universal.tasks import _file_priority + assert _file_priority('urls.py') == 10 + assert _file_priority('app.py') == 10 + assert _file_priority('models.py') == 7 + + def test_low_priority(self): + from apps.universal.tasks import _file_priority + assert _file_priority('styles.css') == 2 + assert _file_priority('icon.svg') == 2 + + def test_default_priority(self): + from apps.universal.tasks import _file_priority + assert _file_priority('unknown.xyz') == 1 + + +class TestBuildFileTree: + def test_single_file(self): + from apps.universal.tasks import _build_file_tree + tree = _build_file_tree(['main.py']) + assert tree == {'main.py': {}} + + def test_nested_files(self): + from apps.universal.tasks import _build_file_tree + tree = _build_file_tree(['src/main.py', 'src/utils.py', 'README.md']) + assert 'src' in tree + assert 'main.py' in tree['src'] + assert 'utils.py' in tree['src'] + assert 'README.md' in tree + + +class TestFormatTree: + def test_simple_tree(self): + from apps.universal.tasks import _build_file_tree, _format_tree + tree = _build_file_tree(['main.py', 'README.md']) + lines = _format_tree(tree) + assert len(lines) == 2 diff --git a/services/core/apps/universal/tests/test_views.py b/services/core/apps/universal/tests/test_views.py new file mode 100644 index 0000000..d1c8b3c --- /dev/null +++ b/services/core/apps/universal/tests/test_views.py @@ -0,0 +1,71 @@ +import io +from unittest.mock import patch + +import pytest +from django.urls import reverse +from rest_framework import status + + +pytestmark = pytest.mark.django_db + + +class TestUniversalUploadView: + def test_unauthenticated(self, api_client): + url = reverse('universal-upload') + response = api_client.post(url, {'name': 'Test'}) + assert response.status_code == status.HTTP_401_UNAUTHORIZED + + def test_no_name(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('universal-upload') + response = api_client.post(url, {}) + assert response.status_code == status.HTTP_400_BAD_REQUEST + + def test_invalid_mode(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('universal-upload') + response = api_client.post(url, {'name': 'Test', 'mode': 'invalid'}) + assert response.status_code == status.HTTP_400_BAD_REQUEST + + def test_upload_file(self, api_client, user): + api_client.force_authenticate(user=user) + with patch('apps.universal.views.upload.generate_universal_docs_task.delay'): + url = reverse('universal-upload') + f = io.BytesIO(b'print("hello")') + f.name = 'test.py' + response = api_client.post(url, {'name': 'Test', 'file': f}) + assert response.status_code == status.HTTP_202_ACCEPTED + + def test_source_code(self, api_client, user): + api_client.force_authenticate(user=user) + with patch('apps.universal.views.upload.generate_universal_docs_task.delay'): + url = reverse('universal-upload') + response = api_client.post(url, {'name': 'Test', 'source_code': 'print("hello")'}) + assert response.status_code == status.HTTP_202_ACCEPTED + + def test_no_input(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('universal-upload') + response = api_client.post(url, {'name': 'Test'}) + assert response.status_code == status.HTTP_400_BAD_REQUEST + + +class TestUniversalStatusView: + def test_unauthenticated(self, api_client): + url = reverse('universal-status', args=['00000000-0000-0000-0000-000000000000']) + response = api_client.get(url) + assert response.status_code == status.HTTP_401_UNAUTHORIZED + + def test_own_project(self, api_client, user, project): + api_client.force_authenticate(user=user) + url = reverse('universal-status', args=[project.id]) + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert response.data['status'] == project.status + assert response.data['name'] == project.name + + def test_not_own_project(self, api_client, other_user, project): + api_client.force_authenticate(user=other_user) + url = reverse('universal-status', args=[project.id]) + response = api_client.get(url) + assert response.status_code == status.HTTP_404_NOT_FOUND diff --git a/backend/apps/universal/urls.py b/services/core/apps/universal/urls.py similarity index 100% rename from backend/apps/universal/urls.py rename to services/core/apps/universal/urls.py diff --git a/services/core/apps/universal/views/__init__.py b/services/core/apps/universal/views/__init__.py new file mode 100644 index 0000000..08775f5 --- /dev/null +++ b/services/core/apps/universal/views/__init__.py @@ -0,0 +1,7 @@ +from .upload import UniversalUploadView +from .status import UniversalStatusView + +__all__ = [ + 'UniversalUploadView', + 'UniversalStatusView', +] diff --git a/services/core/apps/universal/views/status.py b/services/core/apps/universal/views/status.py new file mode 100644 index 0000000..49213b1 --- /dev/null +++ b/services/core/apps/universal/views/status.py @@ -0,0 +1,27 @@ +from rest_framework import status +from rest_framework.permissions import IsAuthenticated +from rest_framework.response import Response +from rest_framework.views import APIView + +from apps.projects.models import Project + + +class UniversalStatusView(APIView): + permission_classes = [IsAuthenticated] + + def get(self, request, project_id): + try: + project = Project.objects.get(id=project_id, user=request.user) + data = { + 'id': project.id, + 'name': project.name, + 'description': project.description or '', + 'status': project.status, + 'mode': 'universal', + 'error': project.error_message or '', + 'docs': project.generated_docs or '', + 'created_at': project.created_at, + } + return Response(data) + except Project.DoesNotExist: + return Response({'detail': 'Project not found.'}, status=status.HTTP_404_NOT_FOUND) diff --git a/backend/apps/universal/views.py b/services/core/apps/universal/views/upload.py similarity index 85% rename from backend/apps/universal/views.py rename to services/core/apps/universal/views/upload.py index 9ae46c0..6bbecd3 100644 --- a/backend/apps/universal/views.py +++ b/services/core/apps/universal/views/upload.py @@ -86,7 +86,6 @@ def _handle_github(self, project, mode, github_url, request): branch = request.data.get('branch', 'main') or 'main' project.github_url = f'https://github.com/{full_name}' - # Check if user has connected GitHub (authenticated import) github_token = request.user.github_token if hasattr(request.user, 'github_token') else None project.save(update_fields=['github_url']) @@ -123,24 +122,3 @@ def _process_single_file(self, project, uploaded_file): file_path=uploaded_file.name, content=content, ) - - -class UniversalStatusView(APIView): - permission_classes = [IsAuthenticated] - - def get(self, request, project_id): - try: - project = Project.objects.get(id=project_id, user=request.user) - data = { - 'id': project.id, - 'name': project.name, - 'description': project.description or '', - 'status': project.status, - 'mode': 'universal', - 'error': project.error_message or '', - 'docs': project.generated_docs or '', - 'created_at': project.created_at, - } - return Response(data) - except Project.DoesNotExist: - return Response({'detail': 'Project not found.'}, status=status.HTTP_404_NOT_FOUND) diff --git a/services/core/apps/users/__init__.py b/services/core/apps/users/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/apps/users/admin.py b/services/core/apps/users/admin.py similarity index 100% rename from backend/apps/users/admin.py rename to services/core/apps/users/admin.py diff --git a/backend/apps/users/apps.py b/services/core/apps/users/apps.py similarity index 100% rename from backend/apps/users/apps.py rename to services/core/apps/users/apps.py diff --git a/backend/apps/users/email_utils.py b/services/core/apps/users/email_utils.py similarity index 100% rename from backend/apps/users/email_utils.py rename to services/core/apps/users/email_utils.py diff --git a/backend/apps/users/github.py b/services/core/apps/users/github.py similarity index 100% rename from backend/apps/users/github.py rename to services/core/apps/users/github.py diff --git a/backend/apps/users/management/commands/create_test_user.py b/services/core/apps/users/management/commands/create_test_user.py similarity index 100% rename from backend/apps/users/management/commands/create_test_user.py rename to services/core/apps/users/management/commands/create_test_user.py diff --git a/backend/apps/users/migrations/0001_initial.py b/services/core/apps/users/migrations/0001_initial.py similarity index 100% rename from backend/apps/users/migrations/0001_initial.py rename to services/core/apps/users/migrations/0001_initial.py diff --git a/backend/apps/users/migrations/0002_user_name.py b/services/core/apps/users/migrations/0002_user_name.py similarity index 100% rename from backend/apps/users/migrations/0002_user_name.py rename to services/core/apps/users/migrations/0002_user_name.py diff --git a/backend/apps/users/migrations/0003_passwordresettoken.py b/services/core/apps/users/migrations/0003_passwordresettoken.py similarity index 100% rename from backend/apps/users/migrations/0003_passwordresettoken.py rename to services/core/apps/users/migrations/0003_passwordresettoken.py diff --git a/services/core/apps/users/migrations/__init__.py b/services/core/apps/users/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/services/core/apps/users/models/__init__.py b/services/core/apps/users/models/__init__.py new file mode 100644 index 0000000..6b82cbd --- /dev/null +++ b/services/core/apps/users/models/__init__.py @@ -0,0 +1,4 @@ +from .user import User, UserManager +from .password_reset import PasswordResetToken + +__all__ = ['User', 'UserManager', 'PasswordResetToken'] diff --git a/services/core/apps/users/models/password_reset.py b/services/core/apps/users/models/password_reset.py new file mode 100644 index 0000000..e9b7bf9 --- /dev/null +++ b/services/core/apps/users/models/password_reset.py @@ -0,0 +1,22 @@ +import uuid + +from django.conf import settings +from django.db import models +from django.utils import timezone + + +class PasswordResetToken(models.Model): + user = models.ForeignKey('users.User', on_delete=models.CASCADE, related_name='reset_tokens') + token = models.UUIDField(default=uuid.uuid4, unique=True, editable=False) + created_at = models.DateTimeField(auto_now_add=True) + used = models.BooleanField(default=False) + + class Meta: + db_table = 'password_reset_tokens' + + def is_valid(self): + expiry = self.created_at + timezone.timedelta(seconds=settings.PASSWORD_RESET_TIMEOUT) + return not self.used and timezone.now() < expiry + + def __str__(self): + return f"Reset token for {self.user.email}" diff --git a/backend/apps/users/models.py b/services/core/apps/users/models/user.py similarity index 72% rename from backend/apps/users/models.py rename to services/core/apps/users/models/user.py index 9001415..93819ea 100644 --- a/backend/apps/users/models.py +++ b/services/core/apps/users/models/user.py @@ -2,7 +2,6 @@ from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin from django.db import models -from django.utils import timezone class UserManager(BaseUserManager): @@ -60,24 +59,4 @@ def is_admin(self): @property def has_password(self): - # Users who signed up via OAuth have an unusable password return self.password and not self.password.startswith('!') - - - -class PasswordResetToken(models.Model): - user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='reset_tokens') - token = models.UUIDField(default=uuid.uuid4, unique=True, editable=False) - created_at = models.DateTimeField(auto_now_add=True) - used = models.BooleanField(default=False) - - class Meta: - db_table = 'password_reset_tokens' - - def is_valid(self): - from django.conf import settings - expiry = self.created_at + timezone.timedelta(seconds=settings.PASSWORD_RESET_TIMEOUT) - return not self.used and timezone.now() < expiry - - def __str__(self): - return f"Reset token for {self.user.email}" diff --git a/services/core/apps/users/serializers/__init__.py b/services/core/apps/users/serializers/__init__.py new file mode 100644 index 0000000..49f25fd --- /dev/null +++ b/services/core/apps/users/serializers/__init__.py @@ -0,0 +1,14 @@ +from .auth import RegisterSerializer, LoginSerializer, GithubAuthSerializer +from .profile import UserSerializer, AdminUserSerializer, ChangePasswordSerializer +from .password_reset import PasswordResetRequestSerializer, PasswordResetConfirmSerializer + +__all__ = [ + 'RegisterSerializer', + 'LoginSerializer', + 'GithubAuthSerializer', + 'UserSerializer', + 'AdminUserSerializer', + 'ChangePasswordSerializer', + 'PasswordResetRequestSerializer', + 'PasswordResetConfirmSerializer', +] diff --git a/services/core/apps/users/serializers/auth.py b/services/core/apps/users/serializers/auth.py new file mode 100644 index 0000000..f96bc1d --- /dev/null +++ b/services/core/apps/users/serializers/auth.py @@ -0,0 +1,40 @@ +from django.contrib.auth import authenticate +from rest_framework import serializers + +from ..models import User + + +class RegisterSerializer(serializers.ModelSerializer): + password = serializers.CharField(write_only=True, min_length=8) + password2 = serializers.CharField(write_only=True) + + class Meta: + model = User + fields = ['email', 'name', 'username', 'password', 'password2'] + + def validate(self, data): + if data['password'] != data['password2']: + raise serializers.ValidationError({'password': 'Passwords do not match'}) + return data + + def create(self, validated_data): + validated_data.pop('password2') + return User.objects.create_user(**validated_data) + + +class LoginSerializer(serializers.Serializer): + email = serializers.EmailField() + password = serializers.CharField(write_only=True) + + def validate(self, data): + user = authenticate(email=data['email'], password=data['password']) + if not user: + raise serializers.ValidationError('Invalid credentials') + if not user.is_active: + raise serializers.ValidationError('Account is disabled') + data['user'] = user + return data + + +class GithubAuthSerializer(serializers.Serializer): + code = serializers.CharField() diff --git a/services/core/apps/users/serializers/password_reset.py b/services/core/apps/users/serializers/password_reset.py new file mode 100644 index 0000000..82004a5 --- /dev/null +++ b/services/core/apps/users/serializers/password_reset.py @@ -0,0 +1,11 @@ +from rest_framework import serializers + + +class PasswordResetRequestSerializer(serializers.Serializer): + email = serializers.EmailField() + + +class PasswordResetConfirmSerializer(serializers.Serializer): + email = serializers.EmailField() + token = serializers.UUIDField() + new_password = serializers.CharField(write_only=True, min_length=8) diff --git a/backend/apps/users/serializers.py b/services/core/apps/users/serializers/profile.py similarity index 52% rename from backend/apps/users/serializers.py rename to services/core/apps/users/serializers/profile.py index c7bcbff..550e830 100644 --- a/backend/apps/users/serializers.py +++ b/services/core/apps/users/serializers/profile.py @@ -1,39 +1,6 @@ -from django.contrib.auth import authenticate from rest_framework import serializers -from .models import User - - -class RegisterSerializer(serializers.ModelSerializer): - password = serializers.CharField(write_only=True, min_length=8) - password2 = serializers.CharField(write_only=True) - - class Meta: - model = User - fields = ['email', 'name', 'username', 'password', 'password2'] - - def validate(self, data): - if data['password'] != data['password2']: - raise serializers.ValidationError({'password': 'Passwords do not match'}) - return data - - def create(self, validated_data): - validated_data.pop('password2') - return User.objects.create_user(**validated_data) - - -class LoginSerializer(serializers.Serializer): - email = serializers.EmailField() - password = serializers.CharField(write_only=True) - - def validate(self, data): - user = authenticate(email=data['email'], password=data['password']) - if not user: - raise serializers.ValidationError('Invalid credentials') - if not user.is_active: - raise serializers.ValidationError('Account is disabled') - data['user'] = user - return data +from ..models import User class UserSerializer(serializers.ModelSerializer): @@ -71,7 +38,6 @@ def validate(self, data): user = self.context['request'].user if user.has_password: - # normal user โ€” must provide old password old_password = data.get('old_password') if not old_password: raise serializers.ValidationError( @@ -81,7 +47,6 @@ def validate(self, data): raise serializers.ValidationError( {'old_password': 'Old password is incorrect'} ) - # github user โ€” no old password needed, just set the new one return data @@ -89,17 +54,3 @@ def save(self): user = self.context['request'].user user.set_password(self.validated_data['new_password']) user.save() - - -class GithubAuthSerializer(serializers.Serializer): - code = serializers.CharField() - - -class PasswordResetRequestSerializer(serializers.Serializer): - email = serializers.EmailField() - - -class PasswordResetConfirmSerializer(serializers.Serializer): - email = serializers.EmailField() - token = serializers.UUIDField() - new_password = serializers.CharField(write_only=True, min_length=8) diff --git a/backend/apps/users/tasks.py b/services/core/apps/users/tasks.py similarity index 100% rename from backend/apps/users/tasks.py rename to services/core/apps/users/tasks.py diff --git a/services/core/apps/users/tests/__init__.py b/services/core/apps/users/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/services/core/apps/users/tests/test_models.py b/services/core/apps/users/tests/test_models.py new file mode 100644 index 0000000..e38b748 --- /dev/null +++ b/services/core/apps/users/tests/test_models.py @@ -0,0 +1,54 @@ +import pytest + +from apps.users.models import PasswordResetToken, User + + +class TestUserModel: + def test_create_user(self, db): + user = User.objects.create_user( + email='user@test.com', + password='testpass123', + name='Test User', + username='testuser', + ) + assert user.email == 'user@test.com' + assert user.check_password('testpass123') + assert user.is_active is True + assert user.is_staff is False + assert user.is_verified is False + + def test_create_superuser(self, db): + admin = User.objects.create_superuser( + email='admin@test.com', + password='admin123', + ) + assert admin.is_staff is True + assert admin.is_superuser is True + + def test_email_as_username_field(self): + assert User.USERNAME_FIELD == 'email' + + def test_str(self, user): + assert str(user) == user.email + + +class TestPasswordResetToken: + def test_create_token(self, user): + token = PasswordResetToken.objects.create(user=user) + assert token.user == user + assert token.used is False + assert token.is_valid() is True + + def test_used_token_invalid(self, user): + token = PasswordResetToken.objects.create(user=user) + token.used = True + token.save() + assert token.is_valid() is False + + def test_expired_token_invalid(self, user): + from datetime import timedelta + from django.utils import timezone + token = PasswordResetToken.objects.create(user=user) + token.created_at = timezone.now() - timedelta(hours=25) + token.save() + assert token.is_valid() is False diff --git a/services/core/apps/users/tests/test_serializers.py b/services/core/apps/users/tests/test_serializers.py new file mode 100644 index 0000000..0cc76e4 --- /dev/null +++ b/services/core/apps/users/tests/test_serializers.py @@ -0,0 +1,77 @@ +import pytest + +from apps.users.serializers import ( + ChangePasswordSerializer, + LoginSerializer, + RegisterSerializer, + UserSerializer, +) + + +class TestRegisterSerializer: + def test_valid_data(self): + data = { + 'email': 'new@test.com', + 'password': 'SecurePass123!', + 'password2': 'SecurePass123!', + 'name': 'New User', + 'username': 'newuser', + } + serializer = RegisterSerializer(data=data) + assert serializer.is_valid() + + def test_password_mismatch(self): + data = { + 'email': 'new@test.com', + 'password': 'pass123', + 'password2': 'pass456', + 'username': 'newuser', + } + serializer = RegisterSerializer(data=data) + assert not serializer.is_valid() + + def test_missing_email(self): + serializer = RegisterSerializer(data={'password': 'pass123', 'password2': 'pass123'}) + assert not serializer.is_valid() + + +class TestLoginSerializer: + def test_valid_credentials(self, user): + data = {'email': user.email, 'password': 'testpass123'} + serializer = LoginSerializer(data=data) + assert serializer.is_valid() + assert serializer.validated_data['user'] == user + + def test_invalid_password(self, user): + data = {'email': user.email, 'password': 'wrong'} + serializer = LoginSerializer(data=data) + assert not serializer.is_valid() + + def test_nonexistent_user(self): + data = {'email': 'nobody@test.com', 'password': 'pass123'} + serializer = LoginSerializer(data=data) + assert not serializer.is_valid() + + +class TestUserSerializer: + def test_serialize(self, user): + serializer = UserSerializer(user) + assert serializer.data['email'] == user.email + assert serializer.data['name'] == user.name + assert 'password' not in serializer.data + + def test_deserialize(self): + data = {'email': 'test@test.com', 'name': 'Test', 'username': 'test'} + serializer = UserSerializer(data=data) + assert serializer.is_valid() + + +class TestChangePasswordSerializer: + def test_valid(self, user): + data = { + 'old_password': 'testpass123', + 'new_password': 'NewPass123!', + 'new_password2': 'NewPass123!', + } + serializer = ChangePasswordSerializer(data=data, context={'request': type('req', (), {'user': user})()}) + assert serializer.is_valid() diff --git a/services/core/apps/users/tests/test_views.py b/services/core/apps/users/tests/test_views.py new file mode 100644 index 0000000..4b02517 --- /dev/null +++ b/services/core/apps/users/tests/test_views.py @@ -0,0 +1,157 @@ +from unittest.mock import patch + +import pytest +import requests +from django.urls import reverse +from rest_framework import status + + +pytestmark = pytest.mark.django_db + + +class TestRegisterView: + def test_register_success(self, api_client): + url = reverse('register') + data = { + 'email': 'newuser@example.com', + 'password': 'SecurePass123!', + 'password2': 'SecurePass123!', + 'name': 'New User', + 'username': 'newuser', + } + with patch('apps.users.tasks.send_welcome_email_task.delay'): + response = api_client.post(url, data, format='json') + assert response.status_code == status.HTTP_201_CREATED + assert 'user' in response.data + assert 'tokens' in response.data + assert response.data['user']['email'] == 'newuser@example.com' + + def test_register_password_mismatch(self, api_client): + url = reverse('register') + data = { + 'email': 'test@example.com', + 'password': 'pass123', + 'password2': 'pass456', + 'username': 'testuser', + } + response = api_client.post(url, data, format='json') + assert response.status_code == status.HTTP_400_BAD_REQUEST + + def test_register_duplicate_email(self, api_client, user): + url = reverse('register') + data = { + 'email': user.email, + 'password': 'Pass123!', + 'password2': 'Pass123!', + 'username': 'another', + } + response = api_client.post(url, data, format='json') + assert response.status_code == status.HTTP_400_BAD_REQUEST + + +class TestLoginView: + def test_login_success(self, api_client, user): + url = reverse('login') + response = api_client.post(url, {'email': user.email, 'password': 'testpass123'}, format='json') + assert response.status_code == status.HTTP_200_OK + assert 'tokens' in response.data + assert 'access' in response.data['tokens'] + assert 'refresh' in response.data['tokens'] + + def test_login_wrong_password(self, api_client, user): + url = reverse('login') + response = api_client.post(url, {'email': user.email, 'password': 'wrong'}, format='json') + assert response.status_code == status.HTTP_400_BAD_REQUEST + + def test_login_nonexistent(self, api_client): + url = reverse('login') + response = api_client.post(url, {'email': 'nobody@test.com', 'password': 'pass'}, format='json') + assert response.status_code == status.HTTP_400_BAD_REQUEST + + +class TestLogoutView: + def test_logout_success(self, api_client, user): + api_client.force_authenticate(user=user) + from rest_framework_simplejwt.tokens import RefreshToken + token = RefreshToken.for_user(user) + url = reverse('logout') + response = api_client.post(url, {'refresh': str(token)}, format='json') + assert response.status_code == status.HTTP_200_OK + + def test_logout_unauthenticated(self, api_client): + url = reverse('logout') + response = api_client.post(url, {'refresh': 'some-token'}, format='json') + assert response.status_code == status.HTTP_401_UNAUTHORIZED + + def test_logout_no_token(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('logout') + response = api_client.post(url, {}, format='json') + assert response.status_code == status.HTTP_400_BAD_REQUEST + + +class TestProfileView: + def test_get_profile(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('profile') + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert response.data['email'] == user.email + + def test_update_profile(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('profile') + response = api_client.patch(url, {'name': 'Updated Name'}, format='json') + assert response.status_code == status.HTTP_200_OK + assert response.data['name'] == 'Updated Name' + + def test_unauthenticated(self, api_client): + url = reverse('profile') + response = api_client.get(url) + assert response.status_code == status.HTTP_401_UNAUTHORIZED + + +class TestChangePasswordView: + def test_change_password(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('change_password') + data = { + 'old_password': 'testpass123', + 'new_password': 'NewPass123!', + 'new_password2': 'NewPass123!', + } + response = api_client.post(url, data, format='json') + assert response.status_code == status.HTTP_200_OK + + def test_wrong_old_password(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('change_password') + data = { + 'old_password': 'wrong', + 'new_password': 'NewPass123!', + 'new_password2': 'NewPass123!', + } + response = api_client.post(url, data, format='json') + assert response.status_code == status.HTTP_400_BAD_REQUEST + + +class TestGithubAuthView: + def test_missing_code(self, api_client): + url = reverse('github-auth') + response = api_client.post(url, {}, format='json') + assert response.status_code == status.HTTP_400_BAD_REQUEST + + def test_github_error(self, api_client): + url = reverse('github-auth') + with patch('apps.users.views.auth.exchange_code_for_token', side_effect=requests.RequestException('Network error')): + response = api_client.post(url, {'code': 'bad-code'}, format='json') + assert response.status_code == status.HTTP_502_BAD_GATEWAY + + +class TestUserListView: + def test_non_admin_returns_empty(self, api_client, user): + api_client.force_authenticate(user=user) + url = reverse('user_list') + response = api_client.get(url) + assert response.status_code == status.HTTP_200_OK + assert response.data['results'] == [] diff --git a/backend/apps/users/urls.py b/services/core/apps/users/urls.py similarity index 100% rename from backend/apps/users/urls.py rename to services/core/apps/users/urls.py diff --git a/services/core/apps/users/views/__init__.py b/services/core/apps/users/views/__init__.py new file mode 100644 index 0000000..760efc9 --- /dev/null +++ b/services/core/apps/users/views/__init__.py @@ -0,0 +1,17 @@ +from .auth import RegisterView, LoginView, LogoutView, GithubAuthView, get_tokens +from .profile import ProfileView, ChangePasswordView +from .admin import UserListView +from .password_reset import PasswordResetRequestView, PasswordResetConfirmView + +__all__ = [ + 'RegisterView', + 'LoginView', + 'LogoutView', + 'GithubAuthView', + 'get_tokens', + 'ProfileView', + 'ChangePasswordView', + 'UserListView', + 'PasswordResetRequestView', + 'PasswordResetConfirmView', +] diff --git a/services/core/apps/users/views/admin.py b/services/core/apps/users/views/admin.py new file mode 100644 index 0000000..44697d1 --- /dev/null +++ b/services/core/apps/users/views/admin.py @@ -0,0 +1,51 @@ +from django.db.models import Count, Q +from rest_framework import status +from rest_framework.permissions import IsAuthenticated +from rest_framework.response import Response +from rest_framework.views import APIView + +from apps.common.pagination import AdminUserPage +from ..models import User +from ..serializers import AdminUserSerializer, UserSerializer + + +class UserListView(APIView): + permission_classes = [IsAuthenticated] + + def get(self, request): + if not request.user.is_admin: + return Response({"results": [], "stats": {}}) + + qs = User.objects.annotate( + project_count=Count('projects'), + published_count=Count('projects', filter=Q(projects__is_published=True)), + ).all() + + search = request.query_params.get('search') + if search: + qs = qs.filter( + Q(email__icontains=search) | + Q(name__icontains=search) | + Q(username__icontains=search) + ) + + filterset_fields = ['role', 'is_verified', 'is_active'] + for field in filterset_fields: + val = request.query_params.get(field) + if val is not None: + qs = qs.filter(**{field: val}) + + ordering = request.query_params.get('ordering', '-created_at') + allowed = ['created_at', 'email', 'name', '-created_at', '-email', '-name'] + if ordering not in allowed: + ordering = '-created_at' + qs = qs.order_by(ordering) + + paginator = AdminUserPage() + page = paginator.paginate_queryset(qs, request) + serializer = AdminUserSerializer(page, many=True) if page is not None else AdminUserSerializer(qs, many=True) + + if page is not None: + return paginator.get_paginated_response(serializer.data) + + return Response({"results": serializer.data}) diff --git a/backend/apps/users/views.py b/services/core/apps/users/views/auth.py similarity index 50% rename from backend/apps/users/views.py rename to services/core/apps/users/views/auth.py index 484acc1..9173789 100644 --- a/backend/apps/users/views.py +++ b/services/core/apps/users/views/auth.py @@ -1,20 +1,16 @@ import requests -from rest_framework import generics, status -from rest_framework.pagination import PageNumberPagination +from rest_framework import status from rest_framework.permissions import AllowAny, IsAuthenticated from rest_framework.response import Response from rest_framework.views import APIView from rest_framework_simplejwt.exceptions import TokenError from rest_framework_simplejwt.tokens import RefreshToken -from .github import exchange_code_for_token, get_github_user -from .models import PasswordResetToken, User -from .serializers import ( - ChangePasswordSerializer, +from ..github import exchange_code_for_token, get_github_user +from ..models import User +from ..serializers import ( GithubAuthSerializer, LoginSerializer, - PasswordResetConfirmSerializer, - PasswordResetRequestSerializer, RegisterSerializer, UserSerializer, ) @@ -36,7 +32,7 @@ def post(self, request): if serializer.is_valid(): user = serializer.save() tokens = get_tokens(user) - from .tasks import send_welcome_email_task + from ..tasks import send_welcome_email_task send_welcome_email_task.delay(user.id) return Response({ 'user': UserSerializer(user).data, @@ -74,61 +70,6 @@ def post(self, request): return Response({'detail': 'Invalid or expired token'}, status=status.HTTP_400_BAD_REQUEST) -class ProfileView(APIView): - permission_classes = [IsAuthenticated] - - def get(self, request): - return Response(UserSerializer(request.user).data) - - def patch(self, request): - serializer = UserSerializer(request.user, data=request.data, partial=True) - if serializer.is_valid(): - serializer.save() - return Response(serializer.data) - return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - - -class ChangePasswordView(APIView): - permission_classes = [IsAuthenticated] - - def post(self, request): - serializer = ChangePasswordSerializer(data=request.data, context={'request': request}) - if serializer.is_valid(): - serializer.save() - return Response({'detail': 'Password changed successfully'}) - return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - - -class AdminUserPage(PageNumberPagination): - page_size = 50 - page_size_query_param = 'page_size' - max_page_size = 200 - - -class UserListView(generics.ListAPIView): - permission_classes = [IsAuthenticated] - serializer_class = UserSerializer - pagination_class = AdminUserPage - search_fields = ['email', 'name', 'username'] - filterset_fields = ['role', 'is_verified', 'is_active'] - ordering_fields = ['created_at', 'email', 'name'] - - def get_serializer_class(self): - if self.request.user.is_admin: - from .serializers import AdminUserSerializer - return AdminUserSerializer - return UserSerializer - - def get_queryset(self): - if self.request.user.is_admin: - from django.db.models import Count, Q - return User.objects.annotate( - project_count=Count('projects'), - published_count=Count('projects', filter=Q(projects__is_published=True)), - ).all() - return User.objects.none() - - class GithubAuthView(APIView): permission_classes = [AllowAny] @@ -177,7 +118,6 @@ def post(self, request): }, ) - # Keep the token fresh and ensure is_verified update_fields = ['github_token'] user.github_token = github_token if not user.is_verified: @@ -194,44 +134,3 @@ def post(self, request): }, status=status.HTTP_201_CREATED if created else status.HTTP_200_OK, ) - - -class PasswordResetRequestView(APIView): - permission_classes = [AllowAny] - - def post(self, request): - serializer = PasswordResetRequestSerializer(data=request.data) - if not serializer.is_valid(): - return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - email = serializer.validated_data['email'] - try: - user = User.objects.get(email=email) - token = PasswordResetToken.objects.create(user=user) - from .tasks import send_password_reset_email_task - send_password_reset_email_task.delay(user.id, str(token.token)) - except User.DoesNotExist: - pass # Don't reveal if email exists - # Always return 200 to prevent email enumeration - return Response({'detail': 'If that email exists, a reset link has been sent.'}) - - -class PasswordResetConfirmView(APIView): - permission_classes = [AllowAny] - - def post(self, request): - serializer = PasswordResetConfirmSerializer(data=request.data) - if not serializer.is_valid(): - return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - data = serializer.validated_data - try: - user = User.objects.get(email=data['email']) - token = PasswordResetToken.objects.get(token=data['token'], user=user) - except (User.DoesNotExist, PasswordResetToken.DoesNotExist): - return Response({'detail': 'Invalid or expired token.'}, status=status.HTTP_400_BAD_REQUEST) - if not token.is_valid(): - return Response({'detail': 'Token has expired or already been used.'}, status=status.HTTP_400_BAD_REQUEST) - user.set_password(data['new_password']) - user.save() - token.used = True - token.save() - return Response({'detail': 'Password reset successfully.'}) diff --git a/services/core/apps/users/views/password_reset.py b/services/core/apps/users/views/password_reset.py new file mode 100644 index 0000000..5e2cb39 --- /dev/null +++ b/services/core/apps/users/views/password_reset.py @@ -0,0 +1,47 @@ +from rest_framework import status +from rest_framework.permissions import AllowAny +from rest_framework.response import Response +from rest_framework.views import APIView + +from ..models import PasswordResetToken, User +from ..serializers import PasswordResetConfirmSerializer, PasswordResetRequestSerializer + + +class PasswordResetRequestView(APIView): + permission_classes = [AllowAny] + + def post(self, request): + serializer = PasswordResetRequestSerializer(data=request.data) + if not serializer.is_valid(): + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + email = serializer.validated_data['email'] + try: + user = User.objects.get(email=email) + token = PasswordResetToken.objects.create(user=user) + from ..tasks import send_password_reset_email_task + send_password_reset_email_task.delay(user.id, str(token.token)) + except User.DoesNotExist: + pass + return Response({'detail': 'If that email exists, a reset link has been sent.'}) + + +class PasswordResetConfirmView(APIView): + permission_classes = [AllowAny] + + def post(self, request): + serializer = PasswordResetConfirmSerializer(data=request.data) + if not serializer.is_valid(): + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + data = serializer.validated_data + try: + user = User.objects.get(email=data['email']) + token = PasswordResetToken.objects.get(token=data['token'], user=user) + except (User.DoesNotExist, PasswordResetToken.DoesNotExist): + return Response({'detail': 'Invalid or expired token.'}, status=status.HTTP_400_BAD_REQUEST) + if not token.is_valid(): + return Response({'detail': 'Token has expired or already been used.'}, status=status.HTTP_400_BAD_REQUEST) + user.set_password(data['new_password']) + user.save() + token.used = True + token.save() + return Response({'detail': 'Password reset successfully.'}) diff --git a/services/core/apps/users/views/profile.py b/services/core/apps/users/views/profile.py new file mode 100644 index 0000000..45f908b --- /dev/null +++ b/services/core/apps/users/views/profile.py @@ -0,0 +1,31 @@ +from rest_framework import status +from rest_framework.permissions import IsAuthenticated +from rest_framework.response import Response +from rest_framework.views import APIView + +from ..serializers import ChangePasswordSerializer, UserSerializer + + +class ProfileView(APIView): + permission_classes = [IsAuthenticated] + + def get(self, request): + return Response(UserSerializer(request.user).data) + + def patch(self, request): + serializer = UserSerializer(request.user, data=request.data, partial=True) + if serializer.is_valid(): + serializer.save() + return Response(serializer.data) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + +class ChangePasswordView(APIView): + permission_classes = [IsAuthenticated] + + def post(self, request): + serializer = ChangePasswordSerializer(data=request.data, context={'request': request}) + if serializer.is_valid(): + serializer.save() + return Response({'detail': 'Password changed successfully'}) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) diff --git a/backend/config/__init__.py b/services/core/config/__init__.py similarity index 100% rename from backend/config/__init__.py rename to services/core/config/__init__.py diff --git a/backend/config/asgi.py b/services/core/config/asgi.py similarity index 91% rename from backend/config/asgi.py rename to services/core/config/asgi.py index 69ab9a8..0d8fb96 100644 --- a/backend/config/asgi.py +++ b/services/core/config/asgi.py @@ -2,6 +2,6 @@ from django.asgi import get_asgi_application -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.development') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.production') application = get_asgi_application() diff --git a/backend/config/celery.py b/services/core/config/celery.py similarity index 93% rename from backend/config/celery.py rename to services/core/config/celery.py index 8601098..3623618 100644 --- a/backend/config/celery.py +++ b/services/core/config/celery.py @@ -2,7 +2,7 @@ from celery import Celery -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.development') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.production') app = Celery('config') app.config_from_object('django.conf:settings', namespace='CELERY') diff --git a/services/core/config/settings/__init__.py b/services/core/config/settings/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/config/settings/base.py b/services/core/config/settings/base.py similarity index 72% rename from backend/config/settings/base.py rename to services/core/config/settings/base.py index 4206378..ed3af89 100644 --- a/backend/config/settings/base.py +++ b/services/core/config/settings/base.py @@ -3,7 +3,7 @@ from decouple import config from dotenv import load_dotenv -env_path = Path(__file__).resolve().parent.parent.parent / '.env' +env_path = Path(__file__).resolve().parent.parent.parent / 'env/.env' load_dotenv(env_path) BASE_DIR = Path(__file__).resolve().parent.parent.parent @@ -33,6 +33,8 @@ 'apps.comments', 'apps.notifications', 'apps.universal', + 'apps.common', + 'drf_spectacular', ] MIDDLEWARE = [ @@ -113,6 +115,14 @@ 'publish': '10/hour', 'public': '100/hour', }, + 'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema', +} + +SPECTACULAR_SETTINGS = { + 'TITLE': 'PyDocAi API', + 'DESCRIPTION': 'AI-powered documentation generation API', + 'VERSION': '1.0.0', + 'SERVE_INCLUDE_SCHEMA': False, } # JWT SETTINGS @@ -130,7 +140,6 @@ CELERY_TASK_TRACK_STARTED = True CELERY_TASK_TIME_LIMIT = 30 * 60 -AUTH_USER_MODEL = 'users.User' GROQ_API_KEY = config('GROQ_API_KEY', default=None) GROQ_API_KEY_2 = config('GROQ_API_KEY_2', default=None) @@ -140,7 +149,6 @@ # โ”€โ”€ EMAIL SETTINGS โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ -from datetime import timedelta EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = config('EMAIL_HOST', default='smtp.gmail.com') @@ -153,3 +161,50 @@ SITE_URL = config('SITE_URL', default=FRONTEND_URL) PASSWORD_RESET_TIMEOUT = 3600 # 1 hour + +# โ”€โ”€ STRUCTURED LOGGING โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ +# Override LOGGING['handlers']['console']['formatter'] to 'json' in production +LOGGING = { + 'version': 1, + 'disable_existing_loggers': False, + 'formatters': { + 'json': { + '()': 'pythonjsonlogger.json.JsonFormatter', + 'format': '%(asctime)s %(name)s %(levelname)s %(message)s %(module)s %(process)d %(thread)d', + }, + 'verbose': { + 'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s', + }, + }, + 'handlers': { + 'console': { + 'class': 'logging.StreamHandler', + 'formatter': 'verbose', + }, + }, + 'root': { + 'handlers': ['console'], + 'level': 'INFO', + }, + 'loggers': { + 'django': { + 'handlers': ['console'], + 'level': 'INFO', + 'propagate': False, + }, + 'django.security': { + 'handlers': ['console'], + 'level': 'WARNING', + 'propagate': False, + }, + 'django.request': { + 'handlers': ['console'], + 'level': 'WARNING', + 'propagate': False, + }, + }, +} + +# โ”€โ”€ DATABASE POOL SETTINGS โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ +CONN_MAX_AGE = 300 # 5 minutes persistent connection +CONN_HEALTH_CHECKS = True diff --git a/backend/config/settings/development.py b/services/core/config/settings/development.py similarity index 76% rename from backend/config/settings/development.py rename to services/core/config/settings/development.py index 5e35f18..b573db6 100644 --- a/backend/config/settings/development.py +++ b/services/core/config/settings/development.py @@ -1,3 +1,5 @@ +from decouple import config + from config.settings.base import * DEBUG = True @@ -10,8 +12,8 @@ } } -CELERY_BROKER_URL = 'redis://localhost:6379/0' -CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' +CELERY_BROKER_URL = config('CELERY_BROKER_URL', default='redis://localhost:6379/0') +CELERY_RESULT_BACKEND = config('CELERY_RESULT_BACKEND', default='redis://localhost:6379/0') CELERY_TASK_ALWAYS_EAGER = True CELERY_TASK_EAGER_PROPAGATES = True diff --git a/backend/config/settings/production.py b/services/core/config/settings/production.py similarity index 77% rename from backend/config/settings/production.py rename to services/core/config/settings/production.py index fd63d38..7696cbf 100644 --- a/backend/config/settings/production.py +++ b/services/core/config/settings/production.py @@ -14,12 +14,14 @@ 'HOST': config('DB_HOST'), 'PORT': config('DB_PORT', default='5432'), 'CONN_MAX_AGE': 300, + 'CONN_HEALTH_CHECKS': True, } } CELERY_BROKER_URL = config('CELERY_BROKER_URL') CELERY_RESULT_BACKEND = config('CELERY_RESULT_BACKEND') CORS_ALLOWED_ORIGINS = config('CORS_ALLOWED_ORIGINS').split(',') +CSRF_TRUSTED_ORIGINS = config('CORS_ALLOWED_ORIGINS').split(',') EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = config('EMAIL_HOST') @@ -28,12 +30,20 @@ EMAIL_HOST_USER = config('EMAIL_HOST_USER') EMAIL_HOST_PASSWORD = config('EMAIL_HOST_PASSWORD') +# โ”€โ”€ PRODUCTION SECURITY โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ +SECURE_SSL_REDIRECT = True +SESSION_COOKIE_SECURE = True +CSRF_COOKIE_SECURE = True +CSRF_COOKIE_HTTPONLY = True +SESSION_COOKIE_HTTPONLY = True +SECURE_HSTS_SECONDS = 31536000 # 1 year +SECURE_HSTS_INCLUDE_SUBDOMAINS = True +SECURE_HSTS_PRELOAD = True +SECURE_BROWSER_XSS_FILTER = True +SECURE_CONTENT_TYPE_NOSNIFF = True +X_FRAME_OPTIONS = 'DENY' USE_X_FORWARDED_HOST = True SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') -SECURE_SSL_REDIRECT = False -SESSION_COOKIE_SECURE = False -CSRF_COOKIE_SECURE = False -SECURE_HSTS_SECONDS = 0 REST_FRAMEWORK['DEFAULT_THROTTLE_CLASSES'] = [ 'rest_framework.throttling.AnonRateThrottle', @@ -81,3 +91,7 @@ "TIMEOUT": 300, } } + +# โ”€โ”€ JSON LOGGING IN PRODUCTION โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ +LOGGING['handlers']['console']['formatter'] = 'json' +LOGGING['root']['level'] = 'WARNING' diff --git a/backend/config/storage_backends.py b/services/core/config/storage_backends.py similarity index 100% rename from backend/config/storage_backends.py rename to services/core/config/storage_backends.py diff --git a/backend/config/urls.py b/services/core/config/urls.py similarity index 68% rename from backend/config/urls.py rename to services/core/config/urls.py index 612fecf..5c643ec 100644 --- a/backend/config/urls.py +++ b/services/core/config/urls.py @@ -1,9 +1,12 @@ from django.contrib import admin from django.urls import include, path +from apps.common.health import health_check from apps.projects.urls import public_urlpatterns as public_project_urls +from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView, SpectacularRedocView urlpatterns = [ + path('api/health/', health_check, name='health'), path('admin/', admin.site.urls), path('api/users/', include('apps.users.urls')), path('api/projects/', include('apps.projects.urls')), @@ -19,4 +22,8 @@ # Internal microservice communication endpoints path('api/internal/', include('apps.internal.urls')), path('api/universal/', include('apps.universal.urls')), + # API documentation + path('api/schema/', SpectacularAPIView.as_view(), name='schema'), + path('api/docs/', SpectacularSwaggerView.as_view(url_name='schema'), name='swagger-ui'), + path('api/redoc/', SpectacularRedocView.as_view(url_name='schema'), name='redoc'), ] diff --git a/backend/config/wsgi.py b/services/core/config/wsgi.py similarity index 91% rename from backend/config/wsgi.py rename to services/core/config/wsgi.py index 85585bf..e2f82e6 100644 --- a/backend/config/wsgi.py +++ b/services/core/config/wsgi.py @@ -2,6 +2,6 @@ from django.core.wsgi import get_wsgi_application -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.development') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.production') application = get_wsgi_application() diff --git a/backend/Procfile b/services/core/deploy/Procfile similarity index 100% rename from backend/Procfile rename to services/core/deploy/Procfile diff --git a/backend/.dockerignore b/services/core/docker/.dockerignore similarity index 100% rename from backend/.dockerignore rename to services/core/docker/.dockerignore diff --git a/services/core/docker/Dockerfile b/services/core/docker/Dockerfile new file mode 100644 index 0000000..5cdc695 --- /dev/null +++ b/services/core/docker/Dockerfile @@ -0,0 +1,43 @@ +FROM ghcr.io/astral-sh/uv:python3.10-alpine AS builder + +ENV UV_LINK_MODE=copy \ + UV_COMPILE_BYTECODE=1 \ + UV_PYTHON_DOWNLOADS=0 \ + UV_PROJECT_ENVIRONMENT=/opt/venv + +WORKDIR /app + +RUN apk add --no-cache gcc musl-dev postgresql-dev + +COPY pyproject.toml uv.lock ./ +RUN uv sync --frozen --no-dev --no-install-project + +COPY . . +RUN uv sync --frozen --no-dev + +FROM python:3.10-alpine + +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 \ + UV_LINK_MODE=copy \ + UV_PROJECT_ENVIRONMENT=/opt/venv \ + PATH="/opt/venv/bin:$PATH" + +RUN addgroup -S django && adduser -S -G django django + +RUN apk add --no-cache libpq && pip install --no-cache-dir uv + +COPY --from=builder /opt/venv /opt/venv +RUN chown -R django:django /opt/venv + +WORKDIR /app + +COPY --from=builder /app /app + +RUN chmod +x docker/entrypoint.sh && chown -R django:django /app + +USER django + +EXPOSE 8000 + +CMD ["/bin/sh", "docker/entrypoint.sh"] diff --git a/services/core/docker/entrypoint.sh b/services/core/docker/entrypoint.sh new file mode 100644 index 0000000..1b7796b --- /dev/null +++ b/services/core/docker/entrypoint.sh @@ -0,0 +1,4 @@ +#!/bin/sh +uv run python manage.py migrate --noinput 2>&1 || true +uv run python manage.py collectstatic --noinput 2>&1 || true +exec uv run gunicorn config.wsgi:application --bind 0.0.0.0:8000 --worker-class gevent --workers 4 diff --git a/backend/.env.example b/services/core/env/.env.example similarity index 94% rename from backend/.env.example rename to services/core/env/.env.example index 007b7b1..976a2c7 100644 --- a/backend/.env.example +++ b/services/core/env/.env.example @@ -20,6 +20,7 @@ EMAIL_HOST_USER= EMAIL_HOST_PASSWORD= DEFAULT_FROM_EMAIL=noreply@pydocai.com FRONTEND_URL=http://localhost:5173 +INTERNAL_API_KEY=pydocai-internal-key # AWS S3 (production only) AWS_ACCESS_KEY_ID= diff --git a/backend/manage.py b/services/core/manage.py similarity index 100% rename from backend/manage.py rename to services/core/manage.py diff --git a/backend/pyproject.toml b/services/core/pyproject.toml similarity index 95% rename from backend/pyproject.toml rename to services/core/pyproject.toml index 99d0d96..df92585 100644 --- a/backend/pyproject.toml +++ b/services/core/pyproject.toml @@ -18,15 +18,17 @@ dependencies = [ "pygithub>=2.9.1", "python-decouple>=3.8", "python-dotenv>=1.2.2", + "python-json-logger>=3.0.0", "redis>=7.4.0", "requests>=2.31.0", "gunicorn>=23.0.0", - "gevent>=24.10.1", + "gevent>=24.10.1,<26", "weasyprint>=68.1", "tomli>=2.0.1", "anthropic>=0.45.0", "django-anymail>=15.0", "django-filter>=25.2", + "drf-spectacular>=0.28.0", "whitenoise>=6.7.0", "django-storages>=1.14.0", "boto3>=1.34.0", diff --git a/backend/requirements/base.txt b/services/core/requirements/base.txt similarity index 100% rename from backend/requirements/base.txt rename to services/core/requirements/base.txt diff --git a/backend/requirements/development.txt b/services/core/requirements/development.txt similarity index 100% rename from backend/requirements/development.txt rename to services/core/requirements/development.txt diff --git a/backend/requirements/production.txt b/services/core/requirements/production.txt similarity index 100% rename from backend/requirements/production.txt rename to services/core/requirements/production.txt diff --git a/services/core/seed/seed_admin.py b/services/core/seed/seed_admin.py new file mode 100644 index 0000000..bf19c81 --- /dev/null +++ b/services/core/seed/seed_admin.py @@ -0,0 +1,24 @@ +import os +import django + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.development") +django.setup() + +from apps.users.models import User + +email = 'admin@gmail.com' +if not User.objects.filter(email=email).exists(): + user = User.objects.create_superuser( + email=email, + name='Admin', + username='admin', + password='admin1234' + ) + user.role = 'admin' + user.is_staff = True + user.is_superuser = True + user.is_verified = True + user.save() + print(f'Created admin user: {user.email}') +else: + print(f'User with email {email} already exists.') \ No newline at end of file diff --git a/services/core/templates/emails/account_blocked.html b/services/core/templates/emails/account_blocked.html new file mode 100644 index 0000000..eb60447 --- /dev/null +++ b/services/core/templates/emails/account_blocked.html @@ -0,0 +1,25 @@ + + +
    + + + + +
    + + + +
    +PyDocAI + +ACCOUNT_{{ action|upper }} +
    +
    +

    Account {{ action|title }}

    +

    +Your PyDocAI account has been {{ action }} by an administrator. +

    +
    +

    PyDocAI · AI-generated documentation

    +
    +
    diff --git a/services/core/templates/emails/account_deleted.html b/services/core/templates/emails/account_deleted.html new file mode 100644 index 0000000..4d4d8a7 --- /dev/null +++ b/services/core/templates/emails/account_deleted.html @@ -0,0 +1,31 @@ + + +
    + + + + + +
    + + + +
    +PyDocAI + +ACCOUNT_DELETED +
    +
    +

    Account Deleted

    +

    +Your PyDocAI account has been deleted by an administrator. +

    +
    +
    +Reason: +{{ reason }} +
    +
    +

    PyDocAI · AI-generated documentation

    +
    +
    diff --git a/backend/templates/emails/feedback_confirmation.html b/services/core/templates/emails/feedback_confirmation.html similarity index 100% rename from backend/templates/emails/feedback_confirmation.html rename to services/core/templates/emails/feedback_confirmation.html diff --git a/backend/templates/emails/feedback_confirmation.txt b/services/core/templates/emails/feedback_confirmation.txt similarity index 100% rename from backend/templates/emails/feedback_confirmation.txt rename to services/core/templates/emails/feedback_confirmation.txt diff --git a/backend/templates/emails/feedback_reply.html b/services/core/templates/emails/feedback_reply.html similarity index 100% rename from backend/templates/emails/feedback_reply.html rename to services/core/templates/emails/feedback_reply.html diff --git a/backend/templates/emails/feedback_reply.txt b/services/core/templates/emails/feedback_reply.txt similarity index 100% rename from backend/templates/emails/feedback_reply.txt rename to services/core/templates/emails/feedback_reply.txt diff --git a/services/core/templates/emails/notification_comment.html b/services/core/templates/emails/notification_comment.html new file mode 100644 index 0000000..58e5ee8 --- /dev/null +++ b/services/core/templates/emails/notification_comment.html @@ -0,0 +1,33 @@ + + +
    + + + + + + +
    + + + +
    +PyDocAI + +NEW_COMMENT +
    +
    +

    New Comment

    +

    +on {{ project_name }} · {{ commenter }} +

    +
    +
    +{{ comment_content }} +
    +
    +VIEW_COMMENT() +
    +

    PyDocAI · AI-generated documentation

    +
    +
    diff --git a/services/core/templates/emails/notification_reply.html b/services/core/templates/emails/notification_reply.html new file mode 100644 index 0000000..dd52d16 --- /dev/null +++ b/services/core/templates/emails/notification_reply.html @@ -0,0 +1,38 @@ + + +
    + + + + + + +
    + + + +
    +PyDocAI + +NEW_REPLY +
    +
    +

    New Reply

    +

    +on {{ project_name }} · {{ replier }} +

    +
    +
    +Your comment: +{{ parent_content }} +
    +
    +Reply: +{{ reply_content }} +
    +
    +VIEW_REPLY() +
    +

    PyDocAI · AI-generated documentation

    +
    +
    diff --git a/backend/templates/emails/password_reset.html b/services/core/templates/emails/password_reset.html similarity index 100% rename from backend/templates/emails/password_reset.html rename to services/core/templates/emails/password_reset.html diff --git a/backend/templates/emails/password_reset.txt b/services/core/templates/emails/password_reset.txt similarity index 100% rename from backend/templates/emails/password_reset.txt rename to services/core/templates/emails/password_reset.txt diff --git a/backend/templates/emails/welcome.html b/services/core/templates/emails/welcome.html similarity index 100% rename from backend/templates/emails/welcome.html rename to services/core/templates/emails/welcome.html diff --git a/backend/templates/emails/welcome.txt b/services/core/templates/emails/welcome.txt similarity index 100% rename from backend/templates/emails/welcome.txt rename to services/core/templates/emails/welcome.txt diff --git a/backend/uv.lock b/services/core/uv.lock similarity index 55% rename from backend/uv.lock rename to services/core/uv.lock index 1b29cdd..ea584f3 100644 --- a/backend/uv.lock +++ b/services/core/uv.lock @@ -2,11 +2,9 @@ version = 1 revision = 3 requires-python = ">=3.10" resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version == '3.13.*'", + "python_full_version >= '3.13'", "python_full_version == '3.12.*'", - "python_full_version == '3.11.*'", - "python_full_version < '3.11'", + "python_full_version < '3.12'", ] [[package]] @@ -32,7 +30,7 @@ wheels = [ [[package]] name = "anthropic" -version = "0.100.0" +version = "0.111.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -44,23 +42,23 @@ dependencies = [ { name = "sniffio" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9c/2d/24caf0ff727cba2ed863925017c8f93463a2ea6224a0efe5626e672bc3d2/anthropic-0.100.0.tar.gz", hash = "sha256:650dee9e023afb16395939ee4104bbc21f966b380210119fb91122c12099c79a", size = 758255, upload-time = "2026-05-06T15:07:13.578Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/8a/9afc7305a2ce4b52b30e137f83cd2a6a90b918b3997073db11bb5a1de55a/anthropic-0.111.0.tar.gz", hash = "sha256:39cbda0ac17a6d423e5bf609811bd69b26eddf6299d7a468126e05bc711ce826", size = 934001, upload-time = "2026-06-18T17:31:44.733Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/a0/c775c59ab9445ecabb57ef3d5c24027de060139189a9e312ef9ef889a665/anthropic-0.100.0-py3-none-any.whl", hash = "sha256:1c15769efa15d8fd5c1ebf900e25c57e3ee540f8554a29aa56e4edefffe2951d", size = 753596, upload-time = "2026-05-06T15:07:12.106Z" }, + { url = "https://files.pythonhosted.org/packages/f1/bb/09e82a81885d787f350fb55ca9df865b63140dd28b3b5b3104c4ae261657/anthropic-0.111.0-py3-none-any.whl", hash = "sha256:c14edb36ed80da9099acbd26b5cec810d76606c31f32a0d56a4cf9d4fa9e25ae", size = 929774, upload-time = "2026-06-18T17:31:43.116Z" }, ] [[package]] name = "anyio" -version = "4.13.0" +version = "4.14.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "idna" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/19/14/2c5dd9f512b66549ae92767a9c7b330ae88e1932ca57876909410251fe13/anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc", size = 231622, upload-time = "2026-03-24T12:59:09.671Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1c/b5/001890774a9552aff22502b8da382593109ce0c95314abaebbb116567545/anyio-4.14.0.tar.gz", hash = "sha256:b47c1f9ccf73e67021df785332508f99379c68fa7d0684e8e3492cb1d4b23f89", size = 253586, upload-time = "2026-06-15T22:00:49.021Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl", hash = "sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708", size = 114353, upload-time = "2026-03-24T12:59:08.246Z" }, + { url = "https://files.pythonhosted.org/packages/ba/16/9826f089383c593cdfc4a6e5aca94d9e91ae1692c57af82c3b2aa5e810f7/anyio-4.14.0-py3-none-any.whl", hash = "sha256:dd9b7a2a9799ed6552fde617b2c5df02b7fdd7d88392fc48101e51bae46164d9", size = 123506, upload-time = "2026-06-15T22:00:47.595Z" }, ] [[package]] @@ -93,8 +91,8 @@ dependencies = [ { name = "boto3" }, { name = "celery" }, { name = "coverage" }, - { name = "django", version = "5.2.13", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, - { name = "django", version = "6.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "django", version = "5.2.15", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "django", version = "6.0.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, { name = "django-anymail" }, { name = "django-cors-headers" }, { name = "django-environ" }, @@ -113,6 +111,7 @@ dependencies = [ { name = "pytest-django" }, { name = "python-decouple" }, { name = "python-dotenv" }, + { name = "python-json-logger" }, { name = "redis" }, { name = "requests" }, { name = "ruff" }, @@ -144,7 +143,7 @@ requires-dist = [ { name = "django-storages", specifier = ">=1.14.0" }, { name = "djangorestframework", specifier = ">=3.17.1" }, { name = "djangorestframework-simplejwt", specifier = ">=5.5.1" }, - { name = "gevent", specifier = ">=24.10.1" }, + { name = "gevent", specifier = ">=24.10.1,<26" }, { name = "google-genai", specifier = ">=1.74.0" }, { name = "groq", specifier = ">=1.2.0" }, { name = "gunicorn", specifier = ">=23.0.0" }, @@ -157,6 +156,7 @@ requires-dist = [ { name = "pytest-django", marker = "extra == 'dev'", specifier = ">=4.9" }, { name = "python-decouple", specifier = ">=3.8" }, { name = "python-dotenv", specifier = ">=1.2.2" }, + { name = "python-json-logger", specifier = ">=3.0.0" }, { name = "redis", specifier = ">=7.4.0" }, { name = "requests", specifier = ">=2.31.0" }, { name = "ruff", specifier = ">=0.8" }, @@ -178,30 +178,30 @@ wheels = [ [[package]] name = "boto3" -version = "1.43.18" +version = "1.43.36" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, { name = "jmespath" }, { name = "s3transfer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/22/37/2ae45d06423182b4561c03bc33494fafa21a0d1e847f0554f590e3cbbc62/boto3-1.43.18.tar.gz", hash = "sha256:33138883e984eb1937d1553da699182c8ad2099138091e885b65c9accbccea16", size = 113154, upload-time = "2026-05-29T19:33:30.046Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ff/9f/897287e955db0f50b12fd69ef45956e4fd2c7ddb48c736872f7ea2314443/boto3-1.43.36.tar.gz", hash = "sha256:587d7ee92a12e440ad12b0e7f11f3358f0c4d65b19f64726efc94aaf194aff28", size = 112690, upload-time = "2026-06-23T02:47:14.561Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/75/fcb2c10d516496536c50e397248de42a673d8ea8137caf5b578a72b11293/boto3-1.43.18-py3-none-any.whl", hash = "sha256:7b62ce5c0a51428d692aa4f2adc9dc2a4a4c2989bf65a0a12834eeffa99b0b84", size = 140538, upload-time = "2026-05-29T19:33:27.131Z" }, + { url = "https://files.pythonhosted.org/packages/9f/f1/274303f52483ecf199eae6f8d9b6f5951670397ee4d72c06cfd4eb644612/boto3-1.43.36-py3-none-any.whl", hash = "sha256:42942dde254673abcbc9e6e60017c88341a4f49d99d24e1f2e290fb38138c26f", size = 140031, upload-time = "2026-06-23T02:47:13.178Z" }, ] [[package]] name = "botocore" -version = "1.43.18" +version = "1.43.36" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jmespath" }, { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/01/6d/436d69ec484ffc43635b38d7fb7d717d38824671f10e12e77924019ca929/botocore-1.43.18.tar.gz", hash = "sha256:dc8c105351b49688c667065cd5a45fc5b9db982657cefc9e3fbfb9417a55c7df", size = 15424886, upload-time = "2026-05-29T19:33:16.251Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/37/da9e7f6ca73ac73afd7f0bb7f238aa5daba35c081e98d7f48a7c399599c0/botocore-1.43.36.tar.gz", hash = "sha256:4cae47d1b2d426316b85a0087d9e69e048f13bc003b5177d74639fe9dfd28205", size = 15625488, upload-time = "2026-06-23T02:47:03.192Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/21/5a/35c92c0af1514581031fe66c398b622176b3c928a6d5cf8133c7207e3bd7/botocore-1.43.18-py3-none-any.whl", hash = "sha256:e2610fce16df9f89deab5f3c163430a814e6804034eb95bef8957c8db60b7dbc", size = 15106258, upload-time = "2026-05-29T19:33:11.18Z" }, + { url = "https://files.pythonhosted.org/packages/5c/19/934f81592527a3f7f9b943c893e334c721a4644948642bc33885d584e9ec/botocore-1.43.36-py3-none-any.whl", hash = "sha256:3c65fdc39ed01d8dfde1e961b34038aed03c459f8ddf80717a12ac006475e49d", size = 15313630, upload-time = "2026-06-23T02:46:59.327Z" }, ] [[package]] @@ -310,11 +310,11 @@ wheels = [ [[package]] name = "certifi" -version = "2026.4.22" +version = "2026.6.17" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/25/ee/6caf7a40c36a1220410afe15a1cc64993a1f864871f698c0f93acb72842a/certifi-2026.4.22.tar.gz", hash = "sha256:8d455352a37b71bf76a79caa83a3d6c25afee4a385d632127b6afb3963f1c580", size = 137077, upload-time = "2026-04-22T11:26:11.191Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/c7/424b75da314c1045981bd9777432fad05a9e0c69daa4ed7e308bbaffe405/certifi-2026.6.17.tar.gz", hash = "sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432", size = 134594, upload-time = "2026-06-17T10:31:07.894Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl", hash = "sha256:3cb2210c8f88ba2318d29b0388d1023c8492ff72ecdde4ebdaddbb13a31b1c4a", size = 135707, upload-time = "2026-04-22T11:26:09.372Z" }, + { url = "https://files.pythonhosted.org/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl", hash = "sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db", size = 133289, upload-time = "2026-06-17T10:31:06.348Z" }, ] [[package]] @@ -506,14 +506,14 @@ wheels = [ [[package]] name = "click" -version = "8.3.3" +version = "8.4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bb/63/f9e1ea081ce35720d8b92acde70daaedace594dc93b693c869e0d5910718/click-8.3.3.tar.gz", hash = "sha256:398329ad4837b2ff7cbe1dd166a4c0f8900c3ca3a218de04466f38f6497f18a2", size = 328061, upload-time = "2026-04-22T15:11:27.506Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9b/98/518d8e5081007684232226f475082b30087d0f585e8457db087298259f49/click-8.4.1.tar.gz", hash = "sha256:918b5633eddf6b41c32d4f454bf0de810065c74e3f7dbf8ee5452f8be88d3e96", size = 353007, upload-time = "2026-05-22T04:08:37.769Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ae/44/c1221527f6a71a01ec6fbad7fa78f1d50dfa02217385cf0fa3eec7087d59/click-8.3.3-py3-none-any.whl", hash = "sha256:a2bf429bb3033c89fa4936ffb35d5cb471e3719e1f3c8a7c3fff0b8314305613", size = 110502, upload-time = "2026-04-22T15:11:25.044Z" }, + { url = "https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl", hash = "sha256:482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2", size = 116639, upload-time = "2026-05-22T04:08:35.26Z" }, ] [[package]] @@ -564,175 +564,157 @@ wheels = [ [[package]] name = "coverage" -version = "7.14.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/fd/0ab2772530e946e1be1abd0bc09e647ec9b02e88f0867857601fefca8953/coverage-7.14.1.tar.gz", hash = "sha256:30c08f7d90415aa98b3c990385dea2939b0da55f38515e5b369b83655f8523be", size = 920132, upload-time = "2026-05-26T20:41:36.783Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/69/0d2ef01ff4b8fcecd4cba920d11e92fa4f96ae412441d3b56a90a258e69b/coverage-7.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3e3680291c4a1d0dadfa84a2c459576a4af5133abb617905714339a0c73138cf", size = 219722, upload-time = "2026-05-26T20:38:14.002Z" }, - { url = "https://files.pythonhosted.org/packages/f8/ae/9afdeaa31b9d9ce98124b6abf8bb49119bf71aecae04f8567c189d91299f/coverage-7.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a5274669f37f2343635a347b91a60777621341ab3378e9c6ac9335eee704bddf", size = 220240, upload-time = "2026-05-26T20:38:17.424Z" }, - { url = "https://files.pythonhosted.org/packages/51/69/c998589871df7ea7dba865cc5ee32b5a3e1d47ba6c68ef91104c7c46fa5e/coverage-7.14.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cfe5a5fec635799ef33428f1e5e61bafa45a92a96190ba731561ba558ccc214d", size = 246981, upload-time = "2026-05-26T20:38:19.266Z" }, - { url = "https://files.pythonhosted.org/packages/fc/10/1c7d04c13040dac531d21b712bbe08f902e6dd9b58f5d77875c4d030f8f2/coverage-7.14.1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:62a9f70b52e0b5a95cfef4a5c5641b06983cadc5e538a3feeb5c00211f523ac2", size = 248812, upload-time = "2026-05-26T20:38:20.75Z" }, - { url = "https://files.pythonhosted.org/packages/c1/65/2a38a4607ef27cadcfbcee034dba5830ae2569f90144a0f4c7dbf47d30b0/coverage-7.14.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c18ebc343e15be53049b3a2dce38fe82d58f37e20ab9094b3a39c0aa4f6bb47", size = 250675, upload-time = "2026-05-26T20:38:22.159Z" }, - { url = "https://files.pythonhosted.org/packages/c9/a2/a446ed9752a4a59b79e0fb6cbb319f6facb2183045c0725462625e66f87e/coverage-7.14.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b84ffdf877644e7096aa936991efeed873f7f3df57b9cd001312b7668ab08550", size = 252590, upload-time = "2026-05-26T20:38:23.63Z" }, - { url = "https://files.pythonhosted.org/packages/9e/fd/e81fbd7ba752365546e9842b1cbdaad3d6919d2a522c590aef16a281ec5e/coverage-7.14.1-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e854312c4103f2ad4c0dc023b69b77ebfd2c89db5f86c4c94dc2353f9a92167e", size = 247691, upload-time = "2026-05-26T20:38:25.057Z" }, - { url = "https://files.pythonhosted.org/packages/53/35/f3c26fdaae9ea937d154ca4d372e5ea0a4167ff70d36c6074ac2eacb2f83/coverage-7.14.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c643734307300234fafa36bf2a040a7235f8f177ea1fd6ec1423aea6fb7b929f", size = 248716, upload-time = "2026-05-26T20:38:26.406Z" }, - { url = "https://files.pythonhosted.org/packages/2e/14/940b6c49551fd343e8507ee2b0ba7af5d0aa04ed5bf768285cb7c72a9884/coverage-7.14.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:84ac9499e48700399a5dd0ea7085b5091961fec52c68d66b4ec0d3cf7f4441b1", size = 246721, upload-time = "2026-05-26T20:38:28.282Z" }, - { url = "https://files.pythonhosted.org/packages/aa/2c/40fc0634186c28292a662dff578866b3913983d6c375a3c2a74020938719/coverage-7.14.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:7f02d09f70776579b926d889a4c9c235070a1f47c40458aeaca563fae5acfdb5", size = 250533, upload-time = "2026-05-26T20:38:29.753Z" }, - { url = "https://files.pythonhosted.org/packages/de/e3/2c26bf1e811f9df991ff2a9bdddebdd13ee0665d564df7d05979f9146297/coverage-7.14.1-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:ce66d8e46da2bb5ee313a745cbd2e391d319176c1f7a9451bfcd3a2fb920859b", size = 246990, upload-time = "2026-05-26T20:38:31.516Z" }, - { url = "https://files.pythonhosted.org/packages/a8/b0/060260ef56bd92363ebdce0c7095ce422b06e69aae71828efeca473ab1ca/coverage-7.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c912c259304cfb5ee584481cfb7ce1ff932b4d61e6c9140b8f19cb7b5ed82332", size = 247593, upload-time = "2026-05-26T20:38:33.065Z" }, - { url = "https://files.pythonhosted.org/packages/63/f3/501502046efeb0d6d94b5ca54941d95f1184183dd6bdb7f283985783bb4a/coverage-7.14.1-cp310-cp310-win32.whl", hash = "sha256:1238cb94638e610e972c60dac68e813f868dc7d6e982535270558443058d9d59", size = 222330, upload-time = "2026-05-26T20:38:35.36Z" }, - { url = "https://files.pythonhosted.org/packages/a0/5d/1bf99f2c558f128faf7906817ccbdb576ba815d3b41ce2ac1719b70a3663/coverage-7.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:fc459e5d73be2d6332fcfe8dbf3d8994671fe33c700f4565988ecfa511547253", size = 223261, upload-time = "2026-05-26T20:38:37.196Z" }, - { url = "https://files.pythonhosted.org/packages/7d/d7/477ad149490e6cb849f28abea1dabb9c823cea72e7500c81b4240ce619c0/coverage-7.14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:478b5bcd63c2e1357c5c7e16c070690df7b07f676b1c114d7b93e533c664309f", size = 219848, upload-time = "2026-05-26T20:38:38.715Z" }, - { url = "https://files.pythonhosted.org/packages/91/82/a5eb47257c50601bb7b9a9d2857c67b7a3a85ad74180eb2c98bb1fbe0ce5/coverage-7.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a24a81f9715ee42ef59a316cc11611c98fe23920f7c81861315c9f3ff4a230f4", size = 220354, upload-time = "2026-05-26T20:38:40.232Z" }, - { url = "https://files.pythonhosted.org/packages/43/8b/78419b5391a5cb706b6544390507e469d83ffc9a8248b02c4011aceb9365/coverage-7.14.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:196a13319ad88d6d8ef5ab489ec4f44ddde2143c0c7d5b27786f6c3ffd56a7e1", size = 250771, upload-time = "2026-05-26T20:38:41.782Z" }, - { url = "https://files.pythonhosted.org/packages/77/63/e77aaacd491182210d639636b7a8bba23ffffa9b82aa3762da9431855fa9/coverage-7.14.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3d452fd08b5c72c5167c93e6867b5c08500bd40f2a21e1e854a500550b6cc36f", size = 252683, upload-time = "2026-05-26T20:38:43.305Z" }, - { url = "https://files.pythonhosted.org/packages/65/1c/a022e3cfbec2ac241640003cb3a817e161d9c7f5aa9b49173756cdc03204/coverage-7.14.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23bf7fa51ac02e07fc7c96849b82946da47ae862dc8f86d183b2a4864fc38129", size = 254791, upload-time = "2026-05-26T20:38:45.361Z" }, - { url = "https://files.pythonhosted.org/packages/61/d6/967e408aca4c1ceb88cb0cc677169110ae7f5995fb5eaf5fb1f5a1bb8f5d/coverage-7.14.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bcaa50684dcaadfa599ac48f81103c756d791cfd85c97203d2217c593d48b860", size = 256748, upload-time = "2026-05-26T20:38:46.91Z" }, - { url = "https://files.pythonhosted.org/packages/b8/be/869188f7fe28638078ec479331ace6dc5f7b40b7153eb616f47ab79404d8/coverage-7.14.1-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4ea1c034f95c9b056e856b794630b17f9fa3d57e4800ff1e503d3be0f9c9078c", size = 250907, upload-time = "2026-05-26T20:38:48.493Z" }, - { url = "https://files.pythonhosted.org/packages/07/aa/adb7d3b4278d690e68703abcd76ab1b948242e3668d921711551b78f9ddb/coverage-7.14.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c7e057326434e441306226fbeb5d1aaf14a2637efe97ba668306635835f32ad7", size = 252483, upload-time = "2026-05-26T20:38:50.074Z" }, - { url = "https://files.pythonhosted.org/packages/43/61/331c74103c62dcb0c4b9b3a0de9a61aca016208b0a90f109592a9f9ecc28/coverage-7.14.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:59baf88468dbc8d63b1887afd92bda52e40bb1561696e5819670601403810cec", size = 250545, upload-time = "2026-05-26T20:38:51.613Z" }, - { url = "https://files.pythonhosted.org/packages/f6/b6/c5dae3c104d89be04828f61810e6b3473825482e4c288cc4ed04553e08ae/coverage-7.14.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d34d75f892b3ab73ba11cab5442cce7b3e168fd64162b16f0e1e0d09c508edef", size = 254310, upload-time = "2026-05-26T20:38:53.503Z" }, - { url = "https://files.pythonhosted.org/packages/ad/a1/2b9d5863e3b83c01ad8199e3c597802fbb3a9dc90b058885804c20296d31/coverage-7.14.1-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:3a56abc20a472baf0304c455721bc601477440d28ecfde8a03dde79ede07e0df", size = 250266, upload-time = "2026-05-26T20:38:55.414Z" }, - { url = "https://files.pythonhosted.org/packages/7f/5e/0e511fbdb269359be26fe678a1c3fa1f2aa2a01573cc3f54268c8d6d4797/coverage-7.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6a3cb83d1552c0cd1b4906655b6a33fd4a8473229633a901c6b73bf86914dee9", size = 251174, upload-time = "2026-05-26T20:38:57.141Z" }, - { url = "https://files.pythonhosted.org/packages/85/10/e55307b622b3dd9671cb321824502dc10f93e72f2802b9946159a8edadeb/coverage-7.14.1-cp311-cp311-win32.whl", hash = "sha256:10274a1fbeb8ec5d72966e17bb198a3104257aca4ac09d98667c5f8aca8c8548", size = 222354, upload-time = "2026-05-26T20:38:58.727Z" }, - { url = "https://files.pythonhosted.org/packages/71/cf/107421693cfb71e4f1ca5bf70443f64d4161878068d07a3e51c7ad21d17b/coverage-7.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:87ebdf787d4888e3f3f2d523eadc6e18c6d18c6d0eb173801a189641627fb37e", size = 223290, upload-time = "2026-05-26T20:39:00.413Z" }, - { url = "https://files.pythonhosted.org/packages/b8/1d/3e3644585eb29e9dafefb19555078529a4d7cce12bd21929664eea989277/coverage-7.14.1-cp311-cp311-win_arm64.whl", hash = "sha256:dd34767fa19848d35659ffc0a75314f58c7af3f1cd87ec521e8292a1238398a3", size = 221953, upload-time = "2026-05-26T20:39:02.159Z" }, - { url = "https://files.pythonhosted.org/packages/3d/b7/bdbb725ba02c5b42825b200c940f38b7a54fcad24627b7192f78f8110d76/coverage-7.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a06c76364a9360e33d6d23769aefdf7f66f38e2ffb60ceb1baaa4989d83b695c", size = 220022, upload-time = "2026-05-26T20:39:03.702Z" }, - { url = "https://files.pythonhosted.org/packages/72/81/fdc0898a55c6219223291ec1a1fe89966ef212ce82276aa0899df84b5de0/coverage-7.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fad54e871165f6ec2f536063ac74c3104508a12963e64072ba44bd822de52b0c", size = 220379, upload-time = "2026-05-26T20:39:05.381Z" }, - { url = "https://files.pythonhosted.org/packages/de/72/de048c4a25e13bce59ac6a339351c10bdf2515e07459afcdaf04dc3143a2/coverage-7.14.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:84b535f00655ecafe1d929d1fb00ed5d6fa3051ea643ab2c161a3887b86f294b", size = 251888, upload-time = "2026-05-26T20:39:07.367Z" }, - { url = "https://files.pythonhosted.org/packages/28/30/300c343f68beb9d4cbb64ec81e58c5b6b80b56927f72d2b38654ac26e013/coverage-7.14.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6b6b0853b895fe0e98cbfc580d1ec3393d9302b4b1e96a77b3f5c91fdab899e6", size = 254624, upload-time = "2026-05-26T20:39:09.037Z" }, - { url = "https://files.pythonhosted.org/packages/b1/ed/7b25642496e8170b6bac14adce00537c6e5fa2d586159401a4de3e8b49e6/coverage-7.14.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:442cc9c952b2df400cda54bb04ab87330cf2cd08a8692cbbea36773531eb6f37", size = 255739, upload-time = "2026-05-26T20:39:10.889Z" }, - { url = "https://files.pythonhosted.org/packages/7f/a2/abd210b8c4e29c24e4624916db97bb519097a91034aaeb767f937e7da794/coverage-7.14.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8270544c361ed405a27a060dbc9ed2c124b084d96dfdc2d9a2510482aef981ad", size = 257998, upload-time = "2026-05-26T20:39:12.722Z" }, - { url = "https://files.pythonhosted.org/packages/7f/24/7c50beed3792fe62f6ce0545c6686ce83379719e2c0276179333d97eae92/coverage-7.14.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:48b283b1dd6372e8de2a7a9a4c4d5dc06f4d4fd209b876f3c88a7a205a0c8f84", size = 252296, upload-time = "2026-05-26T20:39:14.259Z" }, - { url = "https://files.pythonhosted.org/packages/15/05/0f874628ebcbfc77ead559ff210281ef06a97db08481832e7dd39274a135/coverage-7.14.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5b0c99ba93a07d56f6df340bb79be53202a082b2fdb81bfe6190b741a3470d54", size = 253658, upload-time = "2026-05-26T20:39:15.923Z" }, - { url = "https://files.pythonhosted.org/packages/99/6f/ca6ad067364b337ef997802115e7ecad2abd2248b05471464b0dea02b4d4/coverage-7.14.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e471bc5769ff073b058cfadb0d736b56ce067c8560eabeb0da88462df98c23e7", size = 251803, upload-time = "2026-05-26T20:39:17.537Z" }, - { url = "https://files.pythonhosted.org/packages/c0/30/b9b4d377cd9f40baf228068f5a81faf8450c6228503011bd499708483a50/coverage-7.14.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f497a1ea81d4cd7c10ddcaa685135b9aabd291af3d55775a9ddf3cb7a364cdd9", size = 255873, upload-time = "2026-05-26T20:39:19.414Z" }, - { url = "https://files.pythonhosted.org/packages/3c/21/7c721a9e5e6bb88547d30a787aefb97512d3f54c1324c7488d9b3743f7f9/coverage-7.14.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2222be86d0b54f5dd5a38f45f17f315f737245e857bf0bdedc70734f84a13c02", size = 251372, upload-time = "2026-05-26T20:39:21.169Z" }, - { url = "https://files.pythonhosted.org/packages/9d/8c/f8ae5a2200130e1503cd7661a6cd3b2b7bacef98277fbf3571fb13f8b766/coverage-7.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:85e85586565842f6932abebd4c18bcb1074223dc0b3576e7d173ca710622813a", size = 253245, upload-time = "2026-05-26T20:39:23.097Z" }, - { url = "https://files.pythonhosted.org/packages/34/62/70a9024672a5f6910517d9628c52c9afbdd3cf8f46426af52bb148a56fff/coverage-7.14.1-cp312-cp312-win32.whl", hash = "sha256:4a28fd227808366b196a75476dced2eb35b351d6766ba9c858dc93319e87f4f1", size = 222567, upload-time = "2026-05-26T20:39:24.868Z" }, - { url = "https://files.pythonhosted.org/packages/f6/81/8b7cd386839b039ebe1855733b9f9449a8dec5d79564018234f185a7fa70/coverage-7.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:54acdb6674a4661768d7bf7db32dfb9f46ab1d764f8aba6df75ce1a6a088724e", size = 223372, upload-time = "2026-05-26T20:39:26.603Z" }, - { url = "https://files.pythonhosted.org/packages/ae/ba/b44d472022f620d289d95fa830143235c0c36461c6f2437ea8d51e5481ed/coverage-7.14.1-cp312-cp312-win_arm64.whl", hash = "sha256:99cd41ff91afd94896fea3bc002706b6ae4ce95727d06e4a0f39c0a8d8bd8b1a", size = 221989, upload-time = "2026-05-26T20:39:28.242Z" }, - { url = "https://files.pythonhosted.org/packages/8a/9e/5f6d56327c62b185225d145191c607e07515294a0aa6338e58805cd4a5ac/coverage-7.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:be9f2c802dcfce3f71298303aa5dad0dce440a76c52f2f60dacd8656dab78793", size = 220044, upload-time = "2026-05-26T20:39:29.902Z" }, - { url = "https://files.pythonhosted.org/packages/75/92/e82aca356744cbbc0f77a0b623e38918c1872361963413a3bab5d0340393/coverage-7.14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6223a72fd0e4c7156353ec0f08a5f93623e1d3034d0e2683b9bb8ea674131b1d", size = 220412, upload-time = "2026-05-26T20:39:31.561Z" }, - { url = "https://files.pythonhosted.org/packages/27/c9/385bde0bf7ed0f4bf3a7ee5367060a86b5d218718cfd6fb943c0f836b34f/coverage-7.14.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7279d2110a28cebc738b6459ecda2771735a4c18465fbbd36b3288fe5ed92247", size = 251412, upload-time = "2026-05-26T20:39:33.337Z" }, - { url = "https://files.pythonhosted.org/packages/51/8c/23faf6a2343a0d17f960a4bd56c43bc7eb4cf312f774dd6ceebd82c7d8fc/coverage-7.14.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9eeb3fcbc13ba40dfbdb22d01d196a28e9cef9ed4c29b60061a1e0e823a9929d", size = 254008, upload-time = "2026-05-26T20:39:35.009Z" }, - { url = "https://files.pythonhosted.org/packages/42/06/36f4aa9ca8a815e6036156e80706a67828bb97bd826948244f6996dda957/coverage-7.14.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f0cfc27c539f07cf5c0a4cfe211d0b6cae039f8f40526dbaa71944e64b50a7b", size = 255241, upload-time = "2026-05-26T20:39:36.71Z" }, - { url = "https://files.pythonhosted.org/packages/ca/79/95266316352f90f6b1c6736bb413302edfde2453fb32422d3911642691b3/coverage-7.14.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:221c70f316241a78e77e607c227cefc8808d4e08f28d99c04f35694690e940be", size = 257373, upload-time = "2026-05-26T20:39:38.412Z" }, - { url = "https://files.pythonhosted.org/packages/e3/9c/58316d1f66c488b5fca8a0eb3e98348807813efa8a0d0833b9021be27488/coverage-7.14.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:da028256b04ec30e5e0114b6f76172938c313991f0a2d3d894271315cf5d5e43", size = 251635, upload-time = "2026-05-26T20:39:40.268Z" }, - { url = "https://files.pythonhosted.org/packages/ef/5a/ca2398a568e16fed7bb713e84ba3603a7164fb65779abe645c565ec890d5/coverage-7.14.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:76a085d7005236a767e3426148b2c407e53ad61695c562f8a81da2d373324901", size = 253373, upload-time = "2026-05-26T20:39:42.145Z" }, - { url = "https://files.pythonhosted.org/packages/6e/2c/0396562c32deaebe7be51d865b3a41e9a87d7561acafe1a28f53b07e019a/coverage-7.14.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b553d04b5e778a8e56d57eb134aff42a92718ecba45e79c4764ecfa40efd92ff", size = 251341, upload-time = "2026-05-26T20:39:43.907Z" }, - { url = "https://files.pythonhosted.org/packages/fd/8f/a94f9221184c9cae1ee115820e3798e48b6b17777a9f19e46fb9a0c8dc74/coverage-7.14.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:46f714d2fb8ae2f4f29f23ada7f1e79b759fff5a70f94a1dac23af204c3ec9e4", size = 255497, upload-time = "2026-05-26T20:39:46.166Z" }, - { url = "https://files.pythonhosted.org/packages/71/69/505d70e47db1eaebcd002c39759707621ef184cd6b1ae084d9f41293f323/coverage-7.14.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:1896f5e19ff3f0431c7ce2172adc54890fd97f86b59ced8ca1649145d9ffe35d", size = 251159, upload-time = "2026-05-26T20:39:48.03Z" }, - { url = "https://files.pythonhosted.org/packages/e0/aa/58681c383aa33a9d2ed40a02d7a22fbf780d1fa4d575396365777828198c/coverage-7.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:62fd185ef9df3c33d1c8178c5af105f762afbad96038de9a4ae100aa6297ca33", size = 252934, upload-time = "2026-05-26T20:39:49.872Z" }, - { url = "https://files.pythonhosted.org/packages/eb/fd/11c928cd6bdffc7074bb5965c173d9ebf517fb00205e1da524b98d29ef92/coverage-7.14.1-cp313-cp313-win32.whl", hash = "sha256:ab4af6352741a604c431c6072fce5bee33bf0f20dc7a56618d6bf6bb89e9810c", size = 222584, upload-time = "2026-05-26T20:39:51.68Z" }, - { url = "https://files.pythonhosted.org/packages/6f/92/fb416fc26d340dcba19518c418d6048e913186e17243982c5e435e41fa7a/coverage-7.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:7af486dabe8954d03b087f0021540897afe084f04e16ff5579e08cc46f871416", size = 223394, upload-time = "2026-05-26T20:39:53.472Z" }, - { url = "https://files.pythonhosted.org/packages/73/c6/02d56e3867972f77d5036de924643f26c056e848f00452cafb4dbc3c29b4/coverage-7.14.1-cp313-cp313-win_arm64.whl", hash = "sha256:2224f89ffd0c5605ccce1ed7a584da162bc7c55f601ab1c946bc9de31a486b42", size = 222015, upload-time = "2026-05-26T20:39:55.374Z" }, - { url = "https://files.pythonhosted.org/packages/4d/9e/fcc77914050df73f7662fa1f00902774c79c075a8388ab334074574bf77e/coverage-7.14.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:de286598cc65d2b489411174b1faec2f5a7775fb3201fd925db2a76b4030f37d", size = 220733, upload-time = "2026-05-26T20:39:57.189Z" }, - { url = "https://files.pythonhosted.org/packages/f7/67/2963cbdaf5cbadec44efa3a1e39eaa1f02df4079585f05387607a221e126/coverage-7.14.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:042c46ded7c288aeb07cf14a28b6c1e10b78fcba40171c3fa1e939377eeef0b5", size = 221086, upload-time = "2026-05-26T20:39:59.019Z" }, - { url = "https://files.pythonhosted.org/packages/c8/c5/8701645574e11881f2f47d8930f98bc48b5d43b25eb5b4430dfc4a2f9f48/coverage-7.14.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f4ddbe407477f04c45115d1a4e5bc480f753553b534d338d4c3358b1cdd0ea52", size = 262381, upload-time = "2026-05-26T20:40:00.822Z" }, - { url = "https://files.pythonhosted.org/packages/7c/28/7a64d73598263e0c5abd5084211a8474488d31b3c552ff531c719dfcff62/coverage-7.14.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d13e6725992e2d2fd7d81d4f5241952d13740121dfd501da09201be39b2c003a", size = 264458, upload-time = "2026-05-26T20:40:02.506Z" }, - { url = "https://files.pythonhosted.org/packages/fa/d8/4969179db9f7eb4df218e69540adf829d1c835f59452513d065d15446802/coverage-7.14.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f747dc8edcfe740130f28f32f3995e955494285717e86ee25af51db2219df08a", size = 266884, upload-time = "2026-05-26T20:40:04.421Z" }, - { url = "https://files.pythonhosted.org/packages/a6/78/a45d5794dbc9bafd97afc96a4377c86c7820d78b6cf51b89bc1d4e919275/coverage-7.14.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ced2f09ef276fd58611a1ef502164ad266d2b75174e5a40cabbdb4033f9f6cf2", size = 268022, upload-time = "2026-05-26T20:40:06.298Z" }, - { url = "https://files.pythonhosted.org/packages/21/cb/4f5e354e9e3e67af96bd4e57113e6db6b22298c7168b13eec408a549903d/coverage-7.14.1-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b84800013769a78ccb9ef4659402e26d06867e337b61ec365f77ad008adea80e", size = 261631, upload-time = "2026-05-26T20:40:08.226Z" }, - { url = "https://files.pythonhosted.org/packages/ec/49/eced49af4cb996d5d8b7e94e736175c513e4facd3398507b89892b4326d8/coverage-7.14.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:ea8cd6ca0ee9f616aaef3afc6882e32c2cbf18b00d96313ffd76af650574034d", size = 264443, upload-time = "2026-05-26T20:40:10.137Z" }, - { url = "https://files.pythonhosted.org/packages/f1/d8/5603a88a7c5913a6b54f6cb1a8c46f7b39cbb30f27cd3f492908da09b2d7/coverage-7.14.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:aa5e304a873fabddc11e484e9b6b738bd38bd7bed17b09aa84eecf5332e8b8bb", size = 262069, upload-time = "2026-05-26T20:40:11.999Z" }, - { url = "https://files.pythonhosted.org/packages/f0/59/2ae3cb79da554a06c8619d6c88ea19dd1e4aed4b834b6a83bb1fa243bdc5/coverage-7.14.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:5a1c5215be81035e629d5bc756650634d0bf31991038db7a0eccb90f025ce16d", size = 265780, upload-time = "2026-05-26T20:40:13.858Z" }, - { url = "https://files.pythonhosted.org/packages/af/5f/b130c1dc999031f2648bd25317fbce505ad8d5562079b4ed81e736a84967/coverage-7.14.1-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:79058c47dae6788504b5effb319961bcd72d7240551464b91d474bc0ed186d69", size = 260970, upload-time = "2026-05-26T20:40:16.142Z" }, - { url = "https://files.pythonhosted.org/packages/87/d1/ec13ccddeb48ec963bdfa72a11224bac2584bd045ba13beca82f8113e9c7/coverage-7.14.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:370c5afae3fa0658e11694a32b24c2778f6bc2d17718121f94ee185e69f26b54", size = 263157, upload-time = "2026-05-26T20:40:18.382Z" }, - { url = "https://files.pythonhosted.org/packages/cf/c2/cd91ead503045161092d3845f7bb95ea2f25131ce96d3e314dd835d91b9c/coverage-7.14.1-cp313-cp313t-win32.whl", hash = "sha256:3758dd0a7f1fa57365ef2e781df0f0731d38b6e3772259d13dae4bd8a958d4b1", size = 223259, upload-time = "2026-05-26T20:40:20.381Z" }, - { url = "https://files.pythonhosted.org/packages/71/9f/1e28d97e6bd2c76b07f38b7c02870f1371255ff6717f54eca578fcbbdd0e/coverage-7.14.1-cp313-cp313t-win_amd64.whl", hash = "sha256:6ff665fb023a77386fe11685190cee1f60a7d635994a30d9b0a061533d470fce", size = 224320, upload-time = "2026-05-26T20:40:22.316Z" }, - { url = "https://files.pythonhosted.org/packages/a9/e0/d936e908f0e1efa55e52b91e01b52f1055cef5e1ab2718493390ed8e2fb8/coverage-7.14.1-cp313-cp313t-win_arm64.whl", hash = "sha256:17a5a241e5997621a956a7f402a7433ef4221e5152809b785bec79e2323799f1", size = 222577, upload-time = "2026-05-26T20:40:24.894Z" }, - { url = "https://files.pythonhosted.org/packages/d6/34/fc2f101b151af3799a101f0550b0454aa008afdc0add677394ec4aa8ea10/coverage-7.14.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d5ed429d0b8edaac649e889b4ffcedb6c80b06629a3f93050e3dddfb99235bee", size = 220091, upload-time = "2026-05-26T20:40:27.249Z" }, - { url = "https://files.pythonhosted.org/packages/3d/a7/1ebae2ab5b961b5c79bb09fe7b3ac99edb190d8be4a8c510b2cf66f46468/coverage-7.14.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8011224a62280e50dab346960c03cf47aca1a1e09e608c0fb33fd6e0cc8e9500", size = 220421, upload-time = "2026-05-26T20:40:30.084Z" }, - { url = "https://files.pythonhosted.org/packages/5e/90/92aca9cf0acc95123c96cd1eb1f08917897a7f5dee01e15738922971ec31/coverage-7.14.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:12c42ec1e14f553c4f817e989365982e646e27211f10a0f717855b94a79c8906", size = 251466, upload-time = "2026-05-26T20:40:32.542Z" }, - { url = "https://files.pythonhosted.org/packages/26/2b/78048cbe3b999f6cbf9cc0d90abba6a88a3e0863a8c1c6cbc762f3f8802f/coverage-7.14.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:06144cd511cf2624873a035c5069cf297144f6e77a73ee3d7a55b605ec5efb42", size = 253973, upload-time = "2026-05-26T20:40:34.473Z" }, - { url = "https://files.pythonhosted.org/packages/8e/21/c2e33b29d1cfde484a19d437afc343c6cd30b08d78cbbf9f5aff14e57b2b/coverage-7.14.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a311d8e1da24be5c1ccf85cbfb06315dbaa1703d5a1eab3f6432c72b837917c8", size = 255318, upload-time = "2026-05-26T20:40:38.154Z" }, - { url = "https://files.pythonhosted.org/packages/8e/ee/aad2f108d63b769121005302f16bf66db8625c88ceaba466942e09a2607e/coverage-7.14.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c79cead5b5bc584d9c71451cb984d0e3a84e0c0937379c8efcbf27c8d661b851", size = 257633, upload-time = "2026-05-26T20:40:40.164Z" }, - { url = "https://files.pythonhosted.org/packages/c2/f8/11a2c29b4fd76d9849f81d0bb812ec0017a9396df3217214e38934a8c837/coverage-7.14.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:dcbf65f1f66a26cdd88c35cf68fb4729c5d1cd2e88added72420541dfb212034", size = 251488, upload-time = "2026-05-26T20:40:42.631Z" }, - { url = "https://files.pythonhosted.org/packages/c9/b8/9a5820de4b8ac2b71d85e3b5fb49108d7469c665f0e2ad0dd7569023e305/coverage-7.14.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fd86572566fb40189a8260446158235159bc7a82dfbc87a3b39cf4fb57fcec1c", size = 253329, upload-time = "2026-05-26T20:40:45.208Z" }, - { url = "https://files.pythonhosted.org/packages/6b/ff/f33e4823667e27548e8fd8df44217515303f9808d0ff29817db56f87d990/coverage-7.14.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:7771b601718fdde84832c3a434ca9bbf4ae9adbc49d84198b4110700c3c77c36", size = 251291, upload-time = "2026-05-26T20:40:47.502Z" }, - { url = "https://files.pythonhosted.org/packages/68/9b/489db0ebb209054766b90a9014a45f6d26eb724c02ec21311c3733b5a644/coverage-7.14.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:39b21e212c55af06fa375e3dbf90a8a8e38792f3a910c580066d23563830ddd5", size = 255564, upload-time = "2026-05-26T20:40:49.372Z" }, - { url = "https://files.pythonhosted.org/packages/27/b5/16bc2d4c2409b23c7737edb68c83bc89e345f378050549fe1d75ac7d34d5/coverage-7.14.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:f2302660e32562a532b442480121aef8aa61a5bdb20b30bf0adab29f10a5a4b4", size = 251107, upload-time = "2026-05-26T20:40:51.677Z" }, - { url = "https://files.pythonhosted.org/packages/7d/0c/2629997469a00cd069d588a41c9dc887610f2775ae89d250c4791e65272a/coverage-7.14.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:03a6f93c1ec3b7f2e77b5dbcc5573a2c21f12529a5c6bbe0f16f72303cc2fa4d", size = 252764, upload-time = "2026-05-26T20:40:54.267Z" }, - { url = "https://files.pythonhosted.org/packages/d2/ee/f78d63c8f079e0d7211c7e2401fa17e311514534ba61bae03e4b287ce4ab/coverage-7.14.1-cp314-cp314-win32.whl", hash = "sha256:8a3ce026d73290f42f08dafecbd82c193a74df280461fbf97300fec51fd133ee", size = 222837, upload-time = "2026-05-26T20:40:56.496Z" }, - { url = "https://files.pythonhosted.org/packages/dc/b9/be539854f93a70dfbeec69117f33ec70dc42ff0b65b5b07ab8d40d04228e/coverage-7.14.1-cp314-cp314-win_amd64.whl", hash = "sha256:114c95ef29302423b87d159075805f4ab973254a2638a5d7d046c94887cc87d7", size = 223650, upload-time = "2026-05-26T20:40:58.351Z" }, - { url = "https://files.pythonhosted.org/packages/fe/9e/24e2842fef40f35ac82ba3a7719c8023d011bf3bf652d0675316a9d088a1/coverage-7.14.1-cp314-cp314-win_arm64.whl", hash = "sha256:a07891c3f4805442b31b71e84ba3cf29ed1aa9a428284e06deeb4b23e5b46343", size = 222218, upload-time = "2026-05-26T20:41:00.321Z" }, - { url = "https://files.pythonhosted.org/packages/0a/1d/ac0a9df5fe31c1e8bdd658074905fc12844a05c1a7e3fdb8417e97c31e23/coverage-7.14.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:1101a5ebb083aecb625ebb6209d4105b58f647b093cb2dc8122d7b33f743cfe1", size = 220822, upload-time = "2026-05-26T20:41:02.281Z" }, - { url = "https://files.pythonhosted.org/packages/32/cf/f964fd9aff20323f9f1a726c97135f8a76bcd87b92dad141a456a43f3c64/coverage-7.14.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:851b9e1e4e8a4608e77c79714b2e77c0970d2ed7202a05e92ae407817481887b", size = 221084, upload-time = "2026-05-26T20:41:04.593Z" }, - { url = "https://files.pythonhosted.org/packages/d8/5e/7e5ef2aba844de2b80d678619fcf0841b42e3f37f16411226f3fe4c1016f/coverage-7.14.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d5b89cdfb2ee051b71e8c3c70bd81a9eff81100f736a269136fe1a68efe00474", size = 262454, upload-time = "2026-05-26T20:41:06.641Z" }, - { url = "https://files.pythonhosted.org/packages/64/62/75809bded87015cc4935524218a2a8ed8dd1a8498bfed30a2f4f7a4b4d34/coverage-7.14.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0177614a0370f227888b4e436a7c55686d6a9f90eb1ade2b624ba685a1686e86", size = 264578, upload-time = "2026-05-26T20:41:08.556Z" }, - { url = "https://files.pythonhosted.org/packages/f3/42/d33392dc14633525012d2d504fa1a33b05538bf535f5c1d64675e5754b78/coverage-7.14.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2d69af5dea2de76fc485a83032a630523f985198b7e25be901ec60181587b01e", size = 266981, upload-time = "2026-05-26T20:41:10.824Z" }, - { url = "https://files.pythonhosted.org/packages/2a/49/0157c4428c2aca7f1e09d5565930586fd5ae36f1655f08b0daa7cf1fcae1/coverage-7.14.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:35ab22d91de736e8966b980dc355cbcdd2c6dbbcfe275f9a2991bc8a91b3df65", size = 268112, upload-time = "2026-05-26T20:41:12.966Z" }, - { url = "https://files.pythonhosted.org/packages/96/26/86b9ce71f4092b1ed325ce1421698081df1286b833400b6836912834d6e0/coverage-7.14.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:357d4e32935c36588aaba057d734fa32428c360c9fc2e4442afbf1b646beee6e", size = 261558, upload-time = "2026-05-26T20:41:15Z" }, - { url = "https://files.pythonhosted.org/packages/20/4c/c311210c5472cf5401d8422b0d7812cdd520f24417673afabda6c323faca/coverage-7.14.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:51bd64741cc6fa065abd300ede1afe5a5291ece9c31da8b24884deda48bcc3f8", size = 264447, upload-time = "2026-05-26T20:41:17.369Z" }, - { url = "https://files.pythonhosted.org/packages/fb/71/59513f8710ed3e6b0ac0a050a5b7e977bb9c9e880354863b5d00d8809256/coverage-7.14.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:9132cd363a68a4c3daa7c8704a654b1e39d3360f6f5b8ddd470608a945236c07", size = 262048, upload-time = "2026-05-26T20:41:19.309Z" }, - { url = "https://files.pythonhosted.org/packages/84/8d/bceed32dc494f5bbf50f775cd2e78ca814953942b5ea28d3c1c3ac316f14/coverage-7.14.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:07c6290b1697b862c0478eab545eec949a0d0e4d6d03497f446d706da3b4f2de", size = 265781, upload-time = "2026-05-26T20:41:21.559Z" }, - { url = "https://files.pythonhosted.org/packages/e7/c5/9348fe40dbfd4991aaf78df2c6c3098bfb2cc834d1fd362a64b4efef855a/coverage-7.14.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:5ea0c297e27133853b4d8a3eb799bff5a2dbd9f2f41537a240d337ac9b4df890", size = 260896, upload-time = "2026-05-26T20:41:23.428Z" }, - { url = "https://files.pythonhosted.org/packages/ca/92/1ea0f03929da7cf87206b1fa24f4c8e9c158be0455481af29ec0a1f3503f/coverage-7.14.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:01b7733daad0237daa01ef80fe2dfceffc911e6a17fa7b55d14aa8214eaaaecd", size = 263214, upload-time = "2026-05-26T20:41:25.419Z" }, - { url = "https://files.pythonhosted.org/packages/f6/a9/b2493c054c0e01a643266742ab45e15744e60743f9260cd930c7142b1124/coverage-7.14.1-cp314-cp314t-win32.whl", hash = "sha256:6adc5a36984624a70bf11d7184e20fa0a49aa7c47ffab43804106a1a695ea22e", size = 223624, upload-time = "2026-05-26T20:41:27.795Z" }, - { url = "https://files.pythonhosted.org/packages/fc/bd/3e1e6a57fccd2d7c83fcdf338e93ba98eb85c6e877dd34731ac585375490/coverage-7.14.1-cp314-cp314t-win_amd64.whl", hash = "sha256:ddf799247318f34dbcd2efa8c95a8d0642674e926bb1774cf9b63dfd2a389d1c", size = 224728, upload-time = "2026-05-26T20:41:30.098Z" }, - { url = "https://files.pythonhosted.org/packages/bb/d7/31066cf1d2f0c6c797fce911bcfa01dd35642dc6da992a950256097c5860/coverage-7.14.1-cp314-cp314t-win_arm64.whl", hash = "sha256:145986fe66647eb489f18d9a997567a3fd358584c4b5a808769113abc07466af", size = 222752, upload-time = "2026-05-26T20:41:32.123Z" }, - { url = "https://files.pythonhosted.org/packages/8a/3c/1a983b9a745d7f83d53f057bcc5bf79ba6a2bbc08266b3f0c7d6fe630c9b/coverage-7.14.1-py3-none-any.whl", hash = "sha256:a252f21c27e38347e60111a3266b03827422a7d5525951aceee313aa68bab1d2", size = 211815, upload-time = "2026-05-26T20:41:34.078Z" }, +version = "7.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b4/91/0a7c28934e50d8ac9a7b117712d176f2953c3170bccced5eaacfa3e96175/coverage-7.14.3.tar.gz", hash = "sha256:1a7563a443f3d53fdeb040ec8c9f7466aed7ca3dc5891aa09d3ca3625fa4387f", size = 924398, upload-time = "2026-06-22T23:10:25.584Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/bd/b01188f0de73ee8b6597cf20c63fccd898ad31405772f15165cb61a62c00/coverage-7.14.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:360bec1f58e7243e3405d3bdf7a1a8115aa9b448d54dc7cd6f7b7e0e9406b62e", size = 220378, upload-time = "2026-06-22T23:07:38.925Z" }, + { url = "https://files.pythonhosted.org/packages/33/eb/f7aa3cb46500b709070c8d12335446971ec8b8c2ea155fea05d2000b4b1f/coverage-7.14.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed68faa5e85de2f3e400bc3f122e5c82735a58c8bb24b9f63a2215954ba17b2d", size = 220895, upload-time = "2026-06-22T23:07:41.536Z" }, + { url = "https://files.pythonhosted.org/packages/c3/c0/b41b8499fc9060ca40ad2a197d301155be1ead398f0f0bfdb27b2b4a660f/coverage-7.14.3-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:830c1fca669c572dec37ce9c838224ee45aac5be0f6961edf871e82e49d6537c", size = 247631, upload-time = "2026-06-22T23:07:43.244Z" }, + { url = "https://files.pythonhosted.org/packages/da/bb/e9ecea1307c6a549c223842cccbd5d55193cc27b82f26338782d4355047c/coverage-7.14.3-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a64caee2193563601dbaaa55fe2dcf597debef04a2f8f1fa8a07aa4bb7ac7a1e", size = 249460, upload-time = "2026-06-22T23:07:45.147Z" }, + { url = "https://files.pythonhosted.org/packages/59/cb/3821542809b7b726296fd364ed1c23d10a5770f1469957010c3b4bc5d408/coverage-7.14.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0096fd7559178f0cc9cf088f2dbd2a02ef85bacaa69732c633517286b4494610", size = 251324, upload-time = "2026-06-22T23:07:46.875Z" }, + { url = "https://files.pythonhosted.org/packages/76/27/f34f66f0ff152189ccc7b3f0582cf7909e239cb3b8c214362ed2149719b8/coverage-7.14.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6197e5a00183c11a8ce7c6abd18be1a9189fd8399084ffc95196f4f0db4f2137", size = 253237, upload-time = "2026-06-22T23:07:48.352Z" }, + { url = "https://files.pythonhosted.org/packages/22/81/aa363fa95d14fc892bd5de80edadc8d7cce584a0f6376f6336e492618e67/coverage-7.14.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7dfe427045520d6abca33687dfef767b4f635015893a1816c5decb12eb72ce18", size = 248344, upload-time = "2026-06-22T23:07:49.896Z" }, + { url = "https://files.pythonhosted.org/packages/66/fe/dc8a149441a3fea611cbbaf46bb12099adbe08f69903df1794581b0504b8/coverage-7.14.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9a3f142070eb7b82fc4085a55d887396f9c4e21250bccebe2ba22502c45b9647", size = 249365, upload-time = "2026-06-22T23:07:51.464Z" }, + { url = "https://files.pythonhosted.org/packages/f8/a2/0004127deee122e020be24a4d86ce72fa14ae28198811b945aabf91293b5/coverage-7.14.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:64b2055bb6e0dc945af35cdeceb3633e6ed9273475ef3af85592410fd6803803", size = 247369, upload-time = "2026-06-22T23:07:53.064Z" }, + { url = "https://files.pythonhosted.org/packages/1e/72/3654c004f4df4f0c5a9643d9abaed5b26e5d3c1d0ecabe788786cb425efa/coverage-7.14.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:1551b4caac3e3ec9f2bfcec6bf3776e01c0edbdd2e240431a50ca1a1aac72c27", size = 251182, upload-time = "2026-06-22T23:07:54.789Z" }, + { url = "https://files.pythonhosted.org/packages/a5/2f/7bdcdf1e7c4d0632648852768063c25582a0a747bb5f8036a04e211e7eb7/coverage-7.14.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:583d50d59142f8549470bd6390471d0fe8b8c8d69d6a0f28ac71e05380cef640", size = 247639, upload-time = "2026-06-22T23:07:56.254Z" }, + { url = "https://files.pythonhosted.org/packages/03/dc/0e01b071f69021d262a51ce39345dd6bc194465db0acfc7b34fd89e6b787/coverage-7.14.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0bb8a6bc7015efdf8a928753b25da1b9ca2d6f24ef04d2ee0688e486f32aae7", size = 248242, upload-time = "2026-06-22T23:07:57.692Z" }, + { url = "https://files.pythonhosted.org/packages/1c/51/08279e6ebe3479bf705db5fdc1a968e44ba1567e4cbc567f76b45f5e646e/coverage-7.14.3-cp310-cp310-win32.whl", hash = "sha256:d48400185564042287dc487c1f016a3397f18ab4f4c5d5ec36edc218f7ffa35b", size = 222431, upload-time = "2026-06-22T23:07:59.094Z" }, + { url = "https://files.pythonhosted.org/packages/40/2f/5c56670781fee5722ef0c415a74750c9a033bfacdb9d07b1493a0308108d/coverage-7.14.3-cp310-cp310-win_amd64.whl", hash = "sha256:eadea7aba74e40adee867a8c0eec17b820b061d308a4b014f7a0e118c2b0aa61", size = 223059, upload-time = "2026-06-22T23:08:00.662Z" }, + { url = "https://files.pythonhosted.org/packages/f1/24/efb17eb94018dd3415d0e8a76a4786a866e8964aa9c50f033399d23939c2/coverage-7.14.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e574801e1d643561594aa021206c46d80b257e9853087090ba97bed8b0a509d3", size = 220501, upload-time = "2026-06-22T23:08:02.182Z" }, + { url = "https://files.pythonhosted.org/packages/76/93/32f1bfca6cdd34259c8af42820a034b7a28dfb44969a13ed38c17e0ba5b0/coverage-7.14.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f82b6bb7d75a2613e85d07cefa3a8c973d0544a8993337f6e2728e4a1e94c305", size = 221008, upload-time = "2026-06-22T23:08:03.701Z" }, + { url = "https://files.pythonhosted.org/packages/eb/88/0d0f974855ff905d15a64f7873d00bdc4182e2736267486c6634f4af293c/coverage-7.14.3-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:a2335ea5fed26af2e831094964fa3f8fae60b45f7e37fcc2d3b615b2add3ad87", size = 251420, upload-time = "2026-06-22T23:08:05.211Z" }, + { url = "https://files.pythonhosted.org/packages/39/7f/117dd2ec65e4140576f8ef991d88220f9b806769f7a8c20e0550c0f924e2/coverage-7.14.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fbb8c3a98e779013786ae01d229662aeacbc77100efbd3f2f245219ace5af700", size = 253331, upload-time = "2026-06-22T23:08:06.672Z" }, + { url = "https://files.pythonhosted.org/packages/87/55/f0bd6d6538e3f16829fb8a44b6c0d2fe9da638bbfdd6a20f8b5da8f4fa81/coverage-7.14.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ac082660de8f429ba0ea363595abb838998570b9a7546777c60f413ab902bbde", size = 255441, upload-time = "2026-06-22T23:08:08.208Z" }, + { url = "https://files.pythonhosted.org/packages/1e/98/aa71f7879019c846a8a9662579ea4484b0202cf1e252ffeed647075e7eca/coverage-7.14.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ac012839ff7e396030f1e94e10553a431d14e4de2ab65cb3acb72bbd5628ca2", size = 257398, upload-time = "2026-06-22T23:08:09.749Z" }, + { url = "https://files.pythonhosted.org/packages/f3/4f/5fd367e59844190f5965015d7bee899e67a89d13eb2760118479bf836f2f/coverage-7.14.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5952f8c1bda2a5347154450379316e6dfa4d934d62ca35f6784451e6f55074fb", size = 251558, upload-time = "2026-06-22T23:08:11.37Z" }, + { url = "https://files.pythonhosted.org/packages/8f/de/5383a6ee5a6376701fe07d980fa8e4a66c0c377fead16712720340d701a3/coverage-7.14.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8cf0f2509acb4619e2471a1951089054dd58ebea7a912066d2ea56dd4c24ca4a", size = 253134, upload-time = "2026-06-22T23:08:13.04Z" }, + { url = "https://files.pythonhosted.org/packages/01/99/09542b1a99f788e3daec7f0fadc288821e71aca9ea298d51bfa1ba79fed5/coverage-7.14.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2e41fd3aab806770008279a93879b0924b16247e09ab537c043d08bbca53b4ab", size = 251195, upload-time = "2026-06-22T23:08:14.606Z" }, + { url = "https://files.pythonhosted.org/packages/02/9d/722fe8c13f0fbb064491b9e8656e56a606286792e5068c47ca1042e773e8/coverage-7.14.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f0a47095963cfe054e0df178daca95aec21e680d6076da807c3add28dfe920f7", size = 254959, upload-time = "2026-06-22T23:08:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/fb/58/943627179ff1d82da9e54d0a5b0bb907bb19cf19515599ccd921de50b469/coverage-7.14.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:a090cbf9521e78ffdb2fcf448b72902afe9f5923ff6a12d5c0d0120200348af9", size = 250914, upload-time = "2026-06-22T23:08:18.03Z" }, + { url = "https://files.pythonhosted.org/packages/a5/d4/803efcbf9ae5567454a0c71e983589529448e2704ee0da2dc0163d482f18/coverage-7.14.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4d310baf69a4fbe8a098ce727e4808a34866ac718a6f759ae659cbd3221358bc", size = 251824, upload-time = "2026-06-22T23:08:19.704Z" }, + { url = "https://files.pythonhosted.org/packages/32/79/3f78ea9563132746eed5cecb75d2e576f9d8fec45a47242b5ae0950b82a3/coverage-7.14.3-cp311-cp311-win32.whl", hash = "sha256:74fdd718d88fe144f4579b8747873a07ec3f04cb837d5faec5a25d9e22fa31a8", size = 222594, upload-time = "2026-06-22T23:08:21.311Z" }, + { url = "https://files.pythonhosted.org/packages/85/22/9ebbc5a2ab42ac5d0eea1f48648629e1de9bbe41ec243ed6b93d55a5a53f/coverage-7.14.3-cp311-cp311-win_amd64.whl", hash = "sha256:cc96aa922e21d4bc5d5ed3c915cef27dfcbc13686f47d5e378d647fbfba655a2", size = 223073, upload-time = "2026-06-22T23:08:23.318Z" }, + { url = "https://files.pythonhosted.org/packages/71/af/69d5fcc16cb555153f99cec5467922f226be0369f7335a9506856d2a7bd0/coverage-7.14.3-cp311-cp311-win_arm64.whl", hash = "sha256:c66f9f9d4f1e9712eb9b1de5310f881d4e2188cfcba5065e1a8490f38687f2c4", size = 222617, upload-time = "2026-06-22T23:08:25.054Z" }, + { url = "https://files.pythonhosted.org/packages/bd/b0/8a911f6ffe6974dac4df95b468ab9a2899d0e59f0f99a489afeec39f00bc/coverage-7.14.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3d74ff26299c4879ce3a4d826f9d3d4d556fd285fde7bbce3c0ef5a8ab1cec24", size = 220672, upload-time = "2026-06-22T23:08:26.621Z" }, + { url = "https://files.pythonhosted.org/packages/36/16/0fc0cb52538783dbbae0934b834f5a58fd5354380ee6cad4a07b15dc845d/coverage-7.14.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:96150a9cf3468ea20f0bc5d0e21b3df8972c31480ef90fa7614b773cc6429665", size = 221035, upload-time = "2026-06-22T23:08:28.372Z" }, + { url = "https://files.pythonhosted.org/packages/77/e2/421ccfbb48335ac49e93301478cf5d623b0c2bf1c0cadd8e2b2fc6c0c710/coverage-7.14.3-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:27d07a46500ba23515b838dbcf52512026af04090755cf6cc64166d88c9b9a1a", size = 252540, upload-time = "2026-06-22T23:08:30.226Z" }, + { url = "https://files.pythonhosted.org/packages/06/c2/05b8c890097c61a7f4406b35396b997a635200ded0339eda83dfbe526c5f/coverage-7.14.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:621e13c6108234d7960aaf5762ab5c3c00f33c30c15af06dcbff0c73bf112727", size = 255274, upload-time = "2026-06-22T23:08:31.876Z" }, + { url = "https://files.pythonhosted.org/packages/dc/be/b6d9efe447f8ba3c3c854195f326bd64c54b907d936cd2fdebf8767ec72e/coverage-7.14.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4b60ca6d8af70473491a15a343cbabab2e8f9ea66a4376e81c7aa24876a6f977", size = 256389, upload-time = "2026-06-22T23:08:33.843Z" }, + { url = "https://files.pythonhosted.org/packages/d4/3c/f26e50acc429e608bc534ac06f0a3c169019c798178ec5e9de3dbc0df9c9/coverage-7.14.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c90a7cdd5e380e1ce02f19792e2ac2fbfbf177e35a27e69fd3e873b30d895c0c", size = 258648, upload-time = "2026-06-22T23:08:35.481Z" }, + { url = "https://files.pythonhosted.org/packages/9e/a2/01c1fabf816c8e1dae197e258edf878a3d3ddc86fbda34b76e5794277d8f/coverage-7.14.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5d788e5fd55347eef06ca0732c77d04a264de67e8ff24631270cdff3767a60cf", size = 252949, upload-time = "2026-06-22T23:08:37.562Z" }, + { url = "https://files.pythonhosted.org/packages/89/c6/941166dd79c31fd44a13063780ae8d552eee0089a0a0930b9bdb7df554ed/coverage-7.14.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:62c7f79db2851c95ef020e5d28b97afde3daf9f7febcd35b53e05638f729063f", size = 254310, upload-time = "2026-06-22T23:08:39.174Z" }, + { url = "https://files.pythonhosted.org/packages/10/31/80b1fd028201a961033ce95be3cd1e39e521b3762e6b4a1ac1616cb291e7/coverage-7.14.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:90f7608aeb5d9b60b523b9fb2a4ee1973867cc4865a3f26fe6c7577073b70205", size = 252453, upload-time = "2026-06-22T23:08:40.84Z" }, + { url = "https://files.pythonhosted.org/packages/5f/85/c3d9addd94c4b524f3f4af0232075f5fe7170ce99a1386edff803e5934db/coverage-7.14.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:1e3b91f9c4740aeb571ecf82e5e8d8e4ab62d34fcb5a5d4e5baa38c6f7d2857c", size = 256522, upload-time = "2026-06-22T23:08:42.494Z" }, + { url = "https://files.pythonhosted.org/packages/91/14/e5a0575f73795af3a7a9ae13dadf812e17d32422896839987dc3f86947e1/coverage-7.14.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:c946099774a7699de03cbd0ff0a64e21aed4525eed9d959adde4afe6d15758ef", size = 252023, upload-time = "2026-06-22T23:08:44.243Z" }, + { url = "https://files.pythonhosted.org/packages/38/9b/9652ee531937ce3b8a63a8896885b2b4a2d56adc30e53c9540c666286d88/coverage-7.14.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:16b206e521feb8b7133a45754643dead0538489cf8b783b90cf5f4e3299625fd", size = 253893, upload-time = "2026-06-22T23:08:46.113Z" }, + { url = "https://files.pythonhosted.org/packages/b1/05/42678841c8c38e4b08bdfc48269f5a16dfbf5806000fe6a89b4cece3c691/coverage-7.14.3-cp312-cp312-win32.whl", hash = "sha256:ea3169c7116eb6cdf7608c6c7da9ecfcb3da40688e3a510fac2d1d2bafd6dc35", size = 222734, upload-time = "2026-06-22T23:08:47.858Z" }, + { url = "https://files.pythonhosted.org/packages/df/87/07a4fcee55177a25f1b52331a8e92cf4f2c53b1a9c75ce2981fd59c684ad/coverage-7.14.3-cp312-cp312-win_amd64.whl", hash = "sha256:7ea52fc08f007bcc494d4bb3df3851e95843d881860ba38fe2c64dc100db5e7d", size = 223266, upload-time = "2026-06-22T23:08:49.494Z" }, + { url = "https://files.pythonhosted.org/packages/aa/34/2b8b66a989282ea7b370beb49f50bab29470dc30bb0b03935b6b802782f7/coverage-7.14.3-cp312-cp312-win_arm64.whl", hash = "sha256:8cec0ad652ec57790970d817490105bd917d783c2f7b38d6b58a0ca312e1a336", size = 222655, upload-time = "2026-06-22T23:08:51.766Z" }, + { url = "https://files.pythonhosted.org/packages/a9/83/7fefbf5df23ed2b7f489907564a7b34b9b07098128e12e0fdfa92626e456/coverage-7.14.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:47968988b367990ae4ab17523790c38cd125e02c6bfd379b6022be2d40bdc38c", size = 220699, upload-time = "2026-06-22T23:08:53.522Z" }, + { url = "https://files.pythonhosted.org/packages/31/e6/38c3653ff6d56d704b29241362387ca824e38e15b76fdcb7096538195790/coverage-7.14.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0ee68f5c34812780f3a7063382c0a9fcbb99985b7ddcdcaa626e4f3fb2e0783a", size = 221068, upload-time = "2026-06-22T23:08:55.571Z" }, + { url = "https://files.pythonhosted.org/packages/20/86/4f5c45d51c5cd10a128933f0fd235393c9146abbfd2ce2dfa68b3267ead3/coverage-7.14.3-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:fa9e5c6857a7e80fa22ace5cf3550ae392bbfc322f1d8dd2d2d5a8be38cec027", size = 252060, upload-time = "2026-06-22T23:08:57.464Z" }, + { url = "https://files.pythonhosted.org/packages/82/50/dfce42eff2cecabcd5a9bbad5489449c87db3415f408d23ffee417ce01f6/coverage-7.14.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:98a0859b0e98e43e1178a9402e19c8127766b14f7109a374d976e5a62c0e5c73", size = 254657, upload-time = "2026-06-22T23:08:59.453Z" }, + { url = "https://files.pythonhosted.org/packages/ba/d2/639ceb1bc8038fd0d66768278d5dc22df3391918b8278c2a21aa2602a531/coverage-7.14.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:69918344541ed9c8368566c2adc03c0e33d4550d7faa87d1b35e49b6a3286ea9", size = 255892, upload-time = "2026-06-22T23:09:01.291Z" }, + { url = "https://files.pythonhosted.org/packages/8b/96/002094a10e113512500dc1e10430a449417e17b0f90f7d496bcb820208b7/coverage-7.14.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b7f300ac92cd4b570724c8ffbbd0c130fee298d2447f41d5a3abf58976fae1de", size = 258026, upload-time = "2026-06-22T23:09:03.017Z" }, + { url = "https://files.pythonhosted.org/packages/0b/ec/286a5d2fad9c4bee59bd724feeb7d5bf8303c6c9200b51d1dd945a9c72b0/coverage-7.14.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:11a7ec9f97ab950f4c5af62229befc7faf208fdbc0116d3902d7e306cf2c5abd", size = 252285, upload-time = "2026-06-22T23:09:04.773Z" }, + { url = "https://files.pythonhosted.org/packages/d9/7d/a17753a0b12dd48d0d50f5fab079ad99d3be1eac790494d89f3a417ca0b9/coverage-7.14.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a571bd889cd36c5922ce8e42e059f9d37d02301531d11374afa4c87a578625d5", size = 254023, upload-time = "2026-06-22T23:09:06.513Z" }, + { url = "https://files.pythonhosted.org/packages/86/ef/a76c6ceba6a2c313f905310abf2701d534cada22d372db11731831e9e209/coverage-7.14.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de76caefc8deabb0dd1678b6a980be97d14c8d87e213ac194dbf8b09e96d63fb", size = 251989, upload-time = "2026-06-22T23:09:08.382Z" }, + { url = "https://files.pythonhosted.org/packages/d9/39/353013a75fec0fb49f7553519f9d52b4441e902e5178c93f38eb6c07cedb/coverage-7.14.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d20a15c622194234161535459affa8f7905830391c9ccfa060d495dbfe3a1c7f", size = 256144, upload-time = "2026-06-22T23:09:10.369Z" }, + { url = "https://files.pythonhosted.org/packages/29/0e/613878555d734def11c5b20a2701a15cb3781b9e9ea749da27c5f436e928/coverage-7.14.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:b488bd4b23397db62e7a9459129d01ff06a846582a732efd24834b24a6ada498", size = 251808, upload-time = "2026-06-22T23:09:12.057Z" }, + { url = "https://files.pythonhosted.org/packages/af/76/359c058c9cfdcf1e8b107663881225b03b364a320017eda24a2a66e55102/coverage-7.14.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6a3693b4153394d265f44fb855fdc80e72403024d4d6f91c4871b334d028e4e0", size = 253579, upload-time = "2026-06-22T23:09:13.858Z" }, + { url = "https://files.pythonhosted.org/packages/1d/d9/4ba2f060933a30ebe363cef9f67a365b0a317e580c0d5d9169d56a73ef1c/coverage-7.14.3-cp313-cp313-win32.whl", hash = "sha256:338b19131ab1a6b767b462bfcbaa692e7ae22f24463e39d49b02a83410ff6b37", size = 222741, upload-time = "2026-06-22T23:09:15.636Z" }, + { url = "https://files.pythonhosted.org/packages/76/e8/196ebc25d8f34c06d43a6e9c8513c9266ef8dbf3b5672beb1a00cf5e29fa/coverage-7.14.3-cp313-cp313-win_amd64.whl", hash = "sha256:b3d77f7f196abdef7e01415de1bce09f216189e83e58159cfeef2b92d0464994", size = 223283, upload-time = "2026-06-22T23:09:17.478Z" }, + { url = "https://files.pythonhosted.org/packages/7c/af/51d2aac6417523a286f10fb25f09eb9518a84df9f1151e93ff6871f34849/coverage-7.14.3-cp313-cp313-win_arm64.whl", hash = "sha256:e6230e688c7c3e65cedd41a774eb4ec221adc6bfee13768231015b702d5e4150", size = 222678, upload-time = "2026-06-22T23:09:19.7Z" }, + { url = "https://files.pythonhosted.org/packages/61/56/14e3b97facbfa1304dd19e676e26599ad359f04714bed32f7f1c5a88efdc/coverage-7.14.3-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:605ab2b566a22bd94834529d66d295c364aba84afd3e5498285c7a524017b1fc", size = 220741, upload-time = "2026-06-22T23:09:21.616Z" }, + { url = "https://files.pythonhosted.org/packages/12/1d/db378b5cca433b90b893f26dab728b280ddd89f272a1fdfed4aeaa05c686/coverage-7.14.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a3c2134809e80fac091bfed18a6991b5a5eb5df5ae32b17ac4f4f99864b73dd7", size = 221068, upload-time = "2026-06-22T23:09:23.452Z" }, + { url = "https://files.pythonhosted.org/packages/47/f0/3f8421b20d9c4fcd39be9a8ca3c3fda8bc204b44efbd09fede153afd3e2f/coverage-7.14.3-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c02efd507227bde9969cab0db8f48890eb3b5dcad6afac57a4792df4133543ce", size = 252117, upload-time = "2026-06-22T23:09:25.458Z" }, + { url = "https://files.pythonhosted.org/packages/27/ca/59ea35fb99743549ec8b37eff141ece4431fea590c89e536ed8032ef45cf/coverage-7.14.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:1bb93c2aa61d2a5b38f1526546d95cf4132cb681e541a337bf8dfd092be816e5", size = 254622, upload-time = "2026-06-22T23:09:27.523Z" }, + { url = "https://files.pythonhosted.org/packages/c8/25/ec6de51ae7493b92a1cf74d1b763121c29636759167e2a593ba4db5881e4/coverage-7.14.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f502e948e03e866538048bba081c075caaa62e5bda6ea5b7432e45f587eb462a", size = 255968, upload-time = "2026-06-22T23:09:29.43Z" }, + { url = "https://files.pythonhosted.org/packages/5d/05/c8bfc77823f42b4664fb25842f13b567022f6f84a4c83c8ecbb16734b7cb/coverage-7.14.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9973ef2463f8e6cfb61a6324126bb3e17d67a85f22f58d856e583ea2e3ca6501", size = 258284, upload-time = "2026-06-22T23:09:31.397Z" }, + { url = "https://files.pythonhosted.org/packages/f6/15/1d1b242027124a32b26ef01f82018b8c4ef34ef174aa6aeba7b1eeef48e8/coverage-7.14.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9be4e7d4c5ca0427889f8f9d614bd630c2be741b1de7699bca3b2b6c0e41003e", size = 252143, upload-time = "2026-06-22T23:09:33.256Z" }, + { url = "https://files.pythonhosted.org/packages/74/b6/d2a9842fd2a5d7d27f1ac851c043a734a494ad75402c5331db3da79ed691/coverage-7.14.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a574912f3bde4b0619f6e97d01aa590b70998859244793769eb3a6df78ee56d3", size = 253976, upload-time = "2026-06-22T23:09:35.351Z" }, + { url = "https://files.pythonhosted.org/packages/fd/30/e1600ddf7e226db5558bb5323d2186fff00f505c4b764643ec89ce5d8175/coverage-7.14.3-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:e343fb086c9cd780b38622fea7c369acd64c1a0724312149b5d769c387a2b1f5", size = 251942, upload-time = "2026-06-22T23:09:37.313Z" }, + { url = "https://files.pythonhosted.org/packages/d9/2c/9159de64f9dd648e324328d588a44cfab1e331eb5259ce1141afe2a92dfb/coverage-7.14.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:3c68df8e61f1e09633fefc7538297145623957a048534368c9d212782aa5e845", size = 256220, upload-time = "2026-06-22T23:09:39.165Z" }, + { url = "https://files.pythonhosted.org/packages/91/67/b7f536cc2c124f48e91b22fbb741d2261f4e3d310faf6f76007f47566e5d/coverage-7.14.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:3e5b550a128419373c2f6cec28a244207013ef15f5cbcff6a5ca09d1dfaaf027", size = 251756, upload-time = "2026-06-22T23:09:41.056Z" }, + { url = "https://files.pythonhosted.org/packages/dd/ec/f3718038e2d4860c715a55428377ca7f6c75872caf98cabd982e1d76967d/coverage-7.14.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2bfc4dd0a912329eccc7484a7d0b2a38032b38c40663b1e1ac595f10c457954b", size = 253413, upload-time = "2026-06-22T23:09:43.306Z" }, + { url = "https://files.pythonhosted.org/packages/b8/a5/91f11efeef89b3cc9b30461128db15b0511ef813ab889a7b7ab636b3a497/coverage-7.14.3-cp314-cp314-win32.whl", hash = "sha256:0423d64c013057a06e70f070f073cec4b0cbc7d2b27f3c7007292f2ff1d52965", size = 222946, upload-time = "2026-06-22T23:09:45.261Z" }, + { url = "https://files.pythonhosted.org/packages/58/fd/98ac9f524d9ec378de831c034dbdeb544ca7ef7d2d9c9996daf232a037fd/coverage-7.14.3-cp314-cp314-win_amd64.whl", hash = "sha256:92c22e19ce64ca3f2ad751f16f14df1468b4c231bd6af97185063a9c292a0cb3", size = 223436, upload-time = "2026-06-22T23:09:47.177Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a0/7cd612d650a772a0ae80144443406bf61981c896c3d57c9e6e79fb2cdbd1/coverage-7.14.3-cp314-cp314-win_arm64.whl", hash = "sha256:41de778bd41780586e2b04912079c73089ab5d839624e28db3bdb26de638da92", size = 222861, upload-time = "2026-06-22T23:09:49.384Z" }, + { url = "https://files.pythonhosted.org/packages/55/57/017353fab573779c0d00448e47d102edd36c792f7b6f233a4d89a7a08384/coverage-7.14.3-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:8427f370ca67db4c975d2a26acfc0e5783ca0b52444dbc50278ace0f35445949", size = 221474, upload-time = "2026-06-22T23:09:51.417Z" }, + { url = "https://files.pythonhosted.org/packages/69/92/90cf1f1a5c468a9c1b7ba2716e0e205293ad9b02f5f573a6de4318b15ba1/coverage-7.14.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d8e88f335544a47e22ae2e45b344772925ec65166555c958720d5ed971880891", size = 221738, upload-time = "2026-06-22T23:09:53.487Z" }, + { url = "https://files.pythonhosted.org/packages/a4/c0/4df964fa539f8399fd7679c09c472d73744de334686fd3f01e3a2465ce4e/coverage-7.14.3-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:beaab199b9e5ceaf5a225e16a9d4df136f2a1eae0a5c20de1e277c8a5225f388", size = 263101, upload-time = "2026-06-22T23:09:55.895Z" }, + { url = "https://files.pythonhosted.org/packages/06/76/e5d33b2576ae3bf2be2058cd1cae57774b61e400f2c3c58f3783dc2ffb4a/coverage-7.14.3-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b3ff255799f5a1676c71c1c32ec01fd043aa09d57b3d95764b24992757184784", size = 265225, upload-time = "2026-06-22T23:09:57.904Z" }, + { url = "https://files.pythonhosted.org/packages/61/d2/e52419afe391a39ba27fdefaf0737d8e34bf03faef6ab3b3006545bbd0d0/coverage-7.14.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:878832eaac515b62decfa76965aed558775f86bf1fc8cca76993c0c84ae31aed", size = 267643, upload-time = "2026-06-22T23:09:59.938Z" }, + { url = "https://files.pythonhosted.org/packages/58/7a/f2625d8d5006b6b20fba5afaef00b24a763fe96476ea798a3076cbc1f84e/coverage-7.14.3-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:611e62cb9386096d81b63e0a05330750268617231e7bd598e1fe77482a2c58a5", size = 268762, upload-time = "2026-06-22T23:10:01.943Z" }, + { url = "https://files.pythonhosted.org/packages/7d/bf/908024006bba57127354d74e938954b9c3cd765cc2e0412dc9c37b415cda/coverage-7.14.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:02c41de2a88011b893050fc9830267d927a50a215f7ad5ec17349db7090ccf26", size = 262208, upload-time = "2026-06-22T23:10:03.954Z" }, + { url = "https://files.pythonhosted.org/packages/34/a0/d4f9296441b909817442fdb26bd77a698f08272ec683a7394b00eb2e47a0/coverage-7.14.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:526ce9721116af23b1065089f0b75046fe521e7772ab94b641cd66b7a0421889", size = 265096, upload-time = "2026-06-22T23:10:05.936Z" }, + { url = "https://files.pythonhosted.org/packages/e8/da/4ae4f3f4e477b56a4ce1e5c48a35eff38a94b50130ce5bdc897024741cfc/coverage-7.14.3-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e4ed44705ca4bead6fc977a8b741f2145608289b33c8a9b42a95d0f15aedbf4d", size = 262699, upload-time = "2026-06-22T23:10:07.973Z" }, + { url = "https://files.pythonhosted.org/packages/d8/7a/6927148073ff32856d78baa77b4ddc07a9be7e90020f9db0661c4ca523a1/coverage-7.14.3-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:2415902f385a23dcc4ccd26e0ba803249a169af6a930c003a4c715eeb9a5444e", size = 266433, upload-time = "2026-06-22T23:10:10.145Z" }, + { url = "https://files.pythonhosted.org/packages/f7/a7/774f658dbe9c4c3f5daa86a87e0459ac3832e4e3cc67affe078547f727b9/coverage-7.14.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:b75ee850fc2d7c831e883220c445b035f2224de2ba6103f1e56dbd237ab913f7", size = 261547, upload-time = "2026-06-22T23:10:12.191Z" }, + { url = "https://files.pythonhosted.org/packages/3d/14/a0c18c0376c43cbf973f43ef6ca20019c950597180e6396232f7b6a27102/coverage-7.14.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:dc9b4e35e7c3920e925ba7f14886fd5fbe481232754624e832ddba66c7535635", size = 263859, upload-time = "2026-06-22T23:10:14.492Z" }, + { url = "https://files.pythonhosted.org/packages/10/ac/43a3d0f460af524b131a6191805bc5d18b806ab4e828fbf82e8c8c3af446/coverage-7.14.3-cp314-cp314t-win32.whl", hash = "sha256:7b27c822a8161afbe48e99f1adfb098d270ae7e0f7d7b0555ce110529bdb69cc", size = 223250, upload-time = "2026-06-22T23:10:16.758Z" }, + { url = "https://files.pythonhosted.org/packages/3f/5f/d5e5c56b0712e96ce8f69fe7dbf229ff938b437bc50862743c8a0d2cea84/coverage-7.14.3-cp314-cp314t-win_amd64.whl", hash = "sha256:39e1dbbb6ff2c338e0196a482558a792a1de3aa64261196f5cdb3da016ad9cda", size = 224082, upload-time = "2026-06-22T23:10:19.23Z" }, + { url = "https://files.pythonhosted.org/packages/62/35/947cbd5be1d3bcbbdc43d6791de8a56c6501903311d42915ae06a82815f0/coverage-7.14.3-cp314-cp314t-win_arm64.whl", hash = "sha256:68520c90babfa2d560eca6d497921ed3a4f469623bd709733124491b2aa8ef3f", size = 223400, upload-time = "2026-06-22T23:10:21.24Z" }, + { url = "https://files.pythonhosted.org/packages/eb/e3/a0aa32bfa3a081951f60a23bc0e7b512891ef0eecda1153cf1d8ba36c6b1/coverage-7.14.3-py3-none-any.whl", hash = "sha256:fb7e18afb6e903c1a92401a2f0501ac277dca527bb9ca6fe1f691a8a0026a0e8", size = 212469, upload-time = "2026-06-22T23:10:23.405Z" }, ] [[package]] name = "cryptography" -version = "47.0.0" +version = "49.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ef/b2/7ffa7fe8207a8c42147ffe70c3e360b228160c1d85dc3faff16aaa3244c0/cryptography-47.0.0.tar.gz", hash = "sha256:9f8e55fe4e63613a5e1cc5819030f27b97742d720203a087802ce4ce9ceb52bb", size = 830863, upload-time = "2026-04-24T19:54:57.056Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/98/40dfe932134bdcae4f6ab5927c87488754bf9eb79297d7e0070b78dd58e9/cryptography-47.0.0-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:160ad728f128972d362e714054f6ba0067cab7fb350c5202a9ae8ae4ce3ef1a0", size = 7912214, upload-time = "2026-04-24T19:53:03.864Z" }, - { url = "https://files.pythonhosted.org/packages/34/c6/2733531243fba725f58611b918056b277692f1033373dcc8bd01af1c05d4/cryptography-47.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b9a8943e359b7615db1a3ba587994618e094ff3d6fa5a390c73d079ce18b3973", size = 4644617, upload-time = "2026-04-24T19:53:06.909Z" }, - { url = "https://files.pythonhosted.org/packages/00/e3/b27be1a670a9b87f855d211cf0e1174a5d721216b7616bd52d8581d912ed/cryptography-47.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f5c15764f261394b22aef6b00252f5195f46f2ca300bec57149474e2538b31f8", size = 4668186, upload-time = "2026-04-24T19:53:09.053Z" }, - { url = "https://files.pythonhosted.org/packages/81/b9/8443cfe5d17d482d348cee7048acf502bb89a51b6382f06240fd290d4ca3/cryptography-47.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:9c59ab0e0fa3a180a5a9c59f3a5abe3ef90d474bc56d7fadfbe80359491b615b", size = 4651244, upload-time = "2026-04-24T19:53:11.217Z" }, - { url = "https://files.pythonhosted.org/packages/5d/5e/13ed0cdd0eb88ba159d6dd5ebfece8cb901dbcf1ae5ac4072e28b55d3153/cryptography-47.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:34b4358b925a5ea3e14384ca781a2c0ef7ac219b57bb9eacc4457078e2b19f92", size = 5252906, upload-time = "2026-04-24T19:53:13.532Z" }, - { url = "https://files.pythonhosted.org/packages/64/16/ed058e1df0f33d440217cd120d41d5dda9dd215a80b8187f68483185af82/cryptography-47.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:0024b87d47ae2399165a6bfb20d24888881eeab83ae2566d62467c5ff0030ce7", size = 4701842, upload-time = "2026-04-24T19:53:15.618Z" }, - { url = "https://files.pythonhosted.org/packages/02/e0/3d30986b30fdbd9e969abbdf8ba00ed0618615144341faeb57f395a084fe/cryptography-47.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:1e47422b5557bb82d3fff997e8d92cff4e28b9789576984f08c248d2b3535d93", size = 4289313, upload-time = "2026-04-24T19:53:17.755Z" }, - { url = "https://files.pythonhosted.org/packages/df/fd/32db38e3ad0cb331f0691cb4c7a8a6f176f679124dee746b3af6633db4d9/cryptography-47.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:6f29f36582e6151d9686235e586dd35bb67491f024767d10b842e520dc6a07ac", size = 4650964, upload-time = "2026-04-24T19:53:20.062Z" }, - { url = "https://files.pythonhosted.org/packages/86/53/5395d944dfd48cb1f67917f533c609c34347185ef15eb4308024c876f274/cryptography-47.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:a9b761f012a943b7de0e828843c5688d0de94a0578d44d6c85a1bae32f87791f", size = 5207817, upload-time = "2026-04-24T19:53:22.498Z" }, - { url = "https://files.pythonhosted.org/packages/34/4f/e5711b28e1901f7d480a2b1b688b645aa4c77c73f10731ed17e7f7db3f0d/cryptography-47.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:4e1de79e047e25d6e9f8cea71c86b4a53aced64134f0f003bbcbf3655fd172c8", size = 4701544, upload-time = "2026-04-24T19:53:24.356Z" }, - { url = "https://files.pythonhosted.org/packages/22/22/c8ddc25de3010fc8da447648f5a092c40e7a8fadf01dd6d255d9c0b9373d/cryptography-47.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ef6b3634087f18d2155b1e8ce264e5345a753da2c5fa9815e7d41315c90f8318", size = 4783536, upload-time = "2026-04-24T19:53:26.665Z" }, - { url = "https://files.pythonhosted.org/packages/66/b6/d4a68f4ea999c6d89e8498579cba1c5fcba4276284de7773b17e4fa69293/cryptography-47.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:11dbb9f50a0f1bb9757b3d8c27c1101780efb8f0bdecfb12439c22a74d64c001", size = 4926106, upload-time = "2026-04-24T19:53:28.686Z" }, - { url = "https://files.pythonhosted.org/packages/54/ed/5f524db1fade9c013aa618e1c99c6ed05e8ffc9ceee6cda22fed22dda3f4/cryptography-47.0.0-cp311-abi3-win32.whl", hash = "sha256:7fda2f02c9015db3f42bb8a22324a454516ed10a8c29ca6ece6cdbb5efe2a203", size = 3258581, upload-time = "2026-04-24T19:53:31.058Z" }, - { url = "https://files.pythonhosted.org/packages/b2/dc/1b901990b174786569029f67542b3edf72ac068b6c3c8683c17e6a2f5363/cryptography-47.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:f5c3296dab66202f1b18a91fa266be93d6aa0c2806ea3d67762c69f60adc71aa", size = 3775309, upload-time = "2026-04-24T19:53:33.054Z" }, - { url = "https://files.pythonhosted.org/packages/14/88/7aa18ad9c11bc87689affa5ce4368d884b517502d75739d475fc6f4a03c7/cryptography-47.0.0-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:be12cb6a204f77ed968bcefe68086eb061695b540a3dd05edac507a3111b25f0", size = 7904299, upload-time = "2026-04-24T19:53:35.003Z" }, - { url = "https://files.pythonhosted.org/packages/07/55/c18f75724544872f234678fdedc871391722cb34a2aee19faa9f63100bb2/cryptography-47.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2ebd84adf0728c039a3be2700289378e1c164afc6748df1a5ed456767bef9ba7", size = 4631180, upload-time = "2026-04-24T19:53:37.517Z" }, - { url = "https://files.pythonhosted.org/packages/ee/65/31a5cc0eaca99cec5bafffe155d407115d96136bb161e8b49e0ef73f09a7/cryptography-47.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f68d6fbc7fbbcfb0939fea72c3b96a9f9a6edfc0e1b1d29778a2066030418b1", size = 4653529, upload-time = "2026-04-24T19:53:39.775Z" }, - { url = "https://files.pythonhosted.org/packages/e5/bc/641c0519a495f3bfd0421b48d7cd325c4336578523ccd76ea322b6c29c7a/cryptography-47.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:6651d32eff255423503aa276739da98c30f26c40cbeffcc6048e0d54ef704c0c", size = 4638570, upload-time = "2026-04-24T19:53:42.129Z" }, - { url = "https://files.pythonhosted.org/packages/2b/f2/300327b0a47f6dc94dd8b71b57052aefe178bb51745073d73d80604f11ab/cryptography-47.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:3fb8fa48075fad7193f2e5496135c6a76ac4b2aa5a38433df0a539296b377829", size = 5238019, upload-time = "2026-04-24T19:53:44.577Z" }, - { url = "https://files.pythonhosted.org/packages/e9/5a/5b5cf994391d4bf9d9c7efd4c66aabe4d95227256627f8fea6cff7dfadbd/cryptography-47.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:11438c7518132d95f354fa01a4aa2f806d172a061a7bed18cf18cbdacdb204d7", size = 4686832, upload-time = "2026-04-24T19:53:47.015Z" }, - { url = "https://files.pythonhosted.org/packages/dc/2c/ae950e28fd6475c852fc21a44db3e6b5bcc1261d1e370f2b6e42fa800fef/cryptography-47.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:8c1a736bbb3288005796c3f7ccb9453360d7fed483b13b9f468aea5171432923", size = 4269301, upload-time = "2026-04-24T19:53:48.97Z" }, - { url = "https://files.pythonhosted.org/packages/67/fb/6a39782e150ffe5cc1b0018cb6ddc48bf7ca62b498d7539ffc8a758e977d/cryptography-47.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:f1557695e5c2b86e204f6ce9470497848634100787935ab7adc5397c54abd7ab", size = 4638110, upload-time = "2026-04-24T19:53:51.011Z" }, - { url = "https://files.pythonhosted.org/packages/8e/d7/0b3c71090a76e5c203164a47688b697635ece006dcd2499ab3a4dbd3f0bd/cryptography-47.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:f9a034b642b960767fb343766ae5ba6ad653f2e890ddd82955aef288ffea8736", size = 5194988, upload-time = "2026-04-24T19:53:52.962Z" }, - { url = "https://files.pythonhosted.org/packages/63/33/63a961498a9df51721ab578c5a2622661411fc520e00bd83b0cc64eb20c4/cryptography-47.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:b1c76fca783aa7698eb21eb14f9c4aa09452248ee54a627d125025a43f83e7a7", size = 4686563, upload-time = "2026-04-24T19:53:55.274Z" }, - { url = "https://files.pythonhosted.org/packages/b7/bf/5ee5b145248f92250de86145d1c1d6edebbd57a7fe7caa4dedb5d4cf06a1/cryptography-47.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:4f7722c97826770bab8ae92959a2e7b20a5e9e9bf4deae68fd86c3ca457bab52", size = 4770094, upload-time = "2026-04-24T19:53:57.753Z" }, - { url = "https://files.pythonhosted.org/packages/92/43/21d220b2da5d517773894dacdcdb5c682c28d3fffce65548cb06e87d5501/cryptography-47.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:09f6d7bf6724f8db8b32f11eccf23efc8e759924bc5603800335cf8859a3ddbd", size = 4913811, upload-time = "2026-04-24T19:54:00.236Z" }, - { url = "https://files.pythonhosted.org/packages/31/98/dc4ad376ac5f1a1a7d4a83f7b0c6f2bcad36b5d2d8f30aeb482d3a7d9582/cryptography-47.0.0-cp314-cp314t-win32.whl", hash = "sha256:6eebcaf0df1d21ce1f90605c9b432dd2c4f4ab665ac29a40d5e3fc68f51b5e63", size = 3237158, upload-time = "2026-04-24T19:54:02.606Z" }, - { url = "https://files.pythonhosted.org/packages/bc/da/97f62d18306b5133468bc3f8cc73a3111e8cdc8cf8d3e69474d6e5fd2d1b/cryptography-47.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:51c9313e90bd1690ec5a75ed047c27c0b8e6c570029712943d6116ef9a90620b", size = 3758706, upload-time = "2026-04-24T19:54:04.433Z" }, - { url = "https://files.pythonhosted.org/packages/e0/34/a4fae8ae7c3bc227460c9ae43f56abf1b911da0ec29e0ebac53bb0a4b6b7/cryptography-47.0.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:14432c8a9bcb37009784f9594a62fae211a2ae9543e96c92b2a8e4c3cd5cd0c4", size = 7904072, upload-time = "2026-04-24T19:54:06.411Z" }, - { url = "https://files.pythonhosted.org/packages/01/64/d7b1e54fdb69f22d24a64bb3e88dc718b31c7fb10ef0b9691a3cf7eeea6e/cryptography-47.0.0-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:07efe86201817e7d3c18781ca9770bc0db04e1e48c994be384e4602bc38f8f27", size = 4635767, upload-time = "2026-04-24T19:54:08.519Z" }, - { url = "https://files.pythonhosted.org/packages/8b/7b/cca826391fb2a94efdcdfe4631eb69306ee1cff0b22f664a412c90713877/cryptography-47.0.0-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2b45761c6ec22b7c726d6a829558777e32d0f1c8be7c3f3480f9c912d5ee8a10", size = 4654350, upload-time = "2026-04-24T19:54:10.795Z" }, - { url = "https://files.pythonhosted.org/packages/4c/65/4b57bcc823f42a991627c51c2f68c9fd6eb1393c1756aac876cba2accae2/cryptography-47.0.0-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:edd4da498015da5b9f26d38d3bfc2e90257bfa9cbed1f6767c282a0025ae649b", size = 4643394, upload-time = "2026-04-24T19:54:13.275Z" }, - { url = "https://files.pythonhosted.org/packages/f4/c4/2c5fbeea70adbbca2bbae865e1d605d6a4a7f8dbd9d33eaf69645087f06c/cryptography-47.0.0-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:9af828c0d5a65c70ec729cd7495a4bf1a67ecb66417b8f02ff125ab8a6326a74", size = 5225777, upload-time = "2026-04-24T19:54:15.18Z" }, - { url = "https://files.pythonhosted.org/packages/7e/b8/ac57107ef32749d2b244e36069bb688792a363aaaa3acc9e3cf84c130315/cryptography-47.0.0-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:256d07c78a04d6b276f5df935a9923275f53bd1522f214447fdf365494e2d515", size = 4688771, upload-time = "2026-04-24T19:54:17.835Z" }, - { url = "https://files.pythonhosted.org/packages/56/fc/9f1de22ff8be99d991f240a46863c52d475404c408886c5a38d2b5c3bb26/cryptography-47.0.0-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:5d0e362ff51041b0c0d219cc7d6924d7b8996f57ce5712bdcef71eb3c65a59cc", size = 4270753, upload-time = "2026-04-24T19:54:19.963Z" }, - { url = "https://files.pythonhosted.org/packages/00/68/d70c852797aa68e8e48d12e5a87170c43f67bb4a59403627259dd57d15de/cryptography-47.0.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:1581aef4219f7ca2849d0250edaa3866212fb74bf5667284f46aa92f9e65c1ca", size = 4642911, upload-time = "2026-04-24T19:54:21.818Z" }, - { url = "https://files.pythonhosted.org/packages/a5/51/661cbee74f594c5d97ff82d34f10d5551c085ca4668645f4606ebd22bd5d/cryptography-47.0.0-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:a49a3eb5341b9503fa3000a9a0db033161db90d47285291f53c2a9d2cd1b7f76", size = 5181411, upload-time = "2026-04-24T19:54:24.376Z" }, - { url = "https://files.pythonhosted.org/packages/94/87/f2b6c374a82cf076cfa1416992ac8e8ec94d79facc37aec87c1a5cb72352/cryptography-47.0.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:2207a498b03275d0051589e326b79d4cf59985c99031b05bb292ac52631c37fe", size = 4688262, upload-time = "2026-04-24T19:54:26.946Z" }, - { url = "https://files.pythonhosted.org/packages/14/e2/8b7462f4acf21ec509616f0245018bb197194ab0b65c2ea21a0bdd53c0eb/cryptography-47.0.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:7a02675e2fabd0c0fc04c868b8781863cbf1967691543c22f5470500ff840b31", size = 4775506, upload-time = "2026-04-24T19:54:28.926Z" }, - { url = "https://files.pythonhosted.org/packages/70/75/158e494e4c08dc05e039da5bb48553826bd26c23930cf8d3cd5f21fa8921/cryptography-47.0.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:80887c5cbd1774683cb126f0ab4184567f080071d5acf62205acb354b4b753b7", size = 4912060, upload-time = "2026-04-24T19:54:30.869Z" }, - { url = "https://files.pythonhosted.org/packages/06/bd/0a9d3edbf5eadbac926d7b9b3cd0c4be584eeeae4a003d24d9eda4affbbd/cryptography-47.0.0-cp38-abi3-win32.whl", hash = "sha256:ed67ea4e0cfb5faa5bc7ecb6e2b8838f3807a03758eec239d6c21c8769355310", size = 3248487, upload-time = "2026-04-24T19:54:33.494Z" }, - { url = "https://files.pythonhosted.org/packages/60/80/5681af756d0da3a599b7bdb586fac5a1540f1bcefd2717a20e611ddade45/cryptography-47.0.0-cp38-abi3-win_amd64.whl", hash = "sha256:835d2d7f47cdc53b3224e90810fb1d36ca94ea29cc1801fb4c1bc43876735769", size = 3755737, upload-time = "2026-04-24T19:54:35.408Z" }, - { url = "https://files.pythonhosted.org/packages/1b/a0/928c9ce0d120a40a81aa99e3ba383e87337b9ac9ef9f6db02e4d7822424d/cryptography-47.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f1207974a904e005f762869996cf620e9bf79ecb4622f148550bb48e0eb35a7", size = 3909893, upload-time = "2026-04-24T19:54:38.334Z" }, - { url = "https://files.pythonhosted.org/packages/81/75/d691e284750df5d9569f2b1ce4a00a71e1d79566da83b2b3e5549c84917f/cryptography-47.0.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:1a405c08857258c11016777e11c02bacbe7ef596faf259305d282272a3a05cbe", size = 4587867, upload-time = "2026-04-24T19:54:40.619Z" }, - { url = "https://files.pythonhosted.org/packages/07/d6/1b90f1a4e453009730b4545286f0b39bb348d805c11181fc31544e4f9a65/cryptography-47.0.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:20fdbe3e38fb67c385d233c89371fa27f9909f6ebca1cecc20c13518dae65475", size = 4627192, upload-time = "2026-04-24T19:54:42.849Z" }, - { url = "https://files.pythonhosted.org/packages/dc/53/cb358a80e9e359529f496870dd08c102aa8a4b5b9f9064f00f0d6ed5b527/cryptography-47.0.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:f7db373287273d8af1414cf95dc4118b13ffdc62be521997b0f2b270771fef50", size = 4587486, upload-time = "2026-04-24T19:54:44.908Z" }, - { url = "https://files.pythonhosted.org/packages/8b/57/aaa3d53876467a226f9a7a82fd14dd48058ad2de1948493442dfa16e2ffd/cryptography-47.0.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:9fe6b7c64926c765f9dff301f9c1b867febcda5768868ca084e18589113732ab", size = 4626327, upload-time = "2026-04-24T19:54:47.813Z" }, - { url = "https://files.pythonhosted.org/packages/ab/9c/51f28c3550276bcf35660703ba0ab829a90b88be8cd98a71ef23c2413913/cryptography-47.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:cffbba3392df0fa8629bb7f43454ee2925059ee158e23c54620b9063912b86c8", size = 3698916, upload-time = "2026-04-24T19:54:49.782Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz", hash = "sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493", size = 854345, upload-time = "2026-06-12T20:02:30.512Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/22/adf66990e63584a68dfb50c24f48a125c07b1699899381c8151e63ed458c/cryptography-49.0.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:966fe0e9c67490071f14c0d2b1cb2dfb3023c5ce39457343931415f08382f2db", size = 4032100, upload-time = "2026-06-12T20:02:32.143Z" }, + { url = "https://files.pythonhosted.org/packages/09/41/3797cfaf69cae04a13ee78ebd83f0678d9c02b4779d21ce24445326f1a69/cryptography-49.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:36d1709f992593689b45bda411498d62c6e365f2ca00b84657d4dadd24de16db", size = 4692978, upload-time = "2026-06-12T20:01:21.305Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8b/43011f7ebe515a8aa20d61f290a326cd890c2e738e16e59eaff8d9c3a412/cryptography-49.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0e959b578856a3924bc0cbb710fc12c387b9412a951389f3ca61704a9e25f325", size = 4716422, upload-time = "2026-06-12T20:01:48.566Z" }, + { url = "https://files.pythonhosted.org/packages/4a/91/01ce7303a4579e6d3a6abef01bd322848e9ea7a219adcabc5048b9033571/cryptography-49.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:53ecee2e23f7169b6117e99fc8a944e5e50f79e69758a83b52a00cb98ab2b2d2", size = 4700503, upload-time = "2026-06-12T20:02:47.091Z" }, + { url = "https://files.pythonhosted.org/packages/62/99/a2c95cf8293f07491e9e27c20cc4dcd18176d944e674679adeb1d0173fd6/cryptography-49.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:2eda353d8a27bcbcaa4cbed18994a74ab4d19a2ca897db188ea269ab9b71419b", size = 5309779, upload-time = "2026-06-12T20:02:08.987Z" }, + { url = "https://files.pythonhosted.org/packages/20/2c/0622f20ff02b2ef32558733443805dc82fd4c275be01b2d19d14676f3a1b/cryptography-49.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2afe9051da7ae7bd5905da5a949280c7d2bb75682e188f650a9d0f2756b834c6", size = 4749683, upload-time = "2026-06-12T20:02:03.335Z" }, + { url = "https://files.pythonhosted.org/packages/a3/5b/c5246635d5fd3b64e0d45ae10e99fd32fe9676a79915ccfe5a61ba9af1a5/cryptography-49.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:0b82e28ee398a386f0807bba7884d30f25218855690f45115831bcce5d90822c", size = 4337874, upload-time = "2026-06-12T20:02:54.323Z" }, + { url = "https://files.pythonhosted.org/packages/6d/88/05563c7fe2e914e87d1a536d06fe83e66b4e1d95cb593e05aea375531da8/cryptography-49.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ccac2bfebc306b862133e3bb71f3f6ee8bb525240089b2d952e4144b3a6d5da7", size = 4700283, upload-time = "2026-06-12T20:01:34.822Z" }, + { url = "https://files.pythonhosted.org/packages/c4/b6/d7696e4e890d6ae1469935164c9e5215c557671cb78d6e3f458ccceaa632/cryptography-49.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:d0527ce944105f257f605a827d6ebead966c752038b6e8656abb9c5edee6fc68", size = 5265844, upload-time = "2026-06-12T20:01:24.09Z" }, + { url = "https://files.pythonhosted.org/packages/a9/3c/f3ad17eecc1a57b0ba236dc01f90e783c51f4a2f35f64777cc4f47a184b2/cryptography-49.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:cbc77da8c523d5abd028635ba850a6966fcee2c82e2bf65a41d1d8afe0f98be9", size = 4749290, upload-time = "2026-06-12T20:01:30.848Z" }, + { url = "https://files.pythonhosted.org/packages/4f/01/339573cf1023163a400b0b5d16f6d507de413b9f60be6fd1b77feeaf6737/cryptography-49.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b87e65d263b3e5d3bb92a57e2a6638e2f31110fa7aa890c7b2dbba42248d0a3f", size = 4834612, upload-time = "2026-06-12T20:01:29.246Z" }, + { url = "https://files.pythonhosted.org/packages/71/fd/577302e213a1be9468f92d1afef66fcf1ef83d516819d9992ca547f592bd/cryptography-49.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:66ec79c3904820572d7e987abdf304281f141d37ad9a489b8e97066e7b9b6459", size = 4980804, upload-time = "2026-06-12T20:01:42.853Z" }, + { url = "https://files.pythonhosted.org/packages/1f/09/f42b1d190c5ba75f72062a387f8030d1d75f6ab035788f1d9c4b01de6525/cryptography-49.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:e5dfc1e64de5677cec922ffa8da89c546d0415bf6efdf081842e5d44c84e1f0e", size = 3810026, upload-time = "2026-06-12T20:02:39.262Z" }, + { url = "https://files.pythonhosted.org/packages/ec/9e/db72b3ae7fc9cfad53e630e56c6ae83b9b6ff0bf3718ffb8012d20b3aabf/cryptography-49.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:73a205dce83953d131a4aa1e0fd917a2fd1c5b1eef251e9d7152efefcbf5caf7", size = 4013892, upload-time = "2026-06-12T20:02:10.735Z" }, + { url = "https://files.pythonhosted.org/packages/86/12/c48a424f38db03027be9f7ed5c7dc5de9933dbee992865f98b13727a009d/cryptography-49.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:196ecd6a36e4e9aa10270393bb98d8df88fccee0bf1e5128b91ae4eb4375896d", size = 4678835, upload-time = "2026-06-12T20:02:48.743Z" }, + { url = "https://files.pythonhosted.org/packages/68/28/8a3ad4653662c93fc44dc4e5d8fd374c25c42e07b34bbfbadf49cf57a5a8/cryptography-49.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7abcee80084cda3f7691f3eb1ce480d8df49cec637b429aa35986c1de71738aa", size = 4697239, upload-time = "2026-06-12T20:02:56.03Z" }, + { url = "https://files.pythonhosted.org/packages/a8/b2/2193fc74f81aee4f9b62733133b73b5176718932ed8f2e4b03fa040480a6/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:4ae387c9cb68ea569ca17e490d66d8142b81c3cc814bf179974b7d146e490bbb", size = 4685593, upload-time = "2026-06-12T20:02:50.666Z" }, + { url = "https://files.pythonhosted.org/packages/47/f1/1d3eaa243bfc5de4a187b22aa8c048b3e4980bfbe830ac46e6bac2e66947/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:f37d847238971164fdbc68ade6f6574aecc9c0af714190e2083429ff68f4ce9d", size = 5289961, upload-time = "2026-06-12T20:01:46.468Z" }, + { url = "https://files.pythonhosted.org/packages/58/39/2d51306721330c486495853eda1c567880ff036de15a14c4b74f399934af/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:c2bc30226390d60ea19d9f82b19db005fe0452154a23c1c410c12ea801e43561", size = 4731145, upload-time = "2026-06-12T20:02:16.832Z" }, + { url = "https://files.pythonhosted.org/packages/17/50/983e838c7fd0d87fd8c969bcdd328edaf5f756e38df5281637424c155873/cryptography-49.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:07cab27cc7b7e0fd28e5e26bb9eeedde5c135c868b46de4a27845abe94af6122", size = 4321719, upload-time = "2026-06-12T20:02:52.611Z" }, + { url = "https://files.pythonhosted.org/packages/a7/f5/8f571d7e27c55bce9f76f026143bcb1e040a4233149ecca0bea5fa5dd5f7/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:b20133d204d2bb56ba047642199603876c872026ca53e79c35b83772ab2cc505", size = 4685209, upload-time = "2026-06-12T20:02:07.282Z" }, + { url = "https://files.pythonhosted.org/packages/e7/84/0e27016a6fc5a0886f797018b26aa42f40c09a82332bff77822a451deaaa/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b970c6da94d5bb18629db453d14f2a1300f6bf59b61e9b82377931ef95504866", size = 5246285, upload-time = "2026-06-12T20:01:32.439Z" }, + { url = "https://files.pythonhosted.org/packages/11/2d/5e1fb307cb5931881516b464c98774b3f2c36b5d4bb9a2830253cf553cad/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:d8ecde755e2e91bf773fc94e8c9d730cd7f2007004cb492263a794ec3899a1c8", size = 4730441, upload-time = "2026-06-12T20:02:01.469Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c0/bff5a02ee731d207d6a1ed51732549d8c53d2bc8da1d10ec6f2844201d68/cryptography-49.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e3fb64c420688e5319ae25113a354015abbd8dffbfbc41781a1ea66fc7622ac3", size = 4815869, upload-time = "2026-06-12T20:01:36.574Z" }, + { url = "https://files.pythonhosted.org/packages/b9/26/814681d14248d95d73d5c3eea0c39a94eb8302df966f670a2c60de90974b/cryptography-49.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32703d93296f5c1f4b53349ad3a250c2cae0fdecd3a3dd5d47e616d8d616af27", size = 4960948, upload-time = "2026-06-12T20:02:18.688Z" }, + { url = "https://files.pythonhosted.org/packages/4c/fe/93ecac273d3738939d023612ad12cca9a3740a5345d69fda04134c43fd96/cryptography-49.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:33cd0565932807baddb67b96dbee92f2c374b5c89dee09fd74079aeb8c8dba61", size = 3799153, upload-time = "2026-06-12T20:01:39.059Z" }, + { url = "https://files.pythonhosted.org/packages/19/2a/5bb823f5bedcf80718cea7fbc95ec5515cca3769633c4b01a32be7f30e7c/cryptography-49.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ec5e529fb80935c94fe7b729f9972b50e351a0e6b50aa294fd5cabb109fcc29a", size = 4025947, upload-time = "2026-06-12T20:01:25.745Z" }, + { url = "https://files.pythonhosted.org/packages/3d/df/40577043ca124e17012f408ddddaeb213b856336ac82ddb3bc915f39e29f/cryptography-49.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f78ff2c9ed8dc2d036b0f4d640e22522213d047c1b14e61205a7e55c80a494d4", size = 4692429, upload-time = "2026-06-12T20:01:53.628Z" }, + { url = "https://files.pythonhosted.org/packages/2c/99/2d13299eb3dd27b02dcfaafcc91d6b5cb3329f7cbd6d8f51921acd566c1a/cryptography-49.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:35b151772baff2c74cba7fa290ceaff4c3b11c0c881eb93eb5dbc05a7cfbba18", size = 4700968, upload-time = "2026-06-12T20:02:45.383Z" }, + { url = "https://files.pythonhosted.org/packages/a5/4d/9c0cd02f95e2602dd5e563da149ee0830abef3537be8b34dc56281ebe27a/cryptography-49.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0f21641cf4b30fca7aee061ced0ec7ad7b073518088b7c9969a297c0ae796c69", size = 4697758, upload-time = "2026-06-12T20:01:41.13Z" }, + { url = "https://files.pythonhosted.org/packages/24/01/186c825898477d77e2324d5360fefe622ff1d8d1963ec0554e2cada8ec77/cryptography-49.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:9e82dcc8e56052715fb18b2429e3bca4823b1629136a2084fc45a9a5cecb9b64", size = 5298863, upload-time = "2026-06-12T20:02:24.579Z" }, + { url = "https://files.pythonhosted.org/packages/b8/7b/62cbbab75d0659865bf0273790031544a0b16c8072d258f9428dcd8190dc/cryptography-49.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6f2debedf9ca60cf1d5bd466475638af5130f89965605cd818484d19987d3a21", size = 4735983, upload-time = "2026-06-12T20:01:50.14Z" }, + { url = "https://files.pythonhosted.org/packages/6c/72/3e798c064bc39e471008075d0f9bc9daf77a80879c092e4a8e170c585ed4/cryptography-49.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:8c25ceb16df5b9435f3f6a9829204985b0e0cbee3b48aacd432c7d2c850b44d9", size = 4334173, upload-time = "2026-06-12T20:01:44.743Z" }, + { url = "https://files.pythonhosted.org/packages/f0/ee/6fca21d1ac73e06f8bef71940abfd4d2f6472b4bca284d770f32bd4086f6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:28d8b15e6275f12c8a207dc309dfa957903c927d08d0cc937ee3f63f200693cc", size = 4697298, upload-time = "2026-06-12T20:02:20.918Z" }, + { url = "https://files.pythonhosted.org/packages/67/d0/a5fcd3515f0bae49a7b6d0413cc1bdccdcc1fc0047037a0d480642cdc5d6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:6fc361c34fb6aac015ce19435876635e5c6d21db31998b0920f675f131e043b8", size = 5254338, upload-time = "2026-06-12T20:02:22.737Z" }, + { url = "https://files.pythonhosted.org/packages/a0/84/84fe36f19caf857d61cb7fc9c63035a47ffabd84ea12d1d393148efa3615/cryptography-49.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:2400ef9c9e2299a25614eb1dea3db54a69b1349efd043bfac9c67630d136df36", size = 4735650, upload-time = "2026-06-12T20:02:41.389Z" }, + { url = "https://files.pythonhosted.org/packages/6c/a0/db537264e234f7273a73ec020873d6d6b39dfd8a53db78b550ca8320440e/cryptography-49.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:67e1d20ad9ef3a563c59ef22e7a8a0b8210bd26604369ea4a30a7c66aefe504e", size = 4834820, upload-time = "2026-06-12T20:01:51.847Z" }, + { url = "https://files.pythonhosted.org/packages/93/77/8df9eb486495979bccecd1062e2eaf435250e84437040295b57d09048b0b/cryptography-49.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:42b0684e0e40cf26122427802486f6d93aea593612603a94fbf260c7eb1e9c1b", size = 4967968, upload-time = "2026-06-12T20:02:12.524Z" }, + { url = "https://files.pythonhosted.org/packages/c2/e6/f60198ea8d9dfa15fff9ed4ca02ce362f6eadd9ba757dcc50634c4257b63/cryptography-49.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:026ac7423e6fa66872d3bf889be5974507da3944f866f704fa200eadacd00001", size = 3785547, upload-time = "2026-06-12T20:02:26.847Z" }, + { url = "https://files.pythonhosted.org/packages/63/d3/4a83af35d65e3fad632c926fad684c193ea4398569ccb0bbbc7fe8f5dc9a/cryptography-49.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:fc1e275c2f1d97b1a6450b8b0ea3ebfa6e087a611c2b26cb2404d48588abab7b", size = 3993685, upload-time = "2026-06-12T20:02:14.883Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a7/f9dac0ab7f80368c56993a7bf638ef9935f825c91902798481fac0898138/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83782480a4a9da4d0feb51950131ba32e12e70813848b3343f6e18c28a66838", size = 4676239, upload-time = "2026-06-12T20:02:28.793Z" }, + { url = "https://files.pythonhosted.org/packages/d7/70/2ba3769dd0ae167e2f33dfa9592d45db6ff9a61d62ca1a5b3d1bdd09068f/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b39efa323140595abd3ecca8529d321ae50f55f3aa3ba9cc81ea56a6011953d5", size = 4715584, upload-time = "2026-06-12T20:01:27.495Z" }, + { url = "https://files.pythonhosted.org/packages/94/64/2923570ac1c0bd3a737aa366ac3abbbbde273042308b8cde95e2364a6e6a/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:b47db11c2c3525083296069b98ac5221907455e989ae0c2e3008bde851921615", size = 4675885, upload-time = "2026-06-12T20:01:55.49Z" }, + { url = "https://files.pythonhosted.org/packages/ab/f8/614dc7e051418cfe53d55173c1e24c6b0085e89996fe90508c2fdf769aef/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:084ef1af862eb07ec46d25f68689f2102a9fc0e05ce7b80f14f5fe51e4eef0f6", size = 4715449, upload-time = "2026-06-12T20:02:05.469Z" }, + { url = "https://files.pythonhosted.org/packages/aa/50/a9caea39ad19c431c1a3f8a31114df65b260cdfe67786b6c7e7c040c4c44/cryptography-49.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be9fcb48a55f023493482827d4f459bd263cc20efde64f204b97c123201850c6", size = 3783731, upload-time = "2026-06-12T20:02:43.319Z" }, ] [[package]] @@ -759,29 +741,27 @@ wheels = [ [[package]] name = "django" -version = "5.2.13" +version = "5.2.15" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.11.*'", - "python_full_version < '3.11'", + "python_full_version < '3.12'", ] dependencies = [ { name = "asgiref", marker = "python_full_version < '3.12'" }, { name = "sqlparse", marker = "python_full_version < '3.12'" }, { name = "tzdata", marker = "python_full_version < '3.12' and sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1f/c5/c69e338eb2959f641045802e5ea87ca4bf5ac90c5fd08953ca10742fad51/django-5.2.13.tar.gz", hash = "sha256:a31589db5188d074c63f0945c3888fad104627dfcc236fb2b97f71f89da33bc4", size = 10890368, upload-time = "2026-04-07T14:02:15.072Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2b/e3/31722f7284c9f43333daff9aee9184678e4487adcb5506af0db8cea09ce1/django-5.2.15.tar.gz", hash = "sha256:5154a9bf84ac01dde011e367f355c07dbb329532e06810dcf3ef2af269e236e7", size = 10873669, upload-time = "2026-06-03T13:03:35.892Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/59/b1/51ab36b2eefcf8cdb9338c7188668a157e29e30306bfc98a379704c9e10d/django-5.2.13-py3-none-any.whl", hash = "sha256:5788fce61da23788a8ce6f02583765ab060d396720924789f97fa42119d37f7a", size = 8310982, upload-time = "2026-04-07T14:02:08.883Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/38140b1643c00d5c46ce69c78e6980fd285aee223100319631bedee4f5e7/django-5.2.15-py3-none-any.whl", hash = "sha256:0eb4a9bb1853a35b0286dbc6d916bd352c8c2687195a7f2d6f80cefd840e4970", size = 8311957, upload-time = "2026-06-03T13:03:31.329Z" }, ] [[package]] name = "django" -version = "6.0.4" +version = "6.0.6" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.14'", - "python_full_version == '3.13.*'", + "python_full_version >= '3.13'", "python_full_version == '3.12.*'", ] dependencies = [ @@ -789,9 +769,9 @@ dependencies = [ { name = "sqlparse", marker = "python_full_version >= '3.12'" }, { name = "tzdata", marker = "python_full_version >= '3.12' and sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/60/b9/4155091ad1788b38563bd77a7258c0834e8c12a7f56f6975deaf54f8b61d/django-6.0.4.tar.gz", hash = "sha256:8cfa2572b3f2768b2e84983cf3c4811877a01edb64e817986ec5d60751c113ac", size = 10907407, upload-time = "2026-04-07T13:55:44.961Z" } +sdist = { url = "https://files.pythonhosted.org/packages/78/29/ac41e16097af67066d97a7d5775c5d8e7efc5d0284f6b0a159e07b9adb92/django-6.0.6.tar.gz", hash = "sha256:ad03916ba59523d781ae5c3f631960c23d69a9d9c43cecda52fc23b47e953713", size = 10905525, upload-time = "2026-06-03T13:02:46.503Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/47/3d61d611609764aa71a37f7037b870e7bfb22937366974c4fd46cada7bab/django-6.0.4-py3-none-any.whl", hash = "sha256:14359c809fc16e8f81fd2b59d7d348e4d2d799da6840b10522b6edf7b8afc1da", size = 8368342, upload-time = "2026-04-07T13:55:37.999Z" }, + { url = "https://files.pythonhosted.org/packages/eb/50/23f9dc45483419a3cc2085b498b25adfbf10642b2941c73e6d2dfaffc9ab/django-6.0.6-py3-none-any.whl", hash = "sha256:25148b1194c47c2e685e5f5e9c5d59c78b075dfd282cb9618861ba6c1708f4d2", size = 8373354, upload-time = "2026-06-03T13:02:41.72Z" }, ] [[package]] @@ -799,8 +779,8 @@ name = "django-anymail" version = "15.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "django", version = "5.2.13", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, - { name = "django", version = "6.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "django", version = "5.2.15", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "django", version = "6.0.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, { name = "idna" }, { name = "requests" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, @@ -817,8 +797,8 @@ version = "4.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "asgiref" }, - { name = "django", version = "5.2.13", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, - { name = "django", version = "6.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "django", version = "5.2.15", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "django", version = "6.0.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/21/39/55822b15b7ec87410f34cd16ce04065ff390e50f9e29f31d6d116fc80456/django_cors_headers-4.9.0.tar.gz", hash = "sha256:fe5d7cb59fdc2c8c646ce84b727ac2bca8912a247e6e68e1fb507372178e59e8", size = 21458, upload-time = "2025-09-18T10:40:52.326Z" } wheels = [ @@ -827,11 +807,11 @@ wheels = [ [[package]] name = "django-environ" -version = "0.13.0" +version = "0.14.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/3c/60983e6ec9b24a8d8588eecebfd21123cba980bce0a905807a27692f0860/django_environ-0.13.0.tar.gz", hash = "sha256:6c401e4c219442c2c4588c2116d5292b5484a6f69163ed09cd41f3943bfb645f", size = 63529, upload-time = "2026-02-18T01:08:08.791Z" } +sdist = { url = "https://files.pythonhosted.org/packages/57/e1/4c4ddcf6e90f023e89edb1d92f9a7fffce61ad4b691df497f2f5c0be6e26/django_environ-0.14.0.tar.gz", hash = "sha256:b6c48d93b9d2ff8a3ea14099e90c35aa4f101c1b4d5f262dfee0d27b06742ed7", size = 60417, upload-time = "2026-06-18T22:49:55.847Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/00/3767393ece946084e1c6830a33ffb8e39d68642e27ad5ac7d4c8bd5de866/django_environ-0.13.0-py3-none-any.whl", hash = "sha256:37799d14cd78222c6fd8298e48bfe17965ff8e586091ad66a463e52e0e7b799e", size = 20682, upload-time = "2026-02-18T01:08:07.359Z" }, + { url = "https://files.pythonhosted.org/packages/1a/fe/67b423fc30f16d10259e901320fbc121746bf168aaaad9043e6ebb0110c1/django_environ-0.14.0-py3-none-any.whl", hash = "sha256:8dbe8a57f0a540ab8abd6f54f230de5e99e3a2c9d797cb9caecb037bca3d47d8", size = 20934, upload-time = "2026-06-18T22:49:54.355Z" }, ] [[package]] @@ -839,8 +819,8 @@ name = "django-filter" version = "25.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "django", version = "5.2.13", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, - { name = "django", version = "6.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "django", version = "5.2.15", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "django", version = "6.0.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/2c/e4/465d2699cd388c0005fb8d6ae6709f239917c6d8790ac35719676fffdcf3/django_filter-25.2.tar.gz", hash = "sha256:760e984a931f4468d096f5541787efb8998c61217b73006163bf2f9523fe8f23", size = 143818, upload-time = "2025-10-05T09:51:31.521Z" } wheels = [ @@ -852,8 +832,8 @@ name = "django-storages" version = "1.14.6" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "django", version = "5.2.13", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, - { name = "django", version = "6.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "django", version = "5.2.15", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "django", version = "6.0.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ff/d6/2e50e378fff0408d558f36c4acffc090f9a641fd6e084af9e54d45307efa/django_storages-1.14.6.tar.gz", hash = "sha256:7a25ce8f4214f69ac9c7ce87e2603887f7ae99326c316bc8d2d75375e09341c9", size = 87587, upload-time = "2025-04-02T02:34:55.103Z" } wheels = [ @@ -865,8 +845,8 @@ name = "djangorestframework" version = "3.17.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "django", version = "5.2.13", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, - { name = "django", version = "6.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "django", version = "5.2.15", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "django", version = "6.0.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ca/d7/c016e69fac19ff8afdc89db9d31d9ae43ae031e4d1993b20aca179b8301a/djangorestframework-3.17.1.tar.gz", hash = "sha256:a6def5f447fe78ff853bff1d47a3c59bf38f5434b031780b351b0c73a62db1a5", size = 905742, upload-time = "2026-03-24T16:58:33.705Z" } wheels = [ @@ -878,8 +858,8 @@ name = "djangorestframework-simplejwt" version = "5.5.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "django", version = "5.2.13", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, - { name = "django", version = "6.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "django", version = "5.2.15", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "django", version = "6.0.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, { name = "djangorestframework" }, { name = "pyjwt" }, ] @@ -902,7 +882,7 @@ name = "exceptiongroup" version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] 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 = [ @@ -911,59 +891,59 @@ wheels = [ [[package]] name = "fonttools" -version = "4.62.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9a/08/7012b00a9a5874311b639c3920270c36ee0c445b69d9989a85e5c92ebcb0/fonttools-4.62.1.tar.gz", hash = "sha256:e54c75fd6041f1122476776880f7c3c3295ffa31962dc6ebe2543c00dca58b5d", size = 3580737, upload-time = "2026-03-13T13:54:25.52Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/ff/532ed43808b469c807e8cb6b21358da3fe6fd51486b3a8c93db0bb5d957f/fonttools-4.62.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ad5cca75776cd453b1b035b530e943334957ae152a36a88a320e779d61fc980c", size = 2873740, upload-time = "2026-03-13T13:52:11.822Z" }, - { url = "https://files.pythonhosted.org/packages/85/e4/2318d2b430562da7227010fb2bb029d2fa54d7b46443ae8942bab224e2a0/fonttools-4.62.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0b3ae47e8636156a9accff64c02c0924cbebad62854c4a6dbdc110cd5b4b341a", size = 2417649, upload-time = "2026-03-13T13:52:14.605Z" }, - { url = "https://files.pythonhosted.org/packages/4c/28/40f15523b5188598018e7956899fed94eb7debec89e2dd70cb4a8df90492/fonttools-4.62.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c9b9e288b4da2f64fd6180644221749de651703e8d0c16bd4b719533a3a7d6e3", size = 4935213, upload-time = "2026-03-13T13:52:17.399Z" }, - { url = "https://files.pythonhosted.org/packages/42/09/7dbe3d7023f57d9b580cfa832109d521988112fd59dddfda3fddda8218f9/fonttools-4.62.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7bca7a1c1faf235ffe25d4f2e555246b4750220b38de8261d94ebc5ce8a23c23", size = 4892374, upload-time = "2026-03-13T13:52:20.175Z" }, - { url = "https://files.pythonhosted.org/packages/d1/2d/84509a2e32cb925371560ef5431365d8da2183c11d98e5b4b8b4e42426a5/fonttools-4.62.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b4e0fcf265ad26e487c56cb12a42dffe7162de708762db951e1b3f755319507d", size = 4911856, upload-time = "2026-03-13T13:52:22.777Z" }, - { url = "https://files.pythonhosted.org/packages/a5/80/df28131379eed93d9e6e6fccd3bf6e3d077bebbfe98cc83f21bbcd83ed02/fonttools-4.62.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2d850f66830a27b0d498ee05adb13a3781637b1826982cd7e2b3789ef0cc71ae", size = 5031712, upload-time = "2026-03-13T13:52:25.14Z" }, - { url = "https://files.pythonhosted.org/packages/3d/03/3c8f09aad64230cd6d921ae7a19f9603c36f70930b00459f112706f6769a/fonttools-4.62.1-cp310-cp310-win32.whl", hash = "sha256:486f32c8047ccd05652aba17e4a8819a3a9d78570eb8a0e3b4503142947880ed", size = 1507878, upload-time = "2026-03-13T13:52:28.149Z" }, - { url = "https://files.pythonhosted.org/packages/dd/ec/f53f626f8f3e89f4cadd8fc08f3452c8fd182c951ad5caa35efac22b29ab/fonttools-4.62.1-cp310-cp310-win_amd64.whl", hash = "sha256:5a648bde915fba9da05ae98856987ca91ba832949a9e2888b48c47ef8b96c5a9", size = 1556766, upload-time = "2026-03-13T13:52:30.814Z" }, - { url = "https://files.pythonhosted.org/packages/88/39/23ff32561ec8d45a4d48578b4d241369d9270dc50926c017570e60893701/fonttools-4.62.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:40975849bac44fb0b9253d77420c6d8b523ac4dcdcefeff6e4d706838a5b80f7", size = 2871039, upload-time = "2026-03-13T13:52:33.127Z" }, - { url = "https://files.pythonhosted.org/packages/24/7f/66d3f8a9338a9b67fe6e1739f47e1cd5cee78bd3bc1206ef9b0b982289a5/fonttools-4.62.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9dde91633f77fa576879a0c76b1d89de373cae751a98ddf0109d54e173b40f14", size = 2416346, upload-time = "2026-03-13T13:52:35.676Z" }, - { url = "https://files.pythonhosted.org/packages/aa/53/5276ceba7bff95da7793a07c5284e1da901cf00341ce5e2f3273056c0cca/fonttools-4.62.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6acb4109f8bee00fec985c8c7afb02299e35e9c94b57287f3ea542f28bd0b0a7", size = 5100897, upload-time = "2026-03-13T13:52:38.102Z" }, - { url = "https://files.pythonhosted.org/packages/cc/a1/40a5c4d8e28b0851d53a8eeeb46fbd73c325a2a9a165f290a5ed90e6c597/fonttools-4.62.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1c5c25671ce8805e0d080e2ffdeca7f1e86778c5cbfbeae86d7f866d8830517b", size = 5071078, upload-time = "2026-03-13T13:52:41.305Z" }, - { url = "https://files.pythonhosted.org/packages/e3/be/d378fca4c65ea1956fee6d90ace6e861776809cbbc5af22388a090c3c092/fonttools-4.62.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a5d8825e1140f04e6c99bb7d37a9e31c172f3bc208afbe02175339e699c710e1", size = 5076908, upload-time = "2026-03-13T13:52:44.122Z" }, - { url = "https://files.pythonhosted.org/packages/f8/d9/ae6a1d0693a4185a84605679c8a1f719a55df87b9c6e8e817bfdd9ef5936/fonttools-4.62.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:268abb1cb221e66c014acc234e872b7870d8b5d4657a83a8f4205094c32d2416", size = 5202275, upload-time = "2026-03-13T13:52:46.591Z" }, - { url = "https://files.pythonhosted.org/packages/54/6c/af95d9c4efb15cabff22642b608342f2bd67137eea6107202d91b5b03184/fonttools-4.62.1-cp311-cp311-win32.whl", hash = "sha256:942b03094d7edbb99bdf1ae7e9090898cad7bf9030b3d21f33d7072dbcb51a53", size = 2293075, upload-time = "2026-03-13T13:52:48.711Z" }, - { url = "https://files.pythonhosted.org/packages/d3/97/bf54c5b3f2be34e1f143e6db838dfdc54f2ffa3e68c738934c82f3b2a08d/fonttools-4.62.1-cp311-cp311-win_amd64.whl", hash = "sha256:e8514f4924375f77084e81467e63238b095abda5107620f49421c368a6017ed2", size = 2344593, upload-time = "2026-03-13T13:52:50.725Z" }, - { url = "https://files.pythonhosted.org/packages/47/d4/dbacced3953544b9a93088cc10ef2b596d348c983d5c67a404fa41ec51ba/fonttools-4.62.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:90365821debbd7db678809c7491ca4acd1e0779b9624cdc6ddaf1f31992bf974", size = 2870219, upload-time = "2026-03-13T13:52:53.664Z" }, - { url = "https://files.pythonhosted.org/packages/66/9e/a769c8e99b81e5a87ab7e5e7236684de4e96246aae17274e5347d11ebd78/fonttools-4.62.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12859ff0b47dd20f110804c3e0d0970f7b832f561630cd879969011541a464a9", size = 2414891, upload-time = "2026-03-13T13:52:56.493Z" }, - { url = "https://files.pythonhosted.org/packages/69/64/f19a9e3911968c37e1e620e14dfc5778299e1474f72f4e57c5ec771d9489/fonttools-4.62.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c125ffa00c3d9003cdaaf7f2c79e6e535628093e14b5de1dccb08859b680936", size = 5033197, upload-time = "2026-03-13T13:52:59.179Z" }, - { url = "https://files.pythonhosted.org/packages/9b/8a/99c8b3c3888c5c474c08dbfd7c8899786de9604b727fcefb055b42c84bba/fonttools-4.62.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:149f7d84afca659d1a97e39a4778794a2f83bf344c5ee5134e09995086cc2392", size = 4988768, upload-time = "2026-03-13T13:53:02.761Z" }, - { url = "https://files.pythonhosted.org/packages/d1/c6/0f904540d3e6ab463c1243a0d803504826a11604c72dd58c2949796a1762/fonttools-4.62.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0aa72c43a601cfa9273bb1ae0518f1acadc01ee181a6fc60cd758d7fdadffc04", size = 4971512, upload-time = "2026-03-13T13:53:05.678Z" }, - { url = "https://files.pythonhosted.org/packages/29/0b/5cbef6588dc9bd6b5c9ad6a4d5a8ca384d0cea089da31711bbeb4f9654a6/fonttools-4.62.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:19177c8d96c7c36359266e571c5173bcee9157b59cfc8cb0153c5673dc5a3a7d", size = 5122723, upload-time = "2026-03-13T13:53:08.662Z" }, - { url = "https://files.pythonhosted.org/packages/4a/47/b3a5342d381595ef439adec67848bed561ab7fdb1019fa522e82101b7d9c/fonttools-4.62.1-cp312-cp312-win32.whl", hash = "sha256:a24decd24d60744ee8b4679d38e88b8303d86772053afc29b19d23bb8207803c", size = 2281278, upload-time = "2026-03-13T13:53:10.998Z" }, - { url = "https://files.pythonhosted.org/packages/28/b1/0c2ab56a16f409c6c8a68816e6af707827ad5d629634691ff60a52879792/fonttools-4.62.1-cp312-cp312-win_amd64.whl", hash = "sha256:9e7863e10b3de72376280b515d35b14f5eeed639d1aa7824f4cf06779ec65e42", size = 2331414, upload-time = "2026-03-13T13:53:13.992Z" }, - { url = "https://files.pythonhosted.org/packages/3b/56/6f389de21c49555553d6a5aeed5ac9767631497ac836c4f076273d15bd72/fonttools-4.62.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c22b1014017111c401469e3acc5433e6acf6ebcc6aa9efb538a533c800971c79", size = 2865155, upload-time = "2026-03-13T13:53:16.132Z" }, - { url = "https://files.pythonhosted.org/packages/03/c5/0e3966edd5ec668d41dfe418787726752bc07e2f5fd8c8f208615e61fa89/fonttools-4.62.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:68959f5fc58ed4599b44aad161c2837477d7f35f5f79402d97439974faebfebe", size = 2412802, upload-time = "2026-03-13T13:53:18.878Z" }, - { url = "https://files.pythonhosted.org/packages/52/94/e6ac4b44026de7786fe46e3bfa0c87e51d5d70a841054065d49cd62bb909/fonttools-4.62.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef46db46c9447103b8f3ff91e8ba009d5fe181b1920a83757a5762551e32bb68", size = 5013926, upload-time = "2026-03-13T13:53:21.379Z" }, - { url = "https://files.pythonhosted.org/packages/e2/98/8b1e801939839d405f1f122e7d175cebe9aeb4e114f95bfc45e3152af9a7/fonttools-4.62.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6706d1cb1d5e6251a97ad3c1b9347505c5615c112e66047abbef0f8545fa30d1", size = 4964575, upload-time = "2026-03-13T13:53:23.857Z" }, - { url = "https://files.pythonhosted.org/packages/46/76/7d051671e938b1881670528fec69cc4044315edd71a229c7fd712eaa5119/fonttools-4.62.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2e7abd2b1e11736f58c1de27819e1955a53267c21732e78243fa2fa2e5c1e069", size = 4953693, upload-time = "2026-03-13T13:53:26.569Z" }, - { url = "https://files.pythonhosted.org/packages/1f/ae/b41f8628ec0be3c1b934fc12b84f4576a5c646119db4d3bdd76a217c90b5/fonttools-4.62.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:403d28ce06ebfc547fbcb0cb8b7f7cc2f7a2d3e1a67ba9a34b14632df9e080f9", size = 5094920, upload-time = "2026-03-13T13:53:29.329Z" }, - { url = "https://files.pythonhosted.org/packages/f2/f6/53a1e9469331a23dcc400970a27a4caa3d9f6edbf5baab0260285238b884/fonttools-4.62.1-cp313-cp313-win32.whl", hash = "sha256:93c316e0f5301b2adbe6a5f658634307c096fd5aae60a5b3412e4f3e1728ab24", size = 2279928, upload-time = "2026-03-13T13:53:32.352Z" }, - { url = "https://files.pythonhosted.org/packages/38/60/35186529de1db3c01f5ad625bde07c1f576305eab6d86bbda4c58445f721/fonttools-4.62.1-cp313-cp313-win_amd64.whl", hash = "sha256:7aa21ff53e28a9c2157acbc44e5b401149d3c9178107130e82d74ceb500e5056", size = 2330514, upload-time = "2026-03-13T13:53:34.991Z" }, - { url = "https://files.pythonhosted.org/packages/36/f0/2888cdac391807d68d90dcb16ef858ddc1b5309bfc6966195a459dd326e2/fonttools-4.62.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fa1d16210b6b10a826d71bed68dd9ec24a9e218d5a5e2797f37c573e7ec215ca", size = 2864442, upload-time = "2026-03-13T13:53:37.509Z" }, - { url = "https://files.pythonhosted.org/packages/4b/b2/e521803081f8dc35990816b82da6360fa668a21b44da4b53fc9e77efcd62/fonttools-4.62.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:aa69d10ed420d8121118e628ad47d86e4caa79ba37f968597b958f6cceab7eca", size = 2410901, upload-time = "2026-03-13T13:53:40.55Z" }, - { url = "https://files.pythonhosted.org/packages/00/a4/8c3511ff06e53110039358dbbdc1a65d72157a054638387aa2ada300a8b8/fonttools-4.62.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bd13b7999d59c5eb1c2b442eb2d0c427cb517a0b7a1f5798fc5c9e003f5ff782", size = 4999608, upload-time = "2026-03-13T13:53:42.798Z" }, - { url = "https://files.pythonhosted.org/packages/28/63/cd0c3b26afe60995a5295f37c246a93d454023726c3261cfbb3559969bb9/fonttools-4.62.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8d337fdd49a79b0d51c4da87bc38169d21c3abbf0c1aa9367eff5c6656fb6dae", size = 4912726, upload-time = "2026-03-13T13:53:45.405Z" }, - { url = "https://files.pythonhosted.org/packages/70/b9/ac677cb07c24c685cf34f64e140617d58789d67a3dd524164b63648c6114/fonttools-4.62.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d241cdc4a67b5431c6d7f115fdf63335222414995e3a1df1a41e1182acd4bcc7", size = 4951422, upload-time = "2026-03-13T13:53:48.326Z" }, - { url = "https://files.pythonhosted.org/packages/e6/10/11c08419a14b85b7ca9a9faca321accccc8842dd9e0b1c8a72908de05945/fonttools-4.62.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c05557a78f8fa514da0f869556eeda40887a8abc77c76ee3f74cf241778afd5a", size = 5060979, upload-time = "2026-03-13T13:53:51.366Z" }, - { url = "https://files.pythonhosted.org/packages/4e/3c/12eea4a4cf054e7ab058ed5ceada43b46809fce2bf319017c4d63ae55bb4/fonttools-4.62.1-cp314-cp314-win32.whl", hash = "sha256:49a445d2f544ce4a69338694cad575ba97b9a75fff02720da0882d1a73f12800", size = 2283733, upload-time = "2026-03-13T13:53:53.606Z" }, - { url = "https://files.pythonhosted.org/packages/6b/67/74b070029043186b5dd13462c958cb7c7f811be0d2e634309d9a1ffb1505/fonttools-4.62.1-cp314-cp314-win_amd64.whl", hash = "sha256:1eecc128c86c552fb963fe846ca4e011b1be053728f798185a1687502f6d398e", size = 2335663, upload-time = "2026-03-13T13:53:56.23Z" }, - { url = "https://files.pythonhosted.org/packages/42/c5/4d2ed3ca6e33617fc5624467da353337f06e7f637707478903c785bd8e20/fonttools-4.62.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:1596aeaddf7f78e21e68293c011316a25267b3effdaccaf4d59bc9159d681b82", size = 2947288, upload-time = "2026-03-13T13:53:59.397Z" }, - { url = "https://files.pythonhosted.org/packages/1f/e9/7ab11ddfda48ed0f89b13380e5595ba572619c27077be0b2c447a63ff351/fonttools-4.62.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:8f8fca95d3bb3208f59626a4b0ea6e526ee51f5a8ad5d91821c165903e8d9260", size = 2449023, upload-time = "2026-03-13T13:54:01.642Z" }, - { url = "https://files.pythonhosted.org/packages/b2/10/a800fa090b5e8819942e54e19b55fc7c21fe14a08757c3aa3ca8db358939/fonttools-4.62.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee91628c08e76f77b533d65feb3fbe6d9dad699f95be51cf0d022db94089cdc4", size = 5137599, upload-time = "2026-03-13T13:54:04.495Z" }, - { url = "https://files.pythonhosted.org/packages/37/dc/8ccd45033fffd74deb6912fa1ca524643f584b94c87a16036855b498a1ed/fonttools-4.62.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5f37df1cac61d906e7b836abe356bc2f34c99d4477467755c216b72aa3dc748b", size = 4920933, upload-time = "2026-03-13T13:54:07.557Z" }, - { url = "https://files.pythonhosted.org/packages/99/eb/e618adefb839598d25ac8136cd577925d6c513dc0d931d93b8af956210f0/fonttools-4.62.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:92bb00a947e666169c99b43753c4305fc95a890a60ef3aeb2a6963e07902cc87", size = 5016232, upload-time = "2026-03-13T13:54:10.611Z" }, - { url = "https://files.pythonhosted.org/packages/d9/5f/9b5c9bfaa8ec82def8d8168c4f13615990d6ce5996fe52bd49bfb5e05134/fonttools-4.62.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:bdfe592802ef939a0e33106ea4a318eeb17822c7ee168c290273cbd5fabd746c", size = 5042987, upload-time = "2026-03-13T13:54:13.569Z" }, - { url = "https://files.pythonhosted.org/packages/90/aa/dfbbe24c6a6afc5c203d90cc0343e24bcbb09e76d67c4d6eef8c2558d7ba/fonttools-4.62.1-cp314-cp314t-win32.whl", hash = "sha256:b820fcb92d4655513d8402d5b219f94481c4443d825b4372c75a2072aa4b357a", size = 2348021, upload-time = "2026-03-13T13:54:16.98Z" }, - { url = "https://files.pythonhosted.org/packages/13/6f/ae9c4e4dd417948407b680855c2c7790efb52add6009aaecff1e3bc50e8e/fonttools-4.62.1-cp314-cp314t-win_amd64.whl", hash = "sha256:59b372b4f0e113d3746b88985f1c796e7bf830dd54b28374cd85c2b8acd7583e", size = 2414147, upload-time = "2026-03-13T13:54:19.416Z" }, - { url = "https://files.pythonhosted.org/packages/fd/ba/56147c165442cc5ba7e82ecf301c9a68353cede498185869e6e02b4c264f/fonttools-4.62.1-py3-none-any.whl", hash = "sha256:7487782e2113861f4ddcc07c3436450659e3caa5e470b27dc2177cade2d8e7fd", size = 1152647, upload-time = "2026-03-13T13:54:22.735Z" }, +version = "4.63.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/84/69/c97f2c18e0db87d2c7b15da1974dace76ae938f1cfa22e2727a648b7ed43/fonttools-4.63.0.tar.gz", hash = "sha256:caeb583deeb5168e694b65cda8b4ee62abedfa66cf88488734466f2366b9c4e0", size = 3597189, upload-time = "2026-05-14T12:04:30.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/c9/4141c90a90db20f807c7e10bfd689fe53eb8f7f4caff58ee4d4dfe46919f/fonttools-4.63.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e3297a6a4059b4acc3a1e9a8b04741f240a80044eef08ebd32e8b5bcdddce75b", size = 2884632, upload-time = "2026-05-14T12:02:38.56Z" }, + { url = "https://files.pythonhosted.org/packages/b8/46/ad12b5c10eae602d7ef814b02afa08aacbf89da917fed5b071282b7eadc2/fonttools-4.63.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b1cd75a03ad8cb5bc40c90bfde68c0c47de423aa19e5c0f362b43520645eea94", size = 2429441, upload-time = "2026-05-14T12:02:41.162Z" }, + { url = "https://files.pythonhosted.org/packages/90/8f/bdca24a84c81d56fffed052229cdcff368f6e05882e526f4558891481f65/fonttools-4.63.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0425b277a59cff3d80ca42162a8de360f318438a2ac83570842a678d826d579", size = 4946346, upload-time = "2026-05-14T12:02:43.41Z" }, + { url = "https://files.pythonhosted.org/packages/04/59/a639c0e136441ee91a65b56fdf89e5d075927e7a09c559d1b0f5276577db/fonttools-4.63.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d7e5c9973aa04c95650c96e5f5ad865fbf42d62079163ecfab1e01cbc2504c22", size = 4903184, upload-time = "2026-05-14T12:02:45.742Z" }, + { url = "https://files.pythonhosted.org/packages/e6/53/91b7e0cb45b536f3da1b29ba8cbab89f27e8b986809e0b1982303a3f4eca/fonttools-4.63.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cb014d58140a38135f16064c74c652ed57aa0b75cbf8bb59cac821f7edb5334e", size = 4922967, upload-time = "2026-05-14T12:02:48.386Z" }, + { url = "https://files.pythonhosted.org/packages/c7/b7/87439bf44e6b97c5538cd29d0b7e366a5b8ce2cc132a4134fb67fa3f2fa2/fonttools-4.63.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:032038247a96c1690f9f31e377c389383c902531b085aa4e4dabd6f57f870e69", size = 5042799, upload-time = "2026-05-14T12:02:50.424Z" }, + { url = "https://files.pythonhosted.org/packages/ad/7c/8b96c3263b89ef99cded544c0f0636686f85dbd3c211c4dceef0231fca23/fonttools-4.63.0-cp310-cp310-win32.whl", hash = "sha256:a8b33a82979e0a6a34ff435cc81317be1f95ec1ebb7a3a2d1c8a6a54f02ae44e", size = 1519704, upload-time = "2026-05-14T12:02:52.523Z" }, + { url = "https://files.pythonhosted.org/packages/e5/4d/2c2f0069970b6907de8fb5b05c5c0193cc22f717df151d1c7aef1c738f58/fonttools-4.63.0-cp310-cp310-win_amd64.whl", hash = "sha256:0c18358a155d75034911c5ee397a5b44cd19dd325dbb8b35fb60bf421d6a72ac", size = 1568666, upload-time = "2026-05-14T12:02:54.917Z" }, + { url = "https://files.pythonhosted.org/packages/75/2b/a7f1545bdf5da69c4bda0cea2a5781f0ad2a6623e0277267672db43c5fe6/fonttools-4.63.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2b8ae05d9eacf6081414d759c0a352769ac28ce31280d6bb8e77b03f9e3c449f", size = 2881793, upload-time = "2026-05-14T12:02:56.645Z" }, + { url = "https://files.pythonhosted.org/packages/49/50/965308c703f085f225db2886813b27e015b8b3438c350b22dd65b52c2a2c/fonttools-4.63.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79cdc9f567aec74a72918fd060283911406750cbc9fd28c1316023deb6ce31a9", size = 2428130, upload-time = "2026-05-14T12:02:58.891Z" }, + { url = "https://files.pythonhosted.org/packages/d8/38/6937fbd7f2dc3a6b48725851bc2c15ec949b9af14d9bbcb5fe83cdf9bdf9/fonttools-4.63.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2c14b4fd138c4bafcca294765c547914e1aa431ae1ca94ab99d8db08c958bd3b", size = 5111952, upload-time = "2026-05-14T12:03:01.263Z" }, + { url = "https://files.pythonhosted.org/packages/0b/43/a81f20050a3115b57d62c8e781446949512eac36690dc384ccea65ff4cc1/fonttools-4.63.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d76ac49f929aecaf82d83250b8347e099d7aecba0f4726c1d9b6df3b8bb5fe18", size = 5082308, upload-time = "2026-05-14T12:03:03.211Z" }, + { url = "https://files.pythonhosted.org/packages/67/00/cdd9d4944ca6ae280d01e69cc37bde3bf663630b837a6fc6d2cd65d80e0e/fonttools-4.63.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dcf076a4474fe0d7367e5bbf5b052c7284fa1feca729c04176ce513521afd8a0", size = 5087932, upload-time = "2026-05-14T12:03:05.147Z" }, + { url = "https://files.pythonhosted.org/packages/f5/f1/0aa0dbea778c75adbef223c42019fd47d22262b905974d62d829545d485f/fonttools-4.63.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7dd683fef0663e9f0f45cf541d788d24caa3ec9db50796b588e1757d8b3bc007", size = 5213271, upload-time = "2026-05-14T12:03:07.238Z" }, + { url = "https://files.pythonhosted.org/packages/a8/99/253e4056e1f0e67b9390125a154b73b5eb73ad521bece95c004858fdeec2/fonttools-4.63.0-cp311-cp311-win32.whl", hash = "sha256:afefc1ed0a59785a7fb06ea7e1678e849c193e1e387db783579bc7b3056fcfcb", size = 2304473, upload-time = "2026-05-14T12:03:09.271Z" }, + { url = "https://files.pythonhosted.org/packages/08/60/defa5e69641db890a63be281f41345f4c33b157824eaf0b9fad3e08b0dcb/fonttools-4.63.0-cp311-cp311-win_amd64.whl", hash = "sha256:063e08bd17bd5a90127a14123de0d6a952dbc847695fd98b63c043d58057f90c", size = 2356389, upload-time = "2026-05-14T12:03:11.53Z" }, + { url = "https://files.pythonhosted.org/packages/08/ef/b3c6b9b5be2f82416d73fe2ed2e96e2793cd80e7510bd6a17ca79cdd88ec/fonttools-4.63.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:37dd23e621e3b0aef1baa70a303b80aaf38449632cfc8fd2a55fb285bbccfc02", size = 2881131, upload-time = "2026-05-14T12:03:13.386Z" }, + { url = "https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a9faff9e0c1f76f9fd55899d2ce785832efebab37eb8ae13995853aef178bef0", size = 2426704, upload-time = "2026-05-14T12:03:15.801Z" }, + { url = "https://files.pythonhosted.org/packages/44/04/0b91d8e916e92ad1fac9e4624760baf0fd5ff2ead614c2f68fb21373f03f/fonttools-4.63.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef3048ef05dbb552b89817713d9cac912e00d0fde4a3105c00d29e52e10c89af", size = 5044298, upload-time = "2026-05-14T12:03:18.085Z" }, + { url = "https://files.pythonhosted.org/packages/77/c7/2342da9830e3e9d4870305ca5d2091d2a83284f2953079b7bdd3b5e029d8/fonttools-4.63.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:58dc6bb86a78d782f00f9190ca02c119cf5bbe2807536e361e18d42019f877d8", size = 4999800, upload-time = "2026-05-14T12:03:20.161Z" }, + { url = "https://files.pythonhosted.org/packages/e6/6d/67fe16c48d7ce050979b33f47e0d28a318f02da030602e944c34f7a16ef3/fonttools-4.63.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee08ebfa58f6e1aeff5697ab9582105bb620008c1caafb681e4c557e7483027b", size = 4982666, upload-time = "2026-05-14T12:03:22.87Z" }, + { url = "https://files.pythonhosted.org/packages/f2/00/3bbab338c07c71fa56269953845e92c951a61457bbbb0f1022551ea266d9/fonttools-4.63.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:27fdc65af8da6f88b9c6121c47a464cbe359fcfff7ff6fc2d37a1f395d755b78", size = 5133598, upload-time = "2026-05-14T12:03:25.168Z" }, + { url = "https://files.pythonhosted.org/packages/62/f2/aa27c7f98db5b064883dadcc5283947e81e034de42e22a33675878d98b54/fonttools-4.63.0-cp312-cp312-win32.whl", hash = "sha256:af2fd1664d00a397d75f806985ddb36282091c2131a73a6485c23b4a34722263", size = 2292575, upload-time = "2026-05-14T12:03:27.496Z" }, + { url = "https://files.pythonhosted.org/packages/87/36/cccb9bc2a6ab63d1b2980374f0dca72ce95ae267c9b4cfe77455bb70d0d4/fonttools-4.63.0-cp312-cp312-win_amd64.whl", hash = "sha256:59ac449f8cca9b4ffa08d2e7bbadad87ce710d69d1eda5c3c1ce579baa987272", size = 2343211, upload-time = "2026-05-14T12:03:30.057Z" }, + { url = "https://files.pythonhosted.org/packages/0f/8d/d8fec3dcde2963f8c908fb315e5ff2cd0ac34f82394bbbf73a2aa5145ce3/fonttools-4.63.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:cd7e9857e5e63738b9d9fd707bc1f59c8b09e5177726d23664db393c59bb08bd", size = 2876062, upload-time = "2026-05-14T12:03:32.554Z" }, + { url = "https://files.pythonhosted.org/packages/ef/71/d935dc54e4ff121bfdd11e08702db63a7e6f25af21d8a3d7b7212df53641/fonttools-4.63.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c2a2a42198b696a6f48fad91709afb55176e66a5e566131219dba372fb7f8c59", size = 2424594, upload-time = "2026-05-14T12:03:34.86Z" }, + { url = "https://files.pythonhosted.org/packages/8e/40/e76320afa1df918e146155ef239b1719ee266092e96f5423bfd075affba1/fonttools-4.63.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e874792a8212b44583ea02189d9e693906b2f78b261f372f95d6c563210ac1d", size = 5024840, upload-time = "2026-05-14T12:03:36.745Z" }, + { url = "https://files.pythonhosted.org/packages/ce/36/0b805d8c485f872f65a509cbe3b58a5d0d17bee855333b54a150c79d3061/fonttools-4.63.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:22135da48a348785c5e2d5d2d9d6bec5ed44adacbaeb9db12d9493bf6c6bfa68", size = 4975801, upload-time = "2026-05-14T12:03:38.833Z" }, + { url = "https://files.pythonhosted.org/packages/c8/26/2cee03d0aa083ab022da5c07aff9ed3f689da1defb81ad6917c9627896da/fonttools-4.63.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ccf41f2efdf56994d22d73bef4ced1052161958169428d06ba9724ea9e9a64be", size = 4965009, upload-time = "2026-05-14T12:03:41.494Z" }, + { url = "https://files.pythonhosted.org/packages/7e/48/cc4b66d9058c0d0982c833fad10127c4b0e9324606aafa41382295ca4102/fonttools-4.63.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9ced0bd02ac751dd6319b0da88aaef24414e3b0dbc32bb4f24944821a3741a27", size = 5105892, upload-time = "2026-05-14T12:03:43.525Z" }, + { url = "https://files.pythonhosted.org/packages/d8/1f/a98a30a814b9ddef3a2e706025f90b9e0bc94890e6cb15254bc86547d11a/fonttools-4.63.0-cp313-cp313-win32.whl", hash = "sha256:85be818f5506e8a7753153def2c9550178f0ecae6a47b5e0e8dbb23f7cc90380", size = 2291313, upload-time = "2026-05-14T12:03:45.594Z" }, + { url = "https://files.pythonhosted.org/packages/92/46/5177b01f3b4abfdd4409f31cca4ab279c9343a26efbe9ec78c97fc612e02/fonttools-4.63.0-cp313-cp313-win_amd64.whl", hash = "sha256:ba04cb5891d4c0c21b6da95eda8d7b090021508a294fff33464fc7d241e0856b", size = 2342299, upload-time = "2026-05-14T12:03:47.414Z" }, + { url = "https://files.pythonhosted.org/packages/27/d2/23d25e3f247b328be58d04a4c9f894178a0d1eda7d42867cfb388adaf416/fonttools-4.63.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fd1e3094f42d806d3d7c79162fc59e5910fcbe3a7360c385b8da969bc4493745", size = 2875338, upload-time = "2026-05-14T12:03:50.052Z" }, + { url = "https://files.pythonhosted.org/packages/cd/58/7dfa0c761cb3b2964e2a84c4dc986c926a87de0cb9fb60d5b28ded3f2914/fonttools-4.63.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:6e528da43bc3791085f8cb6141b1d13e459226790240340fcbb4625649238b03", size = 2422661, upload-time = "2026-05-14T12:03:52.154Z" }, + { url = "https://files.pythonhosted.org/packages/dd/87/64cfa18a7a1621d17b7f4502b2b0ed8a135a90c3db51ea590ee99043e76b/fonttools-4.63.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b2248c5decb223562f7902ff6325077a073f608ee8e33e88ad88db734eb9f49", size = 5010526, upload-time = "2026-05-14T12:03:54.647Z" }, + { url = "https://files.pythonhosted.org/packages/36/e1/a8933a72c45a87177fbde2696e0d0755c8c9062f8c077a961c6215fa27b1/fonttools-4.63.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:308f957cdeaf8abe4e5f2f124902ef405448af92c90f80e302a3b771c2e6116b", size = 4923946, upload-time = "2026-05-14T12:03:56.984Z" }, + { url = "https://files.pythonhosted.org/packages/27/60/872e6e233b8c5e8b41413796ff18b7fe479661bd40147e071b450dfad7a1/fonttools-4.63.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:bf00f21eb5fb721dbaf73d1e9da6d02a1af7768f2ebcf9798be98beab8ba90f6", size = 4962489, upload-time = "2026-05-14T12:03:59.443Z" }, + { url = "https://files.pythonhosted.org/packages/30/c4/83c24f2ec38b90cfda84bf4b1a1f49df80e84a1db4e7ac6e0d41bf23bc39/fonttools-4.63.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c1aaa4b9c75798400ac043ce04d74e7830376c85095a5a6ed7cba2f17a266bf4", size = 5071870, upload-time = "2026-05-14T12:04:02.122Z" }, + { url = "https://files.pythonhosted.org/packages/de/40/3ae22b60ff1d41ce0bd044b31238cdc72cef99f28b976f1e128ebd618c9b/fonttools-4.63.0-cp314-cp314-win32.whl", hash = "sha256:22693918177bd9ceabec4736d338045f357769416fc6b0b2508eefef75b08616", size = 2295026, upload-time = "2026-05-14T12:04:04.47Z" }, + { url = "https://files.pythonhosted.org/packages/c3/d4/98078064ccc76b45cb0f6c002452011e93c4bd26f6850344f0951cc1fe89/fonttools-4.63.0-cp314-cp314-win_amd64.whl", hash = "sha256:7d782fac32985914c351556f68ac0855391572bcd87de50e05970d3cd4c96fc5", size = 2347454, upload-time = "2026-05-14T12:04:06.752Z" }, + { url = "https://files.pythonhosted.org/packages/49/4e/652d1580c5f4e39f7d103b0c793e4773129ad633dce4addd0cf4dfebde02/fonttools-4.63.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:6db5140a60a5d731d21ec076745b40a310607731b0a565b50776393188649001", size = 2958152, upload-time = "2026-05-14T12:04:08.706Z" }, + { url = "https://files.pythonhosted.org/packages/0e/55/ad864c9a9b219f552eb46b32cd7906c466e5a578ba0c3abfcc0fe7413eb6/fonttools-4.63.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:7d76edbff9014094dbf03bd2d074709dfa6ec7aba13d838c937a2b33d2d6a86e", size = 2460809, upload-time = "2026-05-14T12:04:10.783Z" }, + { url = "https://files.pythonhosted.org/packages/ea/2b/0aa8db70f18cf52e49b4ed5ecec68547f981160bf5ded3b5aed6faa0a6f9/fonttools-4.63.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0eac00b9118c3c2f87d272e45341871c5b3066baa3c86897fa634a7c3fb59096", size = 5148649, upload-time = "2026-05-14T12:04:12.747Z" }, + { url = "https://files.pythonhosted.org/packages/7f/63/18e4369c25043096f1048e0c9915951adc4f842bd81c6b18155824d6fa99/fonttools-4.63.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:51394295f1a51de8b5f30bdb1e1b9a4231536c7064ef5c6e211eec19fa36036f", size = 4932147, upload-time = "2026-05-14T12:04:14.806Z" }, + { url = "https://files.pythonhosted.org/packages/a1/3f/67f3eac2ffd8a98446c5022f8ed3864eac878a5ff7af8df4c8286dba16cc/fonttools-4.63.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9e12f105d2b6342c559c298afb674006bb2893afc7102dcf8a1b55b0486b4e40", size = 5027237, upload-time = "2026-05-14T12:04:17.675Z" }, + { url = "https://files.pythonhosted.org/packages/1a/ba/4e6214cb38a7b04779e97bb7636de9a5c7f20af7018d03dee0b64c08510a/fonttools-4.63.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:796f27556dbe094c4824f75ca85267e4df776c79036c8441469a4df37038c196", size = 5053933, upload-time = "2026-05-14T12:04:20.818Z" }, + { url = "https://files.pythonhosted.org/packages/34/3b/214dcc19ee31d3d38fb5ad2755c11ef0514e5dc300bbaf41c0b69f393799/fonttools-4.63.0-cp314-cp314t-win32.whl", hash = "sha256:948428a275741f0b64b113c955425a953314f4b9ab9997f73a72c83e68e569c8", size = 2359326, upload-time = "2026-05-14T12:04:24.22Z" }, + { url = "https://files.pythonhosted.org/packages/dd/1e/3ff1a9b523058c2eeb6a9d50f5574e2a738200d0d94107d5bc4105e8da3f/fonttools-4.63.0-cp314-cp314t-win_amd64.whl", hash = "sha256:6d4741eb179121cab9eea4cb2393d24492373a260d7945006358c08cfbf45419", size = 2425829, upload-time = "2026-05-14T12:04:26.829Z" }, + { url = "https://files.pythonhosted.org/packages/2c/47/c99d5268f354002ce80f8d029cd9d7d872969da1de8b93d32de4dc56d6f4/fonttools-4.63.0-py3-none-any.whl", hash = "sha256:445af2eab030a16b9171ea8bdda7ebf7d96bda2df88ee182a464252f6e05e20d", size = 1164562, upload-time = "2026-05-14T12:04:29.092Z" }, ] [package.optional-dependencies] @@ -975,7 +955,7 @@ woff = [ [[package]] name = "gevent" -version = "26.5.0" +version = "25.9.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation == 'CPython' and sys_platform == 'win32'" }, @@ -983,67 +963,59 @@ dependencies = [ { name = "zope-event" }, { name = "zope-interface" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c4/cb/98aa3a299e2fc4a2372b5d124863e02965b64579ffc29fe54d0641e65b2f/gevent-26.5.0.tar.gz", hash = "sha256:1655eb04c1e20d71b2aa4a3c7528162dd58ff6cc46a037af1f01f534c80fefba", size = 6712354, upload-time = "2026-05-20T21:22:45.132Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/72/b7/01a5880e01702f39fb09e3616c624054a0dc9a82561a865f3b1eff4bfc80/gevent-26.5.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:2ba673dcbf7747513b58fa64ca7e9d6a828bc5c604d1552d23db89006d7911df", size = 2181491, upload-time = "2026-05-20T20:35:19.326Z" }, - { url = "https://files.pythonhosted.org/packages/8d/fe/035ec5fa58a886740a744380118f03a90ac2da3f6c9cba248f28074ce40a/gevent-26.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:271b1474d81bb33036631adb16a35e5a1ee9dc414b05c999d6b01dc839a89975", size = 2212161, upload-time = "2026-05-20T20:43:25.678Z" }, - { url = "https://files.pythonhosted.org/packages/2a/ea/ea87c08931c9e4c6c40bb05a2cb19c2d6f93fe6e0052f9152ea5ade6d037/gevent-26.5.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:cd3dc60581687e2618286108f8e2f820d8446be4b34131065011c066e911d39c", size = 1768295, upload-time = "2026-05-20T21:17:29.438Z" }, - { url = "https://files.pythonhosted.org/packages/da/92/1d0e7287ae55700a8d25153ac736896bd9bcc3f85a12d374ef398db4b33c/gevent-26.5.0-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:dc7fa28b2d627f8e87595f39043b6dec71e8e7fb97e685e5506c47cf3ff8cb2e", size = 1862627, upload-time = "2026-05-20T21:15:59.365Z" }, - { url = "https://files.pythonhosted.org/packages/3a/4c/7f5ed67e52dfdef4ff91ae1a6fb28186d52e2496962edc8f17bdea9ab2c0/gevent-26.5.0-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:68c5fc21cef80268cdff88a4ae6c025fabb019b071f6f8ee4d20a7bccbddb873", size = 1804690, upload-time = "2026-05-20T21:30:51.713Z" }, - { url = "https://files.pythonhosted.org/packages/4c/75/0f5da6ca045f8a052203e1810058029f4b682507a789b413cac7d28bae28/gevent-26.5.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d325502eb0695708ef8c899f605573ed6847f3961f8159627dba267fbf3ce457", size = 2119054, upload-time = "2026-05-20T20:35:22.678Z" }, - { url = "https://files.pythonhosted.org/packages/6e/f1/fcff7f7fad2bb33f3742db6b2145825a2191c0cd31d75789b0741fd28faf/gevent-26.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a11daf3a588b932c8bf965fb18444c69aff48badec88435e988cf8d67137075a", size = 1778784, upload-time = "2026-05-20T21:16:38.182Z" }, - { url = "https://files.pythonhosted.org/packages/98/57/151314f00bdc6ba77333febb3e9dc97fdf94d79426559b4fa8332f0c2b6e/gevent-26.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1101b5ef82a3fb178550cfd80f32293dc8dd2f3d0828292223ebba29d6f76e33", size = 2145373, upload-time = "2026-05-20T20:43:27.255Z" }, - { url = "https://files.pythonhosted.org/packages/1a/b5/7a02f711db62cbed1c1a00e1f9ff50eef95ccc78d4c04a0f93636655d1b7/gevent-26.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:5233109ad4f3af16393ba9888f238919a05ce15ce68d6831ac8a0da8dfb750ae", size = 1696576, upload-time = "2026-05-20T20:15:49.62Z" }, - { url = "https://files.pythonhosted.org/packages/f8/9b/5022adc310697ef25c6fb22eb9bf0ebcad3427b51776e882709de9a8b6d7/gevent-26.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:3be804565168ffacebeb21af9f1cd689831a89f0f12fc0c3f423c730c3c9eb31", size = 1552095, upload-time = "2026-05-20T20:16:54.81Z" }, - { url = "https://files.pythonhosted.org/packages/37/0b/1a530b2db55c97cc0cf44116201f538f3033c04c1d2aca143979b412f4be/gevent-26.5.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:e80ad2a8a1e8bdaa5605e3bf4929e0cebf9ea7b8237c83362f7257698bb14280", size = 2929714, upload-time = "2026-05-20T20:13:24.656Z" }, - { url = "https://files.pythonhosted.org/packages/b9/df/32fe851ed5f68493f354e09b19bdebae0de1185be4db0b2988e71e737fd3/gevent-26.5.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fe42c037253580a3386fce275f8a2a845e540f5a729916934a732f13d42e72cc", size = 1784838, upload-time = "2026-05-20T21:17:31.063Z" }, - { url = "https://files.pythonhosted.org/packages/e5/9a/21332674f9a10e8cdf13b41b52e9d663647a1c6e1dc3c62b07c0aeefd360/gevent-26.5.0-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:9f463c7d6f69d13b6fe8e3b832a6175a6e95328a940f38495d25496d1ae8ad88", size = 1880440, upload-time = "2026-05-20T21:16:00.881Z" }, - { url = "https://files.pythonhosted.org/packages/9f/b1/5f8a4196113cf7f3fdd987b483f7e6b10c28ea3930c4727e31ba8cce51b6/gevent-26.5.0-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:96d5e96b1b14a4c1023dcfcc114533217f13febc3b6169254f23fc18d19fee29", size = 1831592, upload-time = "2026-05-20T21:30:53.832Z" }, - { url = "https://files.pythonhosted.org/packages/4e/69/1559b1f6b5107a9118fccd300240879bd581b6d87b03d568d0d155ea702c/gevent-26.5.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:bccff69c462e3650a0fd1d4e9cfc8b6effe15f3e9b1cad20a7bb5ce14b057efd", size = 2114915, upload-time = "2026-05-20T20:35:25.041Z" }, - { url = "https://files.pythonhosted.org/packages/e4/32/602c499d54472f64e5cdf6013aeab5ce6aa6fed005387e8b4f2d22f5dc8d/gevent-26.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f519139354d5ca7625df9ddb1b2ffada885c14abc5b4dbae3682e967ddf79669", size = 1796906, upload-time = "2026-05-20T21:16:39.65Z" }, - { url = "https://files.pythonhosted.org/packages/f9/3c/2fe77ee6e3d381b3c50c0b7d6c4c08c08b8ff5e8c0d9dd51a3b426d61eec/gevent-26.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0bf57df54f1c66273bf3601c2a1e41b12138fe848933718369663bc54f177ca2", size = 2140806, upload-time = "2026-05-20T20:43:28.895Z" }, - { url = "https://files.pythonhosted.org/packages/22/d5/4620797bbd9c88f4541188efc138b0d615f9834db540da36a2249ee929c5/gevent-26.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:e49ce0de007dfd7412edbc2b5d41cce33b049bb1b7086f50be5a09e601bde603", size = 1699995, upload-time = "2026-05-20T20:15:39.311Z" }, - { url = "https://files.pythonhosted.org/packages/cb/83/ac3477dfc0f9fd80c88110102c73cefc35dcded2b248544f45a8fa5412df/gevent-26.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:5c5ff29495a2eed2a244de8150f21893d6c1b15d8b4b5719ab4bbfa06db1e28f", size = 1547433, upload-time = "2026-05-20T20:15:51.656Z" }, - { url = "https://files.pythonhosted.org/packages/7d/47/5b992ab9c8037633cfd0fe698a97a878f59d8eb53c381e91e9a1a76fd215/gevent-26.5.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:9b4d3f34c913d1a6bec6d030365a517f3b527a9773b12e58cf56c3339bbe96e6", size = 2952523, upload-time = "2026-05-20T20:13:04.698Z" }, - { url = "https://files.pythonhosted.org/packages/74/11/c7dfc773eb43331a682efed610b49df6e976331f1b0e1c592a0c35d29872/gevent-26.5.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:1d8da4e799431feeb4c9e441ac7431f0baabb9106976790d884289d08ac08359", size = 1787044, upload-time = "2026-05-20T21:17:32.845Z" }, - { url = "https://files.pythonhosted.org/packages/ae/28/9812933dac93560f46910a9e834805fe76f822c408bd1c20cdf299d7c311/gevent-26.5.0-cp313-cp313-manylinux_2_28_ppc64le.whl", hash = "sha256:51becdb4c30a8f45c1c028ad7a97bf5a1ed141f74b159a31aa9cc6aa1e6263a6", size = 1882342, upload-time = "2026-05-20T21:16:02.645Z" }, - { url = "https://files.pythonhosted.org/packages/96/4b/514f248f69b2230b69b0bb17f4158b0b05dd4b2cb469a60ab206e9fe7496/gevent-26.5.0-cp313-cp313-manylinux_2_28_s390x.whl", hash = "sha256:c42bbcd3d453b08ad8915fd3feaf3d44a3562cdf1c7b208f9837149711e16d9d", size = 1834136, upload-time = "2026-05-20T21:30:55.739Z" }, - { url = "https://files.pythonhosted.org/packages/53/67/f5f30716efca99b6200ae89a9303a7e94dae085b7de6f6d0033c52a37f4b/gevent-26.5.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bd3445e4fbeeb46690ed8efe94b8d1d46b14aa04af8866ae7a8da5997828d1c6", size = 2115349, upload-time = "2026-05-20T20:35:28.132Z" }, - { url = "https://files.pythonhosted.org/packages/09/d8/60e8809bde7986e6c4e6d106080b3603fa09b3bb0255fed1a4d8282e3ca2/gevent-26.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b573d5b2826edc705f31f07da6889ad483a6a0d64944ebd8d32205f7c5bf46fb", size = 1799443, upload-time = "2026-05-20T21:16:41.928Z" }, - { url = "https://files.pythonhosted.org/packages/f8/41/b388b2b1f0a026ea30687e51ddf81dbb783dfb55fac0a16708d2821d99e5/gevent-26.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4d53b1b28f2082a151bded2850b53f6baed02f742d2a1584029e8bd42d457fb4", size = 2141117, upload-time = "2026-05-20T20:43:30.694Z" }, - { url = "https://files.pythonhosted.org/packages/b1/f3/ac9a4b0de487e390c5d53a908a9347c0df0102de2bbf3e8603087769191d/gevent-26.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:23569ce0c254eb821fc3dcfe250843dde8b3180b09bae9e222e41aa3fa4885b7", size = 1699862, upload-time = "2026-05-20T20:15:33.642Z" }, - { url = "https://files.pythonhosted.org/packages/2a/cf/1ef1fc9b390563c0f97702f94a557d1649b7bbb5724f9b86c2122747e92f/gevent-26.5.0-cp313-cp313-win_arm64.whl", hash = "sha256:40cdcdb2e404b6c82b82a4576bdb33958f23fc2deb0d933e9e022b362001e647", size = 1545341, upload-time = "2026-05-20T20:16:26.229Z" }, - { url = "https://files.pythonhosted.org/packages/17/55/7d98d3888e7bb9ad4656420dec69232ecbbea48792aff9295d0ad7cf8435/gevent-26.5.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:75a0050e4b87f08ddee7e56f59e6014cd7fcdc3153046c09a847940515d12c85", size = 2968223, upload-time = "2026-05-20T20:13:17.223Z" }, - { url = "https://files.pythonhosted.org/packages/f8/b4/e8e116fcbcb9dc0bf3acc50037f86e1204c217c8ed5defde68be11b3aab6/gevent-26.5.0-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:fd1a0b83a04e19378d9466ae0ee2b5937cf1d7fbfdcb916b2aea82179a208574", size = 1793926, upload-time = "2026-05-20T21:17:34.321Z" }, - { url = "https://files.pythonhosted.org/packages/28/07/7b267e9754b661defb93542e97731a4df21f8a40dc0f6c853faa717cf124/gevent-26.5.0-cp314-cp314-manylinux_2_28_ppc64le.whl", hash = "sha256:4c964c15076e76391d523ec24202f579a2535f7e301a40efb1656ae046d3eb69", size = 1887632, upload-time = "2026-05-20T21:16:04.158Z" }, - { url = "https://files.pythonhosted.org/packages/5c/50/b47d29e99449bd13b557ffa451401dc13d397a9923f562ef90a4e8514502/gevent-26.5.0-cp314-cp314-manylinux_2_28_s390x.whl", hash = "sha256:45d5438d1c84da5df7e832434627624709543630977332bb4e2d05ecca362cc9", size = 1838688, upload-time = "2026-05-20T21:30:57.979Z" }, - { url = "https://files.pythonhosted.org/packages/8b/eb/5b54ccff11bc7d7bebd40a24571ccc115d5cdae4f6c32ab457b43b436e42/gevent-26.5.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:354f35924113abc954819216c2a6ee16751958c615681e0490946e31b437bd2f", size = 2120351, upload-time = "2026-05-20T20:35:32.699Z" }, - { url = "https://files.pythonhosted.org/packages/9c/70/30fd325c30e04b1e5174c61945e17421d53ddb2450366cc52cef234f8c4b/gevent-26.5.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a47cd2d32f6404212d374ad8014a3491d7477dcf0cc09c5a2308ad6d325fd663", size = 1806684, upload-time = "2026-05-20T21:16:43.87Z" }, - { url = "https://files.pythonhosted.org/packages/cd/e8/fbf911ac3f9524ecfaed174d100fde671904ab8db92ceaf07faaebd13386/gevent-26.5.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:032157cebdedb84f2f52cdd980f2f5f2623eed6a8f083aadf44b44c47f628642", size = 2146606, upload-time = "2026-05-20T20:43:32.216Z" }, - { url = "https://files.pythonhosted.org/packages/9e/4d/284fcbbfde66fd978c2980c1fbe0eabd586af6e4b728649e9cf459e8b38f/gevent-26.5.0-cp314-cp314-win_amd64.whl", hash = "sha256:9c414935ba5fc88359110968851d3616f119082c937390d00a1c0f4f59be814f", size = 1722497, upload-time = "2026-05-20T20:16:44.274Z" }, - { url = "https://files.pythonhosted.org/packages/15/d2/9f66eb53434704402be0ba733bf3320bf589671a4b76fac52a7d6077e972/gevent-26.5.0-cp314-cp314-win_arm64.whl", hash = "sha256:2a0f5993a04b95a35b3a118b1a58ba272833f9b547b774001dea29f90620882f", size = 1574249, upload-time = "2026-05-20T20:15:50.873Z" }, - { url = "https://files.pythonhosted.org/packages/dc/d5/b4c50adb761878e3c96642b9f79bf44cee3120f3df55cd40876f51d89866/gevent-26.5.0-cp315-cp315-macosx_11_0_universal2.whl", hash = "sha256:2e117df896a2660c9ebd4e2b5afc02dfd6e2ddf9b495e787e67c72d105432b09", size = 2971993, upload-time = "2026-05-20T20:12:50.845Z" }, - { url = "https://files.pythonhosted.org/packages/03/83/71c2a945e80198422d1d93dbe67355f249fb456b451bf9201199d3ef6a1a/gevent-26.5.0-cp315-cp315-manylinux_2_28_aarch64.whl", hash = "sha256:af5ffe9c11ffb8a39b6bef2e8b722aa2043ae4980977915c6aa8c68b4bc26e46", size = 1796658, upload-time = "2026-05-20T21:17:35.968Z" }, - { url = "https://files.pythonhosted.org/packages/42/96/548ca77aed5cb9a44e855a6c23ebceeb3554a0ea9ca0c01c311878899a3e/gevent-26.5.0-cp315-cp315-manylinux_2_28_ppc64le.whl", hash = "sha256:7da34aef7e87c43dd3662e5785e79ed505c01399a7cb42876d2d8925969fd75f", size = 1891473, upload-time = "2026-05-20T21:16:05.657Z" }, - { url = "https://files.pythonhosted.org/packages/f6/4f/f48bd47d5287afb0fbcc56165f3ed47583f1803bad401653fe27e71ade2d/gevent-26.5.0-cp315-cp315-manylinux_2_28_s390x.whl", hash = "sha256:1c6293a7046bcc6f3d8972a74b19cd7a4cfd02d3881edf0fcf827aa514bd247b", size = 1841429, upload-time = "2026-05-20T21:30:59.907Z" }, - { url = "https://files.pythonhosted.org/packages/a0/72/1925215fc720d2561fa3ec8d4af5f098f8d0cbfa76a45fafed6e5ade7718/gevent-26.5.0-cp315-cp315-manylinux_2_28_x86_64.whl", hash = "sha256:d3bde0f140a275b2fa88e4b6516bda85551930e10bc2fd95e18c1b7d11cb780c", size = 2123895, upload-time = "2026-05-20T20:35:34.964Z" }, - { url = "https://files.pythonhosted.org/packages/83/59/0f584f6b1170c9a6abd9b70ccf5e9cc5ead34eabafabc0e21876ef0fe6f7/gevent-26.5.0-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:e29fb4b17d9958ec8cb7f6339a111b29bc23f2c2efbef86189d1248bb4862d17", size = 1809047, upload-time = "2026-05-20T21:16:45.977Z" }, - { url = "https://files.pythonhosted.org/packages/82/88/61e854bfd98ac22eac78a97fc6db10de0f9ace46514072b435c217168729/gevent-26.5.0-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:b2239df2f7570efa03736678f3f053bb1bdd22a8a16cd28a2feb7d32ea5f533f", size = 2150764, upload-time = "2026-05-20T20:43:33.781Z" }, - { url = "https://files.pythonhosted.org/packages/b9/f5/af048b97433d7f9a7df7f5510b2c46918b7d073dcfb3bf6d0ef0e5a83dcc/gevent-26.5.0-cp315-cp315-win_amd64.whl", hash = "sha256:aae214952fd38d27a42dc416bb70193962ec932384b63445d29bbb5817a1c042", size = 1722600, upload-time = "2026-05-20T20:19:56.81Z" }, - { url = "https://files.pythonhosted.org/packages/11/95/fb74a2299c6a2d78d9de12deaaac640ab5d2ef96a8e0f97a3ff84b9ca84b/gevent-26.5.0-cp315-cp315-win_arm64.whl", hash = "sha256:f7067564f139e33bf26a31ee3b13d168d76eb99a44b85ced626652b158baa80c", size = 1574406, upload-time = "2026-05-20T20:17:12.125Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/9e/48/b3ef2673ffb940f980966694e40d6d32560f3ffa284ecaeb5ea3a90a6d3f/gevent-25.9.1.tar.gz", hash = "sha256:adf9cd552de44a4e6754c51ff2e78d9193b7fa6eab123db9578a210e657235dd", size = 5059025, upload-time = "2025-09-17T16:15:34.528Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ae/c7/2c60fc4e5c9144f2b91e23af8d87c626870ad3183cfd09d2b3ba6d699178/gevent-25.9.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:856b990be5590e44c3a3dc6c8d48a40eaccbb42e99d2b791d11d1e7711a4297e", size = 1831980, upload-time = "2025-09-17T15:41:22.597Z" }, + { url = "https://files.pythonhosted.org/packages/2e/ae/49bf0a01f95a1c92c001d7b3f482a2301626b8a0617f448c4cd14ca9b5d4/gevent-25.9.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:fe1599d0b30e6093eb3213551751b24feeb43db79f07e89d98dd2f3330c9063e", size = 1918777, upload-time = "2025-09-17T15:48:57.223Z" }, + { url = "https://files.pythonhosted.org/packages/88/3f/266d2eb9f5d75c184a55a39e886b53a4ea7f42ff31f195220a363f0e3f9e/gevent-25.9.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:f0d8b64057b4bf1529b9ef9bd2259495747fba93d1f836c77bfeaacfec373fd0", size = 1869235, upload-time = "2025-09-17T15:49:18.255Z" }, + { url = "https://files.pythonhosted.org/packages/76/24/c0c7c7db70ca74c7b1918388ebda7c8c2a3c3bff0bbfbaa9280ed04b3340/gevent-25.9.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b56cbc820e3136ba52cd690bdf77e47a4c239964d5f80dc657c1068e0fe9521c", size = 2177334, upload-time = "2025-09-17T15:15:10.073Z" }, + { url = "https://files.pythonhosted.org/packages/4c/1e/de96bd033c03955f54c455b51a5127b1d540afcfc97838d1801fafce6d2e/gevent-25.9.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c5fa9ce5122c085983e33e0dc058f81f5264cebe746de5c401654ab96dddfca8", size = 1847708, upload-time = "2025-09-17T15:52:38.475Z" }, + { url = "https://files.pythonhosted.org/packages/26/8b/6851e9cd3e4f322fa15c1d196cbf1a8a123da69788b078227dd13dd4208f/gevent-25.9.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:03c74fec58eda4b4edc043311fca8ba4f8744ad1632eb0a41d5ec25413581975", size = 2234274, upload-time = "2025-09-17T15:24:07.797Z" }, + { url = "https://files.pythonhosted.org/packages/0f/d8/b1178b70538c91493bec283018b47c16eab4bac9ddf5a3d4b7dd905dab60/gevent-25.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:a8ae9f895e8651d10b0a8328a61c9c53da11ea51b666388aa99b0ce90f9fdc27", size = 1695326, upload-time = "2025-09-17T20:10:25.455Z" }, + { url = "https://files.pythonhosted.org/packages/81/86/03f8db0704fed41b0fa830425845f1eb4e20c92efa3f18751ee17809e9c6/gevent-25.9.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:18e5aff9e8342dc954adb9c9c524db56c2f3557999463445ba3d9cbe3dada7b7", size = 1792418, upload-time = "2025-09-17T15:41:24.384Z" }, + { url = "https://files.pythonhosted.org/packages/5f/35/f6b3a31f0849a62cfa2c64574bcc68a781d5499c3195e296e892a121a3cf/gevent-25.9.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1cdf6db28f050ee103441caa8b0448ace545364f775059d5e2de089da975c457", size = 1875700, upload-time = "2025-09-17T15:48:59.652Z" }, + { url = "https://files.pythonhosted.org/packages/66/1e/75055950aa9b48f553e061afa9e3728061b5ccecca358cef19166e4ab74a/gevent-25.9.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:812debe235a8295be3b2a63b136c2474241fa5c58af55e6a0f8cfc29d4936235", size = 1831365, upload-time = "2025-09-17T15:49:19.426Z" }, + { url = "https://files.pythonhosted.org/packages/31/e8/5c1f6968e5547e501cfa03dcb0239dff55e44c3660a37ec534e32a0c008f/gevent-25.9.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b28b61ff9216a3d73fe8f35669eefcafa957f143ac534faf77e8a19eb9e6883a", size = 2122087, upload-time = "2025-09-17T15:15:12.329Z" }, + { url = "https://files.pythonhosted.org/packages/c0/2c/ebc5d38a7542af9fb7657bfe10932a558bb98c8a94e4748e827d3823fced/gevent-25.9.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5e4b6278b37373306fc6b1e5f0f1cf56339a1377f67c35972775143d8d7776ff", size = 1808776, upload-time = "2025-09-17T15:52:40.16Z" }, + { url = "https://files.pythonhosted.org/packages/e6/26/e1d7d6c8ffbf76fe1fbb4e77bdb7f47d419206adc391ec40a8ace6ebbbf0/gevent-25.9.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d99f0cb2ce43c2e8305bf75bee61a8bde06619d21b9d0316ea190fc7a0620a56", size = 2179141, upload-time = "2025-09-17T15:24:09.895Z" }, + { url = "https://files.pythonhosted.org/packages/1d/6c/bb21fd9c095506aeeaa616579a356aa50935165cc0f1e250e1e0575620a7/gevent-25.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:72152517ecf548e2f838c61b4be76637d99279dbaa7e01b3924df040aa996586", size = 1677941, upload-time = "2025-09-17T19:59:50.185Z" }, + { url = "https://files.pythonhosted.org/packages/f7/49/e55930ba5259629eb28ac7ee1abbca971996a9165f902f0249b561602f24/gevent-25.9.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:46b188248c84ffdec18a686fcac5dbb32365d76912e14fda350db5dc0bfd4f86", size = 2955991, upload-time = "2025-09-17T14:52:30.568Z" }, + { url = "https://files.pythonhosted.org/packages/aa/88/63dc9e903980e1da1e16541ec5c70f2b224ec0a8e34088cb42794f1c7f52/gevent-25.9.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f2b54ea3ca6f0c763281cd3f96010ac7e98c2e267feb1221b5a26e2ca0b9a692", size = 1808503, upload-time = "2025-09-17T15:41:25.59Z" }, + { url = "https://files.pythonhosted.org/packages/7a/8d/7236c3a8f6ef7e94c22e658397009596fa90f24c7d19da11ad7ab3a9248e/gevent-25.9.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:7a834804ac00ed8a92a69d3826342c677be651b1c3cd66cc35df8bc711057aa2", size = 1890001, upload-time = "2025-09-17T15:49:01.227Z" }, + { url = "https://files.pythonhosted.org/packages/4f/63/0d7f38c4a2085ecce26b50492fc6161aa67250d381e26d6a7322c309b00f/gevent-25.9.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:323a27192ec4da6b22a9e51c3d9d896ff20bc53fdc9e45e56eaab76d1c39dd74", size = 1855335, upload-time = "2025-09-17T15:49:20.582Z" }, + { url = "https://files.pythonhosted.org/packages/95/18/da5211dfc54c7a57e7432fd9a6ffeae1ce36fe5a313fa782b1c96529ea3d/gevent-25.9.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6ea78b39a2c51d47ff0f130f4c755a9a4bbb2dd9721149420ad4712743911a51", size = 2109046, upload-time = "2025-09-17T15:15:13.817Z" }, + { url = "https://files.pythonhosted.org/packages/a6/5a/7bb5ec8e43a2c6444853c4a9f955f3e72f479d7c24ea86c95fb264a2de65/gevent-25.9.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:dc45cd3e1cc07514a419960af932a62eb8515552ed004e56755e4bf20bad30c5", size = 1827099, upload-time = "2025-09-17T15:52:41.384Z" }, + { url = "https://files.pythonhosted.org/packages/ca/d4/b63a0a60635470d7d986ef19897e893c15326dd69e8fb342c76a4f07fe9e/gevent-25.9.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:34e01e50c71eaf67e92c186ee0196a039d6e4f4b35670396baed4a2d8f1b347f", size = 2172623, upload-time = "2025-09-17T15:24:12.03Z" }, + { url = "https://files.pythonhosted.org/packages/d5/98/caf06d5d22a7c129c1fb2fc1477306902a2c8ddfd399cd26bbbd4caf2141/gevent-25.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:4acd6bcd5feabf22c7c5174bd3b9535ee9f088d2bbce789f740ad8d6554b18f3", size = 1682837, upload-time = "2025-09-17T19:48:47.318Z" }, + { url = "https://files.pythonhosted.org/packages/5a/77/b97f086388f87f8ad3e01364f845004aef0123d4430241c7c9b1f9bde742/gevent-25.9.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:4f84591d13845ee31c13f44bdf6bd6c3dbf385b5af98b2f25ec328213775f2ed", size = 2973739, upload-time = "2025-09-17T14:53:30.279Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/9d5f204ead343e5b27bbb2fedaec7cd0009d50696b2266f590ae845d0331/gevent-25.9.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9cdbb24c276a2d0110ad5c978e49daf620b153719ac8a548ce1250a7eb1b9245", size = 1809165, upload-time = "2025-09-17T15:41:27.193Z" }, + { url = "https://files.pythonhosted.org/packages/10/3e/791d1bf1eb47748606d5f2c2aa66571f474d63e0176228b1f1fd7b77ab37/gevent-25.9.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:88b6c07169468af631dcf0fdd3658f9246d6822cc51461d43f7c44f28b0abb82", size = 1890638, upload-time = "2025-09-17T15:49:02.45Z" }, + { url = "https://files.pythonhosted.org/packages/f2/5c/9ad0229b2b4d81249ca41e4f91dd8057deaa0da6d4fbe40bf13cdc5f7a47/gevent-25.9.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b7bb0e29a7b3e6ca9bed2394aa820244069982c36dc30b70eb1004dd67851a48", size = 1857118, upload-time = "2025-09-17T15:49:22.125Z" }, + { url = "https://files.pythonhosted.org/packages/49/2a/3010ed6c44179a3a5c5c152e6de43a30ff8bc2c8de3115ad8733533a018f/gevent-25.9.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2951bb070c0ee37b632ac9134e4fdaad70d2e660c931bb792983a0837fe5b7d7", size = 2111598, upload-time = "2025-09-17T15:15:15.226Z" }, + { url = "https://files.pythonhosted.org/packages/08/75/6bbe57c19a7aa4527cc0f9afcdf5a5f2aed2603b08aadbccb5bf7f607ff4/gevent-25.9.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e4e17c2d57e9a42e25f2a73d297b22b60b2470a74be5a515b36c984e1a246d47", size = 1829059, upload-time = "2025-09-17T15:52:42.596Z" }, + { url = "https://files.pythonhosted.org/packages/06/6e/19a9bee9092be45679cb69e4dd2e0bf5f897b7140b4b39c57cc123d24829/gevent-25.9.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8d94936f8f8b23d9de2251798fcb603b84f083fdf0d7f427183c1828fb64f117", size = 2173529, upload-time = "2025-09-17T15:24:13.897Z" }, + { url = "https://files.pythonhosted.org/packages/ca/4f/50de9afd879440e25737e63f5ba6ee764b75a3abe17376496ab57f432546/gevent-25.9.1-cp313-cp313-win_amd64.whl", hash = "sha256:eb51c5f9537b07da673258b4832f6635014fee31690c3f0944d34741b69f92fa", size = 1681518, upload-time = "2025-09-17T19:39:47.488Z" }, + { url = "https://files.pythonhosted.org/packages/15/1a/948f8167b2cdce573cf01cec07afc64d0456dc134b07900b26ac7018b37e/gevent-25.9.1-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:1a3fe4ea1c312dbf6b375b416925036fe79a40054e6bf6248ee46526ea628be1", size = 2982934, upload-time = "2025-09-17T14:54:11.302Z" }, + { url = "https://files.pythonhosted.org/packages/9b/ec/726b146d1d3aad82e03d2e1e1507048ab6072f906e83f97f40667866e582/gevent-25.9.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0adb937f13e5fb90cca2edf66d8d7e99d62a299687400ce2edee3f3504009356", size = 1813982, upload-time = "2025-09-17T15:41:28.506Z" }, + { url = "https://files.pythonhosted.org/packages/35/5d/5f83f17162301662bd1ce702f8a736a8a8cac7b7a35e1d8b9866938d1f9d/gevent-25.9.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:427f869a2050a4202d93cf7fd6ab5cffb06d3e9113c10c967b6e2a0d45237cb8", size = 1894902, upload-time = "2025-09-17T15:49:03.702Z" }, + { url = "https://files.pythonhosted.org/packages/83/cd/cf5e74e353f60dab357829069ffc300a7bb414c761f52cf8c0c6e9728b8d/gevent-25.9.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c049880175e8c93124188f9d926af0a62826a3b81aa6d3074928345f8238279e", size = 1861792, upload-time = "2025-09-17T15:49:23.279Z" }, + { url = "https://files.pythonhosted.org/packages/dd/65/b9a4526d4a4edce26fe4b3b993914ec9dc64baabad625a3101e51adb17f3/gevent-25.9.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b5a67a0974ad9f24721034d1e008856111e0535f1541499f72a733a73d658d1c", size = 2113215, upload-time = "2025-09-17T15:15:16.34Z" }, + { url = "https://files.pythonhosted.org/packages/e5/be/7d35731dfaf8370795b606e515d964a0967e129db76ea7873f552045dd39/gevent-25.9.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1d0f5d8d73f97e24ea8d24d8be0f51e0cf7c54b8021c1fddb580bf239474690f", size = 1833449, upload-time = "2025-09-17T15:52:43.75Z" }, + { url = "https://files.pythonhosted.org/packages/65/58/7bc52544ea5e63af88c4a26c90776feb42551b7555a1c89c20069c168a3f/gevent-25.9.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ddd3ff26e5c4240d3fbf5516c2d9d5f2a998ef87cfb73e1429cfaeaaec860fa6", size = 2176034, upload-time = "2025-09-17T15:24:15.676Z" }, + { url = "https://files.pythonhosted.org/packages/c2/69/a7c4ba2ffbc7c7dbf6d8b4f5d0f0a421f7815d229f4909854266c445a3d4/gevent-25.9.1-cp314-cp314-win_amd64.whl", hash = "sha256:bb63c0d6cb9950cc94036a4995b9cc4667b8915366613449236970f4394f94d7", size = 1703019, upload-time = "2025-09-17T19:30:55.272Z" }, ] [[package]] name = "google-auth" -version = "2.50.0" +version = "2.55.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cryptography" }, { name = "pyasn1-modules" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5f/18/238d7021d151bdab868f23433817b027dd759135202f4dfce0670d1230ca/google_auth-2.50.0.tar.gz", hash = "sha256:f35eafb191195328e8ce10a7883970877e7aeb49c2bfaa54aa0e394316d353d0", size = 336523, upload-time = "2026-04-30T21:19:29.659Z" } +sdist = { url = "https://files.pythonhosted.org/packages/81/1c/70b23fc52b2bb3c70b379f3bd05c4a60ab3a873e30c6bd21c57e0154848a/google_auth-2.55.0.tar.gz", hash = "sha256:fcd3a130f575fa36403d38774af1c64a4fbfbca09215f0589d2372b5119697cb", size = 349379, upload-time = "2026-06-15T22:33:16.466Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/37/cf/4880c2137c14280b2f59975cdf12cc442bc0ae1f9ea473a26eaa0c146786/google_auth-2.50.0-py3-none-any.whl", hash = "sha256:04382175e28b94f49694977f0a792688b59a668def1499e9d8de996dc9ce5b15", size = 246495, upload-time = "2026-04-30T21:19:27.664Z" }, + { url = "https://files.pythonhosted.org/packages/44/71/c0321dc6d63d99946da45f7c06299b934e4f7f7da5c4f14d101bcb39adf1/google_auth-2.55.0-py3-none-any.whl", hash = "sha256:a17cef9dedf98c4ebae2fb0c48c8f75952c877cbc2efe09f329ef16c2783d88a", size = 252400, upload-time = "2026-06-15T22:33:14.992Z" }, ] [package.optional-dependencies] @@ -1053,7 +1025,7 @@ requests = [ [[package]] name = "google-genai" -version = "1.74.0" +version = "2.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -1067,100 +1039,100 @@ dependencies = [ { name = "typing-extensions" }, { name = "websockets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/33/c8/4a8f1de0a3268d526a345b8c74456b3e1e6ffd200982626326cf7ca83e5b/google_genai-1.74.0.tar.gz", hash = "sha256:c4c473cebdeb6e5adbb0639326de66a3a85a2209e0d32de7d66bf05c698abae8", size = 536772, upload-time = "2026-04-29T22:16:35.881Z" } +sdist = { url = "https://files.pythonhosted.org/packages/51/75/81c01294db3a3005dc8a807ed889a10ecd66ef89462c118adcffa5f7981c/google_genai-2.9.0.tar.gz", hash = "sha256:a8a10e9113f460cc668c1d9deeb62ba393ad1ba704bf3166d5a0f32a434f9415", size = 595700, upload-time = "2026-06-19T08:23:42.718Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ca/2b/539c328b66f7bfef2df869371a1789361228e5a7694ba02a642608367b46/google_genai-1.74.0-py3-none-any.whl", hash = "sha256:87d0b311c67d4b2a0ca741e9fc6891330c29defae81d46d8db41079aa1a3d80a", size = 790433, upload-time = "2026-04-29T22:16:33.979Z" }, + { url = "https://files.pythonhosted.org/packages/a3/17/bb2cdd0a6c6fec32f14e85735917d1052f82430b1de58c2b606740740419/google_genai-2.9.0-py3-none-any.whl", hash = "sha256:2a79e2b08e8439f5f25c2b42f98e3f3e8ea4be9c9265f5d7321580dbaf2764f4", size = 950790, upload-time = "2026-06-19T08:23:40.995Z" }, ] [[package]] name = "greenlet" -version = "3.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6d/6e/802acd792aebb2256fbbee8cacf2727faaeb6f240ac11008f09eae4414bc/greenlet-3.5.1.tar.gz", hash = "sha256:5a56aeb7d5d9cc4b3a735efb5095bd4b4f6f0e4f93e5ca876d0e2315137b7829", size = 197356, upload-time = "2026-05-20T15:05:03.917Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/21/117c8710abb7f146d804a124c07eb5964a60b90d02b72452885aecc18efa/greenlet-3.5.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:7eacb17a9d41538a2bc4912eba5ef13823c83cb69e4d141d0813debe7163187f", size = 283510, upload-time = "2026-05-20T13:12:26.475Z" }, - { url = "https://files.pythonhosted.org/packages/b9/f7/6762a56fa5f6c2295c449c6524e10ce481e381c994cc44d9d03aef0700fb/greenlet-3.5.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e5cc9606aa5f4e0bde0d3bd502b44f743864c3ffa5cfa1011b1e30f5aa02366f", size = 599696, upload-time = "2026-05-20T14:00:02.906Z" }, - { url = "https://files.pythonhosted.org/packages/0f/05/85a511e68ee109aff0aa00b4b497806091dd2d82ce209e49c6e801bd5d92/greenlet-3.5.1-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c3d35f87c7253b715d13d679e0783d845910144f282cb939fe1ba4ac8616269c", size = 612618, upload-time = "2026-05-20T14:05:39.202Z" }, - { url = "https://files.pythonhosted.org/packages/2e/19/60df45065b2981ff894fdd51e7c99a3a4b107412822b083d88d5d528f663/greenlet-3.5.1-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:00929c98ec525fd9bf075875d8c5f6a983a90906cdf78a66e6de2d8e466c2a19", size = 619237, upload-time = "2026-05-20T14:09:06.421Z" }, - { url = "https://files.pythonhosted.org/packages/89/b8/8b83d18ae07c46c019617f35afd7b47aab7f9b4fbb12fc637d681e10bdd8/greenlet-3.5.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:540dae7b956209af4d70a3be35927b4055f617763771e5e84a5255bea934d2f5", size = 612947, upload-time = "2026-05-20T13:14:23.469Z" }, - { url = "https://files.pythonhosted.org/packages/26/9a/4ba4c2bc9d9df5f41bb8943fb7bb11e440352e6b9c2e36716b6e85f8b82d/greenlet-3.5.1-cp310-cp310-manylinux_2_39_riscv64.whl", hash = "sha256:001775efe7b8e758861294c7a27c28af87f3f3f1c20468a2bc618c45b346c061", size = 415653, upload-time = "2026-05-20T14:01:36.999Z" }, - { url = "https://files.pythonhosted.org/packages/5d/14/ad1f9fc9b82384c010212464a3702bd911f95dab2f1180bc6fbcfb1f958c/greenlet-3.5.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed8cdb691169715a9a492844a83246f090182247d1a5031dc78a403f68ba1e97", size = 1571425, upload-time = "2026-05-20T14:02:22.671Z" }, - { url = "https://files.pythonhosted.org/packages/46/1c/43b8203cf10f4292c9e3d270e9e5f5ade79115a0a0ca5ea6f1be5f8915a7/greenlet-3.5.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9d59e840387076a51016777a9328b3f2c427c6f9208a6e958bad251be50a648d", size = 1638688, upload-time = "2026-05-20T13:14:30.026Z" }, - { url = "https://files.pythonhosted.org/packages/ac/6e/0344b1e99f58f71715456e46492101fd2daa408957b8186ade0a4b515da7/greenlet-3.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:b9152fca4a6466e114aaec745ae61cba739903a109754a9d4e1262f01e9259b1", size = 237763, upload-time = "2026-05-20T13:11:35.659Z" }, - { url = "https://files.pythonhosted.org/packages/42/3c/ff890b466eaba2b0f5e6bdfff025f8c75f41b8ffdc3dbc3d24ad261e764a/greenlet-3.5.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:73f78f9b9f0a5c06e5c946ba1e8e36f5114923b6be109ee618c54f079c3ea14f", size = 284764, upload-time = "2026-05-20T13:09:10.204Z" }, - { url = "https://files.pythonhosted.org/packages/81/0e/5e5457be3d256918f6a4756f073548a3f0190836e2cc94aa6d0d617a940b/greenlet-3.5.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a0cbed8bb44e23c5b199f888f4e4ce096b45ad9f25ff74a7ad0213875e936bb2", size = 603479, upload-time = "2026-05-20T14:00:04.757Z" }, - { url = "https://files.pythonhosted.org/packages/6d/e1/f89a21d58d308298e6f275f13a1b472ed96c680b601a371b08be6a725989/greenlet-3.5.1-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a203a8bd0acb0701653d3bbb26e404854a68674139ed5cbb778830f42b09bb33", size = 615495, upload-time = "2026-05-20T14:05:40.87Z" }, - { url = "https://files.pythonhosted.org/packages/2c/f2/8fd452fd81adb9ec79c8275c1375702ab0fd6bee4952da12eaa09b9508d8/greenlet-3.5.1-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6ebeb75c81211f5c702576cf81f315e77e23cfdb2c7c6fcb9dd143e6de35c360", size = 623515, upload-time = "2026-05-20T14:09:07.853Z" }, - { url = "https://files.pythonhosted.org/packages/75/de/af6cef182862d2ccd6975440d21c9058a77c3f9b469abf94e322dfd2e0e3/greenlet-3.5.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8a271fcd66c74615cda6a964fda3f304267a12e50a084472218a39bb0376f563", size = 614754, upload-time = "2026-05-20T13:14:24.947Z" }, - { url = "https://files.pythonhosted.org/packages/ec/bc/c318aa9f3ffc77320fddcee3d892be957b42e2ff947198d9450b004f3a38/greenlet-3.5.1-cp311-cp311-manylinux_2_39_riscv64.whl", hash = "sha256:017a544f0385d441e88714160d089d6900ef46c9eff9d99b6715a5ef2d127747", size = 418439, upload-time = "2026-05-20T14:01:38.446Z" }, - { url = "https://files.pythonhosted.org/packages/1a/c6/50e520283a9f19388a7326b05f9e8637e566003475eacaadad04f558c68d/greenlet-3.5.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ded7b068c7c31c1a8657d4fd42d886b3e051ae29f88b80c5ff9d502257b0f071", size = 1574097, upload-time = "2026-05-20T14:02:24.003Z" }, - { url = "https://files.pythonhosted.org/packages/21/1c/13abd1f4860d987fa5e1170a01930d6e6cd40d328de487a3c9fdaff0ffd0/greenlet-3.5.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0932b81d72f552ded9d810d00021b64d89f2195a91ce115b893f943b7a4ab3c", size = 1641058, upload-time = "2026-05-20T13:14:31.83Z" }, - { url = "https://files.pythonhosted.org/packages/f5/56/5f332b7705545eac2dc01b4e9254d24a793f2656d55d5cc6b94ee59d22ae/greenlet-3.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:88e300d136eac057b2397aa1cfd7328b4c87c7eb66a09c7bc6a1292234db474e", size = 238089, upload-time = "2026-05-20T13:14:03.229Z" }, - { url = "https://files.pythonhosted.org/packages/d9/a9/a3c2fa886c5b94863fb0e61b3bc14610b7aa94cf4f17f8741b11708305fc/greenlet-3.5.1-cp311-cp311-win_arm64.whl", hash = "sha256:cc6ab7e555c8a112ad3a76e368e86e12a2754bcae1652a5602e133ec7b635523", size = 234989, upload-time = "2026-05-20T13:08:27.715Z" }, - { url = "https://files.pythonhosted.org/packages/c4/37/4549f149c9797c21b32c2683c33522af22522099de128b2406672526d005/greenlet-3.5.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:fa4f98af3a528f0c3fd592a26df7f376f93329c8f4d987f6bb979057af8bf5e2", size = 286220, upload-time = "2026-05-20T13:07:28.463Z" }, - { url = "https://files.pythonhosted.org/packages/38/ff/a4f436709716965eaab9f36ea7b906c8a927fbe32fb1372a2071d964f6b1/greenlet-3.5.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ffea73584b216150eab159b6d12348fb253e68757974de1e2c40d8a318ac89ed", size = 601585, upload-time = "2026-05-20T14:00:06.141Z" }, - { url = "https://files.pythonhosted.org/packages/65/ad/54bc3fcee3ad368a61b19b67d88117f7a8c29727bf71fffdeda81fbd946e/greenlet-3.5.1-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1072b4f9edcc1e192d9283a66a3e68d6b84c561de33a83d7858beb9ba1effe10", size = 614215, upload-time = "2026-05-20T14:05:42.675Z" }, - { url = "https://files.pythonhosted.org/packages/7c/6c/de5b1b388cd2d9fbdfeab324863daba37d54e6e233ddbefd70b385a8c591/greenlet-3.5.1-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:89101bfd5011e069be974903cb3a4e4523845e4ece2d62dcd8d358933c0ef249", size = 620094, upload-time = "2026-05-20T14:09:09.18Z" }, - { url = "https://files.pythonhosted.org/packages/40/69/b91cda0647df839483201545913514c2827ebea5e5ccdf931842763bc127/greenlet-3.5.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:add5217d68b31130f0beca584d7fef4878327d2e31642b66618a14eef312b63b", size = 611358, upload-time = "2026-05-20T13:14:26.37Z" }, - { url = "https://files.pythonhosted.org/packages/4a/43/1204baffab8a6476464795a7ccf394a3248d4f22c9f87173a15b36b6d971/greenlet-3.5.1-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:e6cd99ea59dd5d89f0c956606571d79bfe6f68c9eb7f4a4083a41a7f1587edee", size = 422782, upload-time = "2026-05-20T14:01:39.597Z" }, - { url = "https://files.pythonhosted.org/packages/59/90/3cf77e080350cd02fa307bb2abf05df48f4482c240275bbd2c203ba8bb1c/greenlet-3.5.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a5ea42a752d47a145eae922b605cd1634665ac3d5ec1e72402d5048e8d60d207", size = 1570475, upload-time = "2026-05-20T14:02:25.29Z" }, - { url = "https://files.pythonhosted.org/packages/65/2c/18cece62045e74598c3c393f70dce4a63f56222015ba29a5d4eeb04f764c/greenlet-3.5.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c5551170cf4f5ff5623e9af81323751979fee2c731e2287b61f73cd27257b823", size = 1635625, upload-time = "2026-05-20T13:14:34.027Z" }, - { url = "https://files.pythonhosted.org/packages/30/f5/310d104ddf41eb5a70f4c268d22508dfb0c3c8e86fec152be34d0d2ed819/greenlet-3.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:3c8bb982ad117d29478ef8f5533e97df21f1e2befd17a299257b0c96d1371c0b", size = 238791, upload-time = "2026-05-20T13:10:39.018Z" }, - { url = "https://files.pythonhosted.org/packages/62/90/ceca11f504cd23a8047a3dea31919adc48df9b626dd0c13f0d858734fdfd/greenlet-3.5.1-cp312-cp312-win_arm64.whl", hash = "sha256:80eb4b04dadc4e67df3fae179a32c4706a3f495bc7f22fc8a81115d5f5512188", size = 235580, upload-time = "2026-05-20T13:08:45.056Z" }, - { url = "https://files.pythonhosted.org/packages/27/69/7f7e5372d998b81001899b1c0823c957aa413ba0f2662e65821611cc31e4/greenlet-3.5.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:51518ff74664078fc51bffcc6fc529b0df5ae58da192691cee765d45ce944a2b", size = 285060, upload-time = "2026-05-20T13:08:51.899Z" }, - { url = "https://files.pythonhosted.org/packages/b1/bf/387f9b6b865fd2ae0d0be09e0004827295a01b71be76ed350dd1e28a91a4/greenlet-3.5.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ffdb3c0bb002c99cd8f298957e046c3dbf6006b5b7cdf11a4e19194624a0a0a", size = 604370, upload-time = "2026-05-20T14:00:07.492Z" }, - { url = "https://files.pythonhosted.org/packages/32/f5/169ce3d4e4c67291bd18f8cbe0299c9f3e45102c7f1fb3c14780c93e4532/greenlet-3.5.1-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7715a5a2c3378ba602c3a440558261e13a820bb53a82693aacd7b7f6d964e283", size = 616987, upload-time = "2026-05-20T14:05:44.237Z" }, - { url = "https://files.pythonhosted.org/packages/19/ba/c24110c55dffa55aa6e1d98b45310da33801aeba7686ff0190fe5d46fd32/greenlet-3.5.1-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d40a890035c0058cadbdc4af7569800fd28a0e527a0fdbb7b5f9418f176846ce", size = 622911, upload-time = "2026-05-20T14:09:10.598Z" }, - { url = "https://files.pythonhosted.org/packages/ee/e5/7f2e41d5273be07e77560d61ea4e56485b4d6c316d2a84518c62d1364061/greenlet-3.5.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dc71ff466927a201b08305acac451ebe1aedfcea002f62f1f2f2ac2ac1e6a135", size = 613911, upload-time = "2026-05-20T13:14:27.539Z" }, - { url = "https://files.pythonhosted.org/packages/ec/7b/d20db2e8a5ad6c038702f3179b136f93f0a3d1a21a0c0777f3e470cdf4b2/greenlet-3.5.1-cp313-cp313-manylinux_2_39_riscv64.whl", hash = "sha256:67821bb03e4e98664490edb787ff6af501194c29bbee0f5c1dfdcf1dc3d9d436", size = 425228, upload-time = "2026-05-20T14:01:40.837Z" }, - { url = "https://files.pythonhosted.org/packages/c5/a4/fbdc67579b73615a1f91615e814303cc71e06128f7baaba87be79b8fb90c/greenlet-3.5.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cd443683db272ebaaca03af98c0b063ab30db70ea8a31a1559f35e3f7b744ccd", size = 1570689, upload-time = "2026-05-20T14:02:27.225Z" }, - { url = "https://files.pythonhosted.org/packages/e6/b4/77abbe35078be39718a46cd49caf16bceb35662f97a34101dca28aa98e47/greenlet-3.5.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:089fff7a6ce8d9316d1f65ebc00273a56be258c1725b32b94de90a3a979557e1", size = 1635602, upload-time = "2026-05-20T13:14:36.344Z" }, - { url = "https://files.pythonhosted.org/packages/37/f7/129f27ca700845b8ee8ca88ce7f43435a1239c2eddb7677fc938822762cf/greenlet-3.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:110a1ca7b49b014b097f6078272c3f4ed31af45b254de5228b79adba879f6af9", size = 238683, upload-time = "2026-05-20T13:11:50.57Z" }, - { url = "https://files.pythonhosted.org/packages/6d/5c/a485a36e87df8d8fd0632ee01511244f5156a20ed3746cc6599340326395/greenlet-3.5.1-cp313-cp313-win_arm64.whl", hash = "sha256:f16ba1efc0715b680a18b8123d90dad887c6112ae3555b4b5c32c149540c6b4e", size = 235499, upload-time = "2026-05-20T13:12:42.028Z" }, - { url = "https://files.pythonhosted.org/packages/8a/cb/c62454606daf5640369c94d8a9dd540599b1bfc090e2d2180cb77f4038d2/greenlet-3.5.1-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:d8ab31c9de8651a2facdd5c5bb0011f2380dd1a7af78ce2adf4b56095294fc07", size = 285579, upload-time = "2026-05-20T13:08:56.396Z" }, - { url = "https://files.pythonhosted.org/packages/ec/71/c4270398c2eba968a6071af1dfbdcaeee6ec1c24bc8b435b8cc452700da6/greenlet-3.5.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e300185139abc337ade480c327183adf42a875ac7181bfe66d7d4efea31fbea", size = 651106, upload-time = "2026-05-20T14:00:09.448Z" }, - { url = "https://files.pythonhosted.org/packages/1a/ab/71e34b78a44ec271fb5f550c17bc46d301ddc5953890d935f270b0dcdb5a/greenlet-3.5.1-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7ffdb990dcaa0234cf9845aead5df2e3c3a8b6507d409274dd87e0d5ab05ffc2", size = 663478, upload-time = "2026-05-20T14:05:45.88Z" }, - { url = "https://files.pythonhosted.org/packages/c6/2d/2d80842910da44f78c286532d084b8a5c3717c844ae80ceb3858738ae89a/greenlet-3.5.1-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c09df69dc1712d131332054a858a3e5cca400967fa3a672e2324fbb0971448c", size = 667767, upload-time = "2026-05-20T14:09:12.15Z" }, - { url = "https://files.pythonhosted.org/packages/77/96/4efd6fa5c62c85426a0c19077a586258ebc3a2a146ff2493e4312a697a22/greenlet-3.5.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2f82b3597e9d83b63408affed0b48fd0f54935edac4302237b9a837be0dae33c", size = 660800, upload-time = "2026-05-20T13:14:29.129Z" }, - { url = "https://files.pythonhosted.org/packages/e9/d3/dad2eecedfbb1ed7050a20dcfae40c1442b74bc7423608be2c7e03ee7133/greenlet-3.5.1-cp314-cp314-manylinux_2_39_riscv64.whl", hash = "sha256:a4764e0bfc6a4d114c865b32520805c16a990ef5f286a514413b05d5ecd6a23d", size = 470786, upload-time = "2026-05-20T14:01:42.064Z" }, - { url = "https://files.pythonhosted.org/packages/7a/e0/6c71401a25cac7000261304e866a2f2cc04dc74810d40e2f118aa4799495/greenlet-3.5.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c0141e37414c10164e702b8fb1473304221ad98f71600850c6ef7ff4880feba0", size = 1617518, upload-time = "2026-05-20T14:02:28.662Z" }, - { url = "https://files.pythonhosted.org/packages/41/26/c5c06643e8c0af9e7bf18e16cb51d0ab7625155f0392e1c9015d66d556cd/greenlet-3.5.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:50ae25a67bea74ea41fb14b960bc532df73eb713417b2d61892dced82fe8d3bc", size = 1681593, upload-time = "2026-05-20T13:14:39.417Z" }, - { url = "https://files.pythonhosted.org/packages/8a/bd/e11a108317485075e68af9d23039619b86b28130c3b50d227d42edece64b/greenlet-3.5.1-cp314-cp314-win_amd64.whl", hash = "sha256:8a17c42330e261299766b75ac1ea32caa437a9453c8f65d16a13140db378ecd3", size = 239800, upload-time = "2026-05-20T13:09:30.128Z" }, - { url = "https://files.pythonhosted.org/packages/47/f8/8e8e8417b7bf28639a5a56356ef934d0375e1d0c70a57e04d7701e870ffe/greenlet-3.5.1-cp314-cp314-win_arm64.whl", hash = "sha256:7b5f5fae05b8ac6d176a61b60c394a8cbdc2b5b91b81793066e68745cf165e54", size = 236862, upload-time = "2026-05-20T13:09:10.498Z" }, - { url = "https://files.pythonhosted.org/packages/90/12/41bf27fde4d3605d3773ae57751eda182b8be2f5398011c041173b1d9534/greenlet-3.5.1-cp314-cp314t-macosx_11_0_universal2.whl", hash = "sha256:ea8da1e900d758d078810d4255d8c6aa572181896a31ec79d779eb79c3adc9ad", size = 293637, upload-time = "2026-05-20T13:12:35.529Z" }, - { url = "https://files.pythonhosted.org/packages/44/44/ba14b23e9757707050c2f397d305bbcae62e5d7cad122f8b6baec5ae4a1f/greenlet-3.5.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a19570c52a21420dcbc94e661994bc325c0b5b11304540fed514586da5dc8f2e", size = 650840, upload-time = "2026-05-20T14:00:11.079Z" }, - { url = "https://files.pythonhosted.org/packages/a8/37/5ddc2b686a6844f91abecef43411842426da2e1573f60b49ecf2547f4ae1/greenlet-3.5.1-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3d955c89b75eeca4723d7cc14135f393cd47c32e2a6cb4a8e4c6e760a26b0986", size = 656416, upload-time = "2026-05-20T14:05:47.118Z" }, - { url = "https://files.pythonhosted.org/packages/8c/46/5987dcd1a2570ba84f3b187536b2ca3ae97613387e57f5cfa99df068fe5e/greenlet-3.5.1-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ea37d5a157eb9493820d3792ac4ece28619a394391d2b9f2f78057d396ff0f0f", size = 656607, upload-time = "2026-05-20T14:09:13.949Z" }, - { url = "https://files.pythonhosted.org/packages/e1/f0/d17510297c35a2992712f0bf84de3779749999f7d3d63aa1f09db7c62dbe/greenlet-3.5.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2daaaebd1a5aa88c49045b6baf9310b3263796bd88db713edf37cf53e7bb4e", size = 654397, upload-time = "2026-05-20T13:14:30.696Z" }, - { url = "https://files.pythonhosted.org/packages/2c/c1/6da0a9ddcc29d7e51ef14883fa3dc1e53b3f4ffba00582106c7bf55da1d8/greenlet-3.5.1-cp314-cp314t-manylinux_2_39_riscv64.whl", hash = "sha256:8d8a23250ea3ec7b36de8fa4b541e9e2db3ee82915cc060ab0631609ad8b28de", size = 488287, upload-time = "2026-05-20T14:01:43.143Z" }, - { url = "https://files.pythonhosted.org/packages/37/eb/147387705bb89092645b012586e7273cb5ed3c90ef7eaf3a69173eaf0209/greenlet-3.5.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3bfbd69cc349e43bf3a8ae1c85548ff0718efc887615c2db16c3833d7b0b072d", size = 1614469, upload-time = "2026-05-20T14:02:30.192Z" }, - { url = "https://files.pythonhosted.org/packages/a6/4e/37ee0da7732b7aa9896f17e15579a9df34b9fcb9dd494f0adfa749af6623/greenlet-3.5.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4378720dd888136c27215a0214d32a4d37c3852765d45bc37aad0623423cfd78", size = 1675115, upload-time = "2026-05-20T13:14:40.972Z" }, - { url = "https://files.pythonhosted.org/packages/57/f3/97dfcf4a6eb5077f8a672234216fb5923eb89f2cab7081cb10b2cf75b605/greenlet-3.5.1-cp314-cp314t-win_amd64.whl", hash = "sha256:45718441607f9325d948db98cbc691276059316d0358c188c246da4e1d4d23d2", size = 245246, upload-time = "2026-05-20T13:12:22.646Z" }, - { url = "https://files.pythonhosted.org/packages/5d/73/d7f72e34b582f694f4a9b248162db7b09cc458a259ba8f0c0bfa1a34ea7d/greenlet-3.5.1-cp315-cp315-macosx_11_0_universal2.whl", hash = "sha256:2baee5ca02031757ffe8cc3d69f0cc0aec7065ce362622da74f32d3bcab1c541", size = 285575, upload-time = "2026-05-20T13:12:07.043Z" }, - { url = "https://files.pythonhosted.org/packages/df/59/fa9c6e87dc8ad27a95dabe2f29f372b733d05a8a67470f6c901ed9975655/greenlet-3.5.1-cp315-cp315-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9b1ec3274918a81d3ea778b9e75b56b72b33f300edb6cf7f3a7fe1dae56683de", size = 656428, upload-time = "2026-05-20T14:00:12.556Z" }, - { url = "https://files.pythonhosted.org/packages/f6/f9/e753408871eaa61dfe35e619cfc67512b036fde99893685d50eea9e07146/greenlet-3.5.1-cp315-cp315-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:111e2390ffffc47d5840b01711dd7fac07d4c09283d0283e7f3264b14e284c64", size = 667064, upload-time = "2026-05-20T14:05:48.662Z" }, - { url = "https://files.pythonhosted.org/packages/dc/74/807a047255bf1e09303627c46dc043dca596b6958a354d904f32ab382005/greenlet-3.5.1-cp315-cp315-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:10a9a1c0bfbc93d41156ffcb90c75fbc05544054faf15dcc1fdf9765f8b607f0", size = 672962, upload-time = "2026-05-20T14:09:15.532Z" }, - { url = "https://files.pythonhosted.org/packages/96/27/5565b5b40389f1c7753003a07e21892fda8660926787036d5bc0308b8113/greenlet-3.5.1-cp315-cp315-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e630136e905fe5ff43e86945ae41220b6d1470956a39220e708110ac48d01ea5", size = 665697, upload-time = "2026-05-20T13:14:32.943Z" }, - { url = "https://files.pythonhosted.org/packages/76/32/19d4e13225193c29b13e308015223f7d75fd3d8623d49dd19040d2ce8ec1/greenlet-3.5.1-cp315-cp315-manylinux_2_39_riscv64.whl", hash = "sha256:ef08c1567c78074b22d1a200183d52d04a14df447bf70bcbb6a3507a48e776fc", size = 476047, upload-time = "2026-05-20T14:01:44.39Z" }, - { url = "https://files.pythonhosted.org/packages/cf/82/e7de4178c0c2d1c9a5a3be3cc0b33e46a85b3ee4a77c071bf7ad8600e079/greenlet-3.5.1-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:975eac34b44a7077ca4d421348455b94f0f518246a7f14bc6d2fdcfe5b584368", size = 1621256, upload-time = "2026-05-20T14:02:31.91Z" }, - { url = "https://files.pythonhosted.org/packages/00/10/f2dddcf7dacac17dfc68691809589adad06135eb28930429cf58a6467a2f/greenlet-3.5.1-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:9ab3c3a0b2ae6198e67c898dad5215a49f9ae0d0081b3c3ec59f333e39eeca26", size = 1685956, upload-time = "2026-05-20T13:14:42.55Z" }, - { url = "https://files.pythonhosted.org/packages/22/17/4a232b32133230ada52f70e9d7f5b65b0caef8772f01849bd8d149e7e4ca/greenlet-3.5.1-cp315-cp315-win_amd64.whl", hash = "sha256:cbfc69be86e10dcfef5b1e6269d1d6926552aa89ee39e1de3353360c1b6989ab", size = 239802, upload-time = "2026-05-20T13:13:15.481Z" }, - { url = "https://files.pythonhosted.org/packages/c2/ae/4e623a7e6d4d2a5f4cb8e4c82de4169fc637942caae68d6e676b8a128ac5/greenlet-3.5.1-cp315-cp315-win_arm64.whl", hash = "sha256:92fd6d44ac5e5a887c8a5dc4a8ba0ba908527c31c12f78c6bc7dcfe8aab279f6", size = 236853, upload-time = "2026-05-20T13:15:37.301Z" }, - { url = "https://files.pythonhosted.org/packages/7a/57/816d9cff29119da3505b3d6a5e14a8af89006ac36f47f891ff293ee05af1/greenlet-3.5.1-cp315-cp315t-macosx_11_0_universal2.whl", hash = "sha256:a6fdf2433a5441ef9a95464f7c3e674775da1c8c1177fff311cee1acad4626ed", size = 293877, upload-time = "2026-05-20T13:10:19.078Z" }, - { url = "https://files.pythonhosted.org/packages/23/a1/59b0a7c7d140ff1a75626680b9a9899b79a9176cab298b394968fb023295/greenlet-3.5.1-cp315-cp315t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7546556f0d649f99f6a361098a55f761181bb2ea12ff150bb16d26092ad88244", size = 655333, upload-time = "2026-05-20T14:00:14.758Z" }, - { url = "https://files.pythonhosted.org/packages/72/1b/5efe127597625042218939d01855109f352779050768b670b52edcc16a6c/greenlet-3.5.1-cp315-cp315t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d5ee3ea898009fa898f85f9982255d35278c477bebe185beca249cab42d4526c", size = 659443, upload-time = "2026-05-20T14:05:50.159Z" }, - { url = "https://files.pythonhosted.org/packages/c9/9d/1dcdf7b95ab3cf8c7b6d7277c18a5e167312f2b362ddfcc5d5e6d8d84b43/greenlet-3.5.1-cp315-cp315t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a57b0d05a0448eed231d59c0ceb287dde984551e54cbc51ac2d4865712838e9c", size = 659998, upload-time = "2026-05-20T14:09:16.912Z" }, - { url = "https://files.pythonhosted.org/packages/6c/6d/c404246ea4d22d097a7426d0efb5b781bd7eb67715f09e79001bd552ab18/greenlet-3.5.1-cp315-cp315t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a5c81f74d204d3edd136ebfd50dce53acbb776995d721a0fe801626cfc93b8cd", size = 658356, upload-time = "2026-05-20T13:14:35.091Z" }, - { url = "https://files.pythonhosted.org/packages/05/7e/c4959664fc231d587d66d8e81f2095e98056ba1954beafdcbe635e251052/greenlet-3.5.1-cp315-cp315t-manylinux_2_39_riscv64.whl", hash = "sha256:b0703c2cef53e01baec47f7a3868009913ad71ec678bbecb42a6f40895e4ce62", size = 494470, upload-time = "2026-05-20T14:01:45.611Z" }, - { url = "https://files.pythonhosted.org/packages/51/02/f8ee37fb6d2219329f350af241c27fcf12df57e723d11f6fc6d3bacdadaa/greenlet-3.5.1-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:2c18ef16bf6d4dd410e4dd52996888ea1497be26892fe5bbc73580aba4287b8e", size = 1619216, upload-time = "2026-05-20T14:02:33.403Z" }, - { url = "https://files.pythonhosted.org/packages/93/c5/3dc9475ace2c7a3680da12372cddd7f1ac874eb410a1ac48d3e9dab83782/greenlet-3.5.1-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:17d86354f0ae6b61bf9be5148d0dd34e06c3cb7c602c671f79f29ac3b150e659", size = 1678427, upload-time = "2026-05-20T13:14:43.71Z" }, - { url = "https://files.pythonhosted.org/packages/df/4e/750c15c317a41ffb36f0bf40b933e3d744a7dede61889f74443ea69690cf/greenlet-3.5.1-cp315-cp315t-win_amd64.whl", hash = "sha256:e7516cf6ae6b8a582c2770a0caed47b8a48373ed732c33d69a72913ae6ac923e", size = 245225, upload-time = "2026-05-20T13:13:59.366Z" }, - { url = "https://files.pythonhosted.org/packages/4f/fd/d3baea2eeb7b617efd47e87ca06e2ec2c6118d303aa9e918e0ce16eadc10/greenlet-3.5.1-cp315-cp315t-win_arm64.whl", hash = "sha256:5028648bf2253ec4745add746129d3904121fa7fe871a76bed23c5720573ce0a", size = 239590, upload-time = "2026-05-20T13:13:37.382Z" }, +version = "3.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dd/8b/befc3cb36965f397d87e86fb3b00e3ec0dc67c1ecb0986d7f54ee528f018/greenlet-3.5.2.tar.gz", hash = "sha256:c1b906220d83c140361cdd12eef970fb5881a168b98ee58a43786426173da14c", size = 199243, upload-time = "2026-06-17T20:19:01.317Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/3a/cd99db55dc908568f6b91845747b98b3b17a06052fa1803d091dc91da27d/greenlet-3.5.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9df9daae96848508450011d0d86ed7c95f8829a354ce438284a77b24896fd1f8", size = 285626, upload-time = "2026-06-17T17:33:33.231Z" }, + { url = "https://files.pythonhosted.org/packages/ce/09/fd997a19cbb97641233c7d5f8fc89314c132be2c8867c4f14beff979996f/greenlet-3.5.2-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:01e32e9d2b1714a2b06184cb3071ff2a2fd9bc7d065e39198ab21f7253dad421", size = 601821, upload-time = "2026-06-17T18:07:16.756Z" }, + { url = "https://files.pythonhosted.org/packages/7d/b0/62abd204addd913ad9856e091f5d8baaedc7c85df151f22f093b8a207c20/greenlet-3.5.2-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0488ca77c94da5e09d1d9958f98b58cebba1b8fd9664c24898499133de927574", size = 615044, upload-time = "2026-06-17T18:29:39.344Z" }, + { url = "https://files.pythonhosted.org/packages/9f/5f/0f1db88a69c427e57091079b1478ae8e704de289b4f564ec573b3cdac38a/greenlet-3.5.2-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bc18b8d33e6976804b9b792fe11cb3b1fee8b646e8a9e20bf521a429ddf73520", size = 621981, upload-time = "2026-06-17T18:39:23.961Z" }, + { url = "https://files.pythonhosted.org/packages/34/67/ceaab731b51611a8238b0af2d4abb4fd727ec09b16cd499fca5295603f46/greenlet-3.5.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6d9e19257794e28821c9ebd5e23f86d7c267cd9d390089374f068d2049f949e3", size = 615176, upload-time = "2026-06-17T17:39:25.134Z" }, + { url = "https://files.pythonhosted.org/packages/47/bc/8c0c0768765eb57851bf65202e675e5ce6615fc4ce11d0e10be903cdc919/greenlet-3.5.2-cp310-cp310-manylinux_2_39_riscv64.whl", hash = "sha256:2c6d6bfa4fdd7c39a0dbf112cdf28edbd19c517c810eefb6e4e71b0d55933a4c", size = 417918, upload-time = "2026-06-17T18:41:16.46Z" }, + { url = "https://files.pythonhosted.org/packages/1c/40/51a0ee73b72a7e4a65b54433316bbd7b3b7902a585310cd4e3051d411ee3/greenlet-3.5.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bf493b3c1c0a2324c49b0472e2280ba4665f3510d8115f6f807759a6163b15f7", size = 1574580, upload-time = "2026-06-17T18:22:09.082Z" }, + { url = "https://files.pythonhosted.org/packages/41/d3/a3a2163b1fe73042d3e72cfcb9920f2481d5188a1df2645587a9b83a903f/greenlet-3.5.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:561dd919c02236a613fbf226791cbd77ee5002cbd5cb7e838869aa3ac7a71e16", size = 1641192, upload-time = "2026-06-17T17:40:04.234Z" }, + { url = "https://files.pythonhosted.org/packages/95/a3/b4d83fb451e2f7266cb45ccef23857f8a800e0a5d9a73263fafdf7ba7904/greenlet-3.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:049827baab63dda8ab8ec5a6d07fc6eb0f418319cfc757fc8737a605e99ca1ad", size = 238247, upload-time = "2026-06-17T17:34:54.794Z" }, + { url = "https://files.pythonhosted.org/packages/21/68/371ee6dad168be3386c46030bedaa8e3e7e3cf3d203621d4529e78ff36ef/greenlet-3.5.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:d7792398872f89466c6671d5d193537eff163ecf7fac78d82e6ddc25017fb4f5", size = 286925, upload-time = "2026-06-17T17:33:17.928Z" }, + { url = "https://files.pythonhosted.org/packages/26/16/ed5706c26b4d26f3fabceb79abca992654eac8b0fa435def2ac6dbd92122/greenlet-3.5.2-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:711028c953cd6ce5dc01bbb5a1747e3ad6bd8b2f7ded73778bb936e8dab9e3b6", size = 606036, upload-time = "2026-06-17T18:07:18.538Z" }, + { url = "https://files.pythonhosted.org/packages/8e/32/f9c77093af9f5f96615922b7e3fe3690a9faff02adb89f1d74e21578b147/greenlet-3.5.2-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5eba55076d79e8a5176e6925295cfb901ebc95dae493342ede22230f75d8bee2", size = 617821, upload-time = "2026-06-17T18:29:41.317Z" }, + { url = "https://files.pythonhosted.org/packages/27/f5/a963a939039aa5acafc2f9535f6cc8958ad30afe1478e2e37ab5098af74d/greenlet-3.5.2-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1724499fc08388208408681c53c5062e9803c334e5a0bdaeb616228ba882aac8", size = 625675, upload-time = "2026-06-17T18:39:25.767Z" }, + { url = "https://files.pythonhosted.org/packages/bd/d4/642833e778c17d32b5cabb793e14ce7364c55952462fc506fecdee55d485/greenlet-3.5.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1c1e5ad80f1f38ea479b83b39dccb20874cfe9ad5e52f87225fa294ba4d39a1", size = 616877, upload-time = "2026-06-17T17:39:26.564Z" }, + { url = "https://files.pythonhosted.org/packages/ef/c8/995a898ebbf44e3da0b7ea6fbc1631518c185fb83467a5d6cf408d6d3ced/greenlet-3.5.2-cp311-cp311-manylinux_2_39_riscv64.whl", hash = "sha256:e976f9f6941f57d87a194c91868622c8b22a142a741d2fde31655c319133ade6", size = 420572, upload-time = "2026-06-17T18:41:18.035Z" }, + { url = "https://files.pythonhosted.org/packages/d3/cc/7120f83e78b8be3cf7acbe2306b3b7bd2cbf99f5ad12e85e2f05d7b31961/greenlet-3.5.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9e194b996aa1b89d933cfe136e5eb39b22a8b72ba59d376ef39a55bca4dbf47f", size = 1577274, upload-time = "2026-06-17T18:22:10.692Z" }, + { url = "https://files.pythonhosted.org/packages/fa/d8/05a0074ee485dd51c320fd706fd7ed48006b9cad3443092d7df1a655f0d2/greenlet-3.5.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4e554809538bd4867f24421b43abde170f9c9b8192149b30df5e164bcac6124f", size = 1643566, upload-time = "2026-06-17T17:40:05.452Z" }, + { url = "https://files.pythonhosted.org/packages/35/fe/9fe2060bdeece682e38d381184ae66045b48ed183c107ab3f88b9886a630/greenlet-3.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:e063263ce9047878480d7e536012fc8b7c8e1922989eb5f03b9ab998a2ee7b7e", size = 238643, upload-time = "2026-06-17T17:37:03.039Z" }, + { url = "https://files.pythonhosted.org/packages/41/13/a9db72f5b6b700977ebd371d6a1f2984a08838357de924fcd5571607b1bf/greenlet-3.5.2-cp311-cp311-win_arm64.whl", hash = "sha256:a3f76a94e2d6e1fee8f302265679d8cc47d71a203936dd03c6e2ace0f9cfd46d", size = 237135, upload-time = "2026-06-17T17:34:34.14Z" }, + { url = "https://files.pythonhosted.org/packages/3f/7a/6bc2a7835731387ed303b9390ce68a116ab053df05450a59181239200454/greenlet-3.5.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:76dae33e97b52743a19210931ee3e78a88fe1438bc2fc4ee5e7512d289bfad4f", size = 288351, upload-time = "2026-06-17T17:36:17.019Z" }, + { url = "https://files.pythonhosted.org/packages/57/1b/bd98062fcef6d0e9d0873ab6f2d029772e6ea342972ae43275bd6177900f/greenlet-3.5.2-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:30252d191d6959df1d040b559a38fc017139606c5ecc2ad00416557c0355d742", size = 604273, upload-time = "2026-06-17T18:07:20.296Z" }, + { url = "https://files.pythonhosted.org/packages/25/e6/fe392c522bf45d976abe7db2793f6ef4e87b053ebb869deeaae46aeb54da/greenlet-3.5.2-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1adc23c50f22b0f5979521909a8360ab4a3d3bef8b641ce633a04cf1b1c967ea", size = 616536, upload-time = "2026-06-17T18:29:43.205Z" }, + { url = "https://files.pythonhosted.org/packages/42/df/cdb1f75f07214f13110e7e3879531f11c26083bd480a56a9474c430ec44c/greenlet-3.5.2-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:87359c23eb4e8f1b16da68faad29bf5aeb80e3628d7d8e4aa2e41c36879ddedd", size = 621843, upload-time = "2026-06-17T18:39:27.507Z" }, + { url = "https://files.pythonhosted.org/packages/68/4a/399ff81fa93a19d6a9df394cef0355f082dbc19ad41aba9593cd0ad444e2/greenlet-3.5.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f052fff492c52fdfa99bd3b3c1389a53de37dae76a0562741417f0d018f02b3", size = 613749, upload-time = "2026-06-17T17:39:28.148Z" }, + { url = "https://files.pythonhosted.org/packages/2e/25/36a3628a7edcfeefddd3101dc88039c79721c5f8d688db7ebed1cbaaa789/greenlet-3.5.2-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:f4d67c1684db3f9782c37ee4bade3f86f5a23a8fcf3f8359224106018ca40728", size = 424889, upload-time = "2026-06-17T18:41:19.469Z" }, + { url = "https://files.pythonhosted.org/packages/a5/75/f519593f12ad43d08e28c03a95cfe2eeae011707dbc9dab0c4a263ce90f9/greenlet-3.5.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:120b77c2a18ebf629c3a7886f68c6d01e065654844ad468f15bb93ace66f2094", size = 1573725, upload-time = "2026-06-17T18:22:12.023Z" }, + { url = "https://files.pythonhosted.org/packages/f1/bc/bc1ea4b0754c6c51bbf9d94677b0b1f7fbda8cbb404e44a896854fc0a940/greenlet-3.5.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a850f6224088ef7dcc70f1a545cb6b3d119c35d6dca63b925b9f35da0635cdad", size = 1638132, upload-time = "2026-06-17T17:40:06.971Z" }, + { url = "https://files.pythonhosted.org/packages/36/c0/f0f5a34247df60de285f75f22e57f14027f4b3c43820981854b5b643ca6d/greenlet-3.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:89da99ee8345b458ea2f16831dad31c88ddcdec454b48704d569a0b8fb28f146", size = 239393, upload-time = "2026-06-17T17:33:47.09Z" }, + { url = "https://files.pythonhosted.org/packages/09/17/a8544e165445f30aea67a8d9cf2786d2bb0eb1b0e0d224b4d9bd80e2d587/greenlet-3.5.2-cp312-cp312-win_arm64.whl", hash = "sha256:ca92411942154023c65851e6077d8ca0d00f19de5fa80bb2c6f196ff6c920ba9", size = 237723, upload-time = "2026-06-17T17:36:47.776Z" }, + { url = "https://files.pythonhosted.org/packages/d0/3c/bb37b9d40d65b0741a8b040ca5c307034d0a9822994dff5f825c88dd7a6b/greenlet-3.5.2-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:0629377725977252159de1ebd3c6e49c170a63856e585446797bb3d66d4d9c34", size = 287178, upload-time = "2026-06-17T17:35:25.132Z" }, + { url = "https://files.pythonhosted.org/packages/f0/a6/0c5902393f492f8ceb19d0b5cf139284e3a11b333a049739643b1036b6f8/greenlet-3.5.2-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a2ddf9eddc617681108dd071b3feabf3f4a4cd64846254aec4d4ceda098b639a", size = 606900, upload-time = "2026-06-17T18:07:21.692Z" }, + { url = "https://files.pythonhosted.org/packages/d8/7c/42899c31d4b87148ae4e3f87f63e13398824be6241f4dde42ded95768a34/greenlet-3.5.2-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f41feb9f2b59e2e61ac9bea4e344ddd9396bf3cacb2583f73a3595ed7df6f8e7", size = 619265, upload-time = "2026-06-17T18:29:44.837Z" }, + { url = "https://files.pythonhosted.org/packages/6a/7e/28f991affb413b232b1e7d768db24c37b3f4d5daecc3f19b455d40bd2dea/greenlet-3.5.2-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:9dc23f0e5ad76415457212a4b947d22ebe4dc80baf02adf7dd5647a90f38bb4e", size = 625044, upload-time = "2026-06-17T18:39:29.046Z" }, + { url = "https://files.pythonhosted.org/packages/d3/52/4ff8c98d3cfe62b4515f8584ae14510a58f35c549cc5292b78d9b7a40b70/greenlet-3.5.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:09201fa698768db245920b00fdc86ee3e73540f01ca6db162be9632642e1a473", size = 616187, upload-time = "2026-06-17T17:39:29.473Z" }, + { url = "https://files.pythonhosted.org/packages/29/05/0cc9ec660e7acff85f93b0a048b6654371c822c884add44c02a465cf70e0/greenlet-3.5.2-cp313-cp313-manylinux_2_39_riscv64.whl", hash = "sha256:423167363c510a75b649f5cd58d873c29498ea03598b9e4b1c3b73e0f899f3d5", size = 427322, upload-time = "2026-06-17T18:41:20.892Z" }, + { url = "https://files.pythonhosted.org/packages/c9/a6/269c8bf9aefc13361ce1088f0e392b154cb21005de7862e42b5d782b81fd/greenlet-3.5.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a1759fa4f14c398508cf20dc8037de55cc23ae8bd14c185c2718257837195ca5", size = 1573778, upload-time = "2026-06-17T18:22:13.497Z" }, + { url = "https://files.pythonhosted.org/packages/1f/9b/391d015cbc6323e81b14c02cf825fdca7e0049c9bb489bf4ac72883118ba/greenlet-3.5.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b9318cdeb9abdbfdd8bc8464ee4a06dffde2c7846e1def138365a6240ab2c9a5", size = 1638092, upload-time = "2026-06-17T17:40:08.163Z" }, + { url = "https://files.pythonhosted.org/packages/49/53/5b4df711f4356c62e85d9f819d87966d526d1cfb32bae49a8f7d6fc36ea4/greenlet-3.5.2-cp313-cp313-win_amd64.whl", hash = "sha256:2c3b3311af72b3d3b03cc0f1ffd11f072e834be5d0444105cf715fc44434e39c", size = 239352, upload-time = "2026-06-17T17:38:51.593Z" }, + { url = "https://files.pythonhosted.org/packages/bb/b6/18efc3a329ec035c3f344b8f2b60356451950ddf9b7b64ff00023778a1dd/greenlet-3.5.2-cp313-cp313-win_arm64.whl", hash = "sha256:f9bbd6216c45a563c2a61e478e038b439d9f248bde44f775ea37d339da643af4", size = 237635, upload-time = "2026-06-17T17:35:36.632Z" }, + { url = "https://files.pythonhosted.org/packages/c7/89/aaafc8e14de4ac882e02ccb963225329b0e8578aba4365e71eb678e45722/greenlet-3.5.2-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:1c31219badba285858ba8ed117f403dea7fafee6bade9a1991875aae530c3ceb", size = 287676, upload-time = "2026-06-17T17:33:31.514Z" }, + { url = "https://files.pythonhosted.org/packages/b8/fc/2308249206c12ac70de7b9a00970f84f07d10b3cd60e05d2fbcaa84124e8/greenlet-3.5.2-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6f96ed6f4adc1066954ae95f45717657cb67468ef3b89e9a3632e14a625a8f39", size = 653552, upload-time = "2026-06-17T18:07:23.493Z" }, + { url = "https://files.pythonhosted.org/packages/7c/24/47730d1f8f1336b9b089237521ed7a26eee997065dcb4cab81cdca333abc/greenlet-3.5.2-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5795e883e915333c0d5648faaa691857fbc7180136883edc377f50f0d509c2a8", size = 665756, upload-time = "2026-06-17T18:29:46.616Z" }, + { url = "https://files.pythonhosted.org/packages/23/5c/2664d290cbd1fef9eb3f69b5d3bc5aa91b6fa907519298ca6af93a90c6cb/greenlet-3.5.2-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6e9e49d732ee92a189bb7035e293029244aeba648297a9b856dc733d17ca7f0d", size = 669989, upload-time = "2026-06-17T18:39:30.79Z" }, + { url = "https://files.pythonhosted.org/packages/99/69/d6c99db15dc0b5e892ac3cc7b942c8b21f4a9cc3bd9ea0bc3b0f339ffbd4/greenlet-3.5.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:26aed8d9503ca78889141a9739d71b383efea5f472a7c522b5410f7eb2a1b163", size = 663228, upload-time = "2026-06-17T17:39:31.073Z" }, + { url = "https://files.pythonhosted.org/packages/42/d4/fcb53fa9847d7fbd4723fbed9469c3869b9e3544c4e001d9d5aa2f66162d/greenlet-3.5.2-cp314-cp314-manylinux_2_39_riscv64.whl", hash = "sha256:537c5c4f30395020bb9f48f53146070e3b997c3c75da14011ab732aaa19ce3ef", size = 472888, upload-time = "2026-06-17T18:41:22.511Z" }, + { url = "https://files.pythonhosted.org/packages/4f/88/9e603f448e2bc107c883e95817b980fb9b45ba6aea0299b2e9978124bea2/greenlet-3.5.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:dbebc038fcdda8f8f21cce985fd04e34e0f42007e7fc7ab7ad285caf77974b95", size = 1620723, upload-time = "2026-06-17T18:22:14.817Z" }, + { url = "https://files.pythonhosted.org/packages/11/91/26da17e3777858c16fdb8d020a4c68f3a03cb92f238de8f5351d5d5186e9/greenlet-3.5.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a207023f1cf8695fd82580b8099c09c5809be18bc2282362cdfb965dd884a317", size = 1684227, upload-time = "2026-06-17T17:40:09.536Z" }, + { url = "https://files.pythonhosted.org/packages/2d/44/b3a11f7aa34cb38f1b7f3df8bcd9fcd09bac9d342c2a2c9b8686c804bcd2/greenlet-3.5.2-cp314-cp314-win_amd64.whl", hash = "sha256:c674a1dd4fe41f6a93febe7ab366ceabf15080ea31a9307811c56dac5f435f73", size = 240257, upload-time = "2026-06-17T17:35:23.359Z" }, + { url = "https://files.pythonhosted.org/packages/de/e3/3b62145fe917311732041a258adb218248add00542e3131c48bd047fbed5/greenlet-3.5.2-cp314-cp314-win_arm64.whl", hash = "sha256:3c417cd6c593bbbef6f7aa31a79f37d3db7d18832fc56b694a2150130bde784e", size = 239038, upload-time = "2026-06-17T17:37:56.792Z" }, + { url = "https://files.pythonhosted.org/packages/47/ac/d3bad483e9f6cd1848604fdffa32cac25846dd6dfcec0e6f81c790185518/greenlet-3.5.2-cp314-cp314t-macosx_11_0_universal2.whl", hash = "sha256:a96457a30384de52d9c5d2fd33abf6c1daae3db392cd556738f408b1a79a1cf0", size = 295668, upload-time = "2026-06-17T17:36:02.293Z" }, + { url = "https://files.pythonhosted.org/packages/00/e9/3a7e557b895fd0469b00cd0b2bd498ba950e8bfdf6d7adeecf2c5e4130a6/greenlet-3.5.2-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e4af5d4961818ab651d09c1448a03b1ba2a1726a076266ebb62330bab9f3238c", size = 652820, upload-time = "2026-06-17T18:07:24.95Z" }, + { url = "https://files.pythonhosted.org/packages/78/67/6225d5c5e4afc04be0fd161eec82e4b72017e8a100d222f25d7b42b0140d/greenlet-3.5.2-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a1789a6244ea1ba61fd4386c9a6a31873e9b0234762103364be98ef87dcb19f3", size = 658697, upload-time = "2026-06-17T18:29:48.365Z" }, + { url = "https://files.pythonhosted.org/packages/35/ad/9b3058f999b81750a9c6d9ec424f509462d232b58002086fe2ba63b66407/greenlet-3.5.2-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2ee6288f1933d698b4f098127ed17bda2910a75d2807915bd16294a972055d6c", size = 658945, upload-time = "2026-06-17T18:39:32.509Z" }, + { url = "https://files.pythonhosted.org/packages/fa/99/6324b8ef916dcaddccb340b304c992ca3f947614ce0f2685d438187300b8/greenlet-3.5.2-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3be00501fb4a8c37f6b4b3c4773808ceb26ea65c7ea64fd5735d0f330b3786de", size = 656436, upload-time = "2026-06-17T17:39:32.509Z" }, + { url = "https://files.pythonhosted.org/packages/92/75/1b6ecd8c027b69ab1b6798a84094df79aab5e69ac7e249c78b9d361dd1fa/greenlet-3.5.2-cp314-cp314t-manylinux_2_39_riscv64.whl", hash = "sha256:b4cad42662c796334c2d24607c411e3ed82481c1fb4e1e8ec3a5a8416060092e", size = 490529, upload-time = "2026-06-17T18:41:23.954Z" }, + { url = "https://files.pythonhosted.org/packages/a9/ee/f5bf9daac27c5e1b011965f64b5630a32b415daf7381b312943629e12c2a/greenlet-3.5.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1d554cd96841a68d464d75a3736f8e87408a7b02b1930a75fa32feb408ad62f8", size = 1617193, upload-time = "2026-06-17T18:22:16.252Z" }, + { url = "https://files.pythonhosted.org/packages/8a/21/b05d5b12715bda92ce27c118d64971d21e9b8f3563ed959a7d271e2d4223/greenlet-3.5.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3dff6cd3aac35f6cd3fc23460105acf576f5faf6c378de0bc088bf37c913864a", size = 1677512, upload-time = "2026-06-17T17:40:10.771Z" }, + { url = "https://files.pythonhosted.org/packages/b8/97/1b8f1314b868041b327dc1051603e8142b826480cb0ecb8a7b7632aee9c4/greenlet-3.5.2-cp314-cp314t-win_amd64.whl", hash = "sha256:36cfea2aa075d544617176b2e84450480f0797070ad8799a8c41ada2fe449d32", size = 243145, upload-time = "2026-06-17T17:34:37.502Z" }, + { url = "https://files.pythonhosted.org/packages/36/07/1b5311775e04c718a118c504d7a3a312430e2a1bd1347226aff4774e4549/greenlet-3.5.2-cp315-cp315-macosx_11_0_universal2.whl", hash = "sha256:a0314aa832c94633355dc6f3ee54f195159533355a323f26926fc63b98b2ccbb", size = 288315, upload-time = "2026-06-17T17:34:34.04Z" }, + { url = "https://files.pythonhosted.org/packages/ed/cc/6abcd2a486b58b9f77b7a93b690d59cb2c11a5906ed2ad4c63c7b9c1113d/greenlet-3.5.2-cp315-cp315-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:24c59cb7db9d5c694cb8fd0c76eef8e456b2123afdfa7e4b8f2a67a0860d7682", size = 659130, upload-time = "2026-06-17T18:07:26.354Z" }, + { url = "https://files.pythonhosted.org/packages/f2/12/f4aaad6d3d383233f700ab322568a4f29f2c701a4861d85f4811d99689b2/greenlet-3.5.2-cp315-cp315-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7bb811753703739ad318112f16eccfaabdac050037b6d092debaa8b23566b4ce", size = 669724, upload-time = "2026-06-17T18:29:50.13Z" }, + { url = "https://files.pythonhosted.org/packages/53/e0/4ce3a046b51e53934eae93d7f9c13975a97285741e9e1fcadf8751314c37/greenlet-3.5.2-cp315-cp315-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2debcd0ef9455b7d4879589903efc8e497d4b8fb8c0ae772309e44d1ca5e957f", size = 673494, upload-time = "2026-06-17T18:39:34.196Z" }, + { url = "https://files.pythonhosted.org/packages/91/2a/a089811fc31c6bf8742f40a4e73470d6d401cef18e4314eb20dc399b377c/greenlet-3.5.2-cp315-cp315-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6d78b5c1c178dad90447f1b8452262709d3eef4c98f825569e74c9d0b2260ac9", size = 668089, upload-time = "2026-06-17T17:39:33.808Z" }, + { url = "https://files.pythonhosted.org/packages/52/e0/9c18721e63445dce02ee67e4c81c0f281626604ff55ae6f7b7f4354d7129/greenlet-3.5.2-cp315-cp315-manylinux_2_39_riscv64.whl", hash = "sha256:9558cae989faeab6fbb425cd98a0cfa4190a47fba6443973fbee0a1eb0b0b6c3", size = 479721, upload-time = "2026-06-17T18:41:25.726Z" }, + { url = "https://files.pythonhosted.org/packages/0f/1c/2f47c7d5fcfa98a62b705bf9a0505d86f4563c0d81cab1f7159ff1e743b7/greenlet-3.5.2-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:0977af2df83136f81c1f76e76d4e2fe7d0dc56ea9c101a86af26a95190b9ca32", size = 1625684, upload-time = "2026-06-17T18:22:17.664Z" }, + { url = "https://files.pythonhosted.org/packages/b9/bf/661dd24624f70b7b32972d7693d0344ecde10278f647d7b828baf739899c/greenlet-3.5.2-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:f9ed777c6891d8253e54468576f55e27f8fc1a662a664f946a191003574c0a74", size = 1688043, upload-time = "2026-06-17T17:40:12.403Z" }, + { url = "https://files.pythonhosted.org/packages/60/49/d9bde1d15a21296b3b521fe083eb8aabd54ac05d15de9832918f3d639543/greenlet-3.5.2-cp315-cp315-win_amd64.whl", hash = "sha256:c0ea4eb3de23f0bac1d75205e10ccfa9b418b17b01a2d7bf19e3b69dda08900a", size = 240531, upload-time = "2026-06-17T17:35:47.448Z" }, + { url = "https://files.pythonhosted.org/packages/7f/4d/86d7768bd53e9907de0333df215c2018cd01a593b3715cbd79aa82dd94b7/greenlet-3.5.2-cp315-cp315-win_arm64.whl", hash = "sha256:7a7bfc200be40d04961d7e80e8337d726c0c1a50777e588123c3ed8ba731dcb9", size = 239579, upload-time = "2026-06-17T17:39:39.954Z" }, + { url = "https://files.pythonhosted.org/packages/92/15/907be5e8900901039bae752fa9a31c03a3c1e064833f35a4e49449184581/greenlet-3.5.2-cp315-cp315t-macosx_11_0_universal2.whl", hash = "sha256:98a52d6a50d4deaba304331d83ee3e10ebbdc1517fcca40b2715d1de4534065c", size = 296697, upload-time = "2026-06-17T17:37:15.887Z" }, + { url = "https://files.pythonhosted.org/packages/95/5c/08c57be575c3d6a3c023bbf22144a1c7dc6ed4d134527bb36ded4dbf04a8/greenlet-3.5.2-cp315-cp315t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1587ff8b58fdf806993ed1490a06ac19c22d47b219c68b30954380029045d8d4", size = 656710, upload-time = "2026-06-17T18:07:28.046Z" }, + { url = "https://files.pythonhosted.org/packages/8c/d0/749f917bdc9fc90fceea4aa65fbf6556e617a50714d1496bdc8ad190bb36/greenlet-3.5.2-cp315-cp315t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:feb721811d2754bfd16b48de151dd6b1f222c048e625151f2ca44cfdfd69f59c", size = 662629, upload-time = "2026-06-17T18:29:51.728Z" }, + { url = "https://files.pythonhosted.org/packages/55/87/10776cd88df54d0f563e9e21e98363f2d6af94bedc553b1da0972fa87f80/greenlet-3.5.2-cp315-cp315t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a9476cbead736dc48ce89e3cd97acff95ecc48cbf21273603a438f9870c4a014", size = 663191, upload-time = "2026-06-17T18:39:35.639Z" }, + { url = "https://files.pythonhosted.org/packages/5a/a5/68cefae3a07f6d0093a490cf28ab604f14578f3e60205a2a2b2d5cd70af2/greenlet-3.5.2-cp315-cp315t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7fe6062b1f35534e1e8fb28dfed406cf4eeff3e0bca3a0d9f8ff69f20a4abb00", size = 660147, upload-time = "2026-06-17T17:39:35.068Z" }, + { url = "https://files.pythonhosted.org/packages/02/aa/26ddf92826a99d87bfb8fdb8f3a262a6f16495a5d8e579737baa92fb4543/greenlet-3.5.2-cp315-cp315t-manylinux_2_39_riscv64.whl", hash = "sha256:5930d3946ecae99fa7fc0e3f3ae515426ad85058ebd9bfc6c00cca8016e6206b", size = 498199, upload-time = "2026-06-17T18:41:27.464Z" }, + { url = "https://files.pythonhosted.org/packages/d2/6b/b9156d8397e4750220f54c7c5c34650f1e740a8d2f66eab9cfd1b7b53b69/greenlet-3.5.2-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:b4ac902af825cbac8e9b2fccab8122236fd2ba6c8b71a080116d2c2ec72671b1", size = 1621675, upload-time = "2026-06-17T18:22:18.873Z" }, + { url = "https://files.pythonhosted.org/packages/b0/e3/d3250f4fa01c211a93d04e34fded63187e648dbec17b9b1a14d388040593/greenlet-3.5.2-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:6f1e473c06ae8be00c9034c2bb10fa277b08a93287e3111c395b839f01d27e1f", size = 1680577, upload-time = "2026-06-17T17:40:14.055Z" }, + { url = "https://files.pythonhosted.org/packages/55/ba/eaee8bda4419770d7096b5a009ebff0ab20a2a28cdd83c4b591bfdf36fa9/greenlet-3.5.2-cp315-cp315t-win_amd64.whl", hash = "sha256:3c2315045f9983e2e50d7e89d95405c21bddb8745f2da4487bc080ab3525f904", size = 243482, upload-time = "2026-06-17T17:37:34.741Z" }, + { url = "https://files.pythonhosted.org/packages/37/45/f794a81c91e9942c61f9110bd1f9a38a0ea565eab57f8b08cd53d3131e48/greenlet-3.5.2-cp315-cp315t-win_arm64.whl", hash = "sha256:db548d5ab6c2a8ead82c013f875090d79b5d7d2b67fc513934ce6cf66492ad7f", size = 242062, upload-time = "2026-06-17T17:35:39.814Z" }, ] [[package]] name = "groq" -version = "1.2.0" +version = "1.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -1170,9 +1142,9 @@ dependencies = [ { name = "sniffio" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/27/51/4728c13611849ff6cf8536740ae78ba3ee5e665d67b572a47c9ead0f9788/groq-1.2.0.tar.gz", hash = "sha256:85459e27c9c17f22404349c785cd08680362cfe85e07cc060be46c4832f108c3", size = 155609, upload-time = "2026-04-18T10:43:50.68Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/3a/31c54e35d694ba9c263939ecae0874c78fc51f22b9fb13d2dab50edf6e3c/groq-1.5.0.tar.gz", hash = "sha256:8648388f8668629490bb0eab11252b4cc43316149fda9c6343e9a9577fe7df88", size = 158239, upload-time = "2026-06-21T22:57:30.202Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/82/748639c95c60ad8846c65b167ca611c815d06d5f67a9e73b23486dce4fdf/groq-1.2.0-py3-none-any.whl", hash = "sha256:1002060a743b27c8f86765e1bc9749c98498e961d9fe2e4902bf7804a71c3c84", size = 142334, upload-time = "2026-04-18T10:43:49.125Z" }, + { url = "https://files.pythonhosted.org/packages/ce/c3/cac2aee75198c0382a2e6070619a798de2288e01850abb6e999746bb92e3/groq-1.5.0-py3-none-any.whl", hash = "sha256:a927fd75b4a60cb066c408cb4f9647536caf74e241ea75bc57d1810501b8203f", size = 143690, upload-time = "2026-06-21T22:57:29.213Z" }, ] [[package]] @@ -1226,11 +1198,11 @@ wheels = [ [[package]] name = "idna" -version = "3.13" +version = "3.18" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ce/cc/762dfb036166873f0059f3b7de4565e1b5bc3d6f28a414c13da27e442f99/idna-3.13.tar.gz", hash = "sha256:585ea8fe5d69b9181ec1afba340451fba6ba764af97026f92a91d4eef164a242", size = 194210, upload-time = "2026-04-22T16:42:42.314Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, upload-time = "2026-06-02T14:34:07.794Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/13/ad7d7ca3808a898b4612b6fe93cde56b53f3034dcde235acb1f0e1df24c6/idna-3.13-py3-none-any.whl", hash = "sha256:892ea0cde124a99ce773decba204c5552b69c3c67ffd5f232eb7696135bc8bb3", size = 68629, upload-time = "2026-04-22T16:42:40.909Z" }, + { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455, upload-time = "2026-06-02T14:34:06.319Z" }, ] [[package]] @@ -1244,105 +1216,105 @@ wheels = [ [[package]] name = "jiter" -version = "0.14.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6e/c1/0cddc6eb17d4c53a99840953f95dd3accdc5cfc7a337b0e9b26476276be9/jiter-0.14.0.tar.gz", hash = "sha256:e8a39e66dac7153cf3f964a12aad515afa8d74938ec5cc0018adcdae5367c79e", size = 165725, upload-time = "2026-04-10T14:28:42.01Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/64/2e/a9959997739c403378d0a4a3a1c4ed80b60aeace216c4d37b303a9fc60a4/jiter-0.14.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:02f36a5c700f105ac04a6556fe664a59037a2c200db3b7e88784fac2ddf02531", size = 316927, upload-time = "2026-04-10T14:25:40.753Z" }, - { url = "https://files.pythonhosted.org/packages/27/72/b6de8a531e0adbadd839bec301165feb1fccf00e9ff55073ba2dd20f0043/jiter-0.14.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41eab6c09ceffb6f0fe25e214b3068146edb1eda3649ca2aee2a061029c7ba2e", size = 321181, upload-time = "2026-04-10T14:25:42.621Z" }, - { url = "https://files.pythonhosted.org/packages/db/d8/2040b9efa13c917f855c40890ae4119fe02c25b7c7677d5b4fa820a851fc/jiter-0.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cf4d4c109641f9cfaf4a7b6aebd51654e405cd00fa9ebbf87163b8b97b325aa", size = 347387, upload-time = "2026-04-10T14:25:44.212Z" }, - { url = "https://files.pythonhosted.org/packages/49/62/655c0ad5ce6a8e90f9068c175b8a236877d753e460762b3183c136db1c5b/jiter-0.14.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b80c7b41a628e6be2213ad0ece763c5f88aa5ee003fa394d58acaaee1f4b8342", size = 373083, upload-time = "2026-04-10T14:25:45.55Z" }, - { url = "https://files.pythonhosted.org/packages/f1/66/549c40fa068f08710b7570869c306a051eb67a29758bd64f4114f730554c/jiter-0.14.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fb3dbf7cc0d4dbe73cce307ebe7eefa7f73a7d3d854dd119ea0c243f03e40927", size = 463639, upload-time = "2026-04-10T14:25:47.452Z" }, - { url = "https://files.pythonhosted.org/packages/25/2f/97a32a05fed14ed58a18e181fdfb619e05163f3726b54ee6080ec0539c09/jiter-0.14.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7054adcdeb06b46efd17b5734f75817a44a2d06d3748e36c3a023a1bb52af9ec", size = 380735, upload-time = "2026-04-10T14:25:49.305Z" }, - { url = "https://files.pythonhosted.org/packages/2a/3b/4347e1d6c2a973d653bbb7a2d671a2d2426e54b52ba735b8ff0d0a29b75c/jiter-0.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d597cd1bf6790376f3fffc7c708766e57301d99a19314824ea0ccc9c3c70e1e2", size = 358632, upload-time = "2026-04-10T14:25:50.931Z" }, - { url = "https://files.pythonhosted.org/packages/ef/24/ca452fbf2ea33548ed30ce68a39a50442d3f7c9bf0704a7af958a930c057/jiter-0.14.0-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:df63a14878da754427926281626fd3ee249424a186e25a274e78176d42945264", size = 359969, upload-time = "2026-04-10T14:25:52.381Z" }, - { url = "https://files.pythonhosted.org/packages/e3/a3/94470a0d199287caabeb4da2bb2ae5f6d17f3cf05dfc975d7cb064d58e0f/jiter-0.14.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4ea73187627bcc5810e085df715e8a99da8bdfd96a7eb36b4b4df700ba6d4c9c", size = 397529, upload-time = "2026-04-10T14:25:53.801Z" }, - { url = "https://files.pythonhosted.org/packages/cf/71/6768edc09d7c45c39f093feb3de105fa718a3e982b5208b8a2ed6382b44b/jiter-0.14.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9f541eaf7bb8382367a1a23d6fc3d6aad57f8dd8c18c3c17f838bee20f217220", size = 522342, upload-time = "2026-04-10T14:25:55.396Z" }, - { url = "https://files.pythonhosted.org/packages/3d/6b/5c2e17559a0f4e96e934479f7137df46c939e983fa05244e674815befb73/jiter-0.14.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:107465250de4fce00fdb47166bcd51df8e634e049541174fe3c71848e44f52ce", size = 556784, upload-time = "2026-04-10T14:25:56.927Z" }, - { url = "https://files.pythonhosted.org/packages/b1/83/c25f3556a60fc74d11199100f1b6cc0c006b815c8494dea8ca16fe398732/jiter-0.14.0-cp310-cp310-win32.whl", hash = "sha256:ffb2a08a406465bb076b7cc1df41d833106d3cf7905076cc73f0cb90078c7d10", size = 208439, upload-time = "2026-04-10T14:25:58.796Z" }, - { url = "https://files.pythonhosted.org/packages/2e/99/781a1b413f0989b7f2ea203b094b331685f1a35e52e0a45e5d000ecaab27/jiter-0.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:cb8b682d10cb0cce7ff4c1af7244af7022c9b01ae16d46c357bdd0df13afb25d", size = 204558, upload-time = "2026-04-10T14:26:00.208Z" }, - { url = "https://files.pythonhosted.org/packages/8a/1f/198ae537fccb7080a0ed655eb56abf64a92f79489dfbf79f40fa34225bcd/jiter-0.14.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:7e791e247b8044512e070bd1f3633dc08350d32776d2d6e7473309d0edf256a2", size = 316896, upload-time = "2026-04-10T14:26:01.986Z" }, - { url = "https://files.pythonhosted.org/packages/cf/34/da67cff3fce964a36d03c3e365fb0f8726ade2a6cfd4d3c70107e216ead6/jiter-0.14.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:71527ce13fd5a0c4e40ad37331f8c547177dbb2dd0a93e5278b6a5eecf748804", size = 321085, upload-time = "2026-04-10T14:26:03.364Z" }, - { url = "https://files.pythonhosted.org/packages/ed/36/4c72e67180d4e71a4f5dcf7886d0840e83c49ab11788172177a77570326e/jiter-0.14.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c4a7ab56f746014874f2c525584c0daca1dec37f66fd707ecef3b7e5c2228c", size = 347393, upload-time = "2026-04-10T14:26:05.314Z" }, - { url = "https://files.pythonhosted.org/packages/bc/db/9b39e09ceafa9878235c0fc29e3e3f9b12a4c6a98ea3085b998cadf3accc/jiter-0.14.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:376e9dafff914253bb9d46cdc5f7965607fbe7feb0a491c34e35f92b2770702e", size = 372937, upload-time = "2026-04-10T14:26:06.884Z" }, - { url = "https://files.pythonhosted.org/packages/b0/96/0dcba1d7a82c1b720774b48ef239376addbaf30df24c34742ac4a57b67b2/jiter-0.14.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23ad2a7a9da1935575c820428dd8d2490ce4d23189691ce33da1fc0a58e14e1c", size = 463646, upload-time = "2026-04-10T14:26:08.345Z" }, - { url = "https://files.pythonhosted.org/packages/f1/e3/f61b71543e746e6b8b805e7755814fc242715c16f1dba58e1cbccb8032c2/jiter-0.14.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:54b3ddf5786bc7732d293bba3411ac637ecfa200a39983166d1df86a59a43c9f", size = 380225, upload-time = "2026-04-10T14:26:10.161Z" }, - { url = "https://files.pythonhosted.org/packages/ad/5e/0ddeb7096aca099114abe36c4921016e8d251e6f35f5890240b31f1f60ae/jiter-0.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c001d5a646c2a50dc055dd526dad5d5245969e8234d2b1131d0451e81f3a373", size = 358682, upload-time = "2026-04-10T14:26:11.574Z" }, - { url = "https://files.pythonhosted.org/packages/e9/d1/fe0c46cd7fda9cad8f1ff9ad217dc61f1e4280b21052ec6dfe88c1446ef2/jiter-0.14.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:834bb5bdabca2e91592a03d373838a8d0a1b8bbde7077ae6913fd2fc51812d00", size = 359973, upload-time = "2026-04-10T14:26:13.316Z" }, - { url = "https://files.pythonhosted.org/packages/ac/21/f5317f91729b501019184771c80d60abd89907009e7bfa6c7e348c5bdd44/jiter-0.14.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4e9178be60e229b1b2b0710f61b9e24d1f4f8556985a83ff4c4f95920eea7314", size = 397568, upload-time = "2026-04-10T14:26:15.212Z" }, - { url = "https://files.pythonhosted.org/packages/e9/05/79d8f33fb2bf168db0df5c9cd16fe440a8ada57e929d3677b22712c2568f/jiter-0.14.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a7e4ccff04ec03614e62c613e976a3a5860dc9714ce8266f44328bdc8b1cab2c", size = 522535, upload-time = "2026-04-10T14:26:16.956Z" }, - { url = "https://files.pythonhosted.org/packages/5c/00/d1e3ff3d2a465e67f08507d74bafb2dcd29eba91dc939820e39e8dea38b8/jiter-0.14.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:69539d936fb5d55caf6ecd33e2e884de083ff0ea28579780d56c4403094bb8d9", size = 556709, upload-time = "2026-04-10T14:26:18.5Z" }, - { url = "https://files.pythonhosted.org/packages/60/5b/bbb2189f62ace8d95e869aa4c84c9946616f301e2d02895a6f20dcc3bba3/jiter-0.14.0-cp311-cp311-win32.whl", hash = "sha256:4927d09b3e572787cc5e0a5318601448e1ab9391bcef95677f5840c2d00eaa6d", size = 208660, upload-time = "2026-04-10T14:26:20.511Z" }, - { url = "https://files.pythonhosted.org/packages/b8/86/c500b53dcbf08575f5963e536ebd757a1f7c568272ba5d180b212c9a87fb/jiter-0.14.0-cp311-cp311-win_amd64.whl", hash = "sha256:42d6ed359ac49eb922fdd565f209c57340aa06d589c84c8413e42a0f9ae1b842", size = 204659, upload-time = "2026-04-10T14:26:22.152Z" }, - { url = "https://files.pythonhosted.org/packages/75/4a/a676249049d42cb29bef82233e4fe0524d414cbe3606c7a4b311193c2f77/jiter-0.14.0-cp311-cp311-win_arm64.whl", hash = "sha256:6dd689f5f4a5a33747b28686e051095beb214fe28cfda5e9fe58a295a788f593", size = 194772, upload-time = "2026-04-10T14:26:23.458Z" }, - { url = "https://files.pythonhosted.org/packages/5a/68/7390a418f10897da93b158f2d5a8bd0bcd73a0f9ec3bb36917085bb759ef/jiter-0.14.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:2fb2ce3a7bc331256dfb14cefc34832366bb28a9aca81deaf43bbf2a5659e607", size = 316295, upload-time = "2026-04-10T14:26:24.887Z" }, - { url = "https://files.pythonhosted.org/packages/60/a0/5854ac00ff63551c52c6c89534ec6aba4b93474e7924d64e860b1c94165b/jiter-0.14.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5252a7ca23785cef5d02d4ece6077a1b556a410c591b379f82091c3001e14844", size = 315898, upload-time = "2026-04-10T14:26:26.601Z" }, - { url = "https://files.pythonhosted.org/packages/41/a1/4f44832650a16b18e8391f1bf1d6ca4909bc738351826bcc198bba4357f4/jiter-0.14.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c409578cbd77c338975670ada777add4efd53379667edf0aceea730cabede6fb", size = 343730, upload-time = "2026-04-10T14:26:28.326Z" }, - { url = "https://files.pythonhosted.org/packages/48/64/a329e9d469f86307203594b1707e11ae51c3348d03bfd514a5f997870012/jiter-0.14.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7ede4331a1899d604463369c730dbb961ffdc5312bc7f16c41c2896415b1304a", size = 370102, upload-time = "2026-04-10T14:26:30.089Z" }, - { url = "https://files.pythonhosted.org/packages/94/c1/5e3dfc59635aa4d4c7bd20a820ac1d09b8ed851568356802cf1c08edb3cf/jiter-0.14.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92cd8b6025981a041f5310430310b55b25ca593972c16407af8837d3d7d2ca01", size = 461335, upload-time = "2026-04-10T14:26:31.911Z" }, - { url = "https://files.pythonhosted.org/packages/e3/1b/dd157009dbc058f7b00108f545ccb72a2d56461395c4fc7b9cfdccb00af4/jiter-0.14.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:351bf6eda4e3a7ceb876377840c702e9a3e4ecc4624dbfb2d6463c67ae52637d", size = 378536, upload-time = "2026-04-10T14:26:33.595Z" }, - { url = "https://files.pythonhosted.org/packages/91/78/256013667b7c10b8834f8e6e54cd3e562d4c6e34227a1596addccc05e38c/jiter-0.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1dcfbeb93d9ecd9ca128bbf8910120367777973fa193fb9a39c31237d8df165", size = 353859, upload-time = "2026-04-10T14:26:35.098Z" }, - { url = "https://files.pythonhosted.org/packages/de/d9/137d65ade9093a409fe80955ce60b12bb753722c986467aeda47faf450ad/jiter-0.14.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:ae039aaef8de3f8157ecc1fdd4d85043ac4f57538c245a0afaecb8321ec951c3", size = 357626, upload-time = "2026-04-10T14:26:36.685Z" }, - { url = "https://files.pythonhosted.org/packages/2e/48/76750835b87029342727c1a268bea8878ab988caf81ee4e7b880900eeb5a/jiter-0.14.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7d9d51eb96c82a9652933bd769fe6de66877d6eb2b2440e281f2938c51b5643e", size = 393172, upload-time = "2026-04-10T14:26:38.097Z" }, - { url = "https://files.pythonhosted.org/packages/a6/60/456c4e81d5c8045279aefe60e9e483be08793828800a4e64add8fdde7f2a/jiter-0.14.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d824ca4148b705970bf4e120924a212fdfca9859a73e42bd7889a63a4ea6bb98", size = 520300, upload-time = "2026-04-10T14:26:39.532Z" }, - { url = "https://files.pythonhosted.org/packages/a8/9f/2020e0984c235f678dced38fe4eec3058cf528e6af36ebf969b410305941/jiter-0.14.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ff3a6465b3a0f54b1a430f45c3c0ba7d61ceb45cbc3e33f9e1a7f638d690baf3", size = 553059, upload-time = "2026-04-10T14:26:40.991Z" }, - { url = "https://files.pythonhosted.org/packages/ef/32/e2d298e1a22a4bbe6062136d1c7192db7dba003a6975e51d9a9eecabc4c2/jiter-0.14.0-cp312-cp312-win32.whl", hash = "sha256:5dec7c0a3e98d2a3f8a2e67382d0d7c3ac60c69103a4b271da889b4e8bb1e129", size = 206030, upload-time = "2026-04-10T14:26:42.517Z" }, - { url = "https://files.pythonhosted.org/packages/36/ac/96369141b3d8a4a8e4590e983085efe1c436f35c0cda940dd76d942e3e40/jiter-0.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:fc7e37b4b8bc7e80a63ad6cfa5fc11fab27dbfea4cc4ae644b1ab3f273dc348f", size = 201603, upload-time = "2026-04-10T14:26:44.328Z" }, - { url = "https://files.pythonhosted.org/packages/01/c3/75d847f264647017d7e3052bbcc8b1e24b95fa139c320c5f5066fa7a0bdd/jiter-0.14.0-cp312-cp312-win_arm64.whl", hash = "sha256:ee4a72f12847ef29b072aee9ad5474041ab2924106bdca9fcf5d7d965853e057", size = 191525, upload-time = "2026-04-10T14:26:46Z" }, - { url = "https://files.pythonhosted.org/packages/97/2a/09f70020898507a89279659a1afe3364d57fc1b2c89949081975d135f6f5/jiter-0.14.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:af72f204cf4d44258e5b4c1745130ac45ddab0e71a06333b01de660ab4187a94", size = 315502, upload-time = "2026-04-10T14:26:47.697Z" }, - { url = "https://files.pythonhosted.org/packages/d6/be/080c96a45cd74f9fce5db4fd68510b88087fb37ffe2541ff73c12db92535/jiter-0.14.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4b77da71f6e819be5fbcec11a453fde5b1d0267ef6ed487e2a392fd8e14e4e3a", size = 314870, upload-time = "2026-04-10T14:26:49.149Z" }, - { url = "https://files.pythonhosted.org/packages/7d/5e/2d0fee155826a968a832cc32438de5e2a193292c8721ca70d0b53e58245b/jiter-0.14.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f4ea612fe8b84b8b04e51d0e78029ecf3466348e25973f953de6e6a59aa4c1", size = 343406, upload-time = "2026-04-10T14:26:50.762Z" }, - { url = "https://files.pythonhosted.org/packages/70/af/bf9ee0d3a4f8dc0d679fc1337f874fe60cdbf841ebbb304b374e1c9aaceb/jiter-0.14.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:62fe2451f8fcc0240261e6a4df18ecbcd58327857e61e625b2393ea3b468aac9", size = 369415, upload-time = "2026-04-10T14:26:52.188Z" }, - { url = "https://files.pythonhosted.org/packages/0f/83/8e8561eadba31f4d3948a5b712fb0447ec71c3560b57a855449e7b8ddc98/jiter-0.14.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6112f26f5afc75bcb475787d29da3aa92f9d09c7858f632f4be6ffe607be82e9", size = 461456, upload-time = "2026-04-10T14:26:53.611Z" }, - { url = "https://files.pythonhosted.org/packages/f6/c9/c5299e826a5fe6108d172b344033f61c69b1bb979dd8d9ddd4278a160971/jiter-0.14.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:215a6cb8fb7dc702aa35d475cc00ddc7f970e5c0b1417fb4b4ac5d82fa2a29db", size = 378488, upload-time = "2026-04-10T14:26:55.211Z" }, - { url = "https://files.pythonhosted.org/packages/5d/37/c16d9d15c0a471b8644b1abe3c82668092a707d9bedcf076f24ff2e380cd/jiter-0.14.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc4ab96a30fb3cb2c7e0cd33f7616c8860da5f5674438988a54ac717caccdbaa", size = 353242, upload-time = "2026-04-10T14:26:56.705Z" }, - { url = "https://files.pythonhosted.org/packages/58/ea/8050cb0dc654e728e1bfacbc0c640772f2181af5dedd13ae70145743a439/jiter-0.14.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:3a99c1387b1f2928f799a9de899193484d66206a50e98233b6b088a7f0c1edb2", size = 356823, upload-time = "2026-04-10T14:26:58.281Z" }, - { url = "https://files.pythonhosted.org/packages/b0/3b/cf71506d270e5f84d97326bf220e47aed9b95e9a4a060758fb07772170ab/jiter-0.14.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ab18d11074485438695f8d34a1b6da61db9754248f96d51341956607a8f39985", size = 392564, upload-time = "2026-04-10T14:27:00.018Z" }, - { url = "https://files.pythonhosted.org/packages/b0/cc/8c6c74a3efb5bd671bfd14f51e8a73375464ca914b1551bc3b40e26ac2c9/jiter-0.14.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:801028dcfc26ac0895e4964cbc0fd62c73be9fd4a7d7b1aaf6e5790033a719b7", size = 520322, upload-time = "2026-04-10T14:27:01.664Z" }, - { url = "https://files.pythonhosted.org/packages/41/24/68d7b883ec959884ddf00d019b2e0e82ba81b167e1253684fa90519ce33c/jiter-0.14.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ad425b087aafb4a1c7e1e98a279200743b9aaf30c3e0ba723aec93f061bd9bc8", size = 552619, upload-time = "2026-04-10T14:27:03.316Z" }, - { url = "https://files.pythonhosted.org/packages/b6/89/b1a0985223bbf3150ff9e8f46f98fc9360c1de94f48abe271bbe1b465682/jiter-0.14.0-cp313-cp313-win32.whl", hash = "sha256:882bcb9b334318e233950b8be366fe5f92c86b66a7e449e76975dfd6d776a01f", size = 205699, upload-time = "2026-04-10T14:27:04.662Z" }, - { url = "https://files.pythonhosted.org/packages/4c/19/3f339a5a7f14a11730e67f6be34f9d5105751d547b615ef593fa122a5ded/jiter-0.14.0-cp313-cp313-win_amd64.whl", hash = "sha256:9b8c571a5dba09b98bd3462b5a53f27209a5cbbe85670391692ede71974e979f", size = 201323, upload-time = "2026-04-10T14:27:06.139Z" }, - { url = "https://files.pythonhosted.org/packages/50/56/752dd89c84be0e022a8ea3720bcfa0a8431db79a962578544812ce061739/jiter-0.14.0-cp313-cp313-win_arm64.whl", hash = "sha256:34f19dcc35cb1abe7c369b3756babf8c7f04595c0807a848df8f26ef8298ef92", size = 191099, upload-time = "2026-04-10T14:27:07.564Z" }, - { url = "https://files.pythonhosted.org/packages/91/28/292916f354f25a1fe8cf2c918d1415c699a4a659ae00be0430e1c5d9ffea/jiter-0.14.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e89bcd7d426a75bb4952c696b267075790d854a07aad4c9894551a82c5b574ab", size = 320880, upload-time = "2026-04-10T14:27:09.326Z" }, - { url = "https://files.pythonhosted.org/packages/ad/c7/b002a7d8b8957ac3d469bd59c18ef4b1595a5216ae0de639a287b9816023/jiter-0.14.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b25beaa0d4447ea8c7ae0c18c688905d34840d7d0b937f2f7bdd52162c98a40", size = 346563, upload-time = "2026-04-10T14:27:11.287Z" }, - { url = "https://files.pythonhosted.org/packages/f9/3b/f8d07580d8706021d255a6356b8fab13ee4c869412995550ce6ed4ddf97d/jiter-0.14.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:651a8758dd413c51e3b7f6557cdc6921faf70b14106f45f969f091f5cda990ea", size = 357928, upload-time = "2026-04-10T14:27:12.729Z" }, - { url = "https://files.pythonhosted.org/packages/47/5b/ac1a974da29e35507230383110ffec59998b290a8732585d04e19a9eb5ba/jiter-0.14.0-cp313-cp313t-win_amd64.whl", hash = "sha256:e1a7eead856a5038a8d291f1447176ab0b525c77a279a058121b5fccee257f6f", size = 203519, upload-time = "2026-04-10T14:27:14.125Z" }, - { url = "https://files.pythonhosted.org/packages/96/6d/9fc8433d667d2454271378a79747d8c76c10b51b482b454e6190e511f244/jiter-0.14.0-cp313-cp313t-win_arm64.whl", hash = "sha256:2e692633a12cda97e352fdcd1c4acc971b1c28707e1e33aeef782b0cbf051975", size = 190113, upload-time = "2026-04-10T14:27:16.638Z" }, - { url = "https://files.pythonhosted.org/packages/4f/1e/354ed92461b165bd581f9ef5150971a572c873ec3b68a916d5aa91da3cc2/jiter-0.14.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:6f396837fc7577871ca8c12edaf239ed9ccef3bbe39904ae9b8b63ce0a48b140", size = 315277, upload-time = "2026-04-10T14:27:18.109Z" }, - { url = "https://files.pythonhosted.org/packages/a6/95/8c7c7028aa8636ac21b7a55faef3e34215e6ed0cbf5ae58258427f621aa3/jiter-0.14.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a4d50ea3d8ba4176f79754333bd35f1bbcd28e91adc13eb9b7ca91bc52a6cef9", size = 315923, upload-time = "2026-04-10T14:27:19.603Z" }, - { url = "https://files.pythonhosted.org/packages/47/40/e2a852a44c4a089f2681a16611b7ce113224a80fd8504c46d78491b47220/jiter-0.14.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce17f8a050447d1b4153bda4fb7d26e6a9e74eb4f4a41913f30934c5075bf615", size = 344943, upload-time = "2026-04-10T14:27:21.262Z" }, - { url = "https://files.pythonhosted.org/packages/fc/1f/670f92adee1e9895eac41e8a4d623b6da68c4d46249d8b556b60b63f949e/jiter-0.14.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f4f1c4b125e1652aefbc2e2c1617b60a160ab789d180e3d423c41439e5f32850", size = 369725, upload-time = "2026-04-10T14:27:22.766Z" }, - { url = "https://files.pythonhosted.org/packages/01/2f/541c9ba567d05de1c4874a0f8f8c5e3fd78e2b874266623da9a775cf46e0/jiter-0.14.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be808176a6a3a14321d18c603f2d40741858a7c4fc982f83232842689fe86dd9", size = 461210, upload-time = "2026-04-10T14:27:24.315Z" }, - { url = "https://files.pythonhosted.org/packages/ce/a9/c31cbec09627e0d5de7aeaec7690dba03e090caa808fefd8133137cf45bc/jiter-0.14.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:26679d58ba816f88c3849306dd58cb863a90a1cf352cdd4ef67e30ccf8a77994", size = 380002, upload-time = "2026-04-10T14:27:26.155Z" }, - { url = "https://files.pythonhosted.org/packages/50/02/3c05c1666c41904a2f607475a73e7a4763d1cbde2d18229c4f85b22dc253/jiter-0.14.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80381f5a19af8fa9aef743f080e34f6b25ebd89656475f8cf0470ec6157052aa", size = 354678, upload-time = "2026-04-10T14:27:27.701Z" }, - { url = "https://files.pythonhosted.org/packages/7d/97/e15b33545c2b13518f560d695f974b9891b311641bdcf178d63177e8801e/jiter-0.14.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:004df5fdb8ecbd6d99f3227df18ba1a259254c4359736a2e6f036c944e02d7c5", size = 358920, upload-time = "2026-04-10T14:27:29.256Z" }, - { url = "https://files.pythonhosted.org/packages/ad/d2/8b1461def6b96ba44530df20d07ef7a1c7da22f3f9bf1727e2d611077bf1/jiter-0.14.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cff5708f7ed0fa098f2b53446c6fa74c48469118e5cd7497b4f1cd569ab06928", size = 394512, upload-time = "2026-04-10T14:27:31.344Z" }, - { url = "https://files.pythonhosted.org/packages/e3/88/837566dd6ed6e452e8d3205355afd484ce44b2533edfa4ed73a298ea893e/jiter-0.14.0-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:2492e5f06c36a976d25c7cc347a60e26d5470178d44cde1b9b75e60b4e519f28", size = 521120, upload-time = "2026-04-10T14:27:33.299Z" }, - { url = "https://files.pythonhosted.org/packages/89/6b/b00b45c4d1b4c031777fe161d620b755b5b02cdade1e316dcb46e4471d63/jiter-0.14.0-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:7609cfbe3a03d37bfdbf5052012d5a879e72b83168a363deae7b3a26564d57de", size = 553668, upload-time = "2026-04-10T14:27:34.868Z" }, - { url = "https://files.pythonhosted.org/packages/ad/d8/6fe5b42011d19397433d345716eac16728ac241862a2aac9c91923c7509a/jiter-0.14.0-cp314-cp314-win32.whl", hash = "sha256:7282342d32e357543565286b6450378c3cd402eea333fc1ebe146f1fabb306fc", size = 207001, upload-time = "2026-04-10T14:27:36.455Z" }, - { url = "https://files.pythonhosted.org/packages/e5/43/5c2e08da1efad5e410f0eaaabeadd954812612c33fbbd8fd5328b489139d/jiter-0.14.0-cp314-cp314-win_amd64.whl", hash = "sha256:bd77945f38866a448e73b0b7637366afa814d4617790ecd88a18ca74377e6c02", size = 202187, upload-time = "2026-04-10T14:27:38Z" }, - { url = "https://files.pythonhosted.org/packages/aa/1f/6e39ac0b4cdfa23e606af5b245df5f9adaa76f35e0c5096790da430ca506/jiter-0.14.0-cp314-cp314-win_arm64.whl", hash = "sha256:f2d4c61da0821ee42e0cdf5489da60a6d074306313a377c2b35af464955a3611", size = 192257, upload-time = "2026-04-10T14:27:39.504Z" }, - { url = "https://files.pythonhosted.org/packages/05/57/7dbc0ffbbb5176a27e3518716608aa464aee2e2887dc938f0b900a120449/jiter-0.14.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1bf7ff85517dd2f20a5750081d2b75083c1b269cf75afc7511bdf1f9548beb3b", size = 323441, upload-time = "2026-04-10T14:27:41.039Z" }, - { url = "https://files.pythonhosted.org/packages/83/6e/7b3314398d8983f06b557aa21b670511ec72d3b79a68ee5e4d9bff972286/jiter-0.14.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8ef8791c3e78d6c6b157c6d360fbb5c715bebb8113bc6a9303c5caff012754a", size = 348109, upload-time = "2026-04-10T14:27:42.552Z" }, - { url = "https://files.pythonhosted.org/packages/ae/4f/8dc674bcd7db6dba566de73c08c763c337058baff1dbeb34567045b27cdc/jiter-0.14.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e74663b8b10da1fe0f4e4703fd7980d24ad17174b6bb35d8498d6e3ebce2ae6a", size = 368328, upload-time = "2026-04-10T14:27:44.574Z" }, - { url = "https://files.pythonhosted.org/packages/3b/5f/188e09a1f20906f98bbdec44ed820e19f4e8eb8aff88b9d1a5a497587ff3/jiter-0.14.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1aca29ba52913f78362ec9c2da62f22cdc4c3083313403f90c15460979b84d9b", size = 463301, upload-time = "2026-04-10T14:27:46.717Z" }, - { url = "https://files.pythonhosted.org/packages/ac/f0/19046ef965ed8f349e8554775bb12ff4352f443fbe12b95d31f575891256/jiter-0.14.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8b39b7d87a952b79949af5fef44d2544e58c21a28da7f1bae3ef166455c61746", size = 378891, upload-time = "2026-04-10T14:27:48.32Z" }, - { url = "https://files.pythonhosted.org/packages/c4/c3/da43bd8431ee175695777ee78cf0e93eacbb47393ff493f18c45231b427d/jiter-0.14.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d918a68b26e9fab068c2b5453577ef04943ab2807b9a6275df2a812599a310", size = 360749, upload-time = "2026-04-10T14:27:49.88Z" }, - { url = "https://files.pythonhosted.org/packages/72/26/e054771be889707c6161dbdec9c23d33a9ec70945395d70f07cfea1e9a6f/jiter-0.14.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:b08997c35aee1201c1a5361466a8fb9162d03ae7bf6568df70b6c859f1e654a4", size = 358526, upload-time = "2026-04-10T14:27:51.504Z" }, - { url = "https://files.pythonhosted.org/packages/c3/0f/7bea65ea2a6d91f2bf989ff11a18136644392bf2b0497a1fa50934c30a9c/jiter-0.14.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:260bf7ca20704d58d41f669e5e9fe7fe2fa72901a6b324e79056f5d52e9c9be2", size = 393926, upload-time = "2026-04-10T14:27:53.368Z" }, - { url = "https://files.pythonhosted.org/packages/3c/a1/b1ff7d70deef61ac0b7c6c2f12d2ace950cdeecb4fdc94500a0926802857/jiter-0.14.0-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:37826e3df29e60f30a382f9294348d0238ef127f4b5d7f5f8da78b5b9e050560", size = 521052, upload-time = "2026-04-10T14:27:55.058Z" }, - { url = "https://files.pythonhosted.org/packages/0b/7b/3b0649983cbaf15eda26a414b5b1982e910c67bd6f7b1b490f3cfc76896a/jiter-0.14.0-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:645be49c46f2900937ba0eaf871ad5183c96858c0af74b6becc7f4e367e36e06", size = 553716, upload-time = "2026-04-10T14:27:57.269Z" }, - { url = "https://files.pythonhosted.org/packages/97/f8/33d78c83bd93ae0c0af05293a6660f88a1977caef39a6d72a84afab94ce0/jiter-0.14.0-cp314-cp314t-win32.whl", hash = "sha256:2f7877ed45118de283786178eceaf877110abacd04fde31efff3940ae9672674", size = 207957, upload-time = "2026-04-10T14:27:59.285Z" }, - { url = "https://files.pythonhosted.org/packages/d6/ac/2b760516c03e2227826d1f7025d89bf6bf6357a28fe75c2a2800873c50bf/jiter-0.14.0-cp314-cp314t-win_amd64.whl", hash = "sha256:14c0cb10337c49f5eafe8e7364daca5e29a020ea03580b8f8e6c597fed4e1588", size = 204690, upload-time = "2026-04-10T14:28:00.962Z" }, - { url = "https://files.pythonhosted.org/packages/dc/2e/a44c20c58aeed0355f2d326969a181696aeb551a25195f47563908a815be/jiter-0.14.0-cp314-cp314t-win_arm64.whl", hash = "sha256:5419d4aa2024961da9fe12a9cfe7484996735dca99e8e090b5c88595ef1951ff", size = 191338, upload-time = "2026-04-10T14:28:02.853Z" }, - { url = "https://files.pythonhosted.org/packages/32/a1/ef34ca2cab2962598591636a1804b93645821201cc0095d4a93a9a329c9d/jiter-0.14.0-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:a25ffa2dbbdf8721855612f6dca15c108224b12d0c4024d0ac3d7902132b4211", size = 311366, upload-time = "2026-04-10T14:28:27.943Z" }, - { url = "https://files.pythonhosted.org/packages/60/bb/520576a532a6b8a6f42747afed289c8448c879a34d7802fe2c832d4fd38f/jiter-0.14.0-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:0ac9cbaa86c10996b92bd12c91659b60f939f8e28fcfa6bc11a0e90a774ce95b", size = 309873, upload-time = "2026-04-10T14:28:29.688Z" }, - { url = "https://files.pythonhosted.org/packages/b2/7c/c16db114ea1f2f532f198aa8dc39585026af45af362c69a0492f31bc4821/jiter-0.14.0-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:844e73b6c56b505e9e169234ea3bdea2ea43f769f847f47ac559ba1d2361ebea", size = 344816, upload-time = "2026-04-10T14:28:31.348Z" }, - { url = "https://files.pythonhosted.org/packages/99/8f/15e7741ff19e9bcd4d753f7ff22f988fd54592f134ca13701c13ea8c20e0/jiter-0.14.0-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e52c076f187405fc21523c746c04399c9af8ece566077ed147b2126f2bcba577", size = 351445, upload-time = "2026-04-10T14:28:33.093Z" }, - { url = "https://files.pythonhosted.org/packages/21/42/9042c3f3019de4adcb8c16591c325ec7255beea9fcd33a42a43f3b0b1000/jiter-0.14.0-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:fbd9e482663ca9d005d051330e4d2d8150bb208a209409c10f7e7dfdf7c49da9", size = 308810, upload-time = "2026-04-10T14:28:34.673Z" }, - { url = "https://files.pythonhosted.org/packages/60/cf/a7e19b308bd86bb04776803b1f01a5f9a287a4c55205f4708827ee487fbf/jiter-0.14.0-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:33a20d838b91ef376b3a56896d5b04e725c7df5bc4864cc6569cf046a8d73b6d", size = 308443, upload-time = "2026-04-10T14:28:36.658Z" }, - { url = "https://files.pythonhosted.org/packages/ca/44/e26ede3f0caeff93f222559cb0cc4ca68579f07d009d7b6010c5b586f9b1/jiter-0.14.0-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:432c4db5255d86a259efde91e55cb4c8d18c0521d844c9e2e7efcce3899fb016", size = 343039, upload-time = "2026-04-10T14:28:38.356Z" }, - { url = "https://files.pythonhosted.org/packages/da/e9/1f9ada30cef7b05e74bb06f52127e7a724976c225f46adb65c37b1dadfb6/jiter-0.14.0-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67f00d94b281174144d6532a04b66a12cb866cbdc47c3af3bfe2973677f9861a", size = 349613, upload-time = "2026-04-10T14:28:40.066Z" }, +version = "0.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/b5/55f06bb281d92fb3cc86d14e1def2bd908bb77693183e7cb1f5a3c388b0c/jiter-0.15.0.tar.gz", hash = "sha256:4251acc80e2b7c9b7b8823456ea0fceeb0734dac2df7636d3c711b38476b5a76", size = 166640, upload-time = "2026-05-19T10:09:48.361Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/da/76a2c7e510ba15fe323d9509c223ab272da79ea59f54488f4a78da6426db/jiter-0.15.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:edebcf7d1f601199084bb6e844d7dc67e03e04f6ac786b0332d616635c4ff7a4", size = 310849, upload-time = "2026-05-19T10:06:51.944Z" }, + { url = "https://files.pythonhosted.org/packages/5d/8e/827be942883a4dc0862c48626ff41af3320b1902d136a0bf4b9041f2c567/jiter-0.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9f924585cdacf631cd382b657966847bb537bf9ed0a6f9b991da5f05a631480f", size = 314991, upload-time = "2026-05-19T10:06:53.522Z" }, + { url = "https://files.pythonhosted.org/packages/6d/38/be2832be361ba1b9517c76f46d30b64e985be1dd43c974f4c3a4b1844436/jiter-0.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abbf258599526ad0326fe51e252e24f2bd6f24f1852681b4b78feda3808f1d18", size = 340843, upload-time = "2026-05-19T10:06:55.071Z" }, + { url = "https://files.pythonhosted.org/packages/6d/d8/90f01fb83c0c7ba509303ec93e32a308fbfa167d264860b01c0fd0dbbd06/jiter-0.15.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c468136b8bd6bb18c8786e4236a1fa27362f24cb23450ba0cb204ab379b8e6f", size = 365116, upload-time = "2026-05-19T10:06:56.893Z" }, + { url = "https://files.pythonhosted.org/packages/91/38/94593d34f8c67a0b6f6cbc027f016ffa9780b3a858a7a86f6fd7a15bcc1e/jiter-0.15.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05906b93d72f03339e6bb7cf8dc10ebda64a0266126eed6beba79e20abcf5fd4", size = 457970, upload-time = "2026-05-19T10:06:58.707Z" }, + { url = "https://files.pythonhosted.org/packages/df/04/d79962dd49d00c97e2a9b4cacea1947904d02135936960351f9a96d4c1a6/jiter-0.15.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:30ce785d2adb8e32c3f7741442370a74834ec4c01f3c48f0750227a0b4ef27d6", size = 375744, upload-time = "2026-05-19T10:07:00.471Z" }, + { url = "https://files.pythonhosted.org/packages/c3/2e/5d37abe2be0e819c21e2338bebd410e481763ce526a9138c8c3652fa0123/jiter-0.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fd73e3da91a0a722d67165e849ce2cdc10de0e0d48738c142be8c6c5f310f4c", size = 349609, upload-time = "2026-05-19T10:07:01.829Z" }, + { url = "https://files.pythonhosted.org/packages/7a/90/98768ad2ed90c1fda15d64157de2dfbf73c1c074d4b1bfaca915480bc7cf/jiter-0.15.0-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:ceb8fc27d38793f9c97149be8302720c5b22e5c195a37bf2c45dc36c4600a512", size = 354366, upload-time = "2026-05-19T10:07:03.587Z" }, + { url = "https://files.pythonhosted.org/packages/d6/c4/fbfb806209f1fe4b7dccdfb07bc62bb044300734a945b06fd64db446ef6a/jiter-0.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d726e3ceeb337191324b49de298142f27c3ad10886341555d1d5315b5f252c6a", size = 393519, upload-time = "2026-05-19T10:07:05.08Z" }, + { url = "https://files.pythonhosted.org/packages/37/1c/b9c257cd70cb453b6d10f3ebf0402cdb11669ab455389096f09839670290/jiter-0.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2c8aea7781d2a372227871de4e1a1332aa96f5a89fd76c5e835dafdbad102887", size = 519952, upload-time = "2026-05-19T10:07:06.589Z" }, + { url = "https://files.pythonhosted.org/packages/a9/1a/aa85027db7ab15829c12feebbc33b404f53fc399bd559d85fd0d6365ff0d/jiter-0.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cf4bd113a69c0a740e27cb962ce10630c36d2b8f59d759a651b955ee9d18a823", size = 550770, upload-time = "2026-05-19T10:07:08.228Z" }, + { url = "https://files.pythonhosted.org/packages/d4/54/8c3f65c8a5687925e84708f19d63f7f37d28e2b86a48d951702ad94424d8/jiter-0.15.0-cp310-cp310-win32.whl", hash = "sha256:d92a5cd21fdb083931d546c207aa29633787c5dc5b02daab2d32b843f88a2c53", size = 209303, upload-time = "2026-05-19T10:07:10.006Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/0528a1eb9f42dd2d8228a0711458628f35924d131f623eaebc35fd23d3d4/jiter-0.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:e58585a58209d72691ce2d62a9147445f5a87beb0bde97fde284c96ae392a3d1", size = 200404, upload-time = "2026-05-19T10:07:11.426Z" }, + { url = "https://files.pythonhosted.org/packages/e4/13/daa722f5765c393576f466378f9dfd29d77c9bed939e0688f96afa3601ea/jiter-0.15.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0f862193b8696249d22ec433e85fd2ab0ad9596bc3e45e6c0bc55e8aeba97be2", size = 310899, upload-time = "2026-05-19T10:07:12.89Z" }, + { url = "https://files.pythonhosted.org/packages/7f/82/2d2551829b082f4b6d82b9f939b031fb808a10aab1ec0664f82e150bb9a2/jiter-0.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1303d4d68a9b051ea90502402063ecf3807da00ad2affa19ca1ae3b90b3c5f67", size = 314963, upload-time = "2026-05-19T10:07:14.539Z" }, + { url = "https://files.pythonhosted.org/packages/2a/0a/8b1a51466f7fe9f31dbe4bc7e0ca848674f9825e0f737b929b97e8c60aa7/jiter-0.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:392b8ab019e5502d08aff85c6272209c24bc2cbe706ea82a56368f524236614a", size = 341730, upload-time = "2026-05-19T10:07:15.869Z" }, + { url = "https://files.pythonhosted.org/packages/f6/2a/e71dea19822e2e404e83992a08c1d6b9b617bb944f28c9c2fbd85d02c91e/jiter-0.15.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:773b6eb282ce11ee19f05f6b2d4404fa308e5bbd353b0b80a0262caad6db2cd7", size = 366214, upload-time = "2026-05-19T10:07:17.259Z" }, + { url = "https://files.pythonhosted.org/packages/c4/59/97e1fa539d124a509a00ab7f669289d1c1d236ecabf12948a18f16c91082/jiter-0.15.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d2c0c44d569ce0f2850f5c926f8caeb5f245fbc84475aeb36efccc2103e6dbd", size = 459527, upload-time = "2026-05-19T10:07:18.741Z" }, + { url = "https://files.pythonhosted.org/packages/d1/7a/4a68d331aef8cf2e2393c14a3aacb635c62aa86071b0229899fb5baaa907/jiter-0.15.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:032396229564bca02440396bd327710719f724f5e7b7e9f7a8eb3faa4a2c2281", size = 375451, upload-time = "2026-05-19T10:07:20.208Z" }, + { url = "https://files.pythonhosted.org/packages/7b/7e/1c445c2b6f0e30a274dc8082e0c3c7825411cce80d726bccd697c98cc8d3/jiter-0.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3d37768fce7f88dd2a8c6091f2325dea27d30d30d5c6e7a1c0f0af77723b708", size = 349428, upload-time = "2026-05-19T10:07:22.372Z" }, + { url = "https://files.pythonhosted.org/packages/00/94/e20d38984fc17a636371bffd2ae0f698124fdc8e75ef969cd2da6ba7cea7/jiter-0.15.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:2c9cb907439d20bd0c7d7565ca01ee52234203208433749bae5b516907526928", size = 355405, upload-time = "2026-05-19T10:07:23.916Z" }, + { url = "https://files.pythonhosted.org/packages/94/fa/4d09f814779d0ea80a28ed8e4c6662ec9a4a8ecef0ac52190ebac6262d14/jiter-0.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9100ddbec09741cc66feb0fc6773f8bdbd0e3c345689368f260082ff85dcc0cd", size = 393688, upload-time = "2026-05-19T10:07:25.854Z" }, + { url = "https://files.pythonhosted.org/packages/54/9d/8eb5d4fb8bf7e93a75964a5da71a75c67c864baf7fa3f98598187b3c7e57/jiter-0.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ae1b0d82ac2d987f9ea512b1c9adfcc71a28de3dea3a6039b54d76cffda9901e", size = 520853, upload-time = "2026-05-19T10:07:27.303Z" }, + { url = "https://files.pythonhosted.org/packages/e7/2c/5e07874e59e623a943a0acf1552a80d05b70f31b402287a8fc6d7ec634c7/jiter-0.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8020c99ec13a7db2b6f96cbe82ef4721c88b426a4892f27478044af0284615ef", size = 551016, upload-time = "2026-05-19T10:07:28.846Z" }, + { url = "https://files.pythonhosted.org/packages/22/ed/d2d34422143474cadc15b60d482b1c35683dbc5c63c24346ddd0df09bcaf/jiter-0.15.0-cp311-cp311-win32.whl", hash = "sha256:42bfb257930800cf43e7c62c832402c704ab60797c992faf88d20e903eac8f32", size = 209518, upload-time = "2026-05-19T10:07:30.431Z" }, + { url = "https://files.pythonhosted.org/packages/1d/7d/52778b930e5cc3e52a37d950b1c10494244308b4329b25a0ff0d88303a81/jiter-0.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:860a74063284a2ae9bfedd694f299cc2c68e2696c5f3d440cc9d18bb81b9dd04", size = 200565, upload-time = "2026-05-19T10:07:32.125Z" }, + { url = "https://files.pythonhosted.org/packages/3b/4f/d9b4067feb69b3fa6eb0488e1b59e2ad5b463fe39f59e527eab2aca00bb0/jiter-0.15.0-cp311-cp311-win_arm64.whl", hash = "sha256:37a10c377ce3a4a85f4a67f28b7afe093154cde77eaf248a72e856aa08b4d865", size = 195488, upload-time = "2026-05-19T10:07:33.846Z" }, + { url = "https://files.pythonhosted.org/packages/44/53/4f6bddbcde3c71e56d0aa1337ec95950f3d27dd4153e25aadf0feac71751/jiter-0.15.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0e90a1c315a0226ec822d973817967f9223b7701546c8c2a7913e7ab0926294d", size = 308793, upload-time = "2026-05-19T10:07:35.25Z" }, + { url = "https://files.pythonhosted.org/packages/01/84/c01099b59a285a1ebba64ae93f62bfa036675340fd1b0045ae65890a0442/jiter-0.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8c9004af7c8d67cce7f1aae1026fb55607f4aa600710d08ede3a3ce4aeefe7e0", size = 309570, upload-time = "2026-05-19T10:07:36.919Z" }, + { url = "https://files.pythonhosted.org/packages/58/64/8fb7f9d45bb98190355454cd04dad8d8f27223d6bd52f83af07f637168a6/jiter-0.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c210f8b35dc6f30aafd4b4365ca89b9d1189f21ab49b8e68fa6322a847aef138", size = 336783, upload-time = "2026-05-19T10:07:38.694Z" }, + { url = "https://files.pythonhosted.org/packages/c3/b6/f5739011d009b3a30f6a53c5240979030ba29ae46a8c67e3a15759f7c37d/jiter-0.15.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f30bae8bc1c2d613e28e5af3e8cceb09b742f1c8a8a5f839fb67afaffc03b61", size = 363555, upload-time = "2026-05-19T10:07:40.832Z" }, + { url = "https://files.pythonhosted.org/packages/e5/12/98a9d9f766665e8a3b6252454e17cb0c464606a28cf2fa09399b003345fa/jiter-0.15.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c60e71b6d10cfc284c9bf36bd885e8d44c46f688ce50aa91b5edd90181dea687", size = 452255, upload-time = "2026-05-19T10:07:42.62Z" }, + { url = "https://files.pythonhosted.org/packages/e8/d5/60f972840f79c5e7544fce567c56f1e4e50468f996baba3e78d823dd62a6/jiter-0.15.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ab068bce62a45aa3e7367eceaffb5dde60b7eb853be8dece45132e3d0ff4879", size = 373559, upload-time = "2026-05-19T10:07:44.201Z" }, + { url = "https://files.pythonhosted.org/packages/ee/cf/d46ef1234ba335aabc2f013210db8e0821a22f5e644a2e9449df199ecc23/jiter-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa248c9eb220197d363f688818dac2fd4b2f0cd7d843ca7105d652034823427d", size = 346055, upload-time = "2026-05-19T10:07:46.005Z" }, + { url = "https://files.pythonhosted.org/packages/f0/63/4d2749d8d54d230bad9b3a6b0d00cc28c6ff6b2fdffc26a8ccf76cc5a974/jiter-0.15.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:2a77aadd57cac1682e4401a72724d2796d89a4ba129b1a5812aa94ee480826eb", size = 351406, upload-time = "2026-05-19T10:07:47.855Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b9/9965b990035d8773328e0a8c8b457a87bf2b19f6c4126d9d99296be5d16a/jiter-0.15.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2ae901f3a55bfafdde31d289590fa25e3245735a2b1e8c7cc15871710a002871", size = 389357, upload-time = "2026-05-19T10:07:49.665Z" }, + { url = "https://files.pythonhosted.org/packages/2d/55/9ddf903deda1413e87fed792f416b7123daee5b8efbad6a202a7421c36a5/jiter-0.15.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f0b271b462769543716f92d3a4f90527df6ef5ed05ee95ec4137f513e21e1b77", size = 517263, upload-time = "2026-05-19T10:07:51.537Z" }, + { url = "https://files.pythonhosted.org/packages/e8/76/a0c40ad064d3a20a4fde231e35d56e9a01ce82164278180e82d5daf85469/jiter-0.15.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2fb6a5d26af81fc0f00f9360a891e05cf755e149bba391c4d563adc54812973d", size = 548646, upload-time = "2026-05-19T10:07:53.196Z" }, + { url = "https://files.pythonhosted.org/packages/23/4f/eca9b954942916ba2f453891b8593ab444cd872396fe66a3936616f236f3/jiter-0.15.0-cp312-cp312-win32.whl", hash = "sha256:c2f6bb8b5216ab9e7873bc08b5d7bef2b8abbb578a3069bf1cd14a45d71d771d", size = 206427, upload-time = "2026-05-19T10:07:55.307Z" }, + { url = "https://files.pythonhosted.org/packages/95/bf/8ead82a87495149542748e828d153fd232a512a22c83b02c4815c1a9c7d8/jiter-0.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:40b2c7e92c44a84d748d21706c68dc6ff8161d80b59c99d774721a0d2317d7c7", size = 197300, upload-time = "2026-05-19T10:07:56.651Z" }, + { url = "https://files.pythonhosted.org/packages/f4/e4/9b8a78fb2d894471bc344e37f1949bdd784bd914d031dba0ba3a40c71dd7/jiter-0.15.0-cp312-cp312-win_arm64.whl", hash = "sha256:cc0bc345cf2df9d1c00ac443f50d543c1ccfa8b0422cb85b1ab70d681c0b255b", size = 192702, upload-time = "2026-05-19T10:07:58.307Z" }, + { url = "https://files.pythonhosted.org/packages/e5/f4/f708c900ecee41b2025ef8413d5351e5649eb2125c506f6720cc69b06f5c/jiter-0.15.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1c11465f97e2abf45a014b83b730222f8f1c5335e802c7055a67d50de6f1f4e3", size = 307829, upload-time = "2026-05-19T10:07:59.704Z" }, + { url = "https://files.pythonhosted.org/packages/86/59/db537c0949e83668c38481d426b9f2fd5ab758c4ee53a811dd0a510626a0/jiter-0.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d1e7b1776f0797956c509e123d0952d10d293a9492dea9f288ab9570ec01d1a5", size = 308445, upload-time = "2026-05-19T10:08:01.184Z" }, + { url = "https://files.pythonhosted.org/packages/37/38/ea0e13b18c30ef951da0d47d39e7fa9edb82a93a62990ffbd7cea9b622d4/jiter-0.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:351a341c2105aa430b7047e30f1bf7975f6313b00165d3fc07be2edaf741f279", size = 336181, upload-time = "2026-05-19T10:08:02.688Z" }, + { url = "https://files.pythonhosted.org/packages/58/fc/2303901b16c4ba05865588990a420c0b4156270b44379c20931544a1d962/jiter-0.15.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4ab395feec8d249ec4044e228e98a7033f043426a265df439dc3698823f0a4e4", size = 362985, upload-time = "2026-05-19T10:08:04.394Z" }, + { url = "https://files.pythonhosted.org/packages/5b/6f/11bace093c52e7d4d26c8e606ccd7ae8c972189622469ec0d9e28161e28b/jiter-0.15.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2a438005b6f22d0273413484d6094d7c2c5d10ec1b3a3bf128e0d1d3ba53258", size = 453292, upload-time = "2026-05-19T10:08:05.967Z" }, + { url = "https://files.pythonhosted.org/packages/22/db/987f2f086ca4d7a6582eb4ccd513f9b26b42d9e4243a087609a3137a8fc7/jiter-0.15.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f18f85e4218d1b40f000f42a92239a7a61a902cd42c65e6c360dbd17dcb20894", size = 373501, upload-time = "2026-05-19T10:08:07.857Z" }, + { url = "https://files.pythonhosted.org/packages/8f/7c/89fbcabb2739b7a5b8dc959a1b6c5761f6484f5fed3486854b3c789bb1de/jiter-0.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1aa62e277fc1cbd80e6deacae6f4d983b41b3d7728e0645c5d741a6149bba45", size = 344683, upload-time = "2026-05-19T10:08:09.431Z" }, + { url = "https://files.pythonhosted.org/packages/30/6f/6cca7692e7dddfec6d8d76c54dc97f2af2a41df4ac0674b999df1f09a5f3/jiter-0.15.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:6550fa135c7deb8ead6af49ed7ff648532ea8334a1447fe34a36315ef79c5c29", size = 350892, upload-time = "2026-05-19T10:08:11.352Z" }, + { url = "https://files.pythonhosted.org/packages/39/14/0338d6190cb8e6d22e677ab1d4eabd4117f67cca70c54cd04b82ff64e068/jiter-0.15.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:066f8f33f18b2419cd8213b2436fa7fbc9c499f315971cfa3ce1f9820c001b1b", size = 388723, upload-time = "2026-05-19T10:08:12.912Z" }, + { url = "https://files.pythonhosted.org/packages/90/31/cc19f4a1bdb6afb09ce6a2f2615aa8d44d994eba0d8e6105ed1af920e736/jiter-0.15.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:75e8a04e91432dde9f1838373cf93d23726c79d3e908d319acf0e796f85592e7", size = 516648, upload-time = "2026-05-19T10:08:14.808Z" }, + { url = "https://files.pythonhosted.org/packages/49/9f/833c541512cd091b63c10c0381973dfe11bc7a503a818c16384417e0c81e/jiter-0.15.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:a97261f1fccb8e50ecd2890a96e46efdc3f57c80a197324c6777827231eca712", size = 547382, upload-time = "2026-05-19T10:08:16.927Z" }, + { url = "https://files.pythonhosted.org/packages/d2/11/e7b70e91f90bc4477e8eee9e8a5f7cf3cb41b4525d6394dc98a714eb8f7f/jiter-0.15.0-cp313-cp313-win32.whl", hash = "sha256:c77496cb10bd7549690fbbab3e5ec05857b83e49276f4a9423a766ddd2afcd4c", size = 205845, upload-time = "2026-05-19T10:08:18.401Z" }, + { url = "https://files.pythonhosted.org/packages/4b/23/5c20d9ad6f02c493e4023e5d2d09e1c1f15fe2753c9102c544aff068a88e/jiter-0.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b15741f501469009ae0ae90b7147958a664a7dede40aa7ff174a8a4645f546d0", size = 196842, upload-time = "2026-05-19T10:08:20.131Z" }, + { url = "https://files.pythonhosted.org/packages/6b/11/1eb400ef248e8c925fd883fbe325daf5e42cd1b0d308539dd332bd4f7ffc/jiter-0.15.0-cp313-cp313-win_arm64.whl", hash = "sha256:5d6a60072b44c3c2b797a7ddcbcbbf2b34ea3cfd4721580fbfd2a09d9d9b84ba", size = 192212, upload-time = "2026-05-19T10:08:21.807Z" }, + { url = "https://files.pythonhosted.org/packages/8a/60/2fd8d7c79da8acf9b7b277c7616847773779356b92acfc9bb158452174da/jiter-0.15.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ef1fd24d9413f6209e00d3d5a453e67acfe004a25cc6c8e8484faed4311ab9e8", size = 315065, upload-time = "2026-05-19T10:08:23.218Z" }, + { url = "https://files.pythonhosted.org/packages/46/f4/008fb7d65e8ac2abf00811651a661e025c4ba80bbc6f378450384ddd3aed/jiter-0.15.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:144f8e72cb53dab146347b91cceac01f5481237f2b93b4a339a1ee8f8878b67c", size = 339444, upload-time = "2026-05-19T10:08:24.701Z" }, + { url = "https://files.pythonhosted.org/packages/00/55/90b0c7b9c6896c0f2a591dd36d36b71d22e09674bfef178fa03ba3f81499/jiter-0.15.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:553fcac2ef2cb990877f9fc0833b8b629a3e6a5670b6b5fd58219b41a653ddc4", size = 347779, upload-time = "2026-05-19T10:08:26.408Z" }, + { url = "https://files.pythonhosted.org/packages/51/6b/69666cec5000fd57734c118437394516c749ae8dbeea9fb66d6fef9c4775/jiter-0.15.0-cp313-cp313t-win_amd64.whl", hash = "sha256:774f93f65031856bf14ad9f59bdcab8b8cad501e5ceabd51ba3525f76937a25b", size = 200395, upload-time = "2026-05-19T10:08:28.055Z" }, + { url = "https://files.pythonhosted.org/packages/39/04/a6aa62cd27e8149b0d28df5561f10f6cceaf7935a9ccf3f1c5a05f9a0cd8/jiter-0.15.0-cp313-cp313t-win_arm64.whl", hash = "sha256:f1e1754960f38ec40613a07e5e372df67acb3b890fb383b6fb3de3e49ddbf3c7", size = 190516, upload-time = "2026-05-19T10:08:29.35Z" }, + { url = "https://files.pythonhosted.org/packages/eb/d2/079f350ebf7859d081de30aa890f9e3be68516f754f3ba32366ffff4dcee/jiter-0.15.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:ac0d9ddea4350974be7a221fc25895f251a8fee748c889bdced2141c0fec1a49", size = 308884, upload-time = "2026-05-19T10:08:31.667Z" }, + { url = "https://files.pythonhosted.org/packages/04/4e/a2c30a7f69b48c03b20935d647479106fe932f6e63f75faf53937197e05d/jiter-0.15.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:01a8222cf05ab1128e239421156c207949808acaaea2bdfd33130ae666786e86", size = 310028, upload-time = "2026-05-19T10:08:33.304Z" }, + { url = "https://files.pythonhosted.org/packages/40/90/2e7cdfd3cf8ca967be38c48f5cf474d79f089efaf559a40f15984a77ae69/jiter-0.15.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:182226cbc930c9fab81bc2e41a4da672f89539906dadb05e75670ac07b94f71f", size = 337485, upload-time = "2026-05-19T10:08:35.259Z" }, + { url = "https://files.pythonhosted.org/packages/9b/11/15a1aa28b120b8ee5b4f1fb894c125046225f09847738bd64233d3b84883/jiter-0.15.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:71683c38c825452999b5717fcae07ea708e8c93003e808be4319c1b02e3d176e", size = 364223, upload-time = "2026-05-19T10:08:36.694Z" }, + { url = "https://files.pythonhosted.org/packages/b7/25/f442e8af5f3d0dcf47b39e83a0efd9ee45ea946aa6d04625dc3181eae3b6/jiter-0.15.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30f2218e6a9e5c18bc10fe6d41ac189c442c88eacf11bad9f28ef95a9bef00e6", size = 456387, upload-time = "2026-05-19T10:08:38.143Z" }, + { url = "https://files.pythonhosted.org/packages/da/f4/37f2d2c9f64f49af7da652ed7532bb5a2372e588e6927c3fdd76f911db65/jiter-0.15.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5157de9f76eb4bc5ea74a1219366a25f945ad305641d74e04f59c54087091aa9", size = 374461, upload-time = "2026-05-19T10:08:39.869Z" }, + { url = "https://files.pythonhosted.org/packages/60/28/edcfbbbf0cb15436f36664a8908a0df47ab9006298d4cd937dc08ea932d6/jiter-0.15.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c5db5527c221249a876160663ab891ace358c17f7b9c93ec1478b7f0550e5c", size = 345924, upload-time = "2026-05-19T10:08:41.668Z" }, + { url = "https://files.pythonhosted.org/packages/47/13/89fba6398dab7f202b7278c4b4aac122399d2c0183971c4a57a3b7088df5/jiter-0.15.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:3e4540b8e74e4268811ac05db226a6a128ff572e7e0ce3f1163b693cadb184cd", size = 352283, upload-time = "2026-05-19T10:08:43.091Z" }, + { url = "https://files.pythonhosted.org/packages/1b/da/0f6af8cef2c565a1ab44d970f268c43ccaa72707386ea6388e6fe2b6cd26/jiter-0.15.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:62ebd14e47e9aed9df4472afcb2663668ce4d74891cd54f86bf6e44029d6dc89", size = 389985, upload-time = "2026-05-19T10:08:44.915Z" }, + { url = "https://files.pythonhosted.org/packages/a1/ec/b9cb7d6d29e24ee14910266157d2a279d7a8f60ee0df7fa840882976ba64/jiter-0.15.0-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0be6f5ad41a809f303f416d17cec92a7a725902fb9b4f3de3d19362ac0ef8554", size = 517695, upload-time = "2026-05-19T10:08:46.486Z" }, + { url = "https://files.pythonhosted.org/packages/64/5e/6d1bda880723aae0ad86b4b763f044362448efe31e3e819635d41cb03451/jiter-0.15.0-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:813dfbb17d65328bf86e5f0905dd277ba2265d3ca20556e86c0c7035b7182e5a", size = 548868, upload-time = "2026-05-19T10:08:48.026Z" }, + { url = "https://files.pythonhosted.org/packages/0c/72/7de501cf38dcacaf35098796f3a50e0f2e338baba18a58946c618544b809/jiter-0.15.0-cp314-cp314-win32.whl", hash = "sha256:50e51156192722a9c58db112837d3f8ef96fb3c5ecc14e95f409134b08b158ec", size = 206380, upload-time = "2026-05-19T10:08:49.738Z" }, + { url = "https://files.pythonhosted.org/packages/1e/a9/e19addf4b0c1bdce52c6da12351e6bc42c340c45e7c09e2158e46d293ccc/jiter-0.15.0-cp314-cp314-win_amd64.whl", hash = "sha256:30ce1a5d16b5641dc935d50ef775af6a0871e3d14ab05d6fc54dff371b78e558", size = 197687, upload-time = "2026-05-19T10:08:51.088Z" }, + { url = "https://files.pythonhosted.org/packages/f2/c9/776b1db01db25fc6c1d58d1979a37b0a9fe787e5f5b1d062d2eaacb77923/jiter-0.15.0-cp314-cp314-win_arm64.whl", hash = "sha256:510c8b3c17a0ed9ac69850c0438dada3c9b82d9c4d589fcb62002a5a9cf3a866", size = 192571, upload-time = "2026-05-19T10:08:52.451Z" }, + { url = "https://files.pythonhosted.org/packages/a0/f6/45bb4670bacf300fd2c7abadbfb3af376e5f1b6ae75fd9bc069891d15870/jiter-0.15.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7553333dd0930c104a5a0db8df72bf7219fe663d731383b576bb6ed6351c984d", size = 317151, upload-time = "2026-05-19T10:08:53.867Z" }, + { url = "https://files.pythonhosted.org/packages/d7/68/ed635ad5acd7b73e454283083bbb7c8205ad10e88b0d9d7d793b09fe8226/jiter-0.15.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2143ab06181d2b029eedcb6af3cebe95f11bbac62441781860f98ee9330a6a6", size = 341243, upload-time = "2026-05-19T10:08:55.383Z" }, + { url = "https://files.pythonhosted.org/packages/5d/db/3ff4176b817b8ea33879e71e13d8bc2b0d481a7ed3fe9e080f333d415c16/jiter-0.15.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6eac374c5c975709b69c10f09afd199df74150172156ad10c8d4fd785b7da995", size = 363629, upload-time = "2026-05-19T10:08:56.928Z" }, + { url = "https://files.pythonhosted.org/packages/ab/24/5f8270e0ba9c883582f96f722f8a0b58015c7ce1f8c6d4571cf394e99b6b/jiter-0.15.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b3b3b775e33d3bfaec9899edc526ae97b0da0bf9d071a46124ba419149a414f8", size = 456198, upload-time = "2026-05-19T10:08:58.618Z" }, + { url = "https://files.pythonhosted.org/packages/45/5b/76fc02b0b5c54c3d18c60653156e2f76fde1816f9b4722db68d6ee2c897e/jiter-0.15.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3071db3346334beae1360b46da4606da57bf3528c167b3c38533afaf9f2c5", size = 373710, upload-time = "2026-05-19T10:09:00.151Z" }, + { url = "https://files.pythonhosted.org/packages/c4/52/4310821b0ea9277994d3e1f49fc6a4b34e4800caebacb2c0af81da59a454/jiter-0.15.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6694a173ecabc12eb60efbc0b474464ead1951ff65cd8b1e72100715c64512b", size = 349901, upload-time = "2026-05-19T10:09:01.621Z" }, + { url = "https://files.pythonhosted.org/packages/93/fe/67648c35b3594fba8854ac64cc8a826d8bcd18324bbdb53d77697c60b6ef/jiter-0.15.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:a254e10b593624d230c365b6d616b22ca0ad65e63a16e6631c2b3466022e6ba8", size = 352438, upload-time = "2026-05-19T10:09:03.216Z" }, + { url = "https://files.pythonhosted.org/packages/cb/28/0a1879d07ad6b3e025a2750027363452ced93c2d16d1c9d4b153ffd51c91/jiter-0.15.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d8d2955167274e15d79a7a020afdd9b39c990eb80b2d89fca695d92dcfdd38ec", size = 388152, upload-time = "2026-05-19T10:09:04.741Z" }, + { url = "https://files.pythonhosted.org/packages/c1/78/46c6f6b56ba85c90021f4afd72ed42f691f8f84daacb5fe27277070e3858/jiter-0.15.0-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:acf4ee4d1fc55917239fe72972fb292dd773055d05eb040d36f4326e02cc2c0e", size = 517707, upload-time = "2026-05-19T10:09:06.231Z" }, + { url = "https://files.pythonhosted.org/packages/ca/cb/720662d4c88fcad606e826fef5424365527ba43ce4868a479aed8f8c507e/jiter-0.15.0-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:e7196e56f1cd69af1dbb07dff02dcfb260a50b45a82d409d92a06fedb32473b5", size = 548241, upload-time = "2026-05-19T10:09:08.093Z" }, + { url = "https://files.pythonhosted.org/packages/60/e3/935b8034fd143f21125c87d51404a9e0e1449186a494405721ff5d1d695e/jiter-0.15.0-cp314-cp314t-win32.whl", hash = "sha256:7f6163c0f10b055245f814dcc59f4818da60dfe72f3e72ab89fc24b6bd5e9c52", size = 207950, upload-time = "2026-05-19T10:09:09.616Z" }, + { url = "https://files.pythonhosted.org/packages/93/59/984fd9ece895953dad3e0880a650e766f5a2da2c5514f0eafdaaabbeb5f9/jiter-0.15.0-cp314-cp314t-win_amd64.whl", hash = "sha256:980c256edb05b78a111b99c4de3b1d32e31634b867fd1fc2cf726e7b7bba9854", size = 200055, upload-time = "2026-05-19T10:09:11.367Z" }, + { url = "https://files.pythonhosted.org/packages/0e/a4/cf8d779feb133a27a2e3bc833bccb9e13aa332cdf820497ebf72c10ce8c3/jiter-0.15.0-cp314-cp314t-win_arm64.whl", hash = "sha256:66b1880df2d01e206e8339769d1c7c1753bcb653efd6289e203f6f24ebada0c0", size = 191244, upload-time = "2026-05-19T10:09:12.74Z" }, + { url = "https://files.pythonhosted.org/packages/65/43/1fc62172aa98b50a7de9a25554060db510f85c89cfbed0dfe13e1907a139/jiter-0.15.0-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:411fa4dfa5a7ae3d11491027ffb9beadec3996010a986862db70d91abba1c750", size = 305585, upload-time = "2026-05-19T10:09:35.995Z" }, + { url = "https://files.pythonhosted.org/packages/e8/c4/dd58fcd9e2df83666e5c1c1347bef58ce919cd8efc3ffa38aeea62ce493b/jiter-0.15.0-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:2b0074e2f56eb2dacca1689760fd2852a068f85a0547a157b82cb4cafeb6768b", size = 306936, upload-time = "2026-05-19T10:09:37.435Z" }, + { url = "https://files.pythonhosted.org/packages/39/86/b695e16f1180c07f43ea98e73ecd21cf63fa2e1b0c1103739013784d11ae/jiter-0.15.0-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:913d02d29c9606643418d9ccfc3b72492ab25a6bf7889934e09a3490f8d3438b", size = 342453, upload-time = "2026-05-19T10:09:39.294Z" }, + { url = "https://files.pythonhosted.org/packages/34/56/55d76614af37fe3f22a3347d1e410d2a15da581997cb2da499a625000bb5/jiter-0.15.0-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b15d3ec9b0449c40e85319bdb4caa8b77ab526e74f5532ed94bec15e2f66822c", size = 345606, upload-time = "2026-05-19T10:09:40.727Z" }, + { url = "https://files.pythonhosted.org/packages/73/38/505941b2b092fd5bbbd60a52a880db1173f1690ae6751bed3af1c9ddcb4e/jiter-0.15.0-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:631f13a3d04e97d4e083993b10f4b99530e3a10d953e2eb5e196b7dc7f812ce0", size = 303769, upload-time = "2026-05-19T10:09:42.203Z" }, + { url = "https://files.pythonhosted.org/packages/e7/95/a06692b29e77473f286e1ec1f426d3ca44d7b5843be8ad21d7a5f3fcdcc0/jiter-0.15.0-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:b6c0ffae686c39bf3737be60793783267628783ea42545632c10b291105aee45", size = 305128, upload-time = "2026-05-19T10:09:43.657Z" }, + { url = "https://files.pythonhosted.org/packages/23/85/7270d7ad41d6061a25b950c6bf91d638bd9aacb113200a8c8d57a055fd67/jiter-0.15.0-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d54fb5b31dea401a41af3f8a7d2512e9b6a6a005491e6166c7e4ffab9639a9c", size = 340459, upload-time = "2026-05-19T10:09:45.452Z" }, + { url = "https://files.pythonhosted.org/packages/c8/8d/302cb2057b7513327b4d575cff6b1d066ee6431a5357fc3f8867cd684406/jiter-0.15.0-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54d5d6090cdc1b7c9e780dfb04949a990adb1e301a2fc0bbcee7de4638d33f9a", size = 344469, upload-time = "2026-05-19T10:09:46.864Z" }, ] [[package]] @@ -1601,7 +1573,7 @@ wheels = [ [[package]] name = "pydantic" -version = "2.13.3" +version = "2.13.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, @@ -1609,125 +1581,125 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d9/e4/40d09941a2cebcb20609b86a559817d5b9291c49dd6f8c87e5feffbe703a/pydantic-2.13.3.tar.gz", hash = "sha256:af09e9d1d09f4e7fe37145c1f577e1d61ceb9a41924bf0094a36506285d0a84d", size = 844068, upload-time = "2026-04-20T14:46:43.632Z" } +sdist = { url = "https://files.pythonhosted.org/packages/18/a5/b60d21ac674192f8ab0ba4e9fd860690f9b4a6e51ca5df118733b487d8d6/pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6", size = 844775, upload-time = "2026-05-06T13:43:05.343Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/0a/fd7d723f8f8153418fb40cf9c940e82004fce7e987026b08a68a36dd3fe7/pydantic-2.13.3-py3-none-any.whl", hash = "sha256:6db14ac8dfc9a1e57f87ea2c0de670c251240f43cb0c30a5130e9720dc612927", size = 471981, upload-time = "2026-04-20T14:46:41.402Z" }, + { url = "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba", size = 472262, upload-time = "2026-05-06T13:43:02.641Z" }, ] [[package]] name = "pydantic-core" -version = "2.46.3" +version = "2.46.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2a/ef/f7abb56c49382a246fd2ce9c799691e3c3e7175ec74b14d99e798bcddb1a/pydantic_core-2.46.3.tar.gz", hash = "sha256:41c178f65b8c29807239d47e6050262eb6bf84eb695e41101e62e38df4a5bc2c", size = 471412, upload-time = "2026-04-20T14:40:56.672Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/22/98/b50eb9a411e87483b5c65dba4fa430a06bac4234d3403a40e5a9905ebcd0/pydantic_core-2.46.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:1da3786b8018e60349680720158cc19161cc3b4bdd815beb0a321cd5ce1ad5b1", size = 2108971, upload-time = "2026-04-20T14:43:51.945Z" }, - { url = "https://files.pythonhosted.org/packages/08/4b/f364b9d161718ff2217160a4b5d41ce38de60aed91c3689ebffa1c939d23/pydantic_core-2.46.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cc0988cb29d21bf4a9d5cf2ef970b5c0e38d8d8e107a493278c05dc6c1dda69f", size = 1949588, upload-time = "2026-04-20T14:44:10.386Z" }, - { url = "https://files.pythonhosted.org/packages/8f/8b/30bd03ee83b2f5e29f5ba8e647ab3c456bf56f2ec72fdbcc0215484a0854/pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27f9067c3bfadd04c55484b89c0d267981b2f3512850f6f66e1e74204a4e4ce3", size = 1975986, upload-time = "2026-04-20T14:43:57.106Z" }, - { url = "https://files.pythonhosted.org/packages/3c/54/13ccf954d84ec275d5d023d5786e4aa48840bc9f161f2838dc98e1153518/pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a642ac886ecf6402d9882d10c405dcf4b902abeb2972cd5fb4a48c83cd59279a", size = 2055830, upload-time = "2026-04-20T14:44:15.499Z" }, - { url = "https://files.pythonhosted.org/packages/be/0e/65f38125e660fdbd72aa858e7dfae893645cfa0e7b13d333e174a367cd23/pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79f561438481f28681584b89e2effb22855e2179880314bcddbf5968e935e807", size = 2222340, upload-time = "2026-04-20T14:41:51.353Z" }, - { url = "https://files.pythonhosted.org/packages/d1/88/f3ab7739efe0e7e80777dbb84c59eb98518e3f57ea433206194c2e425272/pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57a973eae4665352a47cf1a99b4ee864620f2fe663a217d7a8da68a1f3a5bfda", size = 2280727, upload-time = "2026-04-20T14:41:30.461Z" }, - { url = "https://files.pythonhosted.org/packages/2a/6d/c228219080817bec4982f9531cadb18da6aaa770fdeb114f49c237ac2c9f/pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83d002b97072a53ea150d63e0a3adfae5670cef5aa8a6e490240e482d3b22e57", size = 2092158, upload-time = "2026-04-20T14:44:07.305Z" }, - { url = "https://files.pythonhosted.org/packages/0f/b1/525a16711e7c6d61635fac3b0bd54600b5c5d9f60c6fc5aaab26b64a2297/pydantic_core-2.46.3-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:b40ddd51e7c44b28cfaef746c9d3c506d658885e0a46f9eeef2ee815cbf8e045", size = 2116626, upload-time = "2026-04-20T14:42:34.118Z" }, - { url = "https://files.pythonhosted.org/packages/ef/7c/17d30673351439a6951bf54f564cf2443ab00ae264ec9df00e2efd710eb5/pydantic_core-2.46.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac5ec7fb9b87f04ee839af2d53bcadea57ded7d229719f56c0ed895bff987943", size = 2160691, upload-time = "2026-04-20T14:41:14.023Z" }, - { url = "https://files.pythonhosted.org/packages/86/66/af8adbcbc0886ead7f1a116606a534d75a307e71e6e08226000d51b880d2/pydantic_core-2.46.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a3b11c812f61b3129c4905781a2601dfdfdea5fe1e6c1cfb696b55d14e9c054f", size = 2182543, upload-time = "2026-04-20T14:40:48.886Z" }, - { url = "https://files.pythonhosted.org/packages/b0/37/6de71e0f54c54a4190010f57deb749e1ddf75c568ada3b1320b70067f121/pydantic_core-2.46.3-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:1108da631e602e5b3c38d6d04fe5bb3bfa54349e6918e3ca6cf570b2e2b2f9d4", size = 2324513, upload-time = "2026-04-20T14:42:36.121Z" }, - { url = "https://files.pythonhosted.org/packages/51/b1/9fc74ce94f603d5ef59ff258ca9c2c8fb902fb548d340a96f77f4d1c3b7f/pydantic_core-2.46.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:de885175515bcfa98ae618c1df7a072f13d179f81376c8007112af20567fd08a", size = 2361853, upload-time = "2026-04-20T14:43:24.886Z" }, - { url = "https://files.pythonhosted.org/packages/40/d0/4c652fc592db35f100279ee751d5a145aca1b9a7984b9684ba7c1b5b0535/pydantic_core-2.46.3-cp310-cp310-win32.whl", hash = "sha256:d11058e3201527d41bc6b545c79187c9e4bf85e15a236a6007f0e991518882b7", size = 1980465, upload-time = "2026-04-20T14:44:46.239Z" }, - { url = "https://files.pythonhosted.org/packages/27/b8/a920453c38afbe1f355e1ea0b0d94a0a3e0b0879d32d793108755fa171d5/pydantic_core-2.46.3-cp310-cp310-win_amd64.whl", hash = "sha256:3612edf65c8ea67ac13616c4d23af12faef1ae435a8a93e5934c2a0cbbdd1fd6", size = 2073884, upload-time = "2026-04-20T14:43:01.201Z" }, - { url = "https://files.pythonhosted.org/packages/22/a2/1ba90a83e85a3f94c796b184f3efde9c72f2830dcda493eea8d59ba78e6d/pydantic_core-2.46.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ab124d49d0459b2373ecf54118a45c28a1e6d4192a533fbc915e70f556feb8e5", size = 2106740, upload-time = "2026-04-20T14:41:20.932Z" }, - { url = "https://files.pythonhosted.org/packages/b6/f6/99ae893c89a0b9d3daec9f95487aa676709aa83f67643b3f0abaf4ab628a/pydantic_core-2.46.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cca67d52a5c7a16aed2b3999e719c4bcf644074eac304a5d3d62dd70ae7d4b2c", size = 1948293, upload-time = "2026-04-20T14:43:42.115Z" }, - { url = "https://files.pythonhosted.org/packages/3e/b8/2e8e636dc9e3f16c2e16bf0849e24be82c5ee82c603c65fc0326666328fc/pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c024e08c0ba23e6fd68c771a521e9d6a792f2ebb0fa734296b36394dc30390e", size = 1973222, upload-time = "2026-04-20T14:41:57.841Z" }, - { url = "https://files.pythonhosted.org/packages/34/36/0e730beec4d83c5306f417afbd82ff237d9a21e83c5edf675f31ed84c1fe/pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6645ce7eec4928e29a1e3b3d5c946621d105d3e79f0c9cddf07c2a9770949287", size = 2053852, upload-time = "2026-04-20T14:40:43.077Z" }, - { url = "https://files.pythonhosted.org/packages/4b/f0/3071131f47e39136a17814576e0fada9168569f7f8c0e6ac4d1ede6a4958/pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a712c7118e6c5ea96562f7b488435172abb94a3c53c22c9efc1412264a45cbbe", size = 2221134, upload-time = "2026-04-20T14:43:03.349Z" }, - { url = "https://files.pythonhosted.org/packages/2f/a9/a2dc023eec5aa4b02a467874bad32e2446957d2adcab14e107eab502e978/pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69a868ef3ff206343579021c40faf3b1edc64b1cc508ff243a28b0a514ccb050", size = 2279785, upload-time = "2026-04-20T14:41:19.285Z" }, - { url = "https://files.pythonhosted.org/packages/0a/44/93f489d16fb63fbd41c670441536541f6e8cfa1e5a69f40bc9c5d30d8c90/pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc7e8c32db809aa0f6ea1d6869ebc8518a65d5150fdfad8bcae6a49ae32a22e2", size = 2089404, upload-time = "2026-04-20T14:43:10.108Z" }, - { url = "https://files.pythonhosted.org/packages/2a/78/8692e3aa72b2d004f7a5d937f1dfdc8552ba26caf0bec75f342c40f00dec/pydantic_core-2.46.3-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:3481bd1341dc85779ee506bc8e1196a277ace359d89d28588a9468c3ecbe63fa", size = 2114898, upload-time = "2026-04-20T14:44:51.475Z" }, - { url = "https://files.pythonhosted.org/packages/6a/62/e83133f2e7832532060175cebf1f13748f4c7e7e7165cdd1f611f174494b/pydantic_core-2.46.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8690eba565c6d68ffd3a8655525cbdd5246510b44a637ee2c6c03a7ebfe64d3c", size = 2157856, upload-time = "2026-04-20T14:43:46.64Z" }, - { url = "https://files.pythonhosted.org/packages/6d/ec/6a500e3ad7718ee50583fae79c8651f5d37e3abce1fa9ae177ae65842c53/pydantic_core-2.46.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4de88889d7e88d50d40ee5b39d5dac0bcaef9ba91f7e536ac064e6b2834ecccf", size = 2180168, upload-time = "2026-04-20T14:42:00.302Z" }, - { url = "https://files.pythonhosted.org/packages/d8/53/8267811054b1aa7fc1dc7ded93812372ef79a839f5e23558136a6afbfde1/pydantic_core-2.46.3-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:e480080975c1ef7f780b8f99ed72337e7cc5efea2e518a20a692e8e7b278eb8b", size = 2322885, upload-time = "2026-04-20T14:41:05.253Z" }, - { url = "https://files.pythonhosted.org/packages/c8/c1/1c0acdb3aa0856ddc4ecc55214578f896f2de16f400cf51627eb3c26c1c4/pydantic_core-2.46.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:de3a5c376f8cd94da9a1b8fd3dd1c16c7a7b216ed31dc8ce9fd7a22bf13b836e", size = 2360328, upload-time = "2026-04-20T14:41:43.991Z" }, - { url = "https://files.pythonhosted.org/packages/f0/d0/ef39cd0f4a926814f360e71c1adeab48ad214d9727e4deb48eedfb5bce1a/pydantic_core-2.46.3-cp311-cp311-win32.whl", hash = "sha256:fc331a5314ffddd5385b9ee9d0d2fee0b13c27e0e02dad71b1ae5d6561f51eeb", size = 1979464, upload-time = "2026-04-20T14:43:12.215Z" }, - { url = "https://files.pythonhosted.org/packages/18/9c/f41951b0d858e343f1cf09398b2a7b3014013799744f2c4a8ad6a3eec4f2/pydantic_core-2.46.3-cp311-cp311-win_amd64.whl", hash = "sha256:b5b9c6cf08a8a5e502698f5e153056d12c34b8fb30317e0c5fd06f45162a6346", size = 2070837, upload-time = "2026-04-20T14:41:47.707Z" }, - { url = "https://files.pythonhosted.org/packages/9f/1e/264a17cd582f6ed50950d4d03dd5fefd84e570e238afe1cb3e25cf238769/pydantic_core-2.46.3-cp311-cp311-win_arm64.whl", hash = "sha256:5dfd51cf457482f04ec49491811a2b8fd5b843b64b11eecd2d7a1ee596ea78a6", size = 2053647, upload-time = "2026-04-20T14:42:27.535Z" }, - { url = "https://files.pythonhosted.org/packages/4b/cb/5b47425556ecc1f3fe18ed2a0083188aa46e1dd812b06e406475b3a5d536/pydantic_core-2.46.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b11b59b3eee90a80a36701ddb4576d9ae31f93f05cb9e277ceaa09e6bf074a67", size = 2101946, upload-time = "2026-04-20T14:40:52.581Z" }, - { url = "https://files.pythonhosted.org/packages/a1/4f/2fb62c2267cae99b815bbf4a7b9283812c88ca3153ef29f7707200f1d4e5/pydantic_core-2.46.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:af8653713055ea18a3abc1537fe2ebc42f5b0bbb768d1eb79fd74eb47c0ac089", size = 1951612, upload-time = "2026-04-20T14:42:42.996Z" }, - { url = "https://files.pythonhosted.org/packages/50/6e/b7348fd30d6556d132cddd5bd79f37f96f2601fe0608afac4f5fb01ec0b3/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75a519dab6d63c514f3a81053e5266c549679e4aa88f6ec57f2b7b854aceb1b0", size = 1977027, upload-time = "2026-04-20T14:42:02.001Z" }, - { url = "https://files.pythonhosted.org/packages/82/11/31d60ee2b45540d3fb0b29302a393dbc01cd771c473f5b5147bcd353e593/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a6cd87cb1575b1ad05ba98894c5b5c96411ef678fa2f6ed2576607095b8d9789", size = 2063008, upload-time = "2026-04-20T14:44:17.952Z" }, - { url = "https://files.pythonhosted.org/packages/8a/db/3a9d1957181b59258f44a2300ab0f0be9d1e12d662a4f57bb31250455c52/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f80a55484b8d843c8ada81ebf70a682f3f00a3d40e378c06cf17ecb44d280d7d", size = 2233082, upload-time = "2026-04-20T14:40:57.934Z" }, - { url = "https://files.pythonhosted.org/packages/9c/e1/3277c38792aeb5cfb18c2f0c5785a221d9ff4e149abbe1184d53d5f72273/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3861f1731b90c50a3266316b9044f5c9b405eecb8e299b0a7120596334e4fe9c", size = 2304615, upload-time = "2026-04-20T14:42:12.584Z" }, - { url = "https://files.pythonhosted.org/packages/5e/d5/e3d9717c9eba10855325650afd2a9cba8e607321697f18953af9d562da2f/pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb528e295ed31570ac3dcc9bfdd6e0150bc11ce6168ac87a8082055cf1a67395", size = 2094380, upload-time = "2026-04-20T14:43:05.522Z" }, - { url = "https://files.pythonhosted.org/packages/a1/20/abac35dedcbfd66c6f0b03e4e3564511771d6c9b7ede10a362d03e110d9b/pydantic_core-2.46.3-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:367508faa4973b992b271ba1494acaab36eb7e8739d1e47be5035fb1ea225396", size = 2135429, upload-time = "2026-04-20T14:41:55.549Z" }, - { url = "https://files.pythonhosted.org/packages/6c/a5/41bfd1df69afad71b5cf0535055bccc73022715ad362edbc124bc1e021d7/pydantic_core-2.46.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ad3c826fe523e4becf4fe39baa44286cff85ef137c729a2c5e269afbfd0905d", size = 2174582, upload-time = "2026-04-20T14:41:45.96Z" }, - { url = "https://files.pythonhosted.org/packages/79/65/38d86ea056b29b2b10734eb23329b7a7672ca604df4f2b6e9c02d4ee22fe/pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ec638c5d194ef8af27db69f16c954a09797c0dc25015ad6123eb2c73a4d271ca", size = 2187533, upload-time = "2026-04-20T14:40:55.367Z" }, - { url = "https://files.pythonhosted.org/packages/b6/55/a1129141678a2026badc539ad1dee0a71d06f54c2f06a4bd68c030ac781b/pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:28ed528c45446062ee66edb1d33df5d88828ae167de76e773a3c7f64bd14e976", size = 2332985, upload-time = "2026-04-20T14:44:13.05Z" }, - { url = "https://files.pythonhosted.org/packages/d7/60/cb26f4077719f709e54819f4e8e1d43f4091f94e285eb6bd21e1190a7b7c/pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aed19d0c783886d5bd86d80ae5030006b45e28464218747dcf83dabfdd092c7b", size = 2373670, upload-time = "2026-04-20T14:41:53.421Z" }, - { url = "https://files.pythonhosted.org/packages/6b/7e/c3f21882bdf1d8d086876f81b5e296206c69c6082551d776895de7801fa0/pydantic_core-2.46.3-cp312-cp312-win32.whl", hash = "sha256:06d5d8820cbbdb4147578c1fe7ffcd5b83f34508cb9f9ab76e807be7db6ff0a4", size = 1966722, upload-time = "2026-04-20T14:44:30.588Z" }, - { url = "https://files.pythonhosted.org/packages/57/be/6b5e757b859013ebfbd7adba02f23b428f37c86dcbf78b5bb0b4ffd36e99/pydantic_core-2.46.3-cp312-cp312-win_amd64.whl", hash = "sha256:c3212fda0ee959c1dd04c60b601ec31097aaa893573a3a1abd0a47bcac2968c1", size = 2072970, upload-time = "2026-04-20T14:42:54.248Z" }, - { url = "https://files.pythonhosted.org/packages/bf/f8/a989b21cc75e9a32d24192ef700eea606521221a89faa40c919ce884f2b1/pydantic_core-2.46.3-cp312-cp312-win_arm64.whl", hash = "sha256:f1f8338dd7a7f31761f1f1a3c47503a9a3b34eea3c8b01fa6ee96408affb5e72", size = 2035963, upload-time = "2026-04-20T14:44:20.4Z" }, - { url = "https://files.pythonhosted.org/packages/9b/3c/9b5e8eb9821936d065439c3b0fb1490ffa64163bfe7e1595985a47896073/pydantic_core-2.46.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:12bc98de041458b80c86c56b24df1d23832f3e166cbaff011f25d187f5c62c37", size = 2102109, upload-time = "2026-04-20T14:41:24.219Z" }, - { url = "https://files.pythonhosted.org/packages/91/97/1c41d1f5a19f241d8069f1e249853bcce378cdb76eec8ab636d7bc426280/pydantic_core-2.46.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:85348b8f89d2c3508b65b16c3c33a4da22b8215138d8b996912bb1532868885f", size = 1951820, upload-time = "2026-04-20T14:42:14.236Z" }, - { url = "https://files.pythonhosted.org/packages/30/b4/d03a7ae14571bc2b6b3c7b122441154720619afe9a336fa3a95434df5e2f/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1105677a6df914b1fb71a81b96c8cce7726857e1717d86001f29be06a25ee6f8", size = 1977785, upload-time = "2026-04-20T14:42:31.648Z" }, - { url = "https://files.pythonhosted.org/packages/ae/0c/4086f808834b59e3c8f1aa26df8f4b6d998cdcf354a143d18ef41529d1fe/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:87082cd65669a33adeba5470769e9704c7cf026cc30afb9cc77fd865578ebaad", size = 2062761, upload-time = "2026-04-20T14:40:37.093Z" }, - { url = "https://files.pythonhosted.org/packages/fa/71/a649be5a5064c2df0db06e0a512c2281134ed2fcc981f52a657936a7527c/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60e5f66e12c4f5212d08522963380eaaeac5ebd795826cfd19b2dfb0c7a52b9c", size = 2232989, upload-time = "2026-04-20T14:42:59.254Z" }, - { url = "https://files.pythonhosted.org/packages/a2/84/7756e75763e810b3a710f4724441d1ecc5883b94aacb07ca71c5fb5cfb69/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b6cdf19bf84128d5e7c37e8a73a0c5c10d51103a650ac585d42dd6ae233f2b7f", size = 2303975, upload-time = "2026-04-20T14:41:32.287Z" }, - { url = "https://files.pythonhosted.org/packages/6c/35/68a762e0c1e31f35fa0dac733cbd9f5b118042853698de9509c8e5bf128b/pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:031bb17f4885a43773c8c763089499f242aee2ea85cf17154168775dccdecf35", size = 2095325, upload-time = "2026-04-20T14:42:47.685Z" }, - { url = "https://files.pythonhosted.org/packages/77/bf/1bf8c9a8e91836c926eae5e3e51dce009bf495a60ca56060689d3df3f340/pydantic_core-2.46.3-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:bcf2a8b2982a6673693eae7348ef3d8cf3979c1d63b54fca7c397a635cc68687", size = 2133368, upload-time = "2026-04-20T14:41:22.766Z" }, - { url = "https://files.pythonhosted.org/packages/e5/50/87d818d6bab915984995157ceb2380f5aac4e563dddbed6b56f0ed057aba/pydantic_core-2.46.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28e8cf2f52d72ced402a137145923a762cbb5081e48b34312f7a0c8f55928ec3", size = 2173908, upload-time = "2026-04-20T14:42:52.044Z" }, - { url = "https://files.pythonhosted.org/packages/91/88/a311fb306d0bd6185db41fa14ae888fb81d0baf648a761ae760d30819d33/pydantic_core-2.46.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:17eaface65d9fc5abb940003020309c1bf7a211f5f608d7870297c367e6f9022", size = 2186422, upload-time = "2026-04-20T14:43:29.55Z" }, - { url = "https://files.pythonhosted.org/packages/8f/79/28fd0d81508525ab2054fef7c77a638c8b5b0afcbbaeee493cf7c3fef7e1/pydantic_core-2.46.3-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:93fd339f23408a07e98950a89644f92c54d8729719a40b30c0a30bb9ebc55d23", size = 2332709, upload-time = "2026-04-20T14:42:16.134Z" }, - { url = "https://files.pythonhosted.org/packages/b3/21/795bf5fe5c0f379308b8ef19c50dedab2e7711dbc8d0c2acf08f1c7daa05/pydantic_core-2.46.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:23cbdb3aaa74dfe0837975dbf69b469753bbde8eacace524519ffdb6b6e89eb7", size = 2372428, upload-time = "2026-04-20T14:41:10.974Z" }, - { url = "https://files.pythonhosted.org/packages/45/b3/ed14c659cbe7605e3ef063077680a64680aec81eb1a04763a05190d49b7f/pydantic_core-2.46.3-cp313-cp313-win32.whl", hash = "sha256:610eda2e3838f401105e6326ca304f5da1e15393ae25dacae5c5c63f2c275b13", size = 1965601, upload-time = "2026-04-20T14:41:42.128Z" }, - { url = "https://files.pythonhosted.org/packages/ef/bb/adb70d9a762ddd002d723fbf1bd492244d37da41e3af7b74ad212609027e/pydantic_core-2.46.3-cp313-cp313-win_amd64.whl", hash = "sha256:68cc7866ed863db34351294187f9b729964c371ba33e31c26f478471c52e1ed0", size = 2071517, upload-time = "2026-04-20T14:43:36.096Z" }, - { url = "https://files.pythonhosted.org/packages/52/eb/66faefabebfe68bd7788339c9c9127231e680b11906368c67ce112fdb47f/pydantic_core-2.46.3-cp313-cp313-win_arm64.whl", hash = "sha256:f64b5537ac62b231572879cd08ec05600308636a5d63bcbdb15063a466977bec", size = 2035802, upload-time = "2026-04-20T14:43:38.507Z" }, - { url = "https://files.pythonhosted.org/packages/7f/db/a7bcb4940183fda36022cd18ba8dd12f2dff40740ec7b58ce7457befa416/pydantic_core-2.46.3-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:afa3aa644f74e290cdede48a7b0bee37d1c35e71b05105f6b340d484af536d9b", size = 2097614, upload-time = "2026-04-20T14:44:38.374Z" }, - { url = "https://files.pythonhosted.org/packages/24/35/e4066358a22e3e99519db370494c7528f5a2aa1367370e80e27e20283543/pydantic_core-2.46.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ced3310e51aa425f7f77da8bbbb5212616655bedbe82c70944320bc1dbe5e018", size = 1951896, upload-time = "2026-04-20T14:40:53.996Z" }, - { url = "https://files.pythonhosted.org/packages/87/92/37cf4049d1636996e4b888c05a501f40a43ff218983a551d57f9d5e14f0d/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e29908922ce9da1a30b4da490bd1d3d82c01dcfdf864d2a74aacee674d0bfa34", size = 1979314, upload-time = "2026-04-20T14:41:49.446Z" }, - { url = "https://files.pythonhosted.org/packages/d8/36/9ff4d676dfbdfb2d591cf43f3d90ded01e15b1404fd101180ed2d62a2fd3/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0c9ff69140423eea8ed2d5477df3ba037f671f5e897d206d921bc9fdc39613e7", size = 2056133, upload-time = "2026-04-20T14:42:23.574Z" }, - { url = "https://files.pythonhosted.org/packages/bc/f0/405b442a4d7ba855b06eec8b2bf9c617d43b8432d099dfdc7bf999293495/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b675ab0a0d5b1c8fdb81195dc5bcefea3f3c240871cdd7ff9a2de8aa50772eb2", size = 2228726, upload-time = "2026-04-20T14:44:22.816Z" }, - { url = "https://files.pythonhosted.org/packages/e7/f8/65cd92dd5a0bd89ba277a98ecbfaf6fc36bbd3300973c7a4b826d6ab1391/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0087084960f209a9a4af50ecd1fb063d9ad3658c07bb81a7a53f452dacbfb2ba", size = 2301214, upload-time = "2026-04-20T14:44:48.792Z" }, - { url = "https://files.pythonhosted.org/packages/fd/86/ef96a4c6e79e7a2d0410826a68fbc0eccc0fd44aa733be199d5fcac3bb87/pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed42e6cc8e1b0e2b9b96e2276bad70ae625d10d6d524aed0c93de974ae029f9f", size = 2099927, upload-time = "2026-04-20T14:41:40.196Z" }, - { url = "https://files.pythonhosted.org/packages/6d/53/269caf30e0096e0a8a8f929d1982a27b3879872cca2d917d17c2f9fdf4fe/pydantic_core-2.46.3-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:f1771ce258afb3e4201e67d154edbbae712a76a6081079fe247c2f53c6322c22", size = 2128789, upload-time = "2026-04-20T14:41:15.868Z" }, - { url = "https://files.pythonhosted.org/packages/00/b0/1a6d9b6a587e118482910c244a1c5acf4d192604174132efd12bf0ac486f/pydantic_core-2.46.3-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a7610b6a5242a6c736d8ad47fd5fff87fcfe8f833b281b1c409c3d6835d9227f", size = 2173815, upload-time = "2026-04-20T14:44:25.152Z" }, - { url = "https://files.pythonhosted.org/packages/87/56/e7e00d4041a7e62b5a40815590114db3b535bf3ca0bf4dca9f16cef25246/pydantic_core-2.46.3-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:ff5e7783bcc5476e1db448bf268f11cb257b1c276d3e89f00b5727be86dd0127", size = 2181608, upload-time = "2026-04-20T14:41:28.933Z" }, - { url = "https://files.pythonhosted.org/packages/e8/22/4bd23c3d41f7c185d60808a1de83c76cf5aeabf792f6c636a55c3b1ec7f9/pydantic_core-2.46.3-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:9d2e32edcc143bc01e95300671915d9ca052d4f745aa0a49c48d4803f8a85f2c", size = 2326968, upload-time = "2026-04-20T14:42:03.962Z" }, - { url = "https://files.pythonhosted.org/packages/24/ac/66cd45129e3915e5ade3b292cb3bc7fd537f58f8f8dbdaba6170f7cabb74/pydantic_core-2.46.3-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:6e42d83d1c6b87fa56b521479cff237e626a292f3b31b6345c15a99121b454c1", size = 2369842, upload-time = "2026-04-20T14:41:35.52Z" }, - { url = "https://files.pythonhosted.org/packages/a2/51/dd4248abb84113615473aa20d5545b7c4cd73c8644003b5259686f93996c/pydantic_core-2.46.3-cp314-cp314-win32.whl", hash = "sha256:07bc6d2a28c3adb4f7c6ae46aa4f2d2929af127f587ed44057af50bf1ce0f505", size = 1959661, upload-time = "2026-04-20T14:41:00.042Z" }, - { url = "https://files.pythonhosted.org/packages/20/eb/59980e5f1ae54a3b86372bd9f0fa373ea2d402e8cdcd3459334430f91e91/pydantic_core-2.46.3-cp314-cp314-win_amd64.whl", hash = "sha256:8940562319bc621da30714617e6a7eaa6b98c84e8c685bcdc02d7ed5e7c7c44e", size = 2071686, upload-time = "2026-04-20T14:43:16.471Z" }, - { url = "https://files.pythonhosted.org/packages/8c/db/1cf77e5247047dfee34bc01fa9bca134854f528c8eb053e144298893d370/pydantic_core-2.46.3-cp314-cp314-win_arm64.whl", hash = "sha256:5dcbbcf4d22210ced8f837c96db941bdb078f419543472aca5d9a0bb7cddc7df", size = 2026907, upload-time = "2026-04-20T14:43:31.732Z" }, - { url = "https://files.pythonhosted.org/packages/57/c0/b3df9f6a543276eadba0a48487b082ca1f201745329d97dbfa287034a230/pydantic_core-2.46.3-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:d0fe3dce1e836e418f912c1ad91c73357d03e556a4d286f441bf34fed2dbeecf", size = 2095047, upload-time = "2026-04-20T14:42:37.982Z" }, - { url = "https://files.pythonhosted.org/packages/66/57/886a938073b97556c168fd99e1a7305bb363cd30a6d2c76086bf0587b32a/pydantic_core-2.46.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9ce92e58abc722dac1bf835a6798a60b294e48eb0e625ec9fd994b932ac5feee", size = 1934329, upload-time = "2026-04-20T14:43:49.655Z" }, - { url = "https://files.pythonhosted.org/packages/0b/7c/b42eaa5c34b13b07ecb51da21761297a9b8eb43044c864a035999998f328/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a03e6467f0f5ab796a486146d1b887b2dc5e5f9b3288898c1b1c3ad974e53e4a", size = 1974847, upload-time = "2026-04-20T14:42:10.737Z" }, - { url = "https://files.pythonhosted.org/packages/e6/9b/92b42db6543e7de4f99ae977101a2967b63122d4b6cf7773812da2d7d5b5/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2798b6ba041b9d70acfb9071a2ea13c8456dd1e6a5555798e41ba7b0790e329c", size = 2041742, upload-time = "2026-04-20T14:40:44.262Z" }, - { url = "https://files.pythonhosted.org/packages/0f/19/46fbe1efabb5aa2834b43b9454e70f9a83ad9c338c1291e48bdc4fecf167/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9be3e221bdc6d69abf294dcf7aff6af19c31a5cdcc8f0aa3b14be29df4bd03b1", size = 2236235, upload-time = "2026-04-20T14:41:27.307Z" }, - { url = "https://files.pythonhosted.org/packages/77/da/b3f95bc009ad60ec53120f5d16c6faa8cabdbe8a20d83849a1f2b8728148/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f13936129ce841f2a5ddf6f126fea3c43cd128807b5a59588c37cf10178c2e64", size = 2282633, upload-time = "2026-04-20T14:44:33.271Z" }, - { url = "https://files.pythonhosted.org/packages/cc/6e/401336117722e28f32fb8220df676769d28ebdf08f2f4469646d404c43a3/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28b5f2ef03416facccb1c6ef744c69793175fd27e44ef15669201601cf423acb", size = 2109679, upload-time = "2026-04-20T14:44:41.065Z" }, - { url = "https://files.pythonhosted.org/packages/fc/53/b289f9bc8756a32fe718c46f55afaeaf8d489ee18d1a1e7be1db73f42cc4/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:830d1247d77ad23852314f069e9d7ddafeec5f684baf9d7e7065ed46a049c4e6", size = 2108342, upload-time = "2026-04-20T14:42:50.144Z" }, - { url = "https://files.pythonhosted.org/packages/10/5b/8292fc7c1f9111f1b2b7c1b0dcf1179edcd014fc3ea4517499f50b829d71/pydantic_core-2.46.3-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0793c90c1a3c74966e7975eaef3ed30ebdff3260a0f815a62a22adc17e4c01c", size = 2157208, upload-time = "2026-04-20T14:42:08.133Z" }, - { url = "https://files.pythonhosted.org/packages/2b/9e/f80044e9ec07580f057a89fc131f78dda7a58751ddf52bbe05eaf31db50f/pydantic_core-2.46.3-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:d2d0aead851b66f5245ec0c4fb2612ef457f8bbafefdf65a2bf9d6bac6140f47", size = 2167237, upload-time = "2026-04-20T14:42:25.412Z" }, - { url = "https://files.pythonhosted.org/packages/f8/84/6781a1b037f3b96be9227edbd1101f6d3946746056231bf4ac48cdff1a8d/pydantic_core-2.46.3-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:2f40e4246676beb31c5ce77c38a55ca4e465c6b38d11ea1bd935420568e0b1ab", size = 2312540, upload-time = "2026-04-20T14:40:40.313Z" }, - { url = "https://files.pythonhosted.org/packages/3e/db/19c0839feeb728e7df03255581f198dfdf1c2aeb1e174a8420b63c5252e5/pydantic_core-2.46.3-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:cf489cf8986c543939aeee17a09c04d6ffb43bfef8ca16fcbcc5cfdcbed24dba", size = 2369556, upload-time = "2026-04-20T14:41:09.427Z" }, - { url = "https://files.pythonhosted.org/packages/e0/15/3228774cb7cd45f5f721ddf1b2242747f4eb834d0c491f0c02d606f09fed/pydantic_core-2.46.3-cp314-cp314t-win32.whl", hash = "sha256:ffe0883b56cfc05798bf994164d2b2ff03efe2d22022a2bb080f3b626176dd56", size = 1949756, upload-time = "2026-04-20T14:41:25.717Z" }, - { url = "https://files.pythonhosted.org/packages/b8/2a/c79cf53fd91e5a87e30d481809f52f9a60dd221e39de66455cf04deaad37/pydantic_core-2.46.3-cp314-cp314t-win_amd64.whl", hash = "sha256:706d9d0ce9cf4593d07270d8e9f53b161f90c57d315aeec4fb4fd7a8b10240d8", size = 2051305, upload-time = "2026-04-20T14:43:18.627Z" }, - { url = "https://files.pythonhosted.org/packages/0b/db/d8182a7f1d9343a032265aae186eb063fe26ca4c40f256b21e8da4498e89/pydantic_core-2.46.3-cp314-cp314t-win_arm64.whl", hash = "sha256:77706aeb41df6a76568434701e0917da10692da28cb69d5fb6919ce5fdb07374", size = 2026310, upload-time = "2026-04-20T14:41:01.778Z" }, - { url = "https://files.pythonhosted.org/packages/66/7f/03dbad45cd3aa9083fbc93c210ae8b005af67e4136a14186950a747c6874/pydantic_core-2.46.3-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:9715525891ed524a0a1eb6d053c74d4d4ad5017677fb00af0b7c2644a31bae46", size = 2105683, upload-time = "2026-04-20T14:42:19.779Z" }, - { url = "https://files.pythonhosted.org/packages/26/22/4dc186ac8ea6b257e9855031f51b62a9637beac4d68ac06bee02f046f836/pydantic_core-2.46.3-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:9d2f400712a99a013aff420ef1eb9be077f8189a36c1e3ef87660b4e1088a874", size = 1940052, upload-time = "2026-04-20T14:43:59.274Z" }, - { url = "https://files.pythonhosted.org/packages/0d/ca/d376391a5aff1f2e8188960d7873543608130a870961c2b6b5236627c116/pydantic_core-2.46.3-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd2aab0e2e9dc2daf36bd2686c982535d5e7b1d930a1344a7bb6e82baab42a76", size = 1988172, upload-time = "2026-04-20T14:41:17.469Z" }, - { url = "https://files.pythonhosted.org/packages/0e/6b/523b9f85c23788755d6ab949329de692a2e3a584bc6beb67fef5e035aa9d/pydantic_core-2.46.3-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e9d76736da5f362fabfeea6a69b13b7f2be405c6d6966f06b2f6bfff7e64531", size = 2128596, upload-time = "2026-04-20T14:40:41.707Z" }, - { url = "https://files.pythonhosted.org/packages/34/42/f426db557e8ab2791bc7562052299944a118655496fbff99914e564c0a94/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:b12dd51f1187c2eb489af8e20f880362db98e954b54ab792fa5d92e8bcc6b803", size = 2091877, upload-time = "2026-04-20T14:43:27.091Z" }, - { url = "https://files.pythonhosted.org/packages/5c/4f/86a832a9d14df58e663bfdf4627dc00d3317c2bd583c4fb23390b0f04b8e/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:f00a0961b125f1a47af7bcc17f00782e12f4cd056f83416006b30111d941dfa3", size = 1932428, upload-time = "2026-04-20T14:40:45.781Z" }, - { url = "https://files.pythonhosted.org/packages/11/1a/fe857968954d93fb78e0d4b6df5c988c74c4aaa67181c60be7cfe327c0ca/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57697d7c056aca4bbb680200f96563e841a6386ac1129370a0102592f4dddff5", size = 1997550, upload-time = "2026-04-20T14:44:02.425Z" }, - { url = "https://files.pythonhosted.org/packages/17/eb/9d89ad2d9b0ba8cd65393d434471621b98912abb10fbe1df08e480ba57b5/pydantic_core-2.46.3-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd35aa21299def8db7ef4fe5c4ff862941a9a158ca7b63d61e66fe67d30416b4", size = 2137657, upload-time = "2026-04-20T14:42:45.149Z" }, - { url = "https://files.pythonhosted.org/packages/1f/da/99d40830684f81dec901cac521b5b91c095394cc1084b9433393cde1c2df/pydantic_core-2.46.3-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:13afdd885f3d71280cf286b13b310ee0f7ccfefd1dbbb661514a474b726e2f25", size = 2107973, upload-time = "2026-04-20T14:42:06.175Z" }, - { url = "https://files.pythonhosted.org/packages/99/a5/87024121818d75bbb2a98ddbaf638e40e7a18b5e0f5492c9ca4b1b316107/pydantic_core-2.46.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f91c0aff3e3ee0928edd1232c57f643a7a003e6edf1860bc3afcdc749cb513f3", size = 1947191, upload-time = "2026-04-20T14:43:14.319Z" }, - { url = "https://files.pythonhosted.org/packages/60/62/0c1acfe10945b83a6a59d19fbaa92f48825381509e5701b855c08f13db76/pydantic_core-2.46.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6529d1d128321a58d30afcc97b49e98836542f68dd41b33c2e972bb9e5290536", size = 2123791, upload-time = "2026-04-20T14:43:22.766Z" }, - { url = "https://files.pythonhosted.org/packages/75/3e/3b2393b4c8f44285561dc30b00cf307a56a2eff7c483a824db3b8221ca51/pydantic_core-2.46.3-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:975c267cff4f7e7272eacbe50f6cc03ca9a3da4c4fbd66fffd89c94c1e311aa1", size = 2153197, upload-time = "2026-04-20T14:44:27.932Z" }, - { url = "https://files.pythonhosted.org/packages/ba/75/5af02fb35505051eee727c061f2881c555ab4f8ddb2d42da715a42c9731b/pydantic_core-2.46.3-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:2b8e4f2bbdf71415c544b4b1138b8060db7b6611bc927e8064c769f64bed651c", size = 2181073, upload-time = "2026-04-20T14:43:20.729Z" }, - { url = "https://files.pythonhosted.org/packages/10/92/7e0e1bd9ca3c68305db037560ca2876f89b2647deb2f8b6319005de37505/pydantic_core-2.46.3-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e61ea8e9fff9606d09178f577ff8ccdd7206ff73d6552bcec18e1033c4254b85", size = 2315886, upload-time = "2026-04-20T14:44:04.826Z" }, - { url = "https://files.pythonhosted.org/packages/b8/d8/101655f27eaf3e44558ead736b2795d12500598beed4683f279396fa186e/pydantic_core-2.46.3-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b504bda01bafc69b6d3c7a0c7f039dcf60f47fab70e06fe23f57b5c75bdc82b8", size = 2360528, upload-time = "2026-04-20T14:40:47.431Z" }, - { url = "https://files.pythonhosted.org/packages/07/0f/1c34a74c8d07136f0d729ffe5e1fdab04fbdaa7684f61a92f92511a84a15/pydantic_core-2.46.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:b00b76f7142fc60c762ce579bd29c8fa44aaa56592dd3c54fab3928d0d4ca6ff", size = 2184144, upload-time = "2026-04-20T14:42:57Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/9d/56/921726b776ace8d8f5db44c4ef961006580d91dc52b803c489fafd1aa249/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1", size = 471464, upload-time = "2026-05-06T13:37:06.98Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/08/f1ba952f1c8ae5581c70fa9c6da89f247b83e3dd8c09c035d5d7931fc23d/pydantic_core-2.46.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a396dcc17e5a0b164dbe026896245a4fa9ff402edca1dff0be3d53a517f74de4", size = 2113146, upload-time = "2026-05-06T13:37:36.537Z" }, + { url = "https://files.pythonhosted.org/packages/56/c6/65f646c7ff09bd257f660434adb45c4dfcbbcebcc030562fecf6f5bf887d/pydantic_core-2.46.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:da4b951fe36dc7c3a1ccb4e3cd1747c3542b8c9ceede8fc86cae054e764485f5", size = 1949769, upload-time = "2026-05-06T13:37:46.365Z" }, + { url = "https://files.pythonhosted.org/packages/64/ba/bfb1d928fd5b49e1258935ff104ae356e9fd89384a55bf9f847e9193ad40/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb63e0198ca18aad131c089b9204c23079c3afa95487e561f4c522d519e55aba", size = 1974958, upload-time = "2026-05-06T13:37:28.611Z" }, + { url = "https://files.pythonhosted.org/packages/4e/74/76223bfb117b64af743c9b6670d1364516f5c0604f96b48f3272f6af6cc6/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f47286a97f0bc9b8859519809077b91b2cefe4ae47fcbf5e466a009c1c5d742b", size = 2042118, upload-time = "2026-05-06T13:36:55.216Z" }, + { url = "https://files.pythonhosted.org/packages/cb/7b/848732968bc8f48f3187542f08358b9d842db564147b256669426ebb1652/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:905a0ed8ea6f2d61c1738835f99b699348d7857379083e5fc497fa0c967a407c", size = 2222876, upload-time = "2026-05-06T13:38:25.455Z" }, + { url = "https://files.pythonhosted.org/packages/b5/2f/e90b63ee2e14bd8d3db8f705a6d75d64e6ee1b7c2c8833747ce706e1e0ce/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea793e075b70290d89d8142074262885d3f7da19634845135751bd6344f73b50", size = 2286703, upload-time = "2026-05-06T13:37:53.304Z" }, + { url = "https://files.pythonhosted.org/packages/ba/1e/acc4d70f88a0a277e4a1fa77ebb985ceabaf900430f875bf9338e11c9420/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:395aebd9183f9d112f569aeb5b2214d1a10a33bec8456447f7fbdfa51d38d4cd", size = 2092042, upload-time = "2026-05-06T13:38:46.981Z" }, + { url = "https://files.pythonhosted.org/packages/a9/da/0a422b57bf8504102bf3c4ccea9c41bab5a5cee6a54650acf8faf67f5a24/pydantic_core-2.46.4-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:b078afbc25f3a1436c7a1d2cd3e322497ee99615ba97c563566fdf46aff1ee01", size = 2117231, upload-time = "2026-05-06T13:39:23.146Z" }, + { url = "https://files.pythonhosted.org/packages/bd/2a/2ac13c3af305843e23c5078c53d135656b3f05a2fd78cb7bbbb12e97b473/pydantic_core-2.46.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f747929cf940cddb5b3668a390056ddd5ba2e5010615ea2dcf4f9c4f3ab8791d", size = 2168388, upload-time = "2026-05-06T13:40:08.06Z" }, + { url = "https://files.pythonhosted.org/packages/72/04/2beacf7e1607e93eefe4aed1b4709f079b905fb77530179d4f7c71745f22/pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:daa27d92c36f24388fe3ad306b174781c747627f134452e4f128ea00ce1fe8c4", size = 2184769, upload-time = "2026-05-06T13:38:13.901Z" }, + { url = "https://files.pythonhosted.org/packages/9e/29/d2b9fd9f539133548eaf622c06a4ce176cb46ac59f32d0359c4abc0de047/pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:19e51f073cd3df251856a8a4189fbdf1de4012c3ebacfb1884f94f1eb406079f", size = 2319312, upload-time = "2026-05-06T13:39:08.24Z" }, + { url = "https://files.pythonhosted.org/packages/7c/af/0f7a5b85fec6075bea96e3ef9187de38fccced0de92c1e7feda8d5cc7bb9/pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1747f85cee84c26985853c6f3d9bd3e75da5212912443fa111c113b9c246f39", size = 2361817, upload-time = "2026-05-06T13:38:43.2Z" }, + { url = "https://files.pythonhosted.org/packages/25/a4/73363fec545fd3ec025490bdda2743c56d0dd5b6266b1a53bbe9e4265375/pydantic_core-2.46.4-cp310-cp310-win32.whl", hash = "sha256:2f84c03c8607173d16b5a854ec68a2f9079ae03237a54fb506d13af47e1d018d", size = 1987085, upload-time = "2026-05-06T13:39:25.497Z" }, + { url = "https://files.pythonhosted.org/packages/01/aa/62f082da2c91fac1c234bc9ee0066257ce83f0604abd72e4c9d5991f2d84/pydantic_core-2.46.4-cp310-cp310-win_amd64.whl", hash = "sha256:8358a950c8909158e3df31538a7e4edc2d7265a7c54b47f0864d9e5bae9dcebf", size = 2074311, upload-time = "2026-05-06T13:39:59.922Z" }, + { url = "https://files.pythonhosted.org/packages/5c/fa/6d7708d2cfc1a832acb6aeb0cd16e801902df8a0f583bb3b4b527fde022e/pydantic_core-2.46.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0e96592440881c74a213e5ad528e2b24d3d4f940de2766bed9010ab1d9e51594", size = 2111872, upload-time = "2026-05-06T13:40:27.596Z" }, + { url = "https://files.pythonhosted.org/packages/ae/6f/aa064a3e74b5745afbdf250594f38e7ead05e2d651bcb35994b9417a0d4d/pydantic_core-2.46.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0d65b8c354be7fb5f720c3caa8bc940bc2d20ce749c8e06135f07f8ed95dd7c", size = 1948255, upload-time = "2026-05-06T13:39:12.574Z" }, + { url = "https://files.pythonhosted.org/packages/43/3a/41114a9f7569b84b4d84e7a018c57c56347dac30c0d4a872946ec4e36c46/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bfb192b3f4b9e8a89b6277b6ce787564f62cfd272055f6e685726b111dc7826", size = 1972827, upload-time = "2026-05-06T13:38:19.841Z" }, + { url = "https://files.pythonhosted.org/packages/ef/25/1ab42e8048fe551934d9884e8d64daa7e990ad386f310a15981aeb6a5b08/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9037063db01f09b09e237c282b6792bd4da634b5402c4e7f0c61effed7701a04", size = 2041051, upload-time = "2026-05-06T13:38:10.447Z" }, + { url = "https://files.pythonhosted.org/packages/94/c2/1a934597ddf08da410385b3b7aae91956a5a76c635effef456074fad7e88/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc010ab034c8c7452522748bf937df58020d256ccae0874463d1f4d01758af8e", size = 2221314, upload-time = "2026-05-06T13:40:13.089Z" }, + { url = "https://files.pythonhosted.org/packages/02/6d/9e8ad178c9c4df27ad3c8f25d1fe2a7ab0d2ba0559fad4aee5d3d1f16771/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c5dac79fa1614d1e06ca695109c6105923bd9c7d1d6c918d4e637b7e6b32fd3", size = 2285146, upload-time = "2026-05-06T13:38:59.224Z" }, + { url = "https://files.pythonhosted.org/packages/80/50/540cd3aeefc041beb111125c4bff779831a2111fc6b15a9138cda277d32c/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9fa868638bf362d3d138ea55829cefb3d5f4b0d7f142234382a15e2485dbec4", size = 2089685, upload-time = "2026-05-06T13:38:17.762Z" }, + { url = "https://files.pythonhosted.org/packages/6b/a4/b440ad35f05f6a38f89fa0f149accb3f0e02be94ca5e15f3c449a61b4bc9/pydantic_core-2.46.4-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:17299feefe090f2caa5b8e37222bb5f663e4935a8bfa6931d4102e5df1a9f398", size = 2115420, upload-time = "2026-05-06T13:37:58.195Z" }, + { url = "https://files.pythonhosted.org/packages/99/61/de4f55db8dfd57bfdfa9a12ec90fe1b57c4f41062f7ca86f08586b3e0ac0/pydantic_core-2.46.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4c63ebc82684aa89d9a3bcbd13d515b3be44250dc68dd3bd81526c1cb31286c3", size = 2165122, upload-time = "2026-05-06T13:37:01.167Z" }, + { url = "https://files.pythonhosted.org/packages/f7/52/7c529d7bdb2d1068bd52f51fe32572c8301f9a4febf1948f10639f1436f5/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:aaa2a54443eff1950ba5ddc6b6ccda0d9c84a364276a62f969bdf2a390650848", size = 2182573, upload-time = "2026-05-06T13:38:45.04Z" }, + { url = "https://files.pythonhosted.org/packages/37/b3/7c40325848ba78247f2812dcf9c7274e38cd801820ca6dd9fe63bcfb0eb4/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:18e5ceec2ab67e6d5f1a9085e5a24c9c4e2ac4545730bfe668680bca05e555f3", size = 2317139, upload-time = "2026-05-06T13:37:15.539Z" }, + { url = "https://files.pythonhosted.org/packages/d9/37/f913f81a657c865b75da6c0dbed79876073c2a43b5bd9edbe8da785e4d49/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a0f62d0a58f4e7da165457e995725421e0064f2255d8eccebc49f41bbc23b109", size = 2360433, upload-time = "2026-05-06T13:37:30.099Z" }, + { url = "https://files.pythonhosted.org/packages/c4/67/6acaa1be2567f9256b056d8477158cac7240813956ce86e49deae8e173b4/pydantic_core-2.46.4-cp311-cp311-win32.whl", hash = "sha256:041bde0a48fd37cf71cab1c9d56d3e8625a3793fef1f7dd232b3ff37e978ecda", size = 1985513, upload-time = "2026-05-06T13:38:15.669Z" }, + { url = "https://files.pythonhosted.org/packages/aa/e6/c505f83dfeda9a2e5c995cfd872949e4d05e12f7feb3dca72f633daefa94/pydantic_core-2.46.4-cp311-cp311-win_amd64.whl", hash = "sha256:6f2eeda33a839975441c86a4119e1383c50b47faf0cbb5176985565c6bb02c33", size = 2071114, upload-time = "2026-05-06T13:40:35.416Z" }, + { url = "https://files.pythonhosted.org/packages/0f/da/7a263a96d965d9d0df5e8de8a475f33495451117035b09acb110288c381f/pydantic_core-2.46.4-cp311-cp311-win_arm64.whl", hash = "sha256:14f4c5d6db102bd796a627bbb3a17b4cf4574b9ae861d8b7c9a9661c6dd3362d", size = 2044298, upload-time = "2026-05-06T13:38:29.754Z" }, + { url = "https://files.pythonhosted.org/packages/ce/8c/af022f0af448d7747c5154288d46b5f2bc5f17366eaa0e23e9aa04d59f3b/pydantic_core-2.46.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3245406455a5d98187ec35530fd772b1d799b26667980872c8d4614991e2c4a2", size = 2106158, upload-time = "2026-05-06T13:38:57.215Z" }, + { url = "https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:962ccbab7b642487b1d8b7df90ef677e03134cf1fd8880bf698649b22a69371f", size = 1951724, upload-time = "2026-05-06T13:37:02.697Z" }, + { url = "https://files.pythonhosted.org/packages/8e/bc/f47d1ff9cbb1620e1b5b697eef06010035735f07820180e74178226b27b3/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8233f2947cf85404441fd7e0085f53b10c93e0ee78611099b5c7237e36aacbf7", size = 1975742, upload-time = "2026-05-06T13:37:09.448Z" }, + { url = "https://files.pythonhosted.org/packages/5b/11/9b9a5b0306345664a2da6410877af6e8082481b5884b3ddd78d47c6013ce/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a233125ac121aa3ffba9a2b59edfc4a985a76092dc8279586ab4b71390875e7", size = 2052418, upload-time = "2026-05-06T13:37:38.234Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b7/a65fec226f5d78fc39f4a13c4cc0c768c22b113438f60c14adc9d2865038/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b712b53160b79a5850310b912a5ef8e57e56947c8ad690c227f5c9d7e561712", size = 2232274, upload-time = "2026-05-06T13:38:27.753Z" }, + { url = "https://files.pythonhosted.org/packages/68/f0/92039db98b907ef49269a8271f67db9cb78ae2fc68062ef7e4e77adb5f61/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9401557acd873c3a7f3eb9383edef8ac4968f9510e340f4808d427e75667e7b4", size = 2309940, upload-time = "2026-05-06T13:38:05.353Z" }, + { url = "https://files.pythonhosted.org/packages/5f/97/2aab507d3d00ca626e8e57c1eac6a79e4e5fbcc63eb99733ff55d1717f65/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:926c9541b14b12b1681dca8a0b75feb510b06c6341b70a8e500c2fdcff837cce", size = 2094516, upload-time = "2026-05-06T13:39:10.577Z" }, + { url = "https://files.pythonhosted.org/packages/22/37/a8aca44d40d737dde2bc05b3c6c07dff0de07ce6f82e9f3167aeaf4d5dea/pydantic_core-2.46.4-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:56cb4851bcaf3d117eddcef4fe66afd750a50274b0da8e22be256d10e5611987", size = 2136854, upload-time = "2026-05-06T13:40:22.59Z" }, + { url = "https://files.pythonhosted.org/packages/24/99/fcef1b79238c06a8cbec70819ac722ba76e02bc8ada9b0fd66eba40da01b/pydantic_core-2.46.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c68fcd102d71ea85c5b2dfac3f4f8476eff42a9e078fd5faefff6d145063536b", size = 2180306, upload-time = "2026-05-06T13:40:10.666Z" }, + { url = "https://files.pythonhosted.org/packages/ae/6c/fc44000918855b42779d007ae63b0532794739027b2f417321cddbc44f6a/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b2f69dec1725e79a012d920df1707de5caf7ed5e08f3be4435e25803efc47458", size = 2190044, upload-time = "2026-05-06T13:40:43.231Z" }, + { url = "https://files.pythonhosted.org/packages/6b/65/d9cadc9f1920d7a127ad2edba16c1db7916e59719285cd6c94600b0080ba/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:8d0820e8192167f80d88d64038e609c31452eeca865b4e1d9950a27a4609b00b", size = 2329133, upload-time = "2026-05-06T13:39:57.365Z" }, + { url = "https://files.pythonhosted.org/packages/d0/cf/c873d91679f3a30bcf5e7ac280ce5573483e72295307685120d0d5ad3416/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fbdb89b3e1c94a30cc5edfce477c6e6a5dc4d8f84665b455c27582f211a1c72c", size = 2374464, upload-time = "2026-05-06T13:38:06.976Z" }, + { url = "https://files.pythonhosted.org/packages/47/bd/6f2fc8188f31bf10590f1e98e7b306336161fac930a8c514cd7bd828c7dc/pydantic_core-2.46.4-cp312-cp312-win32.whl", hash = "sha256:9aa768456404a8bf48a4406685ac2bec8e72b62c69313734fa3b73cf33b3a894", size = 1974823, upload-time = "2026-05-06T13:40:47.985Z" }, + { url = "https://files.pythonhosted.org/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl", hash = "sha256:e9c26f834c65f5752f3f06cb08cb86a913ceb7274d0db6e267808a708b46bc89", size = 2072919, upload-time = "2026-05-06T13:39:21.153Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ba/f463d006e0c47373ca7ec5e1a261c59dc01ef4d62b2657af925fb0deee3a/pydantic_core-2.46.4-cp312-cp312-win_arm64.whl", hash = "sha256:4fc73cb559bdb54b1134a706a2802a4cddd27a0633f5abb7e53056268751ac6a", size = 2027604, upload-time = "2026-05-06T13:39:03.753Z" }, + { url = "https://files.pythonhosted.org/packages/51/a2/5d30b469c5267a17b39dec53208222f76a8d351dfac4af661888c5aee77d/pydantic_core-2.46.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5d5902252db0d3cedf8d4a1bc68f70eeb430f7e4c7104c8c476753519b423008", size = 2106306, upload-time = "2026-05-06T13:37:48.029Z" }, + { url = "https://files.pythonhosted.org/packages/c1/81/4fa520eaffa8bd7d1525e644cd6d39e7d60b1592bc5b516693c7340b50f1/pydantic_core-2.46.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c94f0688e7b8d0a67abf40e57a7eaaecd17cc9586706a31b76c031f63df052b4", size = 1951906, upload-time = "2026-05-06T13:37:17.012Z" }, + { url = "https://files.pythonhosted.org/packages/03/d5/fd02da45b659668b05923b17ba3a0100a0a3d5541e3bd8fcc4ecb711309e/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f027324c56cd5406ca49c124b0db10e56c69064fec039acc571c29020cc87c76", size = 1976802, upload-time = "2026-05-06T13:37:35.113Z" }, + { url = "https://files.pythonhosted.org/packages/21/f2/95727e1368be3d3ed485eaab7adbd7dda408f33f7a36e8b48e0144002b91/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e739fee756ba1010f8bcccb534252e85a35fe45ae92c295a06059ce58b74ccd3", size = 2052446, upload-time = "2026-05-06T13:37:12.313Z" }, + { url = "https://files.pythonhosted.org/packages/9c/86/5d99feea3f77c7234b8718075b23db11532773c1a0dbd9b9490215dc2eeb/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d56801be94b86a9da183e5f3766e6310752b99ff647e38b09a9500d88e46e76", size = 2232757, upload-time = "2026-05-06T13:39:01.149Z" }, + { url = "https://files.pythonhosted.org/packages/d2/3a/508ac615935ef7588cf6d9e9b91309fdc2da751af865e02a9098de88258c/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2412e734dcb48da14d4e4006b82b46b74f2518b8a26ee7e58c6844a6cd6d03c4", size = 2309275, upload-time = "2026-05-06T13:37:41.406Z" }, + { url = "https://files.pythonhosted.org/packages/07/f8/41db9de19d7987d6b04715a02b3b40aea467000275d9d758ffaa31af7d50/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9551187363ffc0de2a00b2e47c25aeaeb1020b69b668762966df15fc5659dd5a", size = 2094467, upload-time = "2026-05-06T13:39:18.847Z" }, + { url = "https://files.pythonhosted.org/packages/2c/e2/f35033184cb11d0052daf4416e8e10a502ea2ac006fc4f459aee872727d1/pydantic_core-2.46.4-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:0186750b482eefa11d7f435892b09c5c606193ef3375bcf94aa00ae6bfb66262", size = 2134417, upload-time = "2026-05-06T13:40:17.944Z" }, + { url = "https://files.pythonhosted.org/packages/7e/7b/6ceeb1cc90e193862f444ebe373d8fdf613f0a82572dde03fb10734c6c71/pydantic_core-2.46.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5855698a4856556d86e8e6cd8434bc3ac0314ee8e12089ae0e143f64c6256e4e", size = 2179782, upload-time = "2026-05-06T13:40:32.618Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f2/c8d7773ede6af08036423a00ae0ceffce266c3c52a096c435d68c896083f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:cbaf13819775b7f769bf4a1f066cb6df7a28d4480081a589828ef190226881cd", size = 2188782, upload-time = "2026-05-06T13:36:51.018Z" }, + { url = "https://files.pythonhosted.org/packages/59/31/0c864784e31f09f05cdd87606f08923b9c9e7f6e51dd27f20f62f975ce9f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:633147d34cf4550417f12e2b1a0383973bdf5cdfde212cb09e9a581cf10820be", size = 2328334, upload-time = "2026-05-06T13:40:37.764Z" }, + { url = "https://files.pythonhosted.org/packages/c2/eb/4f6c8a41efa30baa755590f4141abf3a8c370fab610915733e74134a7270/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:82cf5301172168103724d49a1444d3378cb20cdee30b116a1bd6031236298a5d", size = 2372986, upload-time = "2026-05-06T13:39:34.152Z" }, + { url = "https://files.pythonhosted.org/packages/5b/24/b375a480d53113860c299764bfe9f349a3dc9108b3adc0d7f0d786492ebf/pydantic_core-2.46.4-cp313-cp313-win32.whl", hash = "sha256:9fa8ae11da9e2b3126c6426f147e0fba88d96d65921799bb30c6abd1cb2c97fb", size = 1973693, upload-time = "2026-05-06T13:37:55.072Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e8/cff247591966f2d22ec8c003cd7587e27b7ba7b81ab2fb888e3ab75dc285/pydantic_core-2.46.4-cp313-cp313-win_amd64.whl", hash = "sha256:6b3ace8194b0e5204818c92802dcdca7fc6d88aabbb799d7c795540d9cd6d292", size = 2071819, upload-time = "2026-05-06T13:38:49.139Z" }, + { url = "https://files.pythonhosted.org/packages/c6/1a/f4aee670d5670e9e148e0c82c7db98d780be566c6e6a97ee8035528ca0b3/pydantic_core-2.46.4-cp313-cp313-win_arm64.whl", hash = "sha256:184c081504d17f1c1066e430e117142b2c77d9448a97f7b65c6ac9fd9aee238d", size = 2027411, upload-time = "2026-05-06T13:40:45.796Z" }, + { url = "https://files.pythonhosted.org/packages/8d/74/228a26ddad29c6672b805d9fd78e8d251cd04004fa7eed0e622096cd0250/pydantic_core-2.46.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:428e04521a40150c85216fc8b85e8d39fece235a9cf5e383761238c7fa9b96fb", size = 2102079, upload-time = "2026-05-06T13:38:41.019Z" }, + { url = "https://files.pythonhosted.org/packages/ad/1f/8970b150a4b4365623ae00fc88603491f763c627311ae8031e3111356d6e/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23ace664830ee0bfe014a0c7bc248b1f7f25ed7ad103852c317624a1083af462", size = 1952179, upload-time = "2026-05-06T13:36:59.812Z" }, + { url = "https://files.pythonhosted.org/packages/95/30/5211a831ae054928054b2f79731661087a2bc5c01e825c672b3a4a8f1b3e/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce5c1d2a8b27468f433ca974829c44060b8097eedc39933e3c206a90ee49c4a9", size = 1978926, upload-time = "2026-05-06T13:37:39.933Z" }, + { url = "https://files.pythonhosted.org/packages/57/e9/689668733b1eb67adeef047db3c2e8788fcf65a7fd9c9e2b46b7744fe245/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7283d57845ecf5a163403eb0702dfc220cc4fbdd18919cb5ccea4f95ee1cdab4", size = 2046785, upload-time = "2026-05-06T13:38:01.995Z" }, + { url = "https://files.pythonhosted.org/packages/60/d9/6715260422ff50a2109878fd24d948a6c3446bb2664f34ee78cd972b3acd/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8daafc69c93ee8a0204506a3b6b30f586ef54028f52aeeeb5c4cfc5184fd5914", size = 2228733, upload-time = "2026-05-06T13:40:50.371Z" }, + { url = "https://files.pythonhosted.org/packages/18/ae/fdb2f64316afca925640f8e70bb1a564b0ec2721c1389e25b8eb4bf9a299/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2213145bcc2ba85884d0ac63d222fece9209678f77b9b4d76f054c561adb28", size = 2307534, upload-time = "2026-05-06T13:37:21.531Z" }, + { url = "https://files.pythonhosted.org/packages/89/1d/8eff589b45bb8190a9d12c49cfad0f176a5cbd1534908a6b5125e2886239/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a5f930472650a82629163023e630d160863fce524c616f4e5186e5de9d9a49b", size = 2099732, upload-time = "2026-05-06T13:39:31.942Z" }, + { url = "https://files.pythonhosted.org/packages/06/d5/ee5a3366637fee41dee51a1fc91562dcf12ddbc68fda34e6b253da2324bb/pydantic_core-2.46.4-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:c1b3f518abeca3aa13c712fd202306e145abf59a18b094a6bafb2d2bbf59192c", size = 2129627, upload-time = "2026-05-06T13:37:25.033Z" }, + { url = "https://files.pythonhosted.org/packages/94/33/2414be571d2c6a6c4d08be21f9292b6d3fdb08949a97b6dfe985017821db/pydantic_core-2.46.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a7dd0b3ee80d90150e3495a3a13ac34dbcbfd4f012996a6a1d8900e91b5c0fb", size = 2179141, upload-time = "2026-05-06T13:37:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/7b/79/7daa95be995be0eecc4cf75064cb33f9bbbfe3fe0158caf2f0d4a996a5c7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:3fb702cd90b0446a3a1c5e470bfa0dd23c0233b676a9099ddcc964fa6ca13898", size = 2184325, upload-time = "2026-05-06T13:36:53.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/cb/d0a382f5c0de8a222dc61c65348e0ce831b1f68e0a018450d31c2cace3a5/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b8458003118a712e66286df6a707db01c52c0f52f7db8e4a38f0da1d3b94fc4e", size = 2323990, upload-time = "2026-05-06T13:40:29.971Z" }, + { url = "https://files.pythonhosted.org/packages/05/db/d9ba624cc4a5aced1598e88c04fdbd8310c8a69b9d38b9a3d39ce3a61ed7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:372429a130e469c9cd698925ce5fc50940b7a1336b0d82038e63d5bbc4edc519", size = 2369978, upload-time = "2026-05-06T13:37:23.027Z" }, + { url = "https://files.pythonhosted.org/packages/f2/20/d15df15ba918c423461905802bfd2981c3af0bfa0e40d05e13edbfa48bc3/pydantic_core-2.46.4-cp314-cp314-win32.whl", hash = "sha256:85bb3611ff1802f3ee7fdd7dbff26b56f343fb432d57a4728fdd49b6ef35e2f4", size = 1966354, upload-time = "2026-05-06T13:38:03.499Z" }, + { url = "https://files.pythonhosted.org/packages/fc/b6/6b8de4c0a7d7ab3004c439c80c5c1e0a3e8d78bbae19379b01960383d9e5/pydantic_core-2.46.4-cp314-cp314-win_amd64.whl", hash = "sha256:811ff8e9c313ab425368bcbb36e5c4ebd7108c2bbf4e4089cfbb0b01eff63fac", size = 2072238, upload-time = "2026-05-06T13:39:40.807Z" }, + { url = "https://files.pythonhosted.org/packages/32/36/51eb763beec1f4cf59b1db243a7dcc39cbb41230f050a09b9d69faaf0a48/pydantic_core-2.46.4-cp314-cp314-win_arm64.whl", hash = "sha256:bfec22eab3c8cc2ceec0248aec886624116dc079afa027ecc8ad4a7e62010f8a", size = 2018251, upload-time = "2026-05-06T13:37:26.72Z" }, + { url = "https://files.pythonhosted.org/packages/e8/91/855af51d625b23aa987116a19e231d2aaef9c4a415273ddc189b79a45fee/pydantic_core-2.46.4-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:af8244b2bef6aaad6d92cda81372de7f8c8d36c9f0c3ea36e827c60e7d9467a0", size = 2099593, upload-time = "2026-05-06T13:39:47.682Z" }, + { url = "https://files.pythonhosted.org/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a4330cdbc57162e4b3aa303f588ba752257694c9c9be3e7ebb11b4aca659b5d", size = 1935226, upload-time = "2026-05-06T13:40:40.428Z" }, + { url = "https://files.pythonhosted.org/packages/e8/e7/1955d28d1afc56dd4b3ad7cc0cf39df1b9852964cf16e5d13912756d6d6b/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c61fc04a3d840155ff08e475a04809278972fe6aef51e2720554e96367e34b", size = 1974605, upload-time = "2026-05-06T13:37:32.029Z" }, + { url = "https://files.pythonhosted.org/packages/93/e2/3fedbf0ba7a22850e6e9fd78117f1c0f10f950182344d8a6c535d468fdd8/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c50f2528cf200c5eed56faf3f4e22fcd5f38c157a8b78576e6ba3168ec35f000", size = 2030777, upload-time = "2026-05-06T13:38:55.239Z" }, + { url = "https://files.pythonhosted.org/packages/f8/61/46be275fcaaba0b4f5b9669dd852267ce1ff616592dccf7a7845588df091/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0cbe8b01f948de4286c74cdd6c667aceb38f5c1e26f0693b3983d9d74887c65e", size = 2236641, upload-time = "2026-05-06T13:37:08.096Z" }, + { url = "https://files.pythonhosted.org/packages/60/db/12e93e46a8bac9988be3c016860f83293daea8c716c029c9ace279036f2f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:617d7e2ca7dcb8c5cf6bcb8c59b8832c94b36196bbf1cbd1bfb56ed341905edd", size = 2286404, upload-time = "2026-05-06T13:40:20.221Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4a/4d8b19008f38d31c53b8219cfedc2e3d5de5fe99d90076b7e767de29274f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7027560ee92211647d0d34e3f7cd6f50da56399d26a9c8ad0da286d3869a53f3", size = 2109219, upload-time = "2026-05-06T13:38:12.153Z" }, + { url = "https://files.pythonhosted.org/packages/88/70/3cbc40978fefb7bb09c6708d40d4ad1a5d70fd7213c3d17f971de868ec1f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:f99626688942fb746e545232e7726926f3be91b5975f8b55327665fafda991c7", size = 2110594, upload-time = "2026-05-06T13:40:02.971Z" }, + { url = "https://files.pythonhosted.org/packages/9d/20/b8d36736216e29491125531685b2f9e61aa5b4b2599893f8268551da3338/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3e9034a63de20e15e8ade85358bc6efc614008cab72898b4b4952bea0509ff", size = 2159542, upload-time = "2026-05-06T13:39:27.506Z" }, + { url = "https://files.pythonhosted.org/packages/1d/a2/367df868eb584dacf6bf82a389272406d7178e301c4ac82545ab98bc2dd9/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:97e7cf2be5c77b7d1a9713a05605d49460d02c6078d38d8bef3cbe323c548424", size = 2168146, upload-time = "2026-05-06T13:38:31.93Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b8/4460f77f7e201893f649a29ab355dddd3beee8a97bcb1a320db414f9a06e/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:3bf92c5d0e00fefaab325a4d27828fe6b6e2a21848686b5b60d2d9eeb09d76c6", size = 2306309, upload-time = "2026-05-06T13:37:44.717Z" }, + { url = "https://files.pythonhosted.org/packages/64/c4/be2639293acd87dc8ddbcec41a73cee9b2ebf996fe6d892a1a74e88ad3f7/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:3ecbc122d18468d06ca279dc26a8c2e2d5acb10943bb35e36ae92096dc3b5565", size = 2369736, upload-time = "2026-05-06T13:37:05.645Z" }, + { url = "https://files.pythonhosted.org/packages/30/a6/9f9f380dbb301f67023bf8f707aaa75daadf84f7152d95c410fd7e81d994/pydantic_core-2.46.4-cp314-cp314t-win32.whl", hash = "sha256:e846ae7835bf0703ae43f534ab79a867146dadd59dc9ca5c8b53d5c8f7c9ef02", size = 1955575, upload-time = "2026-05-06T13:38:51.116Z" }, + { url = "https://files.pythonhosted.org/packages/40/1f/f1eb9eb350e795d1af8586289746f5c5677d16043040d63710e22abc43c9/pydantic_core-2.46.4-cp314-cp314t-win_amd64.whl", hash = "sha256:2108ba5c1c1eca18030634489dc544844144ee36357f2f9f780b93e7ddbb44b5", size = 2051624, upload-time = "2026-05-06T13:38:21.672Z" }, + { url = "https://files.pythonhosted.org/packages/f6/d2/42dd53d0a85c27606f316d3aa5d2869c4e8470a5ed6dec30e4a1abe19192/pydantic_core-2.46.4-cp314-cp314t-win_arm64.whl", hash = "sha256:4fcbe087dbc2068af7eda3aa87634eba216dbda64d1ae73c8684b621d33f6596", size = 2017325, upload-time = "2026-05-06T13:40:52.723Z" }, + { url = "https://files.pythonhosted.org/packages/ee/a4/73995fd4ebbb46ba0ee51e6fa049b8f02c40daebb762208feda8a6b7894d/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:14d4edf427bdcf950a8a02d7cb44a08614388dd6e1bdcbf4f67504fa7887da9c", size = 2111589, upload-time = "2026-05-06T13:37:10.817Z" }, + { url = "https://files.pythonhosted.org/packages/fb/7f/f37d3a5e8bfcc2e403f5c57a730f2d815693fb42119e8ea48b3789335af1/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:0ce40cd7b21210e99342afafbd4d0f76d784eb5b1d60f3bdc566be4983c6c73b", size = 1944552, upload-time = "2026-05-06T13:36:56.717Z" }, + { url = "https://files.pythonhosted.org/packages/15/3c/d7eb777b3ff43e8433a4efb39a17aa8fd98a4ee8561a24a67ef5db07b2d6/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90884113d8b48f760e9587002789ddd741e76ab9f89518cd1e43b1f1a52ec44b", size = 1982984, upload-time = "2026-05-06T13:39:06.207Z" }, + { url = "https://files.pythonhosted.org/packages/63/87/70b9f40170a81afd55ca26c9b2acb25c20d64bcfbf888fafecb3ba077d4c/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66ce7632c22d837c95301830e111ad0128a32b8207533b60896a96c4915192ea", size = 2138417, upload-time = "2026-05-06T13:39:45.476Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1d/8987ad40f65ae1432753072f214fb5c74fe47ffbd0698bb9cbbb585664f8/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:1d8ba486450b14f3b1d63bc521d410ec7565e52f887b9fb671791886436a42f7", size = 2095527, upload-time = "2026-05-06T13:39:52.283Z" }, + { url = "https://files.pythonhosted.org/packages/64/d3/84c282a7eee1d3ac4c0377546ef5a1ea436ce26840d9ac3b7ed54a377507/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:3009f12e4e90b7f88b4f9adb1b0c4a3d58fe7820f3238c190047209d148026df", size = 1936024, upload-time = "2026-05-06T13:40:15.671Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ca/eac61596cdeb4d7e174d3dc0bd8a6238f14f75f97a24e7b7db4c7e7340a0/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad785e92e6dc634c21555edc8bd6b64957ab844541bcb96a1366c202951ae526", size = 1990696, upload-time = "2026-05-06T13:38:34.717Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c3/7c8b240552251faf6b3a957db200fcfbbcec36763c050428b601e0c9b83b/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00c603d540afdd6b80eb39f078f33ebd46211f02f33e34a32d9f053bba711de0", size = 2147590, upload-time = "2026-05-06T13:39:29.883Z" }, + { url = "https://files.pythonhosted.org/packages/11/cb/428de0385b6c8d44b716feba566abfacfbd23ee3c4439faa789a1456242f/pydantic_core-2.46.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0c563b08bca408dc7f65f700633d8442fffb2421fc47b8101377e9fd65051ff0", size = 2112782, upload-time = "2026-05-06T13:37:04.016Z" }, + { url = "https://files.pythonhosted.org/packages/0b/b5/6a17bdadd0fc1f170adfd05a20d37c832f52b117b4d9131da1f41bb097ce/pydantic_core-2.46.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:db06ffe51636ffe9ca531fe9023dd64bdd794be8754cb5df57c5498ae5b518a7", size = 1952146, upload-time = "2026-05-06T13:39:43.092Z" }, + { url = "https://files.pythonhosted.org/packages/2a/dc/03734d80e362cd43ef65428e9de77c730ce7f2f11c60d2b1e1b39f0fbf99/pydantic_core-2.46.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:133878133d271ade3d41d1bfb2a45ec38dbdbda40bc065921c6b04e4630127e2", size = 2134492, upload-time = "2026-05-06T13:36:58.124Z" }, + { url = "https://files.pythonhosted.org/packages/de/df/5e5ffc085ed07cc22d298134d3d911c63e91f6a0eb91fe646750a3209910/pydantic_core-2.46.4-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9bc519fbf2b7578398853d815009ae5e4d4603d12f4e3f91da8c06852d3da3e9", size = 2156604, upload-time = "2026-05-06T13:37:49.88Z" }, + { url = "https://files.pythonhosted.org/packages/81/44/6e112a4253e56f5705467cbab7ab5e91ee7398ba3d56d358635958893d3e/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c7a7bd4e39e8e4c12c39cd480356842b6a8a06e41b23a55a5e3e191718838ddf", size = 2183828, upload-time = "2026-05-06T13:37:43.053Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ad/5565071e937d8e752842ac241463944c9eb14c87e2d269f2658a5bd05e98/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:d396ec2b979760aaf3218e76c24e65bd0aca24983298653b3a9d7a45f9e47b30", size = 2310000, upload-time = "2026-05-06T13:37:56.694Z" }, + { url = "https://files.pythonhosted.org/packages/4f/c3/66883a5cec183e7fba4d024b4cbbe61851a63750ef606b0afecc46d1f2bf/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:86e1a4418c6cd97d60c95c71164158eaf7324fae7b0923264016baa993eba6fc", size = 2361286, upload-time = "2026-05-06T13:40:05.667Z" }, + { url = "https://files.pythonhosted.org/packages/4b/2d/69abac8f838090bbecd5df894befb2c2619e7996a98ddb949db9f3b93225/pydantic_core-2.46.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:d51026d73fcfd93610abc7b27789c26b313920fcfb20e27462d74a7f8b06e983", size = 2193071, upload-time = "2026-05-06T13:38:08.682Z" }, ] [[package]] @@ -1766,14 +1738,14 @@ wheels = [ [[package]] name = "pyjwt" -version = "2.12.1" +version = "2.13.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c2/27/a3b6e5bf6ff856d2509292e95c8f57f0df7017cf5394921fc4e4ef40308a/pyjwt-2.12.1.tar.gz", hash = "sha256:c74a7a2adf861c04d002db713dd85f84beb242228e671280bf709d765b03672b", size = 102564, upload-time = "2026-03-13T19:27:37.25Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3b/81/58d0ac84e1ef3a3843791d6954d94c0b33d526c75eeb1efbce9d0a4c4077/pyjwt-2.13.0.tar.gz", hash = "sha256:41571c89ca91598c79e8ef18a2d07367d4810fbbd6f637794879baf1b7703423", size = 107515, upload-time = "2026-05-21T19:54:36.618Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/7a/8dd906bd22e79e47397a61742927f6747fe93242ef86645ee9092e610244/pyjwt-2.12.1-py3-none-any.whl", hash = "sha256:28ca37c070cad8ba8cd9790cd940535d40274d22f80ab87f3ac6a713e6e8454c", size = 29726, upload-time = "2026-03-13T19:27:35.677Z" }, + { url = "https://files.pythonhosted.org/packages/a3/5e/ecf12fdb62546d64385c158514e9b2b671f7832108ef2ecd2020ce0af2d1/pyjwt-2.13.0-py3-none-any.whl", hash = "sha256:66adcc2aff09b3f1bbd95fc1e1577df8ac8723c978552fd43304c8a290ac5728", size = 31274, upload-time = "2026-05-21T19:54:35.362Z" }, ] [package.optional-dependencies] @@ -1827,7 +1799,7 @@ wheels = [ [[package]] name = "pytest" -version = "9.0.3" +version = "9.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -1838,9 +1810,9 @@ dependencies = [ { name = "pygments" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 1636369, upload-time = "2026-06-19T10:58:32.857Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375249, upload-time = "2026-04-07T17:16:16.13Z" }, + { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] [[package]] @@ -1885,21 +1857,30 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, ] +[[package]] +name = "python-json-logger" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f7/ff/3cc9165fd44106973cd7ac9facb674a65ed853494592541d339bdc9a30eb/python_json_logger-4.1.0.tar.gz", hash = "sha256:b396b9e3ed782b09ff9d6e4f1683d46c83ad0d35d2e407c09a9ebbf038f88195", size = 17573, upload-time = "2026-03-29T04:39:56.805Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/be/0631a861af4d1c875f096c07d34e9a63639560a717130e7a87cbc82b7e3f/python_json_logger-4.1.0-py3-none-any.whl", hash = "sha256:132994765cf75bf44554be9aa49b06ef2345d23661a96720262716438141b6b2", size = 15021, upload-time = "2026-03-29T04:39:55.266Z" }, +] + [[package]] name = "redis" -version = "7.4.0" +version = "8.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "async-timeout", marker = "python_full_version < '3.11.3'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7b/7f/3759b1d0d72b7c92f0d70ffd9dc962b7b7b5ee74e135f9d7d8ab06b8a318/redis-7.4.0.tar.gz", hash = "sha256:64a6ea7bf567ad43c964d2c30d82853f8df927c5c9017766c55a1d1ed95d18ad", size = 4943913, upload-time = "2026-03-24T09:14:37.53Z" } +sdist = { url = "https://files.pythonhosted.org/packages/53/ae/ed461cca5780b5fc8b9fe8ca0ed98d89508645fb9d880c24cc42c087678f/redis-8.0.0.tar.gz", hash = "sha256:a00c5355432051ac14e593b8b197fc76c887ee12d55a0984f69328a1115fdc49", size = 5101591, upload-time = "2026-05-28T12:45:13.5Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/74/3a/95deec7db1eb53979973ebd156f3369a72732208d1391cd2e5d127062a32/redis-7.4.0-py3-none-any.whl", hash = "sha256:a9c74a5c893a5ef8455a5adb793a31bb70feb821c86eccb62eebef5a19c429ec", size = 409772, upload-time = "2026-03-24T09:14:35.968Z" }, + { url = "https://files.pythonhosted.org/packages/27/e3/b519734372d305bd547534a9f32e4ce9f98552af753dce72cf3483a0ff0b/redis-8.0.0-py3-none-any.whl", hash = "sha256:c938c18338585009f0bc310f4c7e4e4b4d37639356c4ac072cedf3af570c8dc7", size = 499870, upload-time = "2026-05-28T12:45:11.697Z" }, ] [[package]] name = "requests" -version = "2.33.1" +version = "2.34.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, @@ -1907,46 +1888,46 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5f/a4/98b9c7c6428a668bf7e42ebb7c79d576a1c3c1e3ae2d47e674b468388871/requests-2.33.1.tar.gz", hash = "sha256:18817f8c57c6263968bc123d237e3b8b08ac046f5456bd1e307ee8f4250d3517", size = 134120, upload-time = "2026-03-30T16:09:15.531Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl", hash = "sha256:4e6d1ef462f3626a1f0a0a9c42dd93c63bad33f9f1c1937509b8c5c8718ab56a", size = 64947, upload-time = "2026-03-30T16:09:13.83Z" }, + { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 73075, upload-time = "2026-05-14T19:25:26.443Z" }, ] [[package]] name = "ruff" -version = "0.15.15" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/84/6f/a76f7d96e5c962f5b69cee865e49c15c1116897c01990faa8a57edb62e7f/ruff-0.15.15.tar.gz", hash = "sha256:b8dff018130b46d8e5bf0f926ef6b60cf871d6d5ae45fc9334e09632daa741d6", size = 4706985, upload-time = "2026-05-28T14:16:57.784Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/9d/3a45c05b8ab04b4705989de70a79008e27c8003296a0feaee9edc18dd7e9/ruff-0.15.15-py3-none-linux_armv6l.whl", hash = "sha256:cf93e5388f412e1b108b1f8b34a6e036b70fe8aff89393befad96fe48670311b", size = 10710652, upload-time = "2026-05-28T14:16:06.701Z" }, - { url = "https://files.pythonhosted.org/packages/05/66/da974431624bf3b49f6ee1f9543c02d929ff1cba78b0d5a79c38cf21f744/ruff-0.15.15-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ac5a646d1f6a7dadd5d50842dae2c1f9862ac887ef5d1b1375e02def791fde6e", size = 11096615, upload-time = "2026-05-28T14:16:23.313Z" }, - { url = "https://files.pythonhosted.org/packages/8c/09/7443452e5d290230a712103f2fdceeef7184f3ec99a2bd01c8be78aaceb5/ruff-0.15.15-py3-none-macosx_11_0_arm64.whl", hash = "sha256:77d955a431430c66f72dd94e379ad38a16daea3d25094872ac4edf9e797be530", size = 10436683, upload-time = "2026-05-28T14:16:40.974Z" }, - { url = "https://files.pythonhosted.org/packages/53/01/d330c26a57fa4f3943a14424904027428315b700fe4d14a84bb123a649e5/ruff-0.15.15-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7614ee79c69788cf6cedd568069ade9cecc22a1ad20494efe8d0c9ebb4b622d4", size = 10769064, upload-time = "2026-05-28T14:16:28.905Z" }, - { url = "https://files.pythonhosted.org/packages/1d/85/cc8770f8bdff541b1da8392d1634141fe4a0e3f4ee596605959b7906c27f/ruff-0.15.15-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3cdb1679e06a1f6b47bc384714ae96f6e2fb65ca441eb78c43d2ca554176ce1f", size = 10511987, upload-time = "2026-05-28T14:16:43.732Z" }, - { url = "https://files.pythonhosted.org/packages/7c/29/8c190c1472b63013583ba391f3342036e02010544c1270455ed8e519bdf3/ruff-0.15.15-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2728b93d7b23a603ea2c0ac6eb73d760bd38ec9de35f35fb41e18f7a3fee7622", size = 11275100, upload-time = "2026-05-28T14:16:55.244Z" }, - { url = "https://files.pythonhosted.org/packages/9f/6b/7e145ce2cc8e63d6834eca03d83a0e18d121def5c69f91b4cf4011ed4879/ruff-0.15.15-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be582fcc0db438902c7792b08d6ddf6c9b9e21addaa10092c2c741cfb09e5a45", size = 12176903, upload-time = "2026-05-28T14:16:14.368Z" }, - { url = "https://files.pythonhosted.org/packages/80/a3/d5974637f68e451f7fadf015cf3101d1cd7d8ba5027cffe0b9e3826ebe6b/ruff-0.15.15-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7aa77465b8ecaf1a27bea098d696f7fed5e1eccbd10b321b682d6de586ae5627", size = 11404550, upload-time = "2026-05-28T14:16:20.138Z" }, - { url = "https://files.pythonhosted.org/packages/fe/1c/e6e5e568f22be4fb05d6244234aba384c06b451252453b821e1a529263cf/ruff-0.15.15-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48decfa11d740de4889de623be1463308346312f2409a56e24aa280c86162dc4", size = 11382027, upload-time = "2026-05-28T14:16:46.615Z" }, - { url = "https://files.pythonhosted.org/packages/1d/01/170921b49fcd2e8858825593f91cf7146c3e40a5c3e6df763e4bb0484dde/ruff-0.15.15-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:a5015088452ca0081387063649ec67f06d3d1d6b8b936a1f836b5e9657ecd48c", size = 11366041, upload-time = "2026-05-28T14:16:26.247Z" }, - { url = "https://files.pythonhosted.org/packages/87/54/a7bad711d7de93254e15e06a4c375b89a03d18de45d3e5dcc86a4472fb1a/ruff-0.15.15-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:f5294aab6356c81600fcdea3a62bb1b924dfd5e91767c12318d3f68f86af57cd", size = 10741795, upload-time = "2026-05-28T14:16:17.11Z" }, - { url = "https://files.pythonhosted.org/packages/c9/31/38c075963668f8b41c6914ee0f6f318727fbe30ab9145cb29e6df464c5fa/ruff-0.15.15-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:db5bd4d802415cca656dc1616070b725952d6ae95eb5d4831e49fbd94a38f75f", size = 10511117, upload-time = "2026-05-28T14:16:31.767Z" }, - { url = "https://files.pythonhosted.org/packages/9d/96/6ff689e1f7e375d1d97075eca022f74c2bab59554a432fe4d2e6f091986a/ruff-0.15.15-py3-none-musllinux_1_2_i686.whl", hash = "sha256:587a6278ed42059191c1a466e490bd7930fb50bd2e255398bc29616c895a61cb", size = 10994867, upload-time = "2026-05-28T14:16:35.149Z" }, - { url = "https://files.pythonhosted.org/packages/c3/c2/5dce0ab9f92a8d534fa62b9bf9caca3eddb8c1a81b616f5e195ada4f0d6e/ruff-0.15.15-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:df0c1c084f5f4be9812f61518a45c440d3c30d69ce4bf6c5270e66d38338f02a", size = 11482101, upload-time = "2026-05-28T14:16:49.598Z" }, - { url = "https://files.pythonhosted.org/packages/b1/c0/1003b60edd697c649faf61f1a34094b1abb38fb3d1181e3f895781250a08/ruff-0.15.15-py3-none-win32.whl", hash = "sha256:29428ea79694afbe756d45fd59b36f22b6b020dc0443cf7de0173046236964b9", size = 10716774, upload-time = "2026-05-28T14:16:52.337Z" }, - { url = "https://files.pythonhosted.org/packages/02/a8/1269eddd6945a06c23f055ef7848886e37cf9d6a8bebb386a3115f01470c/ruff-0.15.15-py3-none-win_amd64.whl", hash = "sha256:8df0323902e15e24bc4bf246da830573d3cf3352bd0b9a164eab335d111ff4a4", size = 11868463, upload-time = "2026-05-28T14:16:11.333Z" }, - { url = "https://files.pythonhosted.org/packages/4e/b2/920464c907b191e37469d477a1aa8bc048b8f36c4c1610dfa4ab87b39e18/ruff-0.15.15-py3-none-win_arm64.whl", hash = "sha256:3c8ceca6792f38196b8f589bc92eccd03eef286602da92e5dc05cc42ef6441b7", size = 11138498, upload-time = "2026-05-28T14:16:38.425Z" }, +version = "0.15.18" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/74/98/1295ad5a5aa9bc85bdcdfa5d82fe7b49c61af5657df4f227637ff9de0da6/ruff-0.15.18.tar.gz", hash = "sha256:2698a964c70e8bf402dcb99c8810472d270d141e7aa8c4e13599fd52033a2f33", size = 4761437, upload-time = "2026-06-18T18:25:39.224Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/d0/686e984941269621e2be72612d5c1e461f8f7b38415a2a7d7a81c8ae6715/ruff-0.15.18-py3-none-linux_armv6l.whl", hash = "sha256:8b6850172348c8381b8b3084c5915a4393c2373b9b54cd5b5e1ea15812bc10df", size = 10887308, upload-time = "2026-06-18T18:25:03.062Z" }, + { url = "https://files.pythonhosted.org/packages/ed/21/bc4123e3f5515ee99f8ce1eb93a14a0628fe4d1678663cd08f933ac16931/ruff-0.15.18-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:3fccc153a85417dcd976883160cacce486997b0a0058dd18f54b8aaaac7d1ce2", size = 11281305, upload-time = "2026-06-18T18:25:30.026Z" }, + { url = "https://files.pythonhosted.org/packages/51/93/4769464c25cf7ab2acb3c7dda9cad3d867eb41c59565b3e2a9d17249c90c/ruff-0.15.18-py3-none-macosx_11_0_arm64.whl", hash = "sha256:08d4c86a68f2c3ec2c9d56380a71fb4a4f65373055cbb8caabd645e9102f38d4", size = 10641215, upload-time = "2026-06-18T18:25:15.802Z" }, + { url = "https://files.pythonhosted.org/packages/6c/42/56926d17120db2c208d76bf60a1a019644dd9e91dc27f0f95c9caddb1366/ruff-0.15.18-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37e5108745c2c0705da916d7d4de533ddf547051ef45f62888c31bae73f66318", size = 10957224, upload-time = "2026-06-18T18:25:36.955Z" }, + { url = "https://files.pythonhosted.org/packages/22/4f/d43fab8d8189afde803103022d000a8ef9f230616d436d52a8b2b8d63b50/ruff-0.15.18-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:56949a6ce8b3abde54c0bcb22cebfe57e8771cadc84b407ae8b8eaf67ebdcd43", size = 10699024, upload-time = "2026-06-18T18:25:05.707Z" }, + { url = "https://files.pythonhosted.org/packages/63/42/1e3e4c68bd408b9768cf3e439acbe2c78245225faef253f7028a0cdb63e0/ruff-0.15.18-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01a754cd6a1b630d3f97e33eb452cf7a98040482318e870f8bc52a5a30e62657", size = 11491458, upload-time = "2026-06-18T18:25:20.275Z" }, + { url = "https://files.pythonhosted.org/packages/20/77/47a3484bea8521e14a203d98c389c5c97846675e4f02734672da4a69b52a/ruff-0.15.18-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6ba7a07e03a44dbf10bb086ee06705b173625014ec99f73a7e6836a5e5590a0c", size = 12383752, upload-time = "2026-06-18T18:25:22.535Z" }, + { url = "https://files.pythonhosted.org/packages/0a/ca/054159590787023d83b658a1a1819c4c8910114e7015069340b71c0961cb/ruff-0.15.18-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a2c40a41a4cadbcf5897b548ab29dfe248b20c540961c0247d98a3973c70403", size = 11577923, upload-time = "2026-06-18T18:25:10.702Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ff/d353d6b7bbd73cc0ec37f4463d7540e45e894338abdd9964eee0de332708/ruff-0.15.18-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f0480ce690cbb6c4db6e5d08f19fce98e10ba131a8b60c1bcdac42771e3ae2d", size = 11583925, upload-time = "2026-06-18T18:25:32.391Z" }, + { url = "https://files.pythonhosted.org/packages/c1/4a/891f89b9c296ed3e5f3ece1a5629badc989d9a8fdaa30431aaf4774bc1c2/ruff-0.15.18-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:2330215f1f393fa8733f55edce04fcf94c36a2c460fcde31f78cc84e4951e9b1", size = 11582834, upload-time = "2026-06-18T18:25:27.309Z" }, + { url = "https://files.pythonhosted.org/packages/32/a3/ed9e370154bf85de360b93c03026157f02d4943b2d01ff4945f4429f8e8a/ruff-0.15.18-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a6aa6a3d979e48ae617578183674bf264fbe7d0114a796a26bd678d67963c7ff", size = 10927328, upload-time = "2026-06-18T18:25:34.676Z" }, + { url = "https://files.pythonhosted.org/packages/f5/d1/5cf5909329fedb5d39d555ee818ba5cf4638e1a301b89785d34f2905bfcb/ruff-0.15.18-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a81beadbbff2c9c245561ae3f77b16709d87f35eec650d0501679239d3449b22", size = 10693187, upload-time = "2026-06-18T18:25:08.245Z" }, + { url = "https://files.pythonhosted.org/packages/fd/44/ff6c635cf2c4f4e7b618b6640da057376baa36014695487d88aed4794268/ruff-0.15.18-py3-none-musllinux_1_2_i686.whl", hash = "sha256:2186d9e940ae332ab293623a75b5f4fe49565f449954d50a72a046683aa6b809", size = 11208721, upload-time = "2026-06-18T18:25:41.327Z" }, + { url = "https://files.pythonhosted.org/packages/88/d9/5baa2a30861adfb7022cf33c1e35b2fc18085b08c16f83eff4c7b99a5f48/ruff-0.15.18-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5c2abf140438032bc77b2284a6c9944ecd8a19e5f1c7b52b1b8e4a0a80d19a7a", size = 11678599, upload-time = "2026-06-18T18:25:13.607Z" }, + { url = "https://files.pythonhosted.org/packages/c3/1a/0725a7cfdc32ff769efb96ee782bec882e16448c5d9e3be947ec4c04ce27/ruff-0.15.18-py3-none-win32.whl", hash = "sha256:02299e6e9fa5b297a3f6d5d10d7bcd655c925b028bb8b9d4588214549c6b9ec4", size = 10901903, upload-time = "2026-06-18T18:25:24.755Z" }, + { url = "https://files.pythonhosted.org/packages/f3/51/805d9f6fb7970505c3504794a5ec350f605361b807fef4dcf214ebd35e72/ruff-0.15.18-py3-none-win_amd64.whl", hash = "sha256:dac80dc8d26b2257dbefabed62f5d255c3937b4ccb122da1fc634794fa3578b3", size = 12041189, upload-time = "2026-06-18T18:25:17.915Z" }, + { url = "https://files.pythonhosted.org/packages/29/4c/67bb45e41609eb4726f1bfeb59e083cf91d14c696d4bd14c234a980be93d/ruff-0.15.18-py3-none-win_arm64.whl", hash = "sha256:b2c9257fcbd4a3e5b977a1904e6facca016bafe2edc17df24db67cfaee03b4e4", size = 11329958, upload-time = "2026-06-18T18:25:43.686Z" }, ] [[package]] name = "s3transfer" -version = "0.18.0" +version = "0.19.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e0/1f/12417f7f493fc45e1f9fd5d4a9b6c125cf8d2cf3f8ddbdfab3e76406e9d6/s3transfer-0.18.0.tar.gz", hash = "sha256:3760b8b7ec1315da54048b2d626276732bee4300d054d492d4e1d43e20d4ecbd", size = 160560, upload-time = "2026-05-28T19:39:09.124Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/94/dcdaeb1713cab9c84def276cfac7388b17c7d9855bbcfe88d77e4dbafd44/s3transfer-0.19.0.tar.gz", hash = "sha256:ce436931687addc4c1712d52d40b32f53e88315723f107ffa20ba82b05a0f685", size = 165171, upload-time = "2026-06-16T19:44:51.599Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2b/58/a58fc997655386daa2e25784e30c288aa3e3819e401f77029ee4899fb55a/s3transfer-0.18.0-py3-none-any.whl", hash = "sha256:239c13b09e65ad0346e1be7348b8a202dcad44ac7ea7c6eb858fc881dce739b6", size = 88572, upload-time = "2026-05-28T19:39:07.999Z" }, + { url = "https://files.pythonhosted.org/packages/46/5f/4c174edad94f82de888ac00a5ddd8d07b35609b6c94f0bdf4d74af57703e/s3transfer-0.19.0-py3-none-any.whl", hash = "sha256:777cc2415536f1debadb5c2ef7779275d0fc0fe0e042411cdd6caebeb2685262", size = 90101, upload-time = "2026-06-16T19:44:50.439Z" }, ] [[package]] @@ -2095,23 +2076,23 @@ wheels = [ [[package]] name = "tzlocal" -version = "5.3.1" +version = "5.4.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "tzdata", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8b/2e/c14812d3d4d9cd1773c6be938f89e5735a1f11a9f184ac3639b93cef35d5/tzlocal-5.3.1.tar.gz", hash = "sha256:cceffc7edecefea1f595541dbd6e990cb1ea3d19bf01b2809f362a03dd7921fd", size = 30761, upload-time = "2025-03-05T21:17:41.549Z" } +sdist = { url = "https://files.pythonhosted.org/packages/48/55/15e2340963d2bfedcc6042da3911438fd336f8ae96b65bdbe3a29766da0c/tzlocal-5.4.3.tar.gz", hash = "sha256:3a8c9bc18cf47e1dcde252ea0e6a72a6cde320a400b6ac6db1f1f8cccd553c00", size = 30873, upload-time = "2026-06-17T04:17:41.764Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/14/e2a54fabd4f08cd7af1c07030603c3356b74da07f7cc056e600436edfa17/tzlocal-5.3.1-py3-none-any.whl", hash = "sha256:eb1a66c3ef5847adf7a834f1be0800581b683b5608e74f86ecbcef8ab91bb85d", size = 18026, upload-time = "2025-03-05T21:17:39.857Z" }, + { url = "https://files.pythonhosted.org/packages/42/28/fc144409c71569e928585f8f3c629d80d1ca3ef40175e9222f01588f98c9/tzlocal-5.4.3-py3-none-any.whl", hash = "sha256:24ce97bb58e2a973f7640ec2553ab4e6f6d5a0d0d1aa9dc43bca21d89e1feb82", size = 18039, upload-time = "2026-06-17T04:17:40.027Z" }, ] [[package]] name = "urllib3" -version = "2.6.3" +version = "2.7.0" 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/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } 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/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, ] [[package]] @@ -2125,16 +2106,16 @@ wheels = [ [[package]] name = "wcwidth" -version = "0.6.0" +version = "0.8.1" 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/49/b4/51fe890511f0f242d07cb1ebe6a5b6db417262b9d2568b460347c57d95cc/wcwidth-0.8.1.tar.gz", hash = "sha256:faf5b4a5366a72dc49cad48cdf21f52bdf63bdda995178e483ba247ff79089b9", size = 1466072, upload-time = "2026-06-08T05:57:23.146Z" } 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/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl", hash = "sha256:f453740b1e4a4f3291faa37944c555d71056c4da08d59809b307ef4feba695c8", size = 323092, upload-time = "2026-06-08T05:57:21.413Z" }, ] [[package]] name = "weasyprint" -version = "68.1" +version = "69.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, @@ -2146,9 +2127,9 @@ dependencies = [ { name = "tinycss2" }, { name = "tinyhtml5" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/db/3e/65c0f176e6fb5c2b0a1ac13185b366f727d9723541babfa7fa4309998169/weasyprint-68.1.tar.gz", hash = "sha256:d3b752049b453a5c95edb27ce78d69e9319af5a34f257fa0f4c738c701b4184e", size = 1542379, upload-time = "2026-02-06T15:04:11.203Z" } +sdist = { url = "https://files.pythonhosted.org/packages/59/53/dcc3885c2f7a47faa45f6b8b801412f5f9e055173a52801ef01c09943c5a/weasyprint-69.0.tar.gz", hash = "sha256:a7a32f39ca16bd82ef11de99c92ea4b5f14951c9033af035e451ce4f4ee0a88c", size = 1549834, upload-time = "2026-06-02T14:42:17.765Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/dd/dd/14eb73cea481ad8162d3b18a4850d4a84d6e804a22840cca207648532265/weasyprint-68.1-py3-none-any.whl", hash = "sha256:4dc3ba63c68bbbce3e9617cb2226251c372f5ee90a8a484503b1c099da9cf5be", size = 319789, upload-time = "2026-02-06T15:04:09.189Z" }, + { url = "https://files.pythonhosted.org/packages/93/cb/208525c6bd5033d7b2589b55e07bec23d9c61bb00703cbaf20ef52c3811f/weasyprint-69.0-py3-none-any.whl", hash = "sha256:475951cfd917014de6d4d005caff48c6aa867e7e42b80cd5b16a0484a1609ee6", size = 322872, upload-time = "2026-06-02T14:42:15.871Z" }, ] [[package]] @@ -2296,19 +2277,20 @@ wheels = [ [[package]] name = "zopfli" -version = "0.4.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/4d/a8cc1768b2eda3c0c7470bf8059dcb94ef96d45dd91fc6edd29430d44072/zopfli-0.4.1.tar.gz", hash = "sha256:07a5cdc5d1aaa6c288c5d9f5a5383042ba743641abf8e2fd898dcad622d8a38e", size = 179001, upload-time = "2026-02-13T14:17:27.156Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/2f/1a7082e9163ae3703b27d571720bf3c954a02a9cf1fdce47c51e70639256/zopfli-0.4.1-cp310-abi3-macosx_10_9_universal2.whl", hash = "sha256:4238d4d746d1095e29c9125490985e0c12ffd3654f54a24af551e2391e936d54", size = 291570, upload-time = "2026-02-13T14:17:12.556Z" }, - { url = "https://files.pythonhosted.org/packages/dd/6f/4a1a88edf9fa0ce102703f38ab4dfb285b7cd2dde5389184264ec759e06e/zopfli-0.4.1-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fdfb7ce9f5de37a5b2f75dd2642fd7717956ef2a72e0387302a36d382440db07", size = 829437, upload-time = "2026-02-13T14:17:14.431Z" }, - { url = "https://files.pythonhosted.org/packages/e3/77/d231012ddcaac9d2e184bd7808e106a8a0048855912e2e1c902b3f383413/zopfli-0.4.1-cp310-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d7bcee1b189d64ec33d1e05cfa1b6a1268c29329c382f6ca1bd6245b04925c57", size = 818542, upload-time = "2026-02-13T14:17:16.353Z" }, - { url = "https://files.pythonhosted.org/packages/0d/4e/9b23690c4ca14fbeae2a8f7f6b2006611bf4cd7d5bcb2d9e6c718bd4b0e9/zopfli-0.4.1-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:27823dc1161a4031d1c25925fd45d9868ec0cbc7692341830a7dcfa25063662c", size = 1778034, upload-time = "2026-02-13T14:17:17.509Z" }, - { url = "https://files.pythonhosted.org/packages/e3/1b/51f7c28d4cde639cac4f5d47ff615548c1d9809f43cbacdd66eba5cd679d/zopfli-0.4.1-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5a4c22b6161f47f5bd34637dbaee6735abd287cd64e0d1ce28ef1871bf625f4b", size = 1863957, upload-time = "2026-02-13T14:17:19.259Z" }, - { url = "https://files.pythonhosted.org/packages/ae/4d/1ef17017d38eabe7ae28f18ef0f16d48966cc23a5657e4555fff61704539/zopfli-0.4.1-cp310-abi3-win32.whl", hash = "sha256:a899eca405662a23ae75054affa3517a060362eae1185d3d791c86a50153c4dd", size = 82314, upload-time = "2026-02-13T14:17:20.795Z" }, - { url = "https://files.pythonhosted.org/packages/0f/94/806bc84b389c7d70051d7c9a0179cff52de8b9f8dc2fc25bcf0bca302986/zopfli-0.4.1-cp310-abi3-win_amd64.whl", hash = "sha256:84a31ba9edc921b1d3a4449929394a993888f32d70de3a3617800c428a947b9b", size = 102186, upload-time = "2026-02-13T14:17:21.622Z" }, - { url = "https://files.pythonhosted.org/packages/15/53/0afc94574553bad50d7add81f54eed1a864e13f91c3a342c99775a947ff9/zopfli-0.4.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:02086247dd12fda929f9bfe8b3962b6bcdbfc8c82e99255aebcf367867cf0760", size = 147127, upload-time = "2026-02-13T14:17:22.995Z" }, - { url = "https://files.pythonhosted.org/packages/45/2b/0d9e4bdfd3d646a36b8516a01dec4ccd2967554603801e7c2d6c72fede3d/zopfli-0.4.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a93c2ecafff372de6c0aa2212eff18a75f6c71a100372fee7b4b129cc0b6f9a7", size = 127349, upload-time = "2026-02-13T14:17:24.107Z" }, - { url = "https://files.pythonhosted.org/packages/23/f0/ad6e26aa06943ce9f1be4ae6738513a7b69d8ea1f3b13e46009a249a3f73/zopfli-0.4.1-pp311-pypy311_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cb136a74d14a4ecfae29cb0fdecece58a6c115abc9a74c12bc6ac62e80f229d7", size = 124371, upload-time = "2026-02-13T14:17:24.976Z" }, - { url = "https://files.pythonhosted.org/packages/7b/36/3c15d564db6dfdd740919b205bdb69be75113e9919c422cde658e6d013c0/zopfli-0.4.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:2f992ac7d83cbddd889e1813ace576cbc91a05d5d7a0a21b366e2e5f492e7707", size = 102199, upload-time = "2026-02-13T14:17:26.246Z" }, +version = "0.4.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/74/21/3b6af43a663b22b00e738bb0642931a2579e15da6852613d56c6aa535d28/zopfli-0.4.3.tar.gz", hash = "sha256:d3a50f91a13cea9bafe025de8fd87a005eb26de02a4f0c193127ddbf23ac8ebe", size = 179156, upload-time = "2026-06-10T09:10:19.96Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/5f/b7d81b670daf990e15a0f7551da96c3c0700f69ae6d96b0245d6a19f51f3/zopfli-0.4.3-cp310-abi3-macosx_10_9_universal2.whl", hash = "sha256:88f4fbe429aad72bc206275d81fab11a097e0f951a5848d1f51083c37ea73073", size = 291492, upload-time = "2026-06-10T09:10:06.621Z" }, + { url = "https://files.pythonhosted.org/packages/55/c8/d8d8d731e0b192024567b7198fb77b748821d355f3c8bf0109de27191f43/zopfli-0.4.3-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:769875152d0625c46707bcca57d4b2233fe653482067acd55fbf6ec525cb9bdc", size = 829354, upload-time = "2026-06-10T09:10:07.909Z" }, + { url = "https://files.pythonhosted.org/packages/0e/2b/fbe8ba2ec40f5986b8983a4752f7a32672a80a10ea6e68213324a7055469/zopfli-0.4.3-cp310-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb0c9c1d40a8cb1d58762d7e57290ccb753e0828c4d01be8acb59aae5d0ca206", size = 818436, upload-time = "2026-06-10T09:10:09.063Z" }, + { url = "https://files.pythonhosted.org/packages/de/d9/63568c54c8b68b9135f3456c5add83797a5528d596657f0e4f4910173b08/zopfli-0.4.3-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:7fa3c35193475290e3f007bbcdebdbae64ba2f012d75c632da0d727e1da50d5e", size = 1778931, upload-time = "2026-06-10T09:10:10.282Z" }, + { url = "https://files.pythonhosted.org/packages/7a/05/8f3aac10a858e89c2146d3a1f6ce33634c3db757365b4148fef1b85784d2/zopfli-0.4.3-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:47604eee5c6704bdf0e94d8391fe3b74ddb2abd84128fbcfdc3ee0fc265feaef", size = 1864132, upload-time = "2026-06-10T09:10:11.595Z" }, + { url = "https://files.pythonhosted.org/packages/8d/20/9ca59d14b91f9fbc631793b4b085b309777edadaca496aa518a180817827/zopfli-0.4.3-cp310-abi3-win32.whl", hash = "sha256:628c3e941752880b3491db8d44163d0aedb221944e22a17187ff7fc549b050f6", size = 271715, upload-time = "2026-06-10T09:10:12.7Z" }, + { url = "https://files.pythonhosted.org/packages/9d/3a/4ff4fdead77ef30f5832b38a47eb7a1283e98b3c678576b83f8fdfff53eb/zopfli-0.4.3-cp310-abi3-win_amd64.whl", hash = "sha256:921c2c9907f4364963848da5ad194b46d68865e07fdb975d04fd09bc42d47357", size = 288550, upload-time = "2026-06-10T09:10:13.639Z" }, + { url = "https://files.pythonhosted.org/packages/e6/44/6264f929057236fde72dd6d271f54612b4811ce37288e002f5d5339d696a/zopfli-0.4.3-cp310-abi3-win_arm64.whl", hash = "sha256:7e9703ca6e7ef66c8d05e0826b6f558b680c9db8206f84f05a3ee93430a12e42", size = 451343, upload-time = "2026-06-10T09:10:14.72Z" }, + { url = "https://files.pythonhosted.org/packages/6f/bf/403da5a753731d9a4e4d65a494c4a9ae5a0fe62e7afffe5ab49915adc9a3/zopfli-0.4.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0087c9a6f0c8a052be0f6d1a9bb71b6caffdd3e10201d6d6166e28d482cebe6d", size = 147045, upload-time = "2026-06-10T09:10:15.883Z" }, + { url = "https://files.pythonhosted.org/packages/bd/5f/afaa18db62ab44da01a3fc39b6cb110478d26cd2287baa83461c6454ed45/zopfli-0.4.3-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f2e0adcf7d36c6fd0dd36cc771ef7f0c5803a05666feafcd90d7170174a4148e", size = 127265, upload-time = "2026-06-10T09:10:16.911Z" }, + { url = "https://files.pythonhosted.org/packages/04/3a/76bdfd8b35300391666b090357d059ce4c555b9d9ce9878dd551a9ad63a0/zopfli-0.4.3-pp311-pypy311_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4f51dd1ab5312e837e2091284e0d9f1a138188f2e65812f9a5799dc02c45f94", size = 124288, upload-time = "2026-06-10T09:10:17.891Z" }, + { url = "https://files.pythonhosted.org/packages/c5/95/5781bfb29782c39918686070dbf2ad1425c21384c3223f5c6bd911a806f8/zopfli-0.4.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:62248dbf8dbcbd588ee194b210e5be9fa80bce29641f55599d6d394bd2a9d8a3", size = 304624, upload-time = "2026-06-10T09:10:18.944Z" }, ] diff --git a/services/parser/__init__.py b/services/parser/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/services/parser/api/__init__.py b/services/parser/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/services/parser/api/deps.py b/services/parser/api/deps.py new file mode 100644 index 0000000..af52d52 --- /dev/null +++ b/services/parser/api/deps.py @@ -0,0 +1,12 @@ +from fastapi import HTTPException, Depends +from fastapi.security import APIKeyHeader + +from config.config import settings + +api_key_header = APIKeyHeader(name="X-Internal-Api-Key", auto_error=False) + + +def verify_internal_key(key: str = Depends(api_key_header)): + if settings.INTERNAL_API_KEY and key != settings.INTERNAL_API_KEY: + raise HTTPException(401, "Invalid or missing internal API key") + return key diff --git a/services/parser/api/routes/__init__.py b/services/parser/api/routes/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/services/parser/api/routes/file.py b/services/parser/api/routes/file.py new file mode 100644 index 0000000..fc6da3e --- /dev/null +++ b/services/parser/api/routes/file.py @@ -0,0 +1,63 @@ +from fastapi import APIRouter, UploadFile, File, Form, HTTPException, Depends + +from ast_parser import parse_python_file +from validators import validate_python_code +from framework_detector import detect_framework +from common.django_client import get_project, update_project, create_project_file +from api.deps import verify_internal_key + +router = APIRouter() + + +@router.post("/file/") +async def analyze_file( + _auth: str = Depends(verify_internal_key), + file: UploadFile = File(...), + project_id: str = Form(...), + name: str = Form("Untitled Project"), + description: str = Form(""), + file_path: str = Form(None), +): + if not file.filename.endswith(".py"): + raise HTTPException(400, "Only .py files are allowed") + + try: + source_code = (await file.read()).decode("utf-8") + except UnicodeDecodeError: + raise HTTPException(400, "File must be UTF-8 encoded") + + is_valid, err = validate_python_code(source_code) + if not is_valid: + raise HTTPException(400, err) + + parsed = parse_python_file(source_code) + + project = get_project(project_id) + if not project: + raise HTTPException(404, "Project not found") + + imports = [imp.get("display", str(imp)) if isinstance(imp, dict) else str(imp) for imp in parsed.get("imports", [])] + fw_info = detect_framework(imports, [file_path or file.filename], [source_code]) + + final_path = file_path or file.filename + create_project_file(project_id, { + "file_path": final_path, + "file_name": file.filename.split("/")[-1], + "file_size": len(source_code), + "content": source_code, + "parsed_data": parsed, + "generated_docs": "", + }) + + update_project(project_id, { + "framework_info": fw_info, + "parsed_data": parsed, + "status": "processing", + }) + + return { + "project_id": project_id, + "parsed": parsed, + "file_count": 1, + "framework": fw_info, + } diff --git a/services/parser/api/routes/folder.py b/services/parser/api/routes/folder.py new file mode 100644 index 0000000..511ca05 --- /dev/null +++ b/services/parser/api/routes/folder.py @@ -0,0 +1,93 @@ +import io +import json +import zipfile +from fastapi import APIRouter, UploadFile, File, Form, HTTPException, Depends + +from ast_parser import parse_python_file +from validators import validate_python_code, should_exclude +from framework_detector import detect_framework +from common.django_client import get_project, update_project, create_project_file +from api.deps import verify_internal_key + +router = APIRouter() + + +@router.post("/folder/") +async def analyze_folder( + folder: UploadFile = File(...), + _auth: str = Depends(verify_internal_key), + project_id: str = Form(...), + name: str = Form("Untitled Project"), + description: str = Form(""), + custom_info: str = Form(None), +): + if not folder.filename.endswith(".zip"): + raise HTTPException(400, "File must be a .zip") + + try: + zip_content = await folder.read() + zf = zipfile.ZipFile(io.BytesIO(zip_content)) + except zipfile.BadZipFile: + raise HTTPException(400, "Invalid zip file") + + py_files = [ + f for f in zf.namelist() + if f.endswith(".py") and not should_exclude(f) + ] + + if not py_files: + raise HTTPException(400, "No Python files found after filtering") + + project = get_project(project_id) + if not project: + raise HTTPException(404, "Project not found") + + if custom_info: + try: + update_project(project_id, {"custom_details": json.loads(custom_info)}) + except json.JSONDecodeError: + update_project(project_id, {"custom_details": {"details": custom_info}}) + + all_imports: list[str] = [] + all_paths: list[str] = [] + all_sources: list[str] = [] + + results = [] + for file_path in py_files: + try: + content = zf.read(file_path).decode("utf-8", errors="ignore") + is_valid, _ = validate_python_code(content) + if not is_valid: + continue + + parsed = parse_python_file(content) + create_project_file(project_id, { + "file_path": file_path, + "file_name": file_path.split("/")[-1], + "file_size": len(content), + "content": content, + "parsed_data": parsed, + "generated_docs": "", + }) + + imports = [imp.get("display", str(imp)) if isinstance(imp, dict) else str(imp) for imp in parsed.get("imports", [])] + all_imports.extend(imports) + all_paths.append(file_path) + all_sources.append(content) + results.append({"file_path": file_path, "parsed": parsed}) + except Exception: + continue + + fw_info = detect_framework(all_imports, all_paths, all_sources) + + update_project(project_id, { + "framework_info": fw_info, + "parsed_data": results, + "status": "processing", + }) + + return { + "project_id": project_id, + "files_parsed": len(results), + "framework": fw_info, + } diff --git a/services/parser/api/routes/health.py b/services/parser/api/routes/health.py new file mode 100644 index 0000000..1dc66ab --- /dev/null +++ b/services/parser/api/routes/health.py @@ -0,0 +1,8 @@ +from fastapi import APIRouter + +router = APIRouter() + + +@router.get("/health") +def health(): + return {"status": "ok", "service": "parser"} diff --git a/services/parser/api/routes/status.py b/services/parser/api/routes/status.py new file mode 100644 index 0000000..b947a49 --- /dev/null +++ b/services/parser/api/routes/status.py @@ -0,0 +1,18 @@ +from fastapi import APIRouter, HTTPException, Depends +from common.django_client import get_project +from api.deps import verify_internal_key + +router = APIRouter() + + +@router.get("/status/{project_id}") +def parser_status(project_id: str, _auth: str = Depends(verify_internal_key)): + project = get_project(project_id) + if not project: + raise HTTPException(404, "Project not found") + files = project.get("files", []) + return { + "project_id": project_id, + "status": project.get("status"), + "files_count": len(files), + } diff --git a/backend/services/parser/ast_parser.py b/services/parser/ast_parser.py similarity index 100% rename from backend/services/parser/ast_parser.py rename to services/parser/ast_parser.py diff --git a/services/parser/common/__init__.py b/services/parser/common/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/services/parser/common/auth.py b/services/parser/common/auth.py new file mode 100644 index 0000000..1afba61 --- /dev/null +++ b/services/parser/common/auth.py @@ -0,0 +1,24 @@ +import os +import jwt +from fastapi import HTTPException, Depends +from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials + +security = HTTPBearer(auto_error=False) + + +def verify_django_jwt(credentials: HTTPAuthorizationCredentials = Depends(security)): + if credentials is None: + raise HTTPException(401, "Missing authorization header") + token = credentials.credentials + try: + payload = jwt.decode( + token, + os.getenv("DJANGO_SECRET_KEY", ""), + algorithms=["HS256"], + options={"verify_exp": True}, + ) + return payload + except jwt.ExpiredSignatureError: + raise HTTPException(401, "Token expired") + except jwt.InvalidTokenError: + raise HTTPException(401, "Invalid token") diff --git a/services/parser/common/django_client.py b/services/parser/common/django_client.py new file mode 100644 index 0000000..bca467c --- /dev/null +++ b/services/parser/common/django_client.py @@ -0,0 +1,61 @@ +import os +import httpx +from typing import Any + +DJANGO_INTERNAL_URL = os.getenv( + "DJANGO_INTERNAL_URL", + "http://django:8000/api/internal", +) +INTERNAL_API_KEY = os.getenv("INTERNAL_API_KEY", "") + + +def _headers() -> dict: + return { + "X-Internal-Api-Key": INTERNAL_API_KEY, + "Content-Type": "application/json", + } + + +def get_project(project_id: str) -> dict[str, Any] | None: + resp = httpx.get( + f"{DJANGO_INTERNAL_URL}/projects/{project_id}/", + headers=_headers(), + timeout=30, + ) + if resp.status_code == 404: + return None + resp.raise_for_status() + return resp.json() + + +def update_project(project_id: str, data: dict) -> dict[str, Any]: + resp = httpx.patch( + f"{DJANGO_INTERNAL_URL}/projects/{project_id}/", + headers=_headers(), + json=data, + timeout=30, + ) + resp.raise_for_status() + return resp.json() + + +def create_project_file(project_id: str, file_data: dict) -> dict[str, Any]: + resp = httpx.post( + f"{DJANGO_INTERNAL_URL}/projects/{project_id}/files/", + headers=_headers(), + json=file_data, + timeout=30, + ) + resp.raise_for_status() + return resp.json() + + +def send_parsed_data(project_id: str, parsed: dict, file_count: int): + resp = httpx.post( + f"{DJANGO_INTERNAL_URL}/projects/{project_id}/parsed/", + headers=_headers(), + json={"parsed": parsed, "file_count": file_count}, + timeout=30, + ) + resp.raise_for_status() + return resp.json() diff --git a/services/parser/config/__init__.py b/services/parser/config/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/services/parser/config/config.py b/services/parser/config/config.py new file mode 100644 index 0000000..21019be --- /dev/null +++ b/services/parser/config/config.py @@ -0,0 +1,13 @@ +import os + + +class Settings: + INTERNAL_API_KEY: str = os.getenv("INTERNAL_API_KEY", "") + DATABASE_URL: str = os.getenv( + "DATABASE_URL", + "postgresql://pydocai_user:pydocai_pass@localhost:5433/pydocai" + ) + CORS_ALLOWED_ORIGINS: str = os.getenv("CORS_ALLOWED_ORIGINS", "http://localhost:5173") + + +settings = Settings() diff --git a/services/parser/docker/Dockerfile b/services/parser/docker/Dockerfile new file mode 100644 index 0000000..033e747 --- /dev/null +++ b/services/parser/docker/Dockerfile @@ -0,0 +1,31 @@ +FROM python:3.11-slim AS builder + +RUN apt-get update && apt-get install -y --no-install-recommends gcc && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /app + +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +FROM python:3.11-slim + +RUN groupadd -r app && useradd -r -g app app + +COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages +COPY --from=builder /usr/local/bin /usr/local/bin + +WORKDIR /app + +COPY . . + +RUN chown -R app:app /app + +USER app + +EXPOSE 8002 + +HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ + CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:8002/health')" || exit 1 + +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8002", "--workers", "2"] diff --git a/backend/services/parser/framework_detector.py b/services/parser/framework_detector.py similarity index 100% rename from backend/services/parser/framework_detector.py rename to services/parser/framework_detector.py diff --git a/services/parser/main.py b/services/parser/main.py new file mode 100644 index 0000000..b5f9bde --- /dev/null +++ b/services/parser/main.py @@ -0,0 +1,55 @@ +import os +import logging +from contextlib import asynccontextmanager +from fastapi import FastAPI, Request +from fastapi.middleware.cors import CORSMiddleware +from fastapi.responses import JSONResponse + +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s [%(levelname)s] %(name)s: %(message)s", +) +logger = logging.getLogger(__name__) + + +@asynccontextmanager +async def lifespan(app: FastAPI): + logger.info("Starting Parser service") + yield + logger.info("Shutting down Parser service") + + +app = FastAPI( + title="PyDocAI Parser Service", + version="0.2.0", + lifespan=lifespan, +) + +origins = os.getenv("CORS_ALLOWED_ORIGINS", "http://localhost:5173").split(",") +app.add_middleware( + CORSMiddleware, + allow_origins=origins if origins != ["*"] else ["*"], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + + +@app.exception_handler(Exception) +async def global_exception_handler(request: Request, exc: Exception): + logger.exception("Unhandled exception on %s %s", request.method, request.url.path) + return JSONResponse( + status_code=500, + content={"detail": "Internal server error"}, + ) + + +from api.routes.health import router as health_router +from api.routes.file import router as file_router +from api.routes.folder import router as folder_router +from api.routes.status import router as status_router + +app.include_router(health_router) +app.include_router(file_router, prefix="/api/parser") +app.include_router(folder_router, prefix="/api/parser") +app.include_router(status_router, prefix="/api/parser") diff --git a/backend/services/parser/requirements.txt b/services/parser/requirements.txt similarity index 68% rename from backend/services/parser/requirements.txt rename to services/parser/requirements.txt index 5476fe9..7529897 100644 --- a/backend/services/parser/requirements.txt +++ b/services/parser/requirements.txt @@ -1,9 +1,6 @@ fastapi>=0.115.0 uvicorn[standard]>=0.34.0 python-multipart>=0.0.18 -sqlalchemy>=2.0.36 -psycopg2-binary>=2.9.12 -redis>=7.4.0 httpx>=0.28.0 pydantic>=2.10.0 python-dotenv>=1.2.2 diff --git a/services/parser/schemas/__init__.py b/services/parser/schemas/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/services/parser/schemas/requests.py b/services/parser/schemas/requests.py new file mode 100644 index 0000000..d36bd89 --- /dev/null +++ b/services/parser/schemas/requests.py @@ -0,0 +1,21 @@ +from typing import Optional +from pydantic import BaseModel + + +class AnalyzeFileResponse(BaseModel): + project_id: str + parsed: dict + file_count: int + framework: dict + + +class AnalyzeFolderResponse(BaseModel): + project_id: str + files_parsed: int + framework: dict + + +class ParserStatusResponse(BaseModel): + project_id: str + status: str + files_count: int diff --git a/services/parser/services/__init__.py b/services/parser/services/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/services/parser/tests/__init__.py b/services/parser/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/services/parser/test_main.py b/services/parser/tests/test_routes.py similarity index 56% rename from backend/services/parser/test_main.py rename to services/parser/tests/test_routes.py index 97adcaf..7699121 100644 --- a/backend/services/parser/test_main.py +++ b/services/parser/tests/test_routes.py @@ -14,19 +14,7 @@ @pytest.fixture(autouse=True) def mock_env(monkeypatch): monkeypatch.setenv("INTERNAL_API_KEY", "") - monkeypatch.setenv("DATABASE_URL", "sqlite:///:memory:") - - -@pytest.fixture -def mock_db(): - session = MagicMock() - gen = mock_get_db(session) - with patch("main.get_db", return_value=gen): - yield session - - -def mock_get_db(session): - yield session + monkeypatch.setenv("DJANGO_INTERNAL_URL", "http://localhost:8000/api/internal") class TestHealth: @@ -53,19 +41,13 @@ def test_rejects_invalid_python(self): ) assert resp.status_code == 400 - @patch("main.validate_python_code") - @patch("main.parse_python_file") - @patch("main.detect_framework") - def test_parses_valid_file(self, mock_detect, mock_parse, mock_validate, mock_db): - mock_validate.return_value = (True, None) - mock_parse.return_value = { - "functions": [{"name": "foo", "args": []}], - "classes": [], "imports": [], "error": False, - } - mock_detect.return_value = {"primary_framework": "python"} - mock_project = MagicMock() - mock_project.id = uuid4() - mock_db.query.return_value.filter.return_value.first.return_value = mock_project + @patch("api.routes.file.get_project") + @patch("api.routes.file.create_project_file") + @patch("api.routes.file.update_project") + def test_parses_valid_file(self, mock_update, mock_create, mock_get): + mock_get.return_value = {"id": str(uuid4()), "name": "Test"} + mock_create.return_value = {"id": str(uuid4())} + mock_update.return_value = {"id": str(uuid4())} pid = str(uuid4()) resp = client.post( @@ -87,18 +69,15 @@ def test_rejects_non_zip(self): ) assert resp.status_code == 400 - @patch("main.should_exclude") - @patch("main.validate_python_code") - @patch("main.parse_python_file") - def test_parses_zip(self, mock_parse, mock_validate, mock_exclude, mock_db): + @patch("api.routes.folder.should_exclude") + @patch("api.routes.folder.get_project") + @patch("api.routes.folder.create_project_file") + @patch("api.routes.folder.update_project") + def test_parses_zip(self, mock_update, mock_create, mock_get, mock_exclude): mock_exclude.return_value = False - mock_validate.return_value = (True, None) - mock_parse.return_value = { - "functions": [], "classes": [], "imports": [], "error": False, - } - mock_project = MagicMock() - mock_project.id = uuid4() - mock_db.query.return_value.filter.return_value.first.return_value = mock_project + mock_get.return_value = {"id": str(uuid4()), "name": "Test"} + mock_create.return_value = {"id": str(uuid4())} + mock_update.return_value = {"id": str(uuid4())} zip_buffer = io.BytesIO() with zipfile.ZipFile(zip_buffer, "w") as zf: @@ -115,19 +94,21 @@ def test_parses_zip(self, mock_parse, mock_validate, mock_exclude, mock_db): class TestParserStatus: - def test_returns_status(self, mock_db): - mock_project = MagicMock() - mock_project.id = uuid4() - mock_project.status = "done" - mock_db.query.return_value.filter.return_value.first.return_value = mock_project - mock_db.query.return_value.filter.return_value.count.return_value = 3 - - resp = client.get(f"/api/parser/status/{mock_project.id}") + @patch("api.routes.status.get_project") + def test_returns_status(self, mock_get): + mock_get.return_value = { + "id": str(uuid4()), + "status": "done", + "files": [{"id": "f1"}, {"id": "f2"}, {"id": "f3"}], + } + + resp = client.get(f"/api/parser/status/{uuid4()}") assert resp.status_code == 200 assert resp.json()["status"] == "done" assert resp.json()["files_count"] == 3 - def test_404_for_unknown(self, mock_db): - mock_db.query.return_value.filter.return_value.first.return_value = None + @patch("api.routes.status.get_project") + def test_404_for_unknown(self, mock_get): + mock_get.return_value = None resp = client.get("/api/parser/status/00000000-0000-0000-0000-000000000000") assert resp.status_code == 404 diff --git a/backend/services/parser/validators.py b/services/parser/validators.py similarity index 100% rename from backend/services/parser/validators.py rename to services/parser/validators.py

    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%0D@Ks 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�bKVq-?C)P+6S&A45e_7XLh=0R}hfB+!5&Nrlow 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

  2. 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 JPDHLkV1n5Y@L2!= literal 0 HcmV?d00001 diff --git a/frondend/public/favicon-64x64.png b/frondend/public/favicon-64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..00a3592c617d429a39eaf59cb9437eec6b95c7ea GIT binary patch literal 7201 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 literal 0 HcmV?d00001 diff --git a/frondend/public/favicon-96x96.png b/frondend/public/favicon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..577b7b89818821cbd612602b5e36427aa5546f2c GIT binary patch literal 13413 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 Hu0mjf2Jo_s literal 0 HcmV?d00001 diff --git a/frondend/public/favicon.ico b/frondend/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1119d6cc9bc94a8085eb3de7098f60e6d66e9a4c GIT binary patch literal 848 zcmV-W1F!r50096201yxW0000W06GHz02TlM0EtjeM-2)Z3IG5A4M|8uQUCw|5C8xG z5C{eU001BJ|6u?C0|7}yK~#90O_NV(T}2eee=~RPz3)$w7ecGSwp#Gn2U!#?)q<@g zMG;-NP$+5(x)W@bq6mVx(S?Fo5OgJiR#cRN2%(67NJX${+bA|I)`jiDP!r$FOY;8S zci-GOGWT`iEM^$aIWymPzVE2d&i38ui%z8$lA$1g-^v9rTHyqo0|nR&woD+eJQA^E z$|xT*KmX-aqXTm_P4#At+<4*i?-|SMqry_C5CzskJV1SM-pZ4ABip8o(k1|-AW0pq zzGI{3XtXodI*xmG3j3=^qej(%fMkXe69x7bE4!`~Fh;+uW`y+Y- zc=|v@v#V+MyBxVU=Jl@<>TOMWbpvaMYPDVv<1q`0$Ow~V%|zrluq$A0CeFE^I`a$9 z%vPywALo`zm-f)m>5sGC+hncnl+GzD=%@>7u>9`2!9LM!2*Rvv9?sRKR0< z9bYa#OFgM^;@qn&HfK4scbLZ({%|b)Q=kw^ZZho^a83~iuzQDLwb|p~OqmmpHdxs# zuoAt*yN8F&&6KFG_t>*Dpcwf^s@%24!|*hsFyOuKdlYrTN6&3%EJ~TK9_QHpO76_m z3dc`2X{9kiRAMB)C+~f5!@kOlk*W&c{@UQvvjKNjr@6M$<>iyhoVnPfFB3>G#;9N< zpE~+sN3PZdZ)p+FOOYfAI*6!k=^$t>|63v;rBo=OmE=D0!*}~l3Ny?yteBiju7`$l zxt!nrY*tVxDkc9{h!aO9dNi31Qfo1@cUW25=o0EtQ~tlk3Zv7{ORkz1eq>x?BOKgS al>Y$zX=N5TZI{si0000 \ No newline at end of file + \ No newline at end of file diff --git a/frondend/public/favicone.png b/frondend/public/favicone.png new file mode 100644 index 0000000000000000000000000000000000000000..4bc8673d85212b2b3b7314a5a8def4f01db04065 GIT binary patch literal 1294498 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