From 70e78a2b3140b237598768454a27d041ac005361 Mon Sep 17 00:00:00 2001 From: Navid Filsaraee Date: Mon, 15 Jun 2026 19:47:56 +0330 Subject: [PATCH] deploy files added --- Dockerfile | 60 +++ Makefile | 99 +++++ README.md | 353 ++++++++++++++++ docker-compose.yml | 56 +++ pyproject.toml | 5 + uv.lock | 980 +++++++++++++++++++++++++++++++++++++++++++++ uv.toml | 2 + 7 files changed, 1555 insertions(+) create mode 100644 Dockerfile create mode 100644 Makefile create mode 100644 README.md create mode 100644 docker-compose.yml create mode 100644 uv.lock create mode 100644 uv.toml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..82f2c53 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,60 @@ +# ── Stage 1: dependency resolver ───────────────────────────────────────────── +FROM python:3.11-slim AS builder + +# Install uv +COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv + +WORKDIR /app + +# Copy only dependency manifests first (cache layer) +COPY pyproject.toml uv.lock* ./ + +# Install deps into an isolated prefix so we can copy them cleanly +RUN uv sync --frozen --no-dev --no-install-project + +# ── Stage 2: runtime ────────────────────────────────────────────────────────── +FROM python:3.11-slim AS runtime + +# ── Chrome + system deps ────────────────────────────────────────────────────── +RUN apt-get update && apt-get install -y --no-install-recommends \ + wget gnupg ca-certificates curl unzip \ + # X11 / rendering libs needed even in headless mode + libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 \ + libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 \ + libgbm1 libasound2 libpango-1.0-0 libcairo2 libx11-xcb1 \ + && wget -qO- https://dl.google.com/linux/linux_signing_key.pub \ + | gpg --dearmor -o /usr/share/keyrings/google-chrome.gpg \ + && echo "deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome.gpg] \ + http://dl.google.com/linux/chrome/deb/ stable main" \ + > /etc/apt/sources.list.d/google-chrome.list \ + && apt-get update \ + && apt-get install -y --no-install-recommends google-chrome-stable \ + && rm -rf /var/lib/apt/lists/* + +# ── uv + venv from builder ──────────────────────────────────────────────────── +COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv +COPY --from=builder /app/.venv /app/.venv + +WORKDIR /app + +# Make the venv's binaries the default Python +ENV PATH="/app/.venv/bin:$PATH" \ + PYTHONUNBUFFERED=1 \ + PYTHONDONTWRITEBYTECODE=1 \ + # Tell undetected-chromedriver where Chrome lives + CHROME_BINARY=/usr/bin/google-chrome-stable \ + # Always run headless inside Docker + HEADLESS=true + +# ── Application code ────────────────────────────────────────────────────────── +COPY . . + +RUN mkdir -p data + +# Non-root user for safety +RUN useradd -m -u 1001 seed && chown -R seed:seed /app +USER seed + +EXPOSE 8000 + +CMD ["python", "main.py", "admin"] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..908845d --- /dev/null +++ b/Makefile @@ -0,0 +1,99 @@ +.DEFAULT_GOAL := help +SHELL := /bin/bash +UV := uv +PYTHON := $(UV) run python +DATA_DIR := data + +# ── colours ────────────────────────────────────────────────────────────────── +BOLD := $(shell tput bold 2>/dev/null) +RESET := $(shell tput sgr0 2>/dev/null) +GREEN := $(shell tput setaf 2 2>/dev/null) +CYAN := $(shell tput setaf 6 2>/dev/null) + +.PHONY: help install sync lock lint typecheck \ + admin otp fresh \ + build up down logs shell \ + clean + +help: ## Show this help + @awk 'BEGIN{FS=":.*##"} /^[a-zA-Z_-]+:.*##/ {printf " $(CYAN)%-18s$(RESET) %s\n",$$1,$$2}' $(MAKEFILE_LIST) + @echo "" + @echo " $(BOLD)Examples$(RESET)" + @echo " make install # first-time setup" + @echo " make admin # start admin panel → http://localhost:8000" + @echo " make otp PHONE=+989... # run OTP scenario for one phone" + @echo " make otp # run OTP scenario for all phones in .env" + @echo " make fresh # run fresh-session scenario" + @echo " make up # start everything in Docker" + +# ── Local dev ───────────────────────────────────────────────────────────────── + +install: ## Bootstrap: create venv, install all deps (+ dev) + $(UV) sync --all-extras + @mkdir -p $(DATA_DIR) + @echo "$(GREEN)Done.$(RESET) Copy .env.example → .env and fill in your values." + +sync: ## Sync venv with lockfile (fast, no resolution) + $(UV) sync + +lock: ## Re-resolve and update uv.lock + $(UV) lock + +lint: typecheck ## Run all linters + +typecheck: ## Run Pyright type-checker + $(UV) run pyright + +# ── Crawler ─────────────────────────────────────────────────────────────────── + +admin: ## Start the admin panel (http://localhost:8000) + @mkdir -p $(DATA_DIR) + $(PYTHON) main.py admin + +otp: ## Run Scenario 1 — SMS-OTP login (PHONE=+98... or all from .env) + @mkdir -p $(DATA_DIR) +ifdef PHONE + $(PYTHON) main.py otp --phone $(PHONE) +else + $(PYTHON) main.py otp +endif + +fresh: ## Run Scenario 2 — fresh cookie session + @mkdir -p $(DATA_DIR) + $(PYTHON) main.py fresh + +# ── Docker ──────────────────────────────────────────────────────────────────── + +build: ## Build the Docker image + docker compose build + +up: ## Start admin panel in Docker (detached) + docker compose up -d + @echo "$(GREEN)Admin panel:$(RESET) http://localhost:8000" + +down: ## Stop and remove containers + docker compose down + +logs: ## Follow container logs + docker compose logs -f + +shell: ## Open a shell in the running admin container + docker compose exec admin bash + +# Crawler one-shots inside Docker +docker-otp: ## Run OTP scenario in Docker (PHONE=+98...) +ifdef PHONE + docker compose run --rm crawler python main.py otp --phone $(PHONE) +else + docker compose run --rm crawler python main.py otp +endif + +docker-fresh: ## Run fresh-session scenario in Docker + docker compose run --rm crawler python main.py fresh + +# ── Housekeeping ────────────────────────────────────────────────────────────── + +clean: ## Remove venv, cache, and compiled files + rm -rf .venv __pycache__ .pytest_cache .mypy_cache + find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true + find . -name "*.pyc" -delete 2>/dev/null || true diff --git a/README.md b/README.md new file mode 100644 index 0000000..af8c83c --- /dev/null +++ b/README.md @@ -0,0 +1,353 @@ +# Seed + +Stealth web crawler with a live admin panel. +Bypasses Cloudflare / ArvanCloud bot-detection, executes configurable user flows, and tracks every run in a SQLite-backed dashboard. + +--- + +## Table of Contents + +1. [Overview](#overview) +2. [Architecture](#architecture) +3. [Project Structure](#project-structure) +4. [Prerequisites](#prerequisites) +5. [Quick Start — Local](#quick-start--local) +6. [Quick Start — Docker](#quick-start--docker) +7. [Configuration](#configuration) +8. [Scenarios](#scenarios) +9. [Dynamic Flow System](#dynamic-flow-system) +10. [Admin Panel](#admin-panel) +11. [Makefile Reference](#makefile-reference) +12. [Extending the Crawler](#extending-the-crawler) + +--- + +## Overview + +Seed runs two independent entry scenarios on a target website and then executes a fully configurable multi-step flow after each login: + +| Scenario | Description | +|---|---| +| **OTP Login** | Types a phone number into the site's login form, waits for an SMS-OTP, submits it, then runs the flow | +| **Fresh Session** | Opens the browser with a clean cookie jar / localStorage so the site treats the visitor as a brand-new user, then runs the flow | + +The **flow** consists of three automatic steps configured live from the admin panel: + +1. **Search** — types one or more search texts into a configurable search box +2. **Infinite Scroll** — scrolls down (window or a specific container) until a target item appears or a scroll limit is hit +3. **Click** — clicks each target item by its ID + +Every run — success or failure — is recorded in SQLite and visible on the dashboard. + +--- + +## Architecture + +``` +Browser (undetected-chromedriver + selenium-stealth) + │ + ├── Scenario 1: OTP Login ──┐ + └── Scenario 2: Fresh Session ┘ + │ + DynamicFlow + (reads active config + from SQLite at runtime) + │ + ┌──────────────┼──────────────┐ + search_step scroll_step click_step + │ + SQLite (data/tracker.db) + │ + FastAPI Admin Panel + (dashboard + flow config CRUD) +``` + +- **Anti-detection**: `undetected-chromedriver` patches Chrome's automation flags; `selenium-stealth` masks `navigator.webdriver`, plugins, and language headers. A random user-agent is chosen per session. +- **Flow config is hot**: the crawler reads the active config from the DB on every run — no restart needed after editing a config in the admin panel. +- **SQLite**: zero-infrastructure database. In Docker it lives on a named volume (`seed-data`) so it survives container rebuilds. + +--- + +## Project Structure + +``` +seed/ +├── crawler/ +│ ├── driver.py # stealth Chrome factory + human_delay helper +│ ├── dynamic_flow.py # search → scroll → click executor +│ ├── flow_runner.py # legacy step-registry runner (extendable) +│ └── scenarios/ +│ ├── otp_login.py # Scenario 1: SMS-OTP login +│ └── fresh_session.py # Scenario 2: fresh cookie session +├── admin/ +│ ├── main.py # FastAPI app wiring +│ ├── models.py # SQLite DDL + async CRUD helpers +│ ├── routes.py # REST endpoints (stats + flow config CRUD) +│ └── static/ +│ └── dashboard.html # Single-file SPA (no build step) +├── config.py # Typed config from environment / .env +├── main.py # CLI entry point +├── pyproject.toml # deps + Pyright config +├── uv.toml # uv index override (forces PyPI) +├── Makefile # developer shortcuts +├── Dockerfile # multi-stage: builder + runtime (Chrome included) +├── docker-compose.yml # admin service + on-demand crawler service +└── .env.example # all configurable variables with defaults +``` + +--- + +## Prerequisites + +### Local + +| Tool | Version | Notes | +|---|---|---| +| Python | ≥ 3.11 | | +| [uv](https://docs.astral.sh/uv/) | latest | `curl -LsSf https://astral.sh/uv/install.sh \| sh` | +| Google Chrome | any recent | must be installed on the host | + +### Docker + +| Tool | Notes | +|---|---| +| Docker ≥ 24 | | +| Docker Compose v2 | bundled with Docker Desktop | + +Chrome is installed inside the Docker image — no host Chrome needed. + +--- + +## Quick Start — Local + +```bash +# 1. Clone and enter the project +git clone seed && cd seed + +# 2. Install dependencies (creates .venv automatically) +make install + +# 3. Configure +cp .env.example .env +$EDITOR .env # set TARGET_URL, PHONE_NUMBERS, ADMIN_PASSWORD, … + +# 4. Start the admin panel +make admin +# → http://localhost:8000 + +# 5. In another terminal — run a scenario +make fresh # fresh-session scenario +make otp # all phones from PHONE_NUMBERS in .env +make otp PHONE=+98910... # single phone +``` + +--- + +## Quick Start — Docker + +```bash +# 1. Copy and fill in the env file +cp .env.example .env +$EDITOR .env + +# 2. Build the image +make build + +# 3. Start the admin panel (detached) +make up +# → http://localhost:8000 + +# 4. Run scenarios inside Docker +make docker-fresh +make docker-otp PHONE=+98910... + +# 5. Watch logs +make logs + +# 6. Stop everything +make down +``` + +The SQLite database is stored in the `seed-data` Docker volume and persists across rebuilds. + +--- + +## Configuration + +Copy `.env.example` to `.env` and set values before running anything. + +| Variable | Default | Description | +|---|---|---| +| `TARGET_URL` | `https://example.com` | The website to crawl | +| `ADMIN_USERNAME` | `admin` | Admin panel username | +| `ADMIN_PASSWORD` | `changeme` | Admin panel password — **change this** | +| `ADMIN_HOST` | `127.0.0.1` | Bind address for FastAPI (Docker overrides to `0.0.0.0`) | +| `ADMIN_PORT` | `8000` | Port for the admin panel | +| `DB_PATH` | `data/tracker.db` | Path to the SQLite file | +| `HEADLESS` | `true` | Set to `false` to watch the browser (local only) | +| `CHROME_BINARY` | _(auto)_ | Explicit path to Chrome, e.g. `/usr/bin/google-chrome-stable` | +| `PHONE_NUMBERS` | _(empty)_ | Comma-separated list of phone numbers for Scenario 1 | +| `FLOW_STEPS` | `step_home` | Comma-separated step names for the legacy step-registry runner | + +--- + +## Scenarios + +### Scenario 1 — SMS-OTP Login (`crawler/scenarios/otp_login.py`) + +1. Navigates to `TARGET_URL` +2. Finds the phone-number input (CSS / XPath selector, configurable at top of file) +3. Types the phone number character-by-character (human pacing) +4. Clicks the "Send OTP" button +5. Calls `otp_resolver(phone)` in a polling loop (up to 12 × 5–8 s) — **you must implement this** to fetch the OTP from your SMS gateway / webhook +6. Types the OTP and confirms login +7. Waits for a success indicator on the page + +**To wire up your SMS gateway**, edit `otp_resolver` inside `main.py → run_otp()`: + +```python +def otp_resolver(phone: str) -> str: + # Example: poll your own API + resp = httpx.get(f"https://sms-api.example.com/latest?phone={phone}", timeout=5) + return resp.json().get("code", "") +``` + +**To update selectors** to match the target site, edit the class-level constants at the top of `OTPLoginScenario`: + +```python +_PHONE_FIELD_SELECTOR = (By.CSS_SELECTOR, "input[name='mobile']") +_OTP_FIELD_SELECTOR = (By.CSS_SELECTOR, "input[name='code']") +_SUCCESS_INDICATOR = (By.CSS_SELECTOR, ".home-feed") +``` + +### Scenario 2 — Fresh Session (`crawler/scenarios/fresh_session.py`) + +1. Calls `driver.delete_all_cookies()` +2. Clears `localStorage` and `sessionStorage` via JavaScript +3. Navigates to `TARGET_URL` +4. Waits for `document.readyState === 'complete'` + +Each invocation of this scenario gets a brand-new Chrome profile via `undetected-chromedriver`, so no state leaks between runs even without explicit clearing. + +--- + +## Dynamic Flow System + +After either scenario completes login / session setup, `DynamicFlow` runs the configured steps. +**All settings are edited live from the admin panel** — no code changes or restarts needed. + +### How it works + +``` +For each search_text in config: + 1. search_step → find search box → type text → submit → wait for results + 2. For each target_item_id in config: + scroll_step → scroll until item selector matches (or max_scrolls hit) + click_step → scroll element into view → click it +``` + +### Selector templates + +The **Item Selector Template** field supports a `{item_id}` placeholder: + +| Template | Item ID | Resolved selector | +|---|---|---| +| `[data-id='{item_id}']` | `prod-123` | `[data-id='prod-123']` | +| `.result[data-sku="{item_id}"]` | `SKU-99` | `.result[data-sku="SKU-99"]` | +| `.product-card` | _(any)_ | `.product-card` (first visible match) | + +Both CSS and XPath are supported for every selector field. + +### Infinite scroll behaviour + +| Config field | Effect | +|---|---| +| `Scroll Container Selector` | Scrolls this element; blank → scrolls `window` | +| `Max Scrolls` | Hard limit — aborts after this many scroll iterations | +| `Scroll Pause (ms)` | Sleep between each scroll to let new content load | +| `No New Content Timeout (ms)` | If the DOM height hasn't grown for this long → stop and mark as failed | + +--- + +## Admin Panel + +Accessible at `http://localhost:8000` (credentials from `.env`). + +### Dashboard tab + +| Widget | Shows | +|---|---| +| Stat cards | Total runs · Unique identifiers · Successes · Failures · Success rate | +| Scenario Breakdown | Bar chart: success rate per scenario (`otp` / `fresh`) | +| Top Failure Reasons | Most frequent error strings with counts | +| Recent Runs table | Last 50 runs with ID, time, scenario, identifier, status, duration, failure reason | + +Auto-refreshes every 15 seconds. + +### Flow Configs tab + +Create, edit, activate, and delete flow configurations. +Only one config is **active** at a time; the crawler reads it on every run. + +Each config stores: +- Search texts (one per line) +- Search box selector + type (CSS / XPath) +- Optional submit button selector (falls back to Enter key) +- Results container selector (waited for after search) +- Scroll container selector, max scrolls, pause, no-new-content timeout +- Item selector template + type +- Target item IDs (one per line) + +--- + +## Makefile Reference + +``` +make install Bootstrap: create venv, install all deps +make sync Sync venv with lockfile (fast) +make lock Re-resolve and update uv.lock +make typecheck Run Pyright +make lint Alias for typecheck + +make admin Start admin panel locally → http://localhost:8000 +make otp Run OTP scenario (all phones from .env) +make otp PHONE=+98... Run OTP scenario for one phone +make fresh Run fresh-session scenario + +make build Build Docker image +make up Start admin panel in Docker (detached) +make down Stop containers +make logs Follow container logs +make shell Shell into the running admin container +make docker-otp Run OTP scenario inside Docker +make docker-fresh Run fresh-session scenario inside Docker + +make clean Remove .venv, __pycache__, .pyc files +``` + +--- + +## Extending the Crawler + +### Add a new flow step (legacy registry) + +```python +# crawler/flow_runner.py +@register_step("step_add_to_cart") +def step_add_to_cart(driver: uc.Chrome) -> dict[str, object]: + btn = driver.find_element(By.CSS_SELECTOR, "button.add-to-cart") + btn.click() + return {"added": True} +``` + +Then set `FLOW_STEPS=step_home,step_add_to_cart` in `.env`. +These static steps run in addition to (after) the dynamic flow. + +### Add a new scenario + +1. Create `crawler/scenarios/my_scenario.py` with a class following the same pattern as `OTPLoginScenario` +2. Add a branch in `main.py` and `Makefile` + +### Use a remote WebDriver (Selenium Grid) + +Replace `make_driver()` in `crawler/driver.py` with a `webdriver.Remote(...)` call pointing at your Grid hub. diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..3bc3023 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,56 @@ +services: + + # ── Admin panel (FastAPI) ──────────────────────────────────────────────────── + admin: + build: . + image: seed:latest + container_name: seed-admin + restart: unless-stopped + command: python main.py admin + ports: + - "${ADMIN_PORT:-8000}:8000" + env_file: + - .env + environment: + # Override host so FastAPI binds on all interfaces inside the container + ADMIN_HOST: "0.0.0.0" + DB_PATH: /app/data/tracker.db + HEADLESS: "true" + volumes: + - seed-data:/app/data + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 10s + + # ── Crawler (one-shot, started manually or via make docker-otp / docker-fresh) + crawler: + build: . + image: seed:latest + container_name: seed-crawler + # No restart — run on demand + restart: "no" + profiles: + - crawler # docker compose --profile crawler run crawler python main.py otp + env_file: + - .env + environment: + DB_PATH: /app/data/tracker.db + HEADLESS: "true" + CHROME_BINARY: /usr/bin/google-chrome-stable + volumes: + - seed-data:/app/data + # Chrome needs /dev/shm enlarged to avoid OOM crashes + shm_size: "256mb" + # Required capabilities for Chrome sandbox inside Docker + cap_add: + - SYS_ADMIN + security_opt: + - seccomp:unconfined + +volumes: + # Named volume — SQLite file persists across container restarts and rebuilds + seed-data: + driver: local diff --git a/pyproject.toml b/pyproject.toml index d2563ba..45c76c2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,3 +22,8 @@ reportMissingImports = true reportMissingTypeStubs = false venvPath = "." venv = ".venv" + +[dependency-groups] +dev = [ + "pyright>=1.1.370", +] diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..c646333 --- /dev/null +++ b/uv.lock @@ -0,0 +1,980 @@ +version = 1 +revision = 3 +requires-python = ">=3.11" + +[[package]] +name = "aiosqlite" +version = "0.22.1" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/aiosqlite/0.22.1/aiosqlite-0.22.1.tar.gz", hash = "sha256:043e0bd78d32888c0a9ca90fc788b38796843360c855a7262a532813133a0650" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/aiosqlite/0.22.1/aiosqlite-0.22.1-py3-none-any.whl", hash = "sha256:21c002eb13823fad740196c5a2e9d8e62f6243bd9e7e4a1f87fb5e44ecb4fceb" }, +] + +[[package]] +name = "annotated-doc" +version = "0.0.4" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/annotated-doc/0.0.4/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/annotated-doc/0.0.4/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/annotated-types/0.7.0/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/annotated-types/0.7.0/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53" }, +] + +[[package]] +name = "anyio" +version = "4.13.0" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "idna" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/anyio/4.13.0/anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/anyio/4.13.0/anyio-4.13.0-py3-none-any.whl", hash = "sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708" }, +] + +[[package]] +name = "attrs" +version = "26.1.0" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/attrs/26.1.0/attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/attrs/26.1.0/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309" }, +] + +[[package]] +name = "certifi" +version = "2026.5.20" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/certifi/2026.5.20/certifi-2026.5.20.tar.gz", hash = "sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/certifi/2026.5.20/certifi-2026.5.20-py3-none-any.whl", hash = "sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897" }, +] + +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/cffi/2.0.0/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/cffi/2.0.0/cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/cffi/2.0.0/cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/cffi/2.0.0/cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/cffi/2.0.0/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/cffi/2.0.0/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/cffi/2.0.0/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/cffi/2.0.0/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/cffi/2.0.0/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/cffi/2.0.0/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/cffi/2.0.0/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/cffi/2.0.0/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/cffi/2.0.0/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/cffi/2.0.0/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/cffi/2.0.0/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/cffi/2.0.0/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.7" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7641bb8895e77f921102f72833904dcd9901df5d6d72a2ab8f31d04b7e51e4e7" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:202389074300232baeb53ae2569a60901f7efadd4245cf3a3bf0617d60b439d7" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:30b8d1d8c52a48c2c5690e152c169b673487a2a58de1ec7393196753063fcd5e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:532bc9bf33a68613fd7d65e4b1c71a6a38d7d42604ecf239c77392e9b4e8998c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fe249cb4651fd12605b7288b24751d8bfd46d35f12a20b1ba33dea122e690df" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:65bcd23054beab4d166035cabbc868a09c1a49d1efe458fe8e4361215df40265" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:08e721811161356f97b4059a9ba7bafb23ea5ee2255402c42881c214e173c6b4" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e060d01aec0a910bdccb8be71faf34e7799ce36950f8294c8bf612cba65a2c9e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:38c0109396c4cfc574d502df99742a45c72c08eff0a36158b6f04000043dbf38" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1c2a768fdd44ee4a9339a9b0b130049139b8ce3c01d2ce09f67f5a68048d477c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:1a87ca9d5df6fe460483d9a5bbf2b18f620cbed41b432e2bddb686228282d10b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:d635aab80466bc95771bb78d5370e74d36d1fe31467b6b29b8b57b2a3cd7d22c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ae196f021b5e7c78e918242d217db021ed2a6ace2bc6ae94c0fc596221c7f58d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp311-cp311-win32.whl", hash = "sha256:adb2597b428735679446b46c8badf467b4ca5f5056aae4d51a19f9570301b1ad" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:8e385e4267ab76874ae30db04c627faaaf0b509e1ccc11a95b3fc3e83f855c00" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:d4a48e5b3c2a489fae013b7589308a40146ee081f6f509e047e0e096084ceca1" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6178f72c5508bfc5fd446a5905e698c6212932f25bcdd4b47a757a50605a90e2" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e1421b502d83040e6d7fb2fb18dff63957f720da3d77b2fbd3187ceb63755d7b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:edac0f1ab77644605be2cbba52e6b7f630731fc42b34cb0f634be1a6eface56a" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:203104ed3e428044fd943bc4bf45fa73c0730391f9621e37fe39ecf477b128cb" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:298930cec56029e05497a76988377cbd7457ba864beeea92ad7e844fe74cd1f1" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:708838739abf24b2ceb208d0e22403dd018faeef86ddac04319a62ae884c4f15" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4ba96f27b76084cd679f5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df2860804db9a98c48824ce8d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2dd20cdbf6ea7a450046c7" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf3201e6c4bc1b0c7fa464" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549b1abcb31dfe4a8eac49" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp312-cp312-win32.whl", hash = "sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b8518666a2c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e0604d49c51d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a5fd921c65d39cbcef08063" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ea948db76d31190bf08bd371623927ee1339d5f2a0b4b1b4a4439a65298703c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a277ab8928b9f299723bc1a2dabb1265911b1a76341f90a510368ca44ad9ab66" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3bec022aec2c514d9cf199522a802bd007cd588ab17ab2525f20f9c34d067c18" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e044c39e41b92c845bc815e5ae4230804e8e7bc29e399b0437d64222d92809dd" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d87ca07f9d5f059b8bd215" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e712b419df8ba5e42b226c510472b37bd57b38e897d3eca5e8cfd410a29fa859" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770d5bdd5288ddccb8a42d8" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:481551899c856c704d58119b5025793fa6730adda3571971af568f66d2424bb5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b234a5a6b3f00437aa0832" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4cce5f622761507b8f6a6" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606c55892a26964964e48" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d5276069175c696b024b60a" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp313-cp313-win32.whl", hash = "sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc34c5e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa767dab110" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4dd662b15b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c2aed2e5e41f24ea8ef1590b8e848a79b56f3a5564a65ceec43c9d692dc7d8a" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:54523e136b8948060c0fa0bc7b1b50c32c186f2fceee897a495406bb6e311d2b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:715479b9a2802ecac752a3b0efa2b0b60285cf962ee38414211abdfccc233b41" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59f3907f4e17721b9d1aae" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3534e7dcbdcf757da6b85a0bbf5b6868786d5982dd959b065e65481644817a18" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e8ac484bf18ce6975760921bb6148041faa8fef0547200386ea0b52b5d27bf7b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53fd1749f5896adcdc2356" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57ddf5b1142ae3f86824fab" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e74327fb75de8986940def6e8dee4f127cc9752bee7355bb323cc5b2659b6d46" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd65217cefe82f25def44" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05acdbdca71a1b436d8e72" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314-win32.whl", hash = "sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410ec10" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314-win_amd64.whl", hash = "sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab6627dbbe12f" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314-win_arm64.whl", hash = "sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba3e63c246" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:effc3f449787117233702311a1b7d8f59cba9ced946ba727bdc329ec69028e24" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fbccdc05410c9ee21bbf16a35f4c1d16123dcdeb8a1d38f33654fa21d0234f79" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:733784b6d6def852c814bce5f318d25da2ee65dd4839a0718641c696e09a2960" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a89c23ef8d2c6b27fd200a42aa4ac72786e7c60d40efdc76e6011260b6e949c4" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6c114670c45346afedc0d947faf3c7f701051d2518b943679c8ff88befe14f8e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9f70628e73de370d55e1e1" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3c9a494bc5ec77d43cea229c4f6db1e4d8fe7e1bbffa8b6f0f0032430ff8ab44" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97ae6c4de2860fa749b8fc1e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284cc94962cb73d20f9d4a3" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0c96c3b819b5c3e9e165495db84d41914d6894d55181d2d108cc1a69bfc9cce0" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82be64bc4fc293914566503e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164b981b9c5ce059cd1fcb" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e1e75f0041f3fe7020abe" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314t-win32.whl", hash = "sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615339a0" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314t-win_amd64.whl", hash = "sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a27370ea61a49c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-cp314-cp314t-win_arm64.whl", hash = "sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a763c1f083d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/charset-normalizer/3.4.7/charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d" }, +] + +[[package]] +name = "click" +version = "8.4.1" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/click/8.4.1/click-8.4.1.tar.gz", hash = "sha256:918b5633eddf6b41c32d4f454bf0de810065c74e3f7dbf8ee5452f8be88d3e96" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/click/8.4.1/click-8.4.1-py3-none-any.whl", hash = "sha256:482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/colorama/0.4.6/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/colorama/0.4.6/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" }, +] + +[[package]] +name = "fastapi" +version = "0.137.1" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "annotated-doc" }, + { name = "pydantic" }, + { name = "starlette" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/fastapi/0.137.1/fastapi-0.137.1.tar.gz", hash = "sha256:822360704230d9533d8d9475399613525968aa2f0b5bd2a3ccc9f18c88fd541c" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/fastapi/0.137.1/fastapi-0.137.1-py3-none-any.whl", hash = "sha256:64f6983c59e45c4b9fdc44e57cb8035c2451ee91ea8e8ec042aca37de7cf6b69" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/h11/0.16.0/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/h11/0.16.0/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/httpcore/1.0.9/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httpcore/1.0.9/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55" }, +] + +[[package]] +name = "httptools" +version = "0.8.0" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0.tar.gz", hash = "sha256:6b2a32f18d97e16e90827d7a819ffa8dbd8cc245fc4e1fa9d1095b54ef4bd999" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ed377e64805bdba4943c82717333f8f8603a13b09aff9cead2717c6c817fb168" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9518c406d7b310f05adb1a37f80acabac40504a575d7c0da6d3e365c695ac20d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:57278e6fa0424c42a8a3e454828ab4f0aff27b40cddf9679579b98c6dce6a376" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bbb8caadb2b742d293169d2b458b5c001ef70e3158704aa3d3ef9597624c5d1d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:52dd695b865fe96d9d2b16b64a895f3f57bf3cb064e8383cd3b5713a069e8085" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:20b4aac66ff65f7db06a375808b78f42a94970aa22e826b3cb2b43eb09174124" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1b4c8e7a489a0d750d91894e9a8cdc295838f1924c0ca903ae993456fddec07" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:880490234c10f70a9830743097e8958d6e4b9f5a0ffc24515023afeef984054d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5931891fb7b441b8a3853cf1b85c82c903defce084dd5f6771ca46e31bf862c5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b15fc622b0f869d19207c4089a501d9bcc63ca5e071ffdd2f03f922df882dcb2" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:425f83884fd6343828d8c565f046cb72b6d19063f6924093e11bcd8e1548cd09" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ef7c3c97f4311c7be57e2986629df89d49cb434dbff78eafcd48c2bff986b15a" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a1afd7c9fbff0d9f5d489c4ce2768bd09c84a46ddefc7161e6aa82ae35c85745" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:cd96f29b4bab1d42fa6e3d008711c75e0f79e94e06827330160e3a304227f150" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:614ceea8ea606848bece2338ac03b3ce5324bcb4be8dc7d377ed708012fa4db8" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2d689918c15a013c65ef52d9fd495d766893ab831a2c8d89f2ac5940a5df847c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:eb3028cca2fc0a6d720e52ef61d8ebb62fcbfeb1de56874546d858d3f25a26b7" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:88bdd940f2b5d487b4d032c6afa5489a7dc4694410d43de3c38c4fb3af0dc45d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6a43c9dd399758ccc0531acb0a3c4a6c299ee893ee9400e9c893b7bdcfae0681" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0770728beb05094c809b98e814edff5fef69d26ad7d21185f2f6d5884a0ba683" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:7685df791fad561384bfb139e77fde27a1ffd93134e016f95a0db424ffbf77b1" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:de242a49b5d18e0a8776e654e9f6bf6d89f3875a5c35b425a0e7ce940feb3fd6" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:159e9ab5f701ccd42e555a12f1ad8ff69702910fc1c996cf2bb66e5fcb7a231b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c4a9f1707e4823d54dfec6c33fa3697d302aed536ed352a7ebb5a061ddb869d0" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d76ad7b951387e3632c8716a9bb03ac5b45c5f16119aa409db0459520887944e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a3b7387147361c3fd47a0bde763c5c91b5b4cd4dc9989b8ece84ff436c99843b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f256d6ce930c52ca1cb2a960b7da03548c454e7d28b06059ad41bfe789036ce0" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:19d1ee275bb59ba2643ba9a3a1e51cc0c788caf2b8df506368e03f56fdd08527" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:de1ed58a974e75d56560acc7e7fed01a454994429456f65209789992e41f2568" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e93c227b595c6926c1acee96891dd9da4be338cfbe82e5cd3bb9d8dd7dc4ac0b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2a021c3a8e65cc125390d72f59b968afca3bdcaff25bd67965e0a055a14946ca" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:48774d39cbb70e2b1f71f88852a3087ae1d3a1eb80482bb48c13067ab080c14f" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:88eead8ec8680a9f146c655bc88445a325bd7921cfd8194c7337e9467282427d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:2c032fa028f46871ec7e1fc59fc15e8023eab3e6bbe6ece786a1611719a5d081" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httptools/0.8.0/httptools-0.8.0-cp314-cp314t-win_amd64.whl", hash = "sha256:384c17174464c8e873398b7af24f0b1f44d992c820328413951a625323155d77" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/httpx/0.28.1/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/httpx/0.28.1/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad" }, +] + +[[package]] +name = "idna" +version = "3.18" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/idna/3.18/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/idna/3.18/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2" }, +] + +[[package]] +name = "nodeenv" +version = "1.10.0" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/nodeenv/1.10.0/nodeenv-1.10.0.tar.gz", hash = "sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/nodeenv/1.10.0/nodeenv-1.10.0-py2.py3-none-any.whl", hash = "sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827" }, +] + +[[package]] +name = "outcome" +version = "1.3.0.post0" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "attrs" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/outcome/1.3.0.post0/outcome-1.3.0.post0.tar.gz", hash = "sha256:9dcf02e65f2971b80047b377468e72a268e15c0af3cf1238e6ff14f7f91143b8" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/outcome/1.3.0.post0/outcome-1.3.0.post0-py2.py3-none-any.whl", hash = "sha256:e771c5ce06d1415e356078d3bdd68523f284b4ce5419828922b6871e65eda82b" }, +] + +[[package]] +name = "pycparser" +version = "3.0" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/pycparser/3.0/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pycparser/3.0/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992" }, +] + +[[package]] +name = "pydantic" +version = "2.13.4" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic/2.13.4/pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic/2.13.4/pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba" }, +] + +[[package]] +name = "pydantic-core" +version = "2.46.4" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0e96592440881c74a213e5ad528e2b24d3d4f940de2766bed9010ab1d9e51594" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0d65b8c354be7fb5f720c3caa8bc940bc2d20ce749c8e06135f07f8ed95dd7c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bfb192b3f4b9e8a89b6277b6ce787564f62cfd272055f6e685726b111dc7826" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9037063db01f09b09e237c282b6792bd4da634b5402c4e7f0c61effed7701a04" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc010ab034c8c7452522748bf937df58020d256ccae0874463d1f4d01758af8e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c5dac79fa1614d1e06ca695109c6105923bd9c7d1d6c918d4e637b7e6b32fd3" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9fa868638bf362d3d138ea55829cefb3d5f4b0d7f142234382a15e2485dbec4" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:17299feefe090f2caa5b8e37222bb5f663e4935a8bfa6931d4102e5df1a9f398" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4c63ebc82684aa89d9a3bcbd13d515b3be44250dc68dd3bd81526c1cb31286c3" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:aaa2a54443eff1950ba5ddc6b6ccda0d9c84a364276a62f969bdf2a390650848" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:18e5ceec2ab67e6d5f1a9085e5a24c9c4e2ac4545730bfe668680bca05e555f3" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a0f62d0a58f4e7da165457e995725421e0064f2255d8eccebc49f41bbc23b109" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp311-cp311-win32.whl", hash = "sha256:041bde0a48fd37cf71cab1c9d56d3e8625a3793fef1f7dd232b3ff37e978ecda" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp311-cp311-win_amd64.whl", hash = "sha256:6f2eeda33a839975441c86a4119e1383c50b47faf0cbb5176985565c6bb02c33" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp311-cp311-win_arm64.whl", hash = "sha256:14f4c5d6db102bd796a627bbb3a17b4cf4574b9ae861d8b7c9a9661c6dd3362d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3245406455a5d98187ec35530fd772b1d799b26667980872c8d4614991e2c4a2" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:962ccbab7b642487b1d8b7df90ef677e03134cf1fd8880bf698649b22a69371f" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8233f2947cf85404441fd7e0085f53b10c93e0ee78611099b5c7237e36aacbf7" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a233125ac121aa3ffba9a2b59edfc4a985a76092dc8279586ab4b71390875e7" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b712b53160b79a5850310b912a5ef8e57e56947c8ad690c227f5c9d7e561712" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9401557acd873c3a7f3eb9383edef8ac4968f9510e340f4808d427e75667e7b4" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:926c9541b14b12b1681dca8a0b75feb510b06c6341b70a8e500c2fdcff837cce" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:56cb4851bcaf3d117eddcef4fe66afd750a50274b0da8e22be256d10e5611987" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c68fcd102d71ea85c5b2dfac3f4f8476eff42a9e078fd5faefff6d145063536b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b2f69dec1725e79a012d920df1707de5caf7ed5e08f3be4435e25803efc47458" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:8d0820e8192167f80d88d64038e609c31452eeca865b4e1d9950a27a4609b00b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fbdb89b3e1c94a30cc5edfce477c6e6a5dc4d8f84665b455c27582f211a1c72c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp312-cp312-win32.whl", hash = "sha256:9aa768456404a8bf48a4406685ac2bec8e72b62c69313734fa3b73cf33b3a894" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl", hash = "sha256:e9c26f834c65f5752f3f06cb08cb86a913ceb7274d0db6e267808a708b46bc89" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp312-cp312-win_arm64.whl", hash = "sha256:4fc73cb559bdb54b1134a706a2802a4cddd27a0633f5abb7e53056268751ac6a" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5d5902252db0d3cedf8d4a1bc68f70eeb430f7e4c7104c8c476753519b423008" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c94f0688e7b8d0a67abf40e57a7eaaecd17cc9586706a31b76c031f63df052b4" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f027324c56cd5406ca49c124b0db10e56c69064fec039acc571c29020cc87c76" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e739fee756ba1010f8bcccb534252e85a35fe45ae92c295a06059ce58b74ccd3" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d56801be94b86a9da183e5f3766e6310752b99ff647e38b09a9500d88e46e76" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2412e734dcb48da14d4e4006b82b46b74f2518b8a26ee7e58c6844a6cd6d03c4" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9551187363ffc0de2a00b2e47c25aeaeb1020b69b668762966df15fc5659dd5a" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:0186750b482eefa11d7f435892b09c5c606193ef3375bcf94aa00ae6bfb66262" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5855698a4856556d86e8e6cd8434bc3ac0314ee8e12089ae0e143f64c6256e4e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:cbaf13819775b7f769bf4a1f066cb6df7a28d4480081a589828ef190226881cd" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:633147d34cf4550417f12e2b1a0383973bdf5cdfde212cb09e9a581cf10820be" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:82cf5301172168103724d49a1444d3378cb20cdee30b116a1bd6031236298a5d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp313-cp313-win32.whl", hash = "sha256:9fa8ae11da9e2b3126c6426f147e0fba88d96d65921799bb30c6abd1cb2c97fb" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp313-cp313-win_amd64.whl", hash = "sha256:6b3ace8194b0e5204818c92802dcdca7fc6d88aabbb799d7c795540d9cd6d292" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp313-cp313-win_arm64.whl", hash = "sha256:184c081504d17f1c1066e430e117142b2c77d9448a97f7b65c6ac9fd9aee238d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:428e04521a40150c85216fc8b85e8d39fece235a9cf5e383761238c7fa9b96fb" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23ace664830ee0bfe014a0c7bc248b1f7f25ed7ad103852c317624a1083af462" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce5c1d2a8b27468f433ca974829c44060b8097eedc39933e3c206a90ee49c4a9" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7283d57845ecf5a163403eb0702dfc220cc4fbdd18919cb5ccea4f95ee1cdab4" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8daafc69c93ee8a0204506a3b6b30f586ef54028f52aeeeb5c4cfc5184fd5914" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2213145bcc2ba85884d0ac63d222fece9209678f77b9b4d76f054c561adb28" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a5f930472650a82629163023e630d160863fce524c616f4e5186e5de9d9a49b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:c1b3f518abeca3aa13c712fd202306e145abf59a18b094a6bafb2d2bbf59192c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a7dd0b3ee80d90150e3495a3a13ac34dbcbfd4f012996a6a1d8900e91b5c0fb" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:3fb702cd90b0446a3a1c5e470bfa0dd23c0233b676a9099ddcc964fa6ca13898" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b8458003118a712e66286df6a707db01c52c0f52f7db8e4a38f0da1d3b94fc4e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:372429a130e469c9cd698925ce5fc50940b7a1336b0d82038e63d5bbc4edc519" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314-win32.whl", hash = "sha256:85bb3611ff1802f3ee7fdd7dbff26b56f343fb432d57a4728fdd49b6ef35e2f4" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314-win_amd64.whl", hash = "sha256:811ff8e9c313ab425368bcbb36e5c4ebd7108c2bbf4e4089cfbb0b01eff63fac" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314-win_arm64.whl", hash = "sha256:bfec22eab3c8cc2ceec0248aec886624116dc079afa027ecc8ad4a7e62010f8a" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:af8244b2bef6aaad6d92cda81372de7f8c8d36c9f0c3ea36e827c60e7d9467a0" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a4330cdbc57162e4b3aa303f588ba752257694c9c9be3e7ebb11b4aca659b5d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c61fc04a3d840155ff08e475a04809278972fe6aef51e2720554e96367e34b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c50f2528cf200c5eed56faf3f4e22fcd5f38c157a8b78576e6ba3168ec35f000" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0cbe8b01f948de4286c74cdd6c667aceb38f5c1e26f0693b3983d9d74887c65e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:617d7e2ca7dcb8c5cf6bcb8c59b8832c94b36196bbf1cbd1bfb56ed341905edd" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7027560ee92211647d0d34e3f7cd6f50da56399d26a9c8ad0da286d3869a53f3" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:f99626688942fb746e545232e7726926f3be91b5975f8b55327665fafda991c7" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3e9034a63de20e15e8ade85358bc6efc614008cab72898b4b4952bea0509ff" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:97e7cf2be5c77b7d1a9713a05605d49460d02c6078d38d8bef3cbe323c548424" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:3bf92c5d0e00fefaab325a4d27828fe6b6e2a21848686b5b60d2d9eeb09d76c6" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:3ecbc122d18468d06ca279dc26a8c2e2d5acb10943bb35e36ae92096dc3b5565" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314t-win32.whl", hash = "sha256:e846ae7835bf0703ae43f534ab79a867146dadd59dc9ca5c8b53d5c8f7c9ef02" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314t-win_amd64.whl", hash = "sha256:2108ba5c1c1eca18030634489dc544844144ee36357f2f9f780b93e7ddbb44b5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-cp314-cp314t-win_arm64.whl", hash = "sha256:4fcbe087dbc2068af7eda3aa87634eba216dbda64d1ae73c8684b621d33f6596" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:14d4edf427bdcf950a8a02d7cb44a08614388dd6e1bdcbf4f67504fa7887da9c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:0ce40cd7b21210e99342afafbd4d0f76d784eb5b1d60f3bdc566be4983c6c73b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90884113d8b48f760e9587002789ddd741e76ab9f89518cd1e43b1f1a52ec44b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66ce7632c22d837c95301830e111ad0128a32b8207533b60896a96c4915192ea" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:1d8ba486450b14f3b1d63bc521d410ec7565e52f887b9fb671791886436a42f7" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:3009f12e4e90b7f88b4f9adb1b0c4a3d58fe7820f3238c190047209d148026df" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad785e92e6dc634c21555edc8bd6b64957ab844541bcb96a1366c202951ae526" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00c603d540afdd6b80eb39f078f33ebd46211f02f33e34a32d9f053bba711de0" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0c563b08bca408dc7f65f700633d8442fffb2421fc47b8101377e9fd65051ff0" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:db06ffe51636ffe9ca531fe9023dd64bdd794be8754cb5df57c5498ae5b518a7" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:133878133d271ade3d41d1bfb2a45ec38dbdbda40bc065921c6b04e4630127e2" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9bc519fbf2b7578398853d815009ae5e4d4603d12f4e3f91da8c06852d3da3e9" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c7a7bd4e39e8e4c12c39cd480356842b6a8a06e41b23a55a5e3e191718838ddf" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:d396ec2b979760aaf3218e76c24e65bd0aca24983298653b3a9d7a45f9e47b30" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:86e1a4418c6cd97d60c95c71164158eaf7324fae7b0923264016baa993eba6fc" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pydantic-core/2.46.4/pydantic_core-2.46.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:d51026d73fcfd93610abc7b27789c26b313920fcfb20e27462d74a7f8b06e983" }, +] + +[[package]] +name = "pyright" +version = "1.1.410" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "nodeenv" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyright/1.1.410/pyright-1.1.410.tar.gz", hash = "sha256:07a073b8ba6749826773c1269773efa11b93440d9a6aa60419d9a3172d6dc488" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyright/1.1.410/pyright-1.1.410-py3-none-any.whl", hash = "sha256:5e961bed37cacf96b3f7cd7b1da39b350a9239aa2e69138d0e88f728cfaf296c" }, +] + +[[package]] +name = "pysocks" +version = "1.7.1" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/pysocks/1.7.1/PySocks-1.7.1.tar.gz", hash = "sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pysocks/1.7.1/PySocks-1.7.1-py3-none-any.whl", hash = "sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/python-dotenv/1.2.2/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/python-dotenv/1.2.2/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a" }, +] + +[[package]] +name = "python-multipart" +version = "0.0.32" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/python-multipart/0.0.32/python_multipart-0.0.32.tar.gz", hash = "sha256:be54b7f3fa167bb83e4fcd936b887b708f4e57fe75911c02aebf53efaf8d938e" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/python-multipart/0.0.32/python_multipart-0.0.32-py3-none-any.whl", hash = "sha256:ff6d3f776f16878c894e52e107296ffc890e913c611b1a4ec6c44e2821fe2e23" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/pyyaml/6.0.3/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b" }, +] + +[[package]] +name = "requests" +version = "2.34.2" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/requests/2.34.2/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/requests/2.34.2/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0" }, +] + +[[package]] +name = "seed" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "aiosqlite" }, + { name = "fastapi" }, + { name = "httpx" }, + { name = "pydantic" }, + { name = "python-dotenv" }, + { name = "python-multipart" }, + { name = "selenium" }, + { name = "selenium-stealth" }, + { name = "undetected-chromedriver" }, + { name = "uvicorn", extra = ["standard"] }, +] + +[package.dev-dependencies] +dev = [ + { name = "pyright" }, +] + +[package.metadata] +requires-dist = [ + { name = "aiosqlite", specifier = ">=0.20.0" }, + { name = "fastapi", specifier = ">=0.111.0" }, + { name = "httpx", specifier = ">=0.27.0" }, + { name = "pydantic", specifier = ">=2.7.0" }, + { name = "python-dotenv", specifier = ">=1.0.1" }, + { name = "python-multipart", specifier = ">=0.0.9" }, + { name = "selenium", specifier = ">=4.18.0" }, + { name = "selenium-stealth", specifier = ">=1.0.6" }, + { name = "undetected-chromedriver", specifier = ">=3.5.5" }, + { name = "uvicorn", extras = ["standard"], specifier = ">=0.30.0" }, +] + +[package.metadata.requires-dev] +dev = [{ name = "pyright", specifier = ">=1.1.370" }] + +[[package]] +name = "selenium" +version = "4.44.0" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "certifi" }, + { name = "trio" }, + { name = "trio-websocket" }, + { name = "typing-extensions" }, + { name = "urllib3", extra = ["socks"] }, + { name = "websocket-client" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/selenium/4.44.0/selenium-4.44.0.tar.gz", hash = "sha256:b03a831fcfcab9d912b4682f60718c48a04560d6c62f7496c16b7498c9a4427e" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/selenium/4.44.0/selenium-4.44.0-py3-none-any.whl", hash = "sha256:d01ea3e5ecad8149460a765f7cf5177194c21dcc0173093fc05427c289b1bf24" }, +] + +[[package]] +name = "selenium-stealth" +version = "1.0.6" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "selenium" }, +] +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/selenium-stealth/1.0.6/selenium_stealth-1.0.6-py3-none-any.whl", hash = "sha256:b62da5452aa4a84f29a4dfb21a9696aff20788a7c570dd0b81bc04a940848b97" }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/sniffio/1.3.1/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/sniffio/1.3.1/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2" }, +] + +[[package]] +name = "sortedcontainers" +version = "2.4.0" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/sortedcontainers/2.4.0/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/sortedcontainers/2.4.0/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0" }, +] + +[[package]] +name = "starlette" +version = "1.3.1" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "anyio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/starlette/1.3.1/starlette-1.3.1.tar.gz", hash = "sha256:05d0213193f2fbaae60e2ecb593b4add4262ad4e46536b54abe36f11a71724e0" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/starlette/1.3.1/starlette-1.3.1-py3-none-any.whl", hash = "sha256:c7372aae11c3c3f26a42df7bd626cec2f47d03483d261d369516a615a53714c6" }, +] + +[[package]] +name = "trio" +version = "0.33.0" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "attrs" }, + { name = "cffi", marker = "implementation_name != 'pypy' and os_name == 'nt'" }, + { name = "idna" }, + { name = "outcome" }, + { name = "sniffio" }, + { name = "sortedcontainers" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/trio/0.33.0/trio-0.33.0.tar.gz", hash = "sha256:a29b92b73f09d4b48ed249acd91073281a7f1063f09caba5dc70465b5c7aa970" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/trio/0.33.0/trio-0.33.0-py3-none-any.whl", hash = "sha256:3bd5d87f781d9b0192d592aef28691f8951d6c2e41b7e1da4c25cde6c180ae9b" }, +] + +[[package]] +name = "trio-websocket" +version = "0.12.2" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "outcome" }, + { name = "trio" }, + { name = "wsproto" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/trio-websocket/0.12.2/trio_websocket-0.12.2.tar.gz", hash = "sha256:22c72c436f3d1e264d0910a3951934798dcc5b00ae56fc4ee079d46c7cf20fae" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/trio-websocket/0.12.2/trio_websocket-0.12.2-py3-none-any.whl", hash = "sha256:df605665f1db533f4a386c94525870851096a223adcb97f72a07e8b4beba45b6" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/typing-extensions/4.15.0/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/typing-extensions/4.15.0/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.2" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/typing-inspection/0.4.2/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/typing-inspection/0.4.2/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7" }, +] + +[[package]] +name = "undetected-chromedriver" +version = "3.5.5" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "requests" }, + { name = "selenium" }, + { name = "websockets" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/undetected-chromedriver/3.5.5/undetected-chromedriver-3.5.5.tar.gz", hash = "sha256:9f945e1435005247abe17de316bcfda85b284a4177fd5f25167c78ced33b65ec" } + +[[package]] +name = "urllib3" +version = "2.7.0" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/urllib3/2.7.0/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/urllib3/2.7.0/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897" }, +] + +[package.optional-dependencies] +socks = [ + { name = "pysocks" }, +] + +[[package]] +name = "uvicorn" +version = "0.49.0" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "click" }, + { name = "h11" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvicorn/0.49.0/uvicorn-0.49.0.tar.gz", hash = "sha256:ebf4271aa580d9de97f93192d4595176df6e91f9aae919ca73e4fc07df1e66a3" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvicorn/0.49.0/uvicorn-0.49.0-py3-none-any.whl", hash = "sha256:ba3d14c3ee7e41c6c654c46c9eb489d33213cdd30aa1696eab1374337c13f68f" }, +] + +[package.optional-dependencies] +standard = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "httptools" }, + { name = "python-dotenv" }, + { name = "pyyaml" }, + { name = "uvloop", marker = "platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'" }, + { name = "watchfiles" }, + { name = "websockets" }, +] + +[[package]] +name = "uvloop" +version = "0.22.1" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1.tar.gz", hash = "sha256:6c84bae345b9147082b17371e3dd5d42775bddce91f885499017f4607fdaf39f" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c60ebcd36f7b240b30788554b6f0782454826a0ed765d8430652621b5de674b9" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b7f102bf3cb1995cfeaee9321105e8f5da76fdb104cdad8986f85461a1b7b77" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53c85520781d84a4b8b230e24a5af5b0778efdb39142b424990ff1ef7c48ba21" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:56a2d1fae65fd82197cb8c53c367310b3eabe1bbb9fb5a04d28e3e3520e4f702" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40631b049d5972c6755b06d0bfe8233b1bd9a8a6392d9d1c45c10b6f9e9b2733" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:535cc37b3a04f6cd2c1ef65fa1d370c9a35b6695df735fcff5427323f2cd5473" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:fe94b4564e865d968414598eea1a6de60adba0c040ba4ed05ac1300de402cd42" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:51eb9bd88391483410daad430813d982010f9c9c89512321f5b60e2cddbdddd6" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:700e674a166ca5778255e0e1dc4e9d79ab2acc57b9171b79e65feba7184b3370" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b5b1ac819a3f946d3b2ee07f09149578ae76066d70b44df3fa990add49a82e4" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e047cc068570bac9866237739607d1313b9253c3051ad84738cbb095be0537b2" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:512fec6815e2dd45161054592441ef76c830eddaad55c8aa30952e6fe1ed07c0" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:561577354eb94200d75aca23fbde86ee11be36b00e52a4eaf8f50fb0c86b7705" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cdf5192ab3e674ca26da2eada35b288d2fa49fdd0f357a19f0e7c4e7d5077c8" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e2ea3d6190a2968f4a14a23019d3b16870dd2190cd69c8180f7c632d21de68d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0530a5fbad9c9e4ee3f2b33b148c6a64d47bbad8000ea63704fa8260f4cf728e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bc5ef13bbc10b5335792360623cc378d52d7e62c2de64660616478c32cd0598e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1f38ec5e3f18c8a10ded09742f7fb8de0108796eb673f30ce7762ce1b8550cad" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3879b88423ec7e97cd4eba2a443aa26ed4e59b45e6b76aabf13fe2f27023a142" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4baa86acedf1d62115c1dc6ad1e17134476688f08c6efd8a2ab076e815665c74" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:297c27d8003520596236bdb2335e6b3f649480bd09e00d1e3a99144b691d2a35" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1955d5a1dd43198244d47664a5858082a3239766a839b2102a269aaff7a4e25" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b31dc2fccbd42adc73bc4e7cdbae4fc5086cf378979e53ca5d0301838c5682c6" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:93f617675b2d03af4e72a5333ef89450dfaa5321303ede6e67ba9c9d26878079" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:37554f70528f60cad66945b885eb01f1bb514f132d92b6eeed1c90fd54ed6289" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:b76324e2dc033a0b2f435f33eb88ff9913c156ef78e153fb210e03c13da746b3" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:badb4d8e58ee08dad957002027830d5c3b06aea446a6a3744483c2b3b745345c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b91328c72635f6f9e0282e4a57da7470c7350ab1c9f48546c0f2866205349d21" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:daf620c2995d193449393d6c62131b3fbd40a63bf7b307a1527856ace637fe88" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/uvloop/0.22.1/uvloop-0.22.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6cde23eeda1a25c75b2e07d39970f3374105d5eafbaab2a4482be82f272d5a5e" }, +] + +[[package]] +name = "watchfiles" +version = "1.2.0" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0.tar.gz", hash = "sha256:c995fba777f1ea992f090f9236e9284cf7a5d1a0130dd5a3d82c598cacd76838" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:704fd259e332e01f9b9c178f4bce9e49027e5587cc2600eeeaf8e76e1c846201" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6543cf55d170003296d185c0af981f3e1311564907e1f4e08671fc7693a890a5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89d8c2394a065ca86f5d2910ff263ae67c127e1376ccc4f9fc35c71db879f80a" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:772b80df316480d894a0e3165fdd19cf77f5d17f9a787f94029465ad0e3529d1" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d158cd89df6053823533e06fb1d73c549133bff5f0396170c0e53d9559340717" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d516b3283a758e087841aedb8031549fb41ced08f3db10aa6d2bf32dc042525b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:53b2290c92e0506d102cd448fbc610d87079553f86caa39d67440856a8b8bba5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a711b51aec4370d0dcda5b6c09463206f133a5759341d7744b953a7b62e1100e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:e2ca07fa7d89195ec0865d3d285666286740bfa83d83e5cee204043a31ecc165" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e0618518f282c4ebff60f5e5b1247b6d91bb8b9f4476947563a1e74acc66f3c6" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0d191c054d0715c3c95c99df9b8dbf6fd096d8c1e021e8f212e1bd8bc444ccb5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp311-cp311-win32.whl", hash = "sha256:9342472aff9b093c5acd4f6d8f70ae0937964ab56542502bcf5579782da69ae8" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:dbd6c97045dad81227c8d040173da044c1de08de64a5ea8b555da4aee1d5fa22" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:57a2d9fa4fb4c2ecae57b13dfff2c7ab53e21a2ba674fe9f05506680fcdcc0d7" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:bc13eb17538be00c874699dc0abe4ee2bc8d50bb1166a6b9e175ef3fd7eb8f26" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2d95ddc1eb6914154253d239089900813f6a767e174b8e6a50e7fdacb7e4236c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f70d8b291ef6e88d19b1f297a6905ddb978888d9272b0d05e6f53309856bcfc" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:56d8641cf834c2836922899105bd3ce3d0dfc69291d52edf0b4d0436829b34c0" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2581a94056e55d7d0a31a823ea92bf73749c489ca2285bfdc0fbe6b2bb49d50c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41bc1199f7523b3f82843c88cbb979180c949caef0342cf90968f178e5d49b01" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7571e4464cb6e434958f867f7f730b8ab0b75e3f8e5eac0499168486ab3c33a8" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e53a384f76b631c3ae5334ce6a52f0baa3a911eb94a4eac7f160079868b716d5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:d20029a60a71a052a24c4db7673bc4de39ab89adbaccbfb5d67987c5d73f424d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:2cb93af48550faf1cea04c303107c8b75833de7013e57ce27d3b8d21d8d0f58c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2995c176de7692b86a2e4c58d9ec718f753150a979cb4a754e2b4ffa38e70906" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp312-cp312-win32.whl", hash = "sha256:7a2cffd17d27d2ecbb310c2b1d8174f222a5495b1a721894afa88ec11e25b898" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:f155b3a1b2a5fc89cdc70d47ee5d54e3b75e88efa34982028a35daef9ba00379" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:8fa585ede612ee9f9e91b18bebf9ba11b9ae29a4e3a0d0cf6fca3e382133f0d5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:01ea8d66f0693b9b60a6541c8d10263091ca9a9060d242f3c1f3143f9aad2c98" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7ba0480b9a74af058f43b337e937a451e109295c420916d68ad24e3dc02f5e44" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f34e26a19f91f710c08e0183429f0d1d15df734e6bc78c31e77b9ea9c433658" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b4e77f6a55f858504069abd35d336a637555c09bca453dde1ee1e5ada8a6a1fb" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0cb4d80e212f116474a545c21c912b445f16bb0cef9e6a73a498164223e14e2f" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b974946a10af379d425e2eef5b62f5c6ebeaccf91d45eaad6f5b27ecd4f91aa0" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86bc13c25a8d1fcd70b51d0ce7c9b65e90de5666fcbfd3e34957cc73ee19aeb5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca148d73dea36c9763aaa351e4d7a51780ec1584217c45276f4fe8239c768b71" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:c525543d91961c6955b2636b308569e84a1d1c5f5f2932041ab9ef46422f43e3" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:a204794696ffb8f9b10fba6f7cb5216d42f3b2b71860ccac6b6e42f5f10973b0" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:10d86db20695afe7997ac9e1717637d6714a8d0220458c33f3d2061f54cec427" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313-win32.whl", hash = "sha256:eb283ee99e21ad6443c8cdb06ac5b34b1308c329cbdf03fa02b445363714c799" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:a0f27f01bee51861392bb6b7c4fdb290b27d1eb194e9e28788d68102a0e898d9" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:3651aa7058595e9cfb75d35dd5ada2bf9f48a5b8a0f3562821d3e210c507e077" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:faea288b6f0ab1902ef08f4ca6de005dccf856c4e0c4f21b8c5fce02d90a1b08" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:01859b11fd9fbca670f4d5da00fbac282cfea9bd67a2125d8b2833a3b5617ea9" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fff610d7bb2256a317bb1e96f0d7862c7aa8076733ee5df0fd41bbe76a24a4f4" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b141a4891c995a039cd89e9a49e62df1dc8a559a5d1a6e4c7106d16c12777a55" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f22943b7770483f6ea0721c6b11d022947a98eb0acae14694de034f4d0d38925" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1bc6195825b7dcd217968bb1f801a60fd4c16e8eeab5bedc7fe917d7d5995ab4" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4a4b147f5dca2a5d325a06a832fb43f345751adfbc63204aec30e0d9ca965a2" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4543579a9bdb0c9560039b4ffddbdb39545707659fbc430ce4c10f3f68d557f9" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:20aa0e708b920bde876a4aa82dc7dd6ebea228a63a67cda6632c2fc87b787efa" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:d413349d565dab74297f2a63e84a097936be69bf8f3b3801f27f380e32040f44" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:f28b2725eb8cce327b9b3ab02415c853011dc55c95832fe90de6bc56f5315f72" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:b8c8358484d5fa12ef34f05b7f4168eaf1932f408725ff6d023c33ec17bd79d4" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9f04b092229ad2c50126dd3c922c8822e51e605993764a33058d4a791ab42281" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a7ce236284f002a156f70add88efe5c70879cccbb658be0822c54b1306fc09d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b9909cc2b48468b575eefa944919e1fe8a36c5849d5c7c168f80a8c1db69398e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a37faaed405c67e28e6be45a1fa4f206ef5a2860f27c237db9fa30704c38242" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9649193aa27bd9ff2e80ff29bfaa93085496c7a3a377592823cc58b77ee88add" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e4ff8e37f99cf1da89e255e07c9c4b37c214038c4283707bdec308cb1b0ea1f" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:054dc20fd2e3132b4c3883b4a00d72fd6e1f56fdaf89fccd12e8057d74cd74d7" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:e140ed30ebde76796b686e67c182cff10ea2fbab186fafd1560f74bb5a473a6e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:bb7e52ecf68ba46d22df23467b87cffeb2146908aa523ebfe803019618cfda06" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:23282a321c8baf9b3a3c4afff673f9fe65eb7fdc2338d765ccad9d3d1916a5ba" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314-win32.whl", hash = "sha256:c0db965c5f79aa49fe672d297cf1febc5ad149b658594944f49a54a2b96270a7" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:71283b39fd17e5408eb123bd37aeecfd9d54c81fc184421943208aadb879d103" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314-win_arm64.whl", hash = "sha256:c5c19526f4e54a00f2666a6c0e9e40d582c09e865055ea7378bf0009aab857b3" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:d73a585accffa5ae39c17264c36ec3166d2fad7000c780f5ef83b2722afb9dd2" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ae99b14c5f21e026e0e9d96f40e07d8570ebee6cafd9d8fc318354606daa7a28" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4429f3b105524a10b72c3a819b091c495d2811d419c1e1e8df773a5a5974f831" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:43d818978d06062d9b22c4fab2ebe44cf5213d42dc8e62bda8c2760cfa2eeb33" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9f732dc58b2dbe69e464ccf8fff7a03b0dd0be439da4c0720d3558527d3d6b4" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f200104103feb097de4cab8fe4f5dd18a2026934c7dea98c55a2f5fd6d5a33b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63ac26eefbf4af1741247d6fb68b11c49a25b2f7413fbd318a83a12aaa9cf666" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c4997d4e4a55f0d02b6cde327322daf3a0400e5df6c6b15948994bf72497925" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:4c887eba18b7945ac73067a8b4a66f21cd46c2539b2bc68588f7be6c7eb6d26b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:3416ff151bb6b5a8d8d11664974fbef4d9305b9b2957839ab5a270468fd8df30" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:0e831a271c035d89789cffc386b6aa1375f39f1cd25eb7ca0997e4970d152fc5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp315-cp315-macosx_10_12_x86_64.whl", hash = "sha256:37a6721cdf3f65dbb13aa9503510ccb4451603ac837e44d265d7992a597e1374" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:2b37d10b5a63bd4d87e18472d80fa525bd670586fae62e5dd580452764879b65" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp315-cp315-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a105bc2283f67e8fbec74253ec2d94925de92ed72c0393f1206bf326b7b7b69" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp315-cp315-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5327989a465505f05cfe06f04fa9d0c2fd5432bb243e10e6f012b1bdca3c8579" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp315-cp315-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ecb47f183a8025b2aa18b546725c3657e542112ae9c0613a2af79b4fa8d04ad7" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp315-cp315-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8520a4ab0e37f770afc34459c4f8f7019e153f9124dc101c15538365875d1ab2" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp315-cp315-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71cd71740ed2c15211ebb237ced4e39a1cdf6f80566e5fe95428da1626f4fde6" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f88af53d6ddaf72179ef613ddc905e6f4785f712b49b80b3bef9f3525e6194b4" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp315-cp315-manylinux_2_31_riscv64.whl", hash = "sha256:cee9d5efd929efdac5f7e58f72b3376f676b64050a91c5b99a7094c5b2317488" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp315-cp315-musllinux_1_1_aarch64.whl", hash = "sha256:b718bf356bbc15e559bd8ef41782b573b8ae0e3f177ab244b440568d7ea02cfb" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-cp315-cp315-musllinux_1_1_x86_64.whl", hash = "sha256:922c0e019fe68b3ae392965a766b02a71ba1168c932cebc3733cd52c5fe5b377" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:4674d49eb94706dfe666c069fc0a1b646ffcf920473492e209f6d5f60d3f0cc2" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:094b9b70103d4e963499bdea001ee3c2697b144cd9ae6218a62c0f89ec9e31db" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0ef001f8c25ad0fa9529f914c1600647ecd0f542d11c19b7894768c67b6acb7" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/watchfiles/1.2.0/watchfiles-1.2.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a88fc94e647bc4eec523f1caa540258eb71d14278b9daf72fa1e2658a98df0f0" }, +] + +[[package]] +name = "websocket-client" +version = "1.9.0" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/websocket-client/1.9.0/websocket_client-1.9.0.tar.gz", hash = "sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websocket-client/1.9.0/websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef" }, +] + +[[package]] +name = "websockets" +version = "16.0" +source = { registry = "https://pypi.reg.darano.ir/" } +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0.tar.gz", hash = "sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:31a52addea25187bde0797a97d6fc3d2f92b6f72a9370792d65a6e84615ac8a8" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:417b28978cdccab24f46400586d128366313e8a96312e4b9362a4af504f3bbad" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:af80d74d4edfa3cb9ed973a0a5ba2b2a549371f8a741e0800cb07becdd20f23d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:08d7af67b64d29823fed316505a89b86705f2b7981c07848fb5e3ea3020c1abe" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7be95cfb0a4dae143eaed2bcba8ac23f4892d8971311f1b06f3c6b78952ee70b" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d6297ce39ce5c2e6feb13c1a996a2ded3b6832155fcfc920265c76f24c7cceb5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1c1b30e4f497b0b354057f3467f56244c603a79c0d1dafce1d16c283c25f6e64" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp311-cp311-win32.whl", hash = "sha256:5f451484aeb5cafee1ccf789b1b66f535409d038c56966d6101740c1614b86c6" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp311-cp311-win_amd64.whl", hash = "sha256:8d7f0659570eefb578dacde98e24fb60af35350193e4f56e11190787bee77dac" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:71c989cbf3254fbd5e84d3bff31e4da39c43f884e64f2551d14bb3c186230f00" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8b6e209ffee39ff1b6d0fa7bfef6de950c60dfb91b8fcead17da4ee539121a79" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:86890e837d61574c92a97496d590968b23c2ef0aeb8a9bc9421d174cd378ae39" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9b5aca38b67492ef518a8ab76851862488a478602229112c4b0d58d63a7a4d5c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e0334872c0a37b606418ac52f6ab9cfd17317ac26365f7f65e203e2d0d0d359f" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a0b31e0b424cc6b5a04b8838bbaec1688834b2383256688cf47eb97412531da1" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:485c49116d0af10ac698623c513c1cc01c9446c058a4e61e3bf6c19dff7335a2" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp312-cp312-win32.whl", hash = "sha256:eaded469f5e5b7294e2bdca0ab06becb6756ea86894a47806456089298813c89" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp312-cp312-win_amd64.whl", hash = "sha256:5569417dc80977fc8c2d43a86f78e0a5a22fee17565d78621b6bb264a115d4ea" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:878b336ac47938b474c8f982ac2f7266a540adc3fa4ad74ae96fea9823a02cc9" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:52a0fec0e6c8d9a784c2c78276a48a2bdf099e4ccc2a4cad53b27718dbfd0230" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e6578ed5b6981005df1860a56e3617f14a6c307e6a71b4fff8c48fdc50f3ed2c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:95724e638f0f9c350bb1c2b0a7ad0e83d9cc0c9259f3ea94e40d7b02a2179ae5" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0204dc62a89dc9d50d682412c10b3542d748260d743500a85c13cd1ee4bde82" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:52ac480f44d32970d66763115edea932f1c5b1312de36df06d6b219f6741eed8" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6e5a82b677f8f6f59e8dfc34ec06ca6b5b48bc4fcda346acd093694cc2c24d8f" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp313-cp313-win32.whl", hash = "sha256:abf050a199613f64c886ea10f38b47770a65154dc37181bfaff70c160f45315a" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp313-cp313-win_amd64.whl", hash = "sha256:3425ac5cf448801335d6fdc7ae1eb22072055417a96cc6b31b3861f455fbc156" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8cc451a50f2aee53042ac52d2d053d08bf89bcb31ae799cb4487587661c038a0" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:daa3b6ff70a9241cf6c7fc9e949d41232d9d7d26fd3522b1ad2b4d62487e9904" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:fd3cb4adb94a2a6e2b7c0d8d05cb94e6f1c81a0cf9dc2694fb65c7e8d94c42e4" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:781caf5e8eee67f663126490c2f96f40906594cb86b408a703630f95550a8c3e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:caab51a72c51973ca21fa8a18bd8165e1a0183f1ac7066a182ff27107b71e1a4" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:19c4dc84098e523fd63711e563077d39e90ec6702aff4b5d9e344a60cb3c0cb1" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a5e18a238a2b2249c9a9235466b90e96ae4795672598a58772dd806edc7ac6d3" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp314-cp314-win32.whl", hash = "sha256:a069d734c4a043182729edd3e9f247c3b2a4035415a9172fd0f1b71658a320a8" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp314-cp314-win_amd64.whl", hash = "sha256:c0ee0e63f23914732c6d7e0cce24915c48f3f1512ec1d079ed01fc629dab269d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:a35539cacc3febb22b8f4d4a99cc79b104226a756aa7400adc722e83b0d03244" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:b784ca5de850f4ce93ec85d3269d24d4c82f22b7212023c974c401d4980ebc5e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:569d01a4e7fba956c5ae4fc988f0d4e187900f5497ce46339c996dbf24f17641" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:50f23cdd8343b984957e4077839841146f67a3d31ab0d00e6b824e74c5b2f6e8" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:152284a83a00c59b759697b7f9e9cddf4e3c7861dd0d964b472b70f78f89e80e" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bc59589ab64b0022385f429b94697348a6a234e8ce22544e3681b2e9331b5944" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32da954ffa2814258030e5a57bc73a3635463238e797c7375dc8091327434206" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp314-cp314t-win32.whl", hash = "sha256:5a4b4cc550cb665dd8a47f868c8d04c8230f857363ad3c9caf7a0c3bf8c61ca6" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b14dc141ed6d2dde437cddb216004bcac6a1df0935d79656387bd41632ba0bbd" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:349f83cd6c9a415428ee1005cadb5c2c56f4389bc06a9af16103c3bc3dcc8b7d" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:4a1aba3340a8dca8db6eb5a7986157f52eb9e436b74813764241981ca4888f03" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f4a32d1bd841d4bcbffdcb3d2ce50c09c3909fbead375ab28d0181af89fd04da" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0298d07ee155e2e9fda5be8a9042200dd2e3bb0b8a38482156576f863a9d457c" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a653aea902e0324b52f1613332ddf50b00c06fdaf7e92624fbf8c77c78fa5767" }, + { url = "https://package-mirror.liara.ir/repository/pypi/packages/websockets/16.0/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec" }, +] + +[[package]] +name = "wsproto" +version = "1.3.2" +source = { registry = "https://pypi.reg.darano.ir/" } +dependencies = [ + { name = "h11" }, +] +sdist = { url = "https://package-mirror.liara.ir/repository/pypi/packages/wsproto/1.3.2/wsproto-1.3.2.tar.gz", hash = "sha256:b86885dcf294e15204919950f666e06ffc6c7c114ca900b060d6e16293528294" } +wheels = [ + { url = "https://package-mirror.liara.ir/repository/pypi/packages/wsproto/1.3.2/wsproto-1.3.2-py3-none-any.whl", hash = "sha256:61eea322cdf56e8cc904bd3ad7573359a242ba65688716b0710a5eb12beab584" }, +] diff --git a/uv.toml b/uv.toml new file mode 100644 index 0000000..cca839f --- /dev/null +++ b/uv.toml @@ -0,0 +1,2 @@ +# Force resolution through the official PyPI index +index-url = "https://pypi.org/simple"