diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c4b3325c..c42c3db5 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -2,7 +2,7 @@ version: 2 updates: - package-ecosystem: uv directory: "/" - versioning-strategy: increase-if-necessary + versioning-strategy: lockfile-only schedule: interval: weekly groups: diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f9b29b1..247aa5ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,33 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). --- +## v26.10.11 (2026-10-24) + +### Changed + +- Include the previously unreleased dependency metadata from Dependabot PR #196: + `agentic-openai-embeddings` and `agentic-azure-embeddings` require + `openai>=3.36.0`, `agentic-binary` requires `pypdf>=6.21.2`, and the `fastapi` + extra requires `fastapi>=0.158.0`. The v26.10.10 lock already selected OpenAI + 3.37.0, pypdf 6.21.2 and FastAPI 0.162.0; these changes raise declared + minimums without introducing an application API change. PR #196 also separates + native uv project updates from pip documentation updates. +- Preserve the qualified SQLAlchemy `>=2.0.50` minimum while the repository lock + selects 2.1.6. Use Dependabot's `lockfile-only` strategy for project dependency + updates so compatible lock refreshes do not raise application requirements. + Keep documentation requirements under the separate pip updater and retain + the existing SDK and feature-flag compatibility caps. +- Raise the book toolchain's PyYAML requirement to `>=6.0.3,<7` from Dependabot + PR #197; the installed version remains 6.0.3. +- Refresh the Lumen and native Agentic book companion locks against 26.10.11, + including the current SDK pins, so their documented locked installs work. + +### Documentation + +- Refresh current release installation examples and download links, document + dependency-floor maintenance, and rebuild the aligned English/Spanish books. + Native Agentic APIs, Monty 0.0.23 examples and canonical artwork are preserved. + ## v26.10.10 (2026-10-24) ### Fixed diff --git a/README.md b/README.md index 2bd455c9..25d95932 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Firefly Framework Python 3.12+ License: Apache 2.0 - Version: 26.10.10 + Version: 26.10.11 Type Checked: mypy strict Code Style: Ruff Async First @@ -61,7 +61,7 @@ It covers the whole stack: dependency injection, configuration & profiles, the web layer, the Spring-Data `Repository` (derived queries, pagination, specifications, projections), DDD aggregates & `Money`, CQRS, domain events & event sourcing, messaging, HTTP clients, sagas, caching & resilience, security, observability, testing, scheduling, and going to production. Spring developers get a **Spring parity** callout at every turn. -**📥 Download the books shipped with v26.10.10:** **[English PDF](https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.10/pyfly-by-example.pdf)** · **[English EPUB](https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.10/pyfly-by-example.epub)** · **[Spanish PDF](https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.10/pyfly-by-example-es.pdf)** · **[Spanish EPUB](https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.10/pyfly-by-example-es.epub)**. For a specific version, use its [tagged release](https://github.com/fireflyframework/fireflyframework-pyfly/releases), or build from source with `bash book/build/run.sh --out-dir book/release-output`. Run the companion sample with `cd samples/lumen && uv run --extra dev pytest` and `uv run pyfly run --server uvicorn`. +**📥 Download the books shipped with v26.10.11:** **[English PDF](https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.11/pyfly-by-example.pdf)** · **[English EPUB](https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.11/pyfly-by-example.epub)** · **[Spanish PDF](https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.11/pyfly-by-example-es.pdf)** · **[Spanish EPUB](https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.11/pyfly-by-example-es.epub)**. For a specific version, use its [tagged release](https://github.com/fireflyframework/fireflyframework-pyfly/releases), or build from source with `bash book/build/run.sh --out-dir book/release-output`. Run the companion sample with `cd samples/lumen && uv run --extra dev pytest` and `uv run pyfly run --server uvicorn`. --- @@ -851,7 +851,9 @@ See **[`samples/lumen/`](samples/lumen/README.md)** for an end-to-end DDD micros > **Note:** PyFly is distributed exclusively via [GitHub Releases](https://github.com/fireflyframework/fireflyframework-pyfly/releases). It is **not** published to PyPI. -**Upgrading to v26.10.10:** Optional script execution now uses Monty 0.0.23 with an owned worker and fresh session per run. Existing Code Mode calls keep their direct tool syntax. Remove non-`None` `max_allocations` limits; use memory, recursion and time budgets instead. See the [execution guide](docs/modules/agentic/execution.md). +**Upgrading to v26.10.11:** This maintenance release preserves application APIs and the SQLAlchemy 2.0.50 minimum while refreshing the repository lock and book toolchain. Resolve and test your application lock. See the [dependency update notes](docs/dependency-updates.md). + +**From v26.10.10:** Optional script execution now uses Monty 0.0.23 with an owned worker and fresh session per run. Existing Code Mode calls keep their direct tool syntax. Remove non-`None` `max_allocations` limits; use memory, recursion and time budgets instead. See the [execution guide](docs/modules/agentic/execution.md). **From v26.10.09:** Native pattern redaction remains enabled by default; the `pii` extra and Presidio backend are removed. Remove the `presidio` configuration block and use `engine: regex`; legacy `auto` selects regex. See the [logging migration](docs/modules/logging.md#upgrading-from-the-removed-presidio-backend). @@ -869,13 +871,13 @@ hotfix baseline and the migration from the removed Presidio backend. ```bash # Install the latest release (uv) -uv add "pyfly @ https://github.com/fireflyframework/fireflyframework-pyfly/releases/latest/download/pyfly-26.10.10-py3-none-any.whl" +uv add "pyfly @ https://github.com/fireflyframework/fireflyframework-pyfly/releases/latest/download/pyfly-26.10.11-py3-none-any.whl" # Install with specific extras -uv add "pyfly[web,data-relational,cache] @ https://github.com/fireflyframework/fireflyframework-pyfly/releases/latest/download/pyfly-26.10.10-py3-none-any.whl" +uv add "pyfly[web,data-relational,cache] @ https://github.com/fireflyframework/fireflyframework-pyfly/releases/latest/download/pyfly-26.10.11-py3-none-any.whl" # Or with pip -pip install "pyfly @ https://github.com/fireflyframework/fireflyframework-pyfly/releases/latest/download/pyfly-26.10.10-py3-none-any.whl" +pip install "pyfly @ https://github.com/fireflyframework/fireflyframework-pyfly/releases/latest/download/pyfly-26.10.11-py3-none-any.whl" ``` ### One-Line Install (CLI + Framework) @@ -1206,6 +1208,7 @@ The git tag and human-readable display use the leading-zero form (`v26.05.01`); The full release history lives in **[CHANGELOG.md](CHANGELOG.md)** ([Keep a Changelog](https://keepachangelog.com/) format). Recent highlights: +- **`v26.10.11`** (2026-10-24) — preserve supported dependency minimums, keep automated project updates in the lockfile, and refresh the book toolchain and both editions. - **`v26.10.10`** (2026-10-24) — adapt optional sandbox execution to Monty 0.0.23, preserve direct sync/async Code Mode tools, and refresh the English/Spanish execution tutorials. - **`v26.10.09`** (2026-10-24) — remove Presidio and the `pii` extra while keeping native pattern redaction enabled, refresh compatible dependencies, and reduce the admin logo size. - **`v26.10.08`** (2026-10-24) — integrate the native optional `pyfly.agentic` module, application-owned runtime and agents/tools/knowledge/workflows, with complete migration guidance and English/Spanish book chapters. diff --git a/book/README.md b/book/README.md index 38d58dac..02372d33 100644 --- a/book/README.md +++ b/book/README.md @@ -7,10 +7,10 @@ wallet offer route, shared targeting fixture, runtime gates and operator workflo | Edition | PDF | EPUB | |---|---|---| -| English | [PDF](https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.10/pyfly-by-example.pdf) | [EPUB](https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.10/pyfly-by-example.epub) | -| Spanish | [PDF](https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.10/pyfly-by-example-es.pdf) | [EPUB](https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.10/pyfly-by-example-es.epub) | +| English | [PDF](https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.11/pyfly-by-example.pdf) | [EPUB](https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.11/pyfly-by-example.epub) | +| Spanish | [PDF](https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.11/pyfly-by-example-es.pdf) | [EPUB](https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.11/pyfly-by-example-es.epub) | -These books are rebuilt from the `v26.10.10` software tag. The independently +These books are rebuilt from the `v26.10.11` software tag. The independently published [2026-10-14 edition](https://github.com/fireflyframework/fireflyframework-pyfly/releases/tag/books-26.10.14) retains its original assets. For other editions, open the [tagged releases](https://github.com/fireflyframework/fireflyframework-pyfly/releases) @@ -23,7 +23,10 @@ native HTTP/events/plugins and the guarded Agentic admin console. The hotfix refresh replaces the removed Presidio setup with native regex redaction and migration guidance in both languages. The v26.10.10 refresh adds a runnable Monty 0.0.23 computation and Code Mode tutorial to Chapter 19 in both -editions, including worker/session ownership and supported resource limits. Local candidate builds must +editions, including worker/session ownership and supported resource limits. The +v26.10.11 maintenance refresh keeps those APIs, preserves supported dependency +minimums and updates the book toolchain to PyYAML 6.0.3 or later within 6.x. +Local candidate builds must record the checkout commit and dirty source hashes until the release is published. ## Sources and examples diff --git a/book/manuscript-es/19-agentic-agents.md b/book/manuscript-es/19-agentic-agents.md index ce25656c..697d1b52 100644 --- a/book/manuscript-es/19-agentic-agents.md +++ b/book/manuscript-es/19-agentic-agents.md @@ -13,9 +13,15 @@ de la aplicación: versiones posteriores de Ragas y datasets tienen conflictos de API o dependencias descritos en las [notas de dependencias](https://fireflyframework.github.io/fireflyframework-pyfly/docs/dependency-updates/). +La versión de mantenimiento v26.10.11 conserva estas API y el mínimo de +SQLAlchemy 2.0.50. El lock del repositorio selecciona 2.1.6; cada aplicación +conserva y prueba su propio lock de dependencias. Las actualizaciones automáticas +del proyecto cambian el lockfile; modificar requisitos exige revisar compatibilidad +por separado. + ## 19.1. Activar el módulo de forma explícita -Instala el núcleo opcional desde el wheel oficial de v26.10.10, seleccionando +Instala el núcleo opcional desde el wheel oficial de v26.10.11, seleccionando `pyfly[agentic]`, como indica la [guía de instalación](https://fireflyframework.github.io/fireflyframework-pyfly/docs/modules/agentic/getting-started/installation/). PyFly se distribuye mediante GitHub Releases. Una instalación base no necesita @@ -180,7 +186,7 @@ de SQLite con una fila de negocio y un hecho asíncrono. ## 19.10. Ejecutar scripts limitados con Code Mode -Instala `pyfly[agentic,agentic-script-execution]` desde el wheel de v26.10.10. +Instala `pyfly[agentic,agentic-script-execution]` desde el wheel de v26.10.11. Este extra opcional instala `pydantic-monty==0.0.23` y el binario de `pydantic-monty-runtime`. El SDK localiza el binario instalado y admite `MONTY_BIN` para indicar un ejecutable compatible. Si falta el runtime, diff --git a/book/manuscript/19-agentic-agents.md b/book/manuscript/19-agentic-agents.md index c7cf9622..cf160b14 100644 --- a/book/manuscript/19-agentic-agents.md +++ b/book/manuscript/19-agentic-agents.md @@ -12,9 +12,14 @@ community 0.3 adapter and datasets >=5.0.1. Resolve the complete application graph: newer Ragas and datasets releases have API or dependency conflicts in the [dependency notes](https://fireflyframework.github.io/fireflyframework-pyfly/docs/dependency-updates/). +The v26.10.11 maintenance release preserves these APIs and the SQLAlchemy +2.0.50 minimum. The repository lock selects 2.1.6; applications keep and test +their own dependency locks. Automated project updates change the lockfile; +requirement changes need separate compatibility review. + ## 19.1. Enable the module deliberately -Install the optional core from the official v26.10.10 release wheel, selecting +Install the optional core from the official v26.10.11 release wheel, selecting `pyfly[agentic]`, as shown in the [installation guide](https://fireflyframework.github.io/fireflyframework-pyfly/docs/modules/agentic/getting-started/installation/). PyFly is distributed through GitHub Releases. Base installations need no AI SDK. Enable managed integration in the effective configuration tree: @@ -178,7 +183,7 @@ actual SQLite transaction containing both a business row and an async fact. ## 19.10. Execute bounded scripts with Code Mode -Install `pyfly[agentic,agentic-script-execution]` from the v26.10.10 release +Install `pyfly[agentic,agentic-script-execution]` from the v26.10.11 release wheel. This optional extra installs `pydantic-monty==0.0.23` and the `pydantic-monty-runtime` binary. The SDK discovers its installed binary and honors `MONTY_BIN` for an explicit compatible executable. A missing runtime diff --git a/docs/cli.md b/docs/cli.md index 2ea4e450..875d0ee8 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -789,7 +789,7 @@ Missing optional tools are shown with a `-` dash indicator (dimmed), while missi Verifies that PyFly itself is importable and displays the installed version: ``` -✓ pyfly v26.10.10 +✓ pyfly v26.10.11 ``` ### Summary diff --git a/docs/dependency-updates.md b/docs/dependency-updates.md index 83db58d4..7bb7b753 100644 --- a/docs/dependency-updates.md +++ b/docs/dependency-updates.md @@ -1,9 +1,25 @@ -# Dependency updates in v26.10.10 - -This release adapts sandbox execution to Monty 0.0.23 from Dependabot -[PR #195](https://github.com/fireflyframework/fireflyframework-pyfly/pull/195), -following the compatible updates from Dependabot -[PR #193](https://github.com/fireflyframework/fireflyframework-pyfly/pull/193). +# Dependency updates in v26.10.11 + +This maintenance release adopts the book toolchain's `PyYAML>=6.0.3,<7` from +Dependabot [PR #197](https://github.com/fireflyframework/fireflyframework-pyfly/pull/197). +It retains `SQLAlchemy>=2.0.50` instead of raising the supported minimum to +2.1.6 as proposed by [PR #198](https://github.com/fireflyframework/fireflyframework-pyfly/pull/198). +The repository lock already selects SQLAlchemy 2.1.6 and PyYAML 6.0.3. No +application API migration is required from v26.10.10; Pydantic AI 2.59.0, +Monty 0.0.23 and the existing compatibility caps remain in place. +This release also includes previously unreleased dependency metadata from +Dependabot [PR #196](https://github.com/fireflyframework/fireflyframework-pyfly/pull/196): +OpenAI/Azure embedding extras now require `openai>=3.36.0`, the binary extra +requires `pypdf>=6.21.2`, and the FastAPI extra requires `fastapi>=0.158.0`. +The v26.10.10 lock already selected OpenAI 3.37.0, pypdf 6.21.2 and FastAPI +0.162.0; the changed metadata makes those minimum requirements explicit. +SQLAlchemy's locked selection advances from 2.1.4 to 2.1.6 while its supported +2.0.50 minimum stays intact. PR #196 also introduced the native uv project +updater and separate pip documentation updater. + +If an application selects one of these extras, reconcile any direct SDK pins +below its new minimum before resolving the full graph, then test that adapter. +Applications that do not select those extras do not need to add those SDKs. The declared constraints are in `pyproject.toml`; `uv.lock` records the exact repository selection. Applications must resolve and validate their own locks. Python 3.12 and 3.13 remain the qualification targets. @@ -11,18 +27,25 @@ Python 3.12 and 3.13 remain the qualification targets. ## Repository dependency automation Dependabot uses the `uv` ecosystem so Python updates include `uv.lock`, matching -CI's `uv sync --locked` checks. The `increase-if-necessary` strategy retains an -existing supported requirement when it already allows the updated dependency; -it still updates the resolved lock. The Python dependency group includes both -runtime and development dependencies. +CI's `uv sync --locked` checks. The `lockfile-only` strategy updates resolved +versions within existing requirements and leaves declared compatibility floors +unchanged. Review requirement changes separately with the affected adapter's +minimum-version and current-version qualification lanes. The Python dependency +group includes both runtime and development dependencies. On the next native +`uv` updater run, inspect its job payload and confirm `lockfile-only: true`; +checked-in configuration records intent, not proof that the updater applied it. +An earlier run reported `requirements-update-strategy: null` and +`lockfile-only: false`, so that run does not establish an upstream strategy bug. The separate `pip` entry keeps maintaining the documentation requirements while excluding `pyproject.toml` and `uv.lock`, which belong to the `uv` entry. Intentional changes to Agentic extra requirements must also update the reviewed contracts in `scripts/agentic-migration-manifest.json`. Regenerate the lock and -run `scripts/verify_agentic_migration.py` before submitting those changes. Keep -the SQLAlchemy 2.0.50 floor and the separate 2.0/2.1 qualification lanes; a newer +run `scripts/verify_agentic_migration.py` before submitting those changes. +Explicitly pinned Pydantic AI and Monty upgrades require this deliberate +manifest review and adapter qualification; lockfile-only automation cannot +advance those pins. Keep the SQLAlchemy 2.0.50 floor and the separate 2.0/2.1 qualification lanes; a newer locked patch does not require dropping supported application combinations. See [uv's Dependabot integration](https://docs.astral.sh/uv/guides/integration/dependabot/) @@ -45,6 +68,11 @@ do not reuse their removed backend installation instructions for this hotfix. | Dependency | Current selection | Compatibility boundary | | --- | --- | --- | +| OpenAI SDK (`agentic-openai-embeddings`, `agentic-azure-embeddings`) | `>=3.36.0`; lock `3.37.0` | Reconcile lower application pins when selecting either embedding extra. | +| pypdf (`agentic-binary`) | `>=6.21.2`; lock `6.21.2` | Reconcile lower application pins for binary ingestion. | +| FastAPI (`fastapi`) | `>=0.158.0`; lock `0.162.0` | Reconcile lower application pins when selecting the FastAPI adapter. | +| SQLAlchemy | `>=2.0.50`; lock `2.1.6` | Preserve qualified 2.0 applications while exercising the newer 2.1 selection in repository environments. | +| PyYAML (book toolchain) | `>=6.0.3,<7`; installed `6.0.3` | Keep documentation parsing within the supported 6.x series. | | asyncmy | `>=0.2.11`; lock `0.2.16` | Keep the proven MySQL/MariaDB driver minimum while installing the newer compatible patch in repository environments. | | openfeature-flagd-core | `>=1.0.0,<2` | Preserve the shared PyFly/LaraFly fractional cohort contract; 2.x changes the hash input and shifts existing assignments. | | Pydantic AI | `==2.59.0` | Preserve provider extras and the native runtime contracts. | diff --git a/docs/getting-started.md b/docs/getting-started.md index 1e30702c..f975ffc3 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -480,7 +480,7 @@ ______ ___.__._/ ____\ | ___.__. | __// ____| |__| |____/ ____| |__| \/ \/ - PyFly v26.10.10 | Python 3.12.0 + PyFly v26.10.11 | Python 3.12.0 2026-01-15T10:30:00Z [info] starting_application app=my-service version=0.1.0 2026-01-15T10:30:00Z [info] no_active_profiles message=No active profiles set, falling back to default diff --git a/docs/installation.md b/docs/installation.md index dd5da747..47ad190c 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -531,7 +531,7 @@ PyFly Doctor ✓ mypy — Type checker PyFly packages: - ✓ pyfly v26.10.10 + ✓ pyfly v26.10.11 All checks passed! ``` diff --git a/docs/modules/agentic/getting-started/installation.md b/docs/modules/agentic/getting-started/installation.md index 7bc5d763..b413f194 100644 --- a/docs/modules/agentic/getting-started/installation.md +++ b/docs/modules/agentic/getting-started/installation.md @@ -12,15 +12,15 @@ those dependencies on every operating system. ## From a release -This guide uses **v26.10.10** (package version `26.10.10`). Verify the release's +This guide uses **v26.10.11** (package version `26.10.11`). Verify the release's assets before installing its wheel. PyFly is distributed through [GitHub Releases](https://github.com/fireflyframework/fireflyframework-pyfly/releases), not PyPI. Install the wheel and select the optional module explicitly: ```bash -python -m pip install "pyfly[agentic] @ https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.10/pyfly-26.10.10-py3-none-any.whl" +python -m pip install "pyfly[agentic] @ https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.11/pyfly-26.10.11-py3-none-any.whl" # In a uv-managed application: -uv add "pyfly[agentic] @ https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.10/pyfly-26.10.10-py3-none-any.whl" +uv add "pyfly[agentic] @ https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.11/pyfly-26.10.11-py3-none-any.whl" ``` Add namespaced extras such as `agentic-postgres` or `agentic-ollama-embeddings` diff --git a/docs/modules/core.md b/docs/modules/core.md index 6e8ce485..91dc5484 100644 --- a/docs/modules/core.md +++ b/docs/modules/core.md @@ -599,7 +599,7 @@ class BannerMode(enum.Enum): | Mode | Behavior | |---|---| | `TEXT` | Full ASCII art banner (default) with a framework version line. | -| `MINIMAL` | Single line: `:: PyFly :: (v26.10.10)` | +| `MINIMAL` | Single line: `:: PyFly :: (v26.10.11)` | | `OFF` | No banner output at all. | ### BannerPrinter Class @@ -640,7 +640,7 @@ ______ ___.__._/ ____\ | ___.__. | __// ____| |__| |____/ ____| |__| \/ \/ -:: PyFly Framework :: (v26.10.10) +:: PyFly Framework :: (v26.10.11) ``` ### Custom Banner Files diff --git a/docs/modules/feature-flags.md b/docs/modules/feature-flags.md index 709b1032..a02b2d77 100644 --- a/docs/modules/feature-flags.md +++ b/docs/modules/feature-flags.md @@ -7,7 +7,7 @@ PyFly evaluates [flagd](https://flagd.dev) definitions through OpenFeature. The Install the optional dependency from the pinned GitHub Release wheel and enable the subsystem. PyFly is distributed through GitHub Releases: ```bash -uv add "pyfly[feature-flags] @ https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.10/pyfly-26.10.10-py3-none-any.whl" +uv add "pyfly[feature-flags] @ https://github.com/fireflyframework/fireflyframework-pyfly/releases/download/v26.10.11/pyfly-26.10.11-py3-none-any.whl" ``` ```yaml diff --git a/docs/versioning.md b/docs/versioning.md index dee97fe4..a439ddae 100644 --- a/docs/versioning.md +++ b/docs/versioning.md @@ -64,6 +64,7 @@ rare case where a substantial change needs an additional review window. | Version | Date | Notes | |---------|------|-------| +| `26.10.11` | 2026-10-24 | Preserve supported dependency floors, use lockfile-only project updates and refresh book tooling and both editions. | | `26.10.10` | 2026-10-24 | Monty 0.0.23 worker-backed execution, preserved Code Mode API and updated EN/ES tutorials. | | `26.10.09` | 2026-10-24 | Native regex redaction replaces Presidio; dependency hotfix and smaller admin branding. | | `26.10.08` | 2026-10-24 | Native optional Agentic module, application-owned runtime and matching EN/ES book chapters; namespace migration required. | @@ -108,20 +109,20 @@ shipped, with the version metadata updated. ```python import pyfly -print(pyfly.__version__) # → "26.10.10" +print(pyfly.__version__) # → "26.10.11" ``` The CLI reads the installed distribution metadata and reports the normalized package version: ```bash -pyfly --version # → pyfly, version 26.10.10 +pyfly --version # → pyfly, version 26.10.11 ``` The startup banner displays the leading-zero form: ``` -:: PyFly Framework :: (v26.10.10) (Python 3.13.9) +:: PyFly Framework :: (v26.10.11) (Python 3.13.9) ``` --- diff --git a/install.sh b/install.sh index 3b1ffc6b..9c3f57a0 100755 --- a/install.sh +++ b/install.sh @@ -28,7 +28,7 @@ set -euo pipefail # ── Constants ────────────────────────────────────────────────────────────────── -PYFLY_VERSION="26.10.10" +PYFLY_VERSION="26.10.11" PYFLY_REPO="https://github.com/fireflyframework/fireflyframework-pyfly.git" DEFAULT_INSTALL_DIR="$HOME/.pyfly" MIN_PYTHON_MAJOR=3 diff --git a/pyproject.toml b/pyproject.toml index a3fcec62..17d66e33 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ name = "pyfly" # CalVer YY.MM.PATCH — package metadata uses PEP 440 normalized form (26.5.4); # git tag, GitHub release and human-readable display use leading-zero form # (v26.05.04) to match the Java/.NET/Go siblings. -version = "26.10.10" +version = "26.10.11" description = "The official Python implementation of the Firefly Framework — DI, CQRS, EDA, hexagonal architecture, and more." readme = "README.md" license = "Apache-2.0" diff --git a/samples/agentic-book/uv.lock b/samples/agentic-book/uv.lock index 82df8a94..f861e755 100644 --- a/samples/agentic-book/uv.lock +++ b/samples/agentic-book/uv.lock @@ -1749,14 +1749,14 @@ email = [ [[package]] name = "pydantic-ai" -version = "2.55.0" +version = "2.59.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic-ai-slim", extra = ["anthropic", "cli", "evals", "google", "logfire", "mcp", "openai", "web"] }, ] -sdist = { url = "https://files.pythonhosted.org/packages/52/a1/fe269bcb0ed07c00c549128095ccc62ccff6ec4eed36e68b6f7a164c57e7/pydantic_ai-2.55.0.tar.gz", hash = "sha256:b57057025a49392096821dccb6df5261880f558c9a99c470bcb0e946de10f47e", size = 28022, upload-time = "2026-10-09T19:40:48.347Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1f/20/db85b3a96dc5931e8d4902a38376ceaf480aec4313ce928a8288cc4de410/pydantic_ai-2.59.0.tar.gz", hash = "sha256:2c6086a49fe97a200063a678cd0464f8bd6eae1e89256970a1ec02315f9fd8ae", size = 29880, upload-time = "2026-10-21T05:00:31.505Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/14/eb55fb2a85072f7e7a730a285364d3648b12d6d8fa35ec924fa1084972cf/pydantic_ai-2.55.0-py3-none-any.whl", hash = "sha256:4b836463c5cb7ec462b7a8dc9d60715527bee3b11ff0136994c94d04ab5d1830", size = 10150, upload-time = "2026-10-09T19:40:32.292Z" }, + { url = "https://files.pythonhosted.org/packages/46/8a/2919a67896b6e07c273611032de3cd96e1598cb2c737d18187486b3f5073/pydantic_ai-2.59.0-py3-none-any.whl", hash = "sha256:a303f0b999257471cea12632802ab2c76bff3a1308d6402ccc3e3d5a76fb36ea", size = 10472, upload-time = "2026-10-21T05:00:16.335Z" }, ] [package.optional-dependencies] @@ -1796,7 +1796,7 @@ xai = [ [[package]] name = "pydantic-ai-slim" -version = "2.55.0" +version = "2.59.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -1808,9 +1808,9 @@ dependencies = [ { name = "pydantic-graph" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9c/d6/3526056afb236ac3c01b07ae05f1fefc97cbee59f8e824b96ffd5405bbfe/pydantic_ai_slim-2.55.0.tar.gz", hash = "sha256:50b5ee70d3a0509c1f36bec759249e69f4dc060f1a816b1bbf0730af54297376", size = 1878726, upload-time = "2026-10-09T19:40:52.951Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/1e/cd44ec11b296ec93fb9412f9aaef2b265f60e49a75b49cc0b2c6b1aa60fd/pydantic_ai_slim-2.59.0.tar.gz", hash = "sha256:ce441e646dd79a8dd80ef19c9f6821d803857f08870b260b61db5e8e7af95010", size = 2058453, upload-time = "2026-10-21T05:00:36.718Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/93/cc/16c6bc21748e3705a4c1f8e7d71dfc54228dbf142f8506a36689acb1e9c9/pydantic_ai_slim-2.55.0-py3-none-any.whl", hash = "sha256:7fcea628e78c2f247af94504534f0577151496166998d74ec145505040b19c68", size = 2197589, upload-time = "2026-10-09T19:40:38.767Z" }, + { url = "https://files.pythonhosted.org/packages/73/79/d8c8cb808b69a6f286bc8bab6bab832c1da98163ab37689bfd5208508f25/pydantic_ai_slim-2.59.0-py3-none-any.whl", hash = "sha256:b4bc3a659176f616ad1a104cb8faed33c1565b449cb16226c6f6adb0c674770f", size = 2392716, upload-time = "2026-10-21T05:00:22.818Z" }, ] [package.optional-dependencies] @@ -1930,7 +1930,7 @@ wheels = [ [[package]] name = "pydantic-evals" -version = "2.55.0" +version = "2.59.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -1940,14 +1940,14 @@ dependencies = [ { name = "pyyaml" }, { name = "rich" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/73/a8/32f739b8978b3862176a0dbe32ebf1831107b0a75e47f6d334874539572f/pydantic_evals-2.55.0.tar.gz", hash = "sha256:092676e8fc4765a9b921f242d31ebfd9f766b48f94cc0ff0882cb288ea3dddba", size = 91875, upload-time = "2026-10-09T19:40:56.076Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f5/4d/9fe28285c775a07781d4ade3510a5e7cd4e82500f9527c4a79b542fa3bdf/pydantic_evals-2.59.0.tar.gz", hash = "sha256:0d14d621ec2c85939601414e3541aaed8fcb2adc7cc6e8feeda21beb9025c291", size = 92185, upload-time = "2026-10-21T05:00:39.765Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/dc/80/fd87eac335810bf63c8bc975e579fd8c457e69e1c4831576cdf9c7c601fc/pydantic_evals-2.55.0-py3-none-any.whl", hash = "sha256:78e07e9ece6c36e1232c3141537584d402b15d29a82080f50e50ec869719b301", size = 107149, upload-time = "2026-10-09T19:40:43.171Z" }, + { url = "https://files.pythonhosted.org/packages/69/c4/0db740716197ad51c847c9b2d54f14d0629b0d4ab7cb323e077a07a157bd/pydantic_evals-2.59.0-py3-none-any.whl", hash = "sha256:b9fbb47eb91543bd6edf55cbb714ba52b24bb5c62f31d1318bb3802a6149279b", size = 107193, upload-time = "2026-10-21T05:00:27.074Z" }, ] [[package]] name = "pydantic-graph" -version = "2.55.0" +version = "2.59.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -1955,9 +1955,9 @@ dependencies = [ { name = "pydantic" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b2/22/4e25465059448c4322e5f53f33e7b25ceb404c2d4dda8cfb0f497f7fb54b/pydantic_graph-2.55.0.tar.gz", hash = "sha256:461de7d0c33af634c3adeb21712f527f15878edf826d216184f024795e9c80c1", size = 45824, upload-time = "2026-10-09T19:40:57.238Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/36/f00e344d48ab0065b5d93692dcd6245f4400dc946140b1fdc56657deb5d8/pydantic_graph-2.59.0.tar.gz", hash = "sha256:f8cf18e18cdea6c6ee412017373c156e4fadc0b4b205c174d564d878d1765989", size = 46085, upload-time = "2026-10-21T05:00:41.028Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/59/b5/630fc830897cfb0e458dea8ffcac5dd58791784220255637e99817b04cdd/pydantic_graph-2.55.0-py3-none-any.whl", hash = "sha256:774a64db707e759e22a4b2d6f8849986331fac009bb3f36ba3ed0cb8eee7a150", size = 53274, upload-time = "2026-10-09T19:40:44.876Z" }, + { url = "https://files.pythonhosted.org/packages/e3/41/c55560304acbf4d9e3f9d55e9be424dfc486c8b65e9496c8a857efee3e17/pydantic_graph-2.59.0-py3-none-any.whl", hash = "sha256:cf8b699f7322690590345028191c7e5ced9e57606c026f2480f90dc9665f176f", size = 53275, upload-time = "2026-10-21T05:00:28.731Z" }, ] [[package]] @@ -1989,7 +1989,7 @@ wheels = [ [[package]] name = "pyfly" -version = "26.10.8" +version = "26.10.11" source = { editable = "../../" } dependencies = [ { name = "pydantic" }, @@ -2029,36 +2029,36 @@ agentic-relational = [ [package.metadata] requires-dist = [ - { name = "aio-pika", marker = "extra == 'eda'", specifier = ">=10.0.4" }, - { name = "aio-pika", marker = "extra == 'rabbitmq'", specifier = ">=10.0.4" }, + { name = "aio-pika", marker = "extra == 'eda'", specifier = ">=10.1.1" }, + { name = "aio-pika", marker = "extra == 'rabbitmq'", specifier = ">=10.1.1" }, { name = "aiokafka", marker = "extra == 'eda'", specifier = ">=0.14.0" }, { name = "aiokafka", marker = "extra == 'kafka'", specifier = ">=0.14.0" }, { name = "aiosqlite", marker = "extra == 'data-relational'", specifier = ">=0.22.1" }, { name = "alembic", marker = "extra == 'data-relational'", specifier = ">=1.20.0" }, { name = "argon2-cffi", marker = "extra == 'argon2'", specifier = ">=25.1.0" }, { name = "asyncmy", marker = "extra == 'mysql'", specifier = ">=0.2.11" }, - { name = "asyncpg", marker = "extra == 'postgresql'", specifier = ">=0.31.0" }, - { name = "azure-storage-blob", marker = "extra == 'ecm-azure'", specifier = ">=12.30.3" }, + { name = "asyncpg", marker = "extra == 'postgresql'", specifier = ">=0.32.0" }, + { name = "azure-storage-blob", marker = "extra == 'ecm-azure'", specifier = ">=12.31.0" }, { name = "bcrypt", marker = "extra == 'security'", specifier = ">=5.0.0" }, { name = "beanie", marker = "extra == 'data-document'", specifier = ">=2.2.0" }, - { name = "boto3", marker = "extra == 'agentic-bedrock-embeddings'", specifier = ">=1.35.0" }, - { name = "boto3", marker = "extra == 'ecm-aws'", specifier = ">=1.43.103" }, - { name = "boto3", marker = "extra == 'idp-cognito'", specifier = ">=1.43.103" }, + { name = "boto3", marker = "extra == 'agentic-bedrock-embeddings'", specifier = ">=1.43.116" }, + { name = "boto3", marker = "extra == 'ecm-aws'", specifier = ">=1.43.116" }, + { name = "boto3", marker = "extra == 'idp-cognito'", specifier = ">=1.43.116" }, { name = "cairosvg", marker = "extra == 'agentic-binary'", specifier = ">=2.9.1" }, - { name = "chromadb", marker = "extra == 'agentic-vectorstores-chroma'", specifier = ">=0.5.0" }, + { name = "chromadb", marker = "extra == 'agentic-vectorstores-chroma'", specifier = ">=1.5.9" }, { name = "click", marker = "extra == 'cli'", specifier = ">=8.5.0" }, { name = "click", marker = "extra == 'shell'", specifier = ">=8.5.0" }, - { name = "cohere", marker = "extra == 'agentic-cohere-embeddings'", specifier = ">=5.0.0" }, + { name = "cohere", marker = "extra == 'agentic-cohere-embeddings'", specifier = ">=7.3.0" }, { name = "croniter", marker = "extra == 'scheduling'", specifier = ">=6.2.4" }, - { name = "cryptography", marker = "extra == 'agentic-security'", specifier = ">=50.0.0" }, - { name = "cryptography", marker = "extra == 'security'", specifier = ">=50.0.1" }, + { name = "cryptography", marker = "extra == 'agentic-security'", specifier = ">=50.0.2" }, + { name = "cryptography", marker = "extra == 'security'", specifier = ">=50.0.2" }, { name = "datasets", marker = "extra == 'agentic-evaluation'", specifier = ">=5.0.1" }, - { name = "extract-msg", marker = "extra == 'agentic-binary'", specifier = ">=0.51" }, - { name = "fastapi", marker = "extra == 'fastapi'", specifier = ">=0.141.1" }, - { name = "genai-prices", marker = "extra == 'agentic'", specifier = ">=0.1.9,<0.2" }, - { name = "gitpython", marker = "extra == 'config-server-git'", specifier = ">=3.1.62" }, - { name = "google-generativeai", marker = "extra == 'agentic-google-embeddings'", specifier = ">=0.8.0" }, - { name = "granian", marker = "extra == 'granian'", specifier = ">=2.8.3" }, + { name = "extract-msg", marker = "extra == 'agentic-binary'", specifier = ">=0.56.1" }, + { name = "fastapi", marker = "extra == 'fastapi'", specifier = ">=0.158.0" }, + { name = "genai-prices", marker = "extra == 'agentic'", specifier = ">=0.1.13,<0.2" }, + { name = "gitpython", marker = "extra == 'config-server-git'", specifier = ">=3.2.1" }, + { name = "google-generativeai", marker = "extra == 'agentic-google-embeddings'", specifier = ">=0.8.6" }, + { name = "granian", marker = "extra == 'granian'", specifier = ">=2.8.5" }, { name = "grpcio", marker = "extra == 'grpc'", specifier = ">=1.84.0" }, { name = "httpx", marker = "extra == 'agentic'", specifier = ">=0.28.0" }, { name = "httpx", marker = "extra == 'agentic-ollama-embeddings'", specifier = ">=0.28.0" }, @@ -2072,39 +2072,37 @@ requires-dist = [ { name = "jinja2", marker = "extra == 'cli'", specifier = ">=3.1.6" }, { name = "jinja2", marker = "extra == 'notifications'", specifier = ">=3.1.6" }, { name = "jinja2", marker = "extra == 'templates'", specifier = ">=3.1.6" }, - { name = "jsonpath-ng", marker = "extra == 'testing'", specifier = ">=1.8.0" }, - { name = "langchain-anthropic", marker = "extra == 'agentic-evaluation'", specifier = ">=0.3" }, + { name = "jsonpath-ng", marker = "extra == 'testing'", specifier = ">=1.12.0" }, + { name = "langchain-anthropic", marker = "extra == 'agentic-evaluation'", specifier = ">=1.7.6" }, { name = "langchain-community", marker = "extra == 'agentic-evaluation'", specifier = ">=0.3.31,<0.4" }, - { name = "langchain-ollama", marker = "extra == 'agentic-evaluation'", specifier = ">=0.3" }, - { name = "langchain-openai", marker = "extra == 'agentic-evaluation'", specifier = ">=0.3" }, - { name = "markdown-it-py", marker = "extra == 'agentic'", specifier = ">=3.0" }, - { name = "mistralai", marker = "extra == 'agentic-mistral-embeddings'", specifier = ">=1.0.0" }, - { name = "numpy", marker = "extra == 'agentic-embeddings'", specifier = ">=1.26.0" }, - { name = "numpy", marker = "extra == 'agentic-evaluation'", specifier = ">=1.26.0" }, - { name = "numpy", marker = "extra == 'agentic-reasoning-eval'", specifier = ">=2.0.0" }, - { name = "openai", marker = "extra == 'agentic-azure-embeddings'", specifier = ">=1.0.0" }, - { name = "openai", marker = "extra == 'agentic-openai-embeddings'", specifier = ">=1.0.0" }, - { name = "openfeature-flagd-core", marker = "extra == 'feature-flags'", specifier = ">=1.0.0" }, + { name = "langchain-ollama", marker = "extra == 'agentic-evaluation'", specifier = ">=1.1.0" }, + { name = "langchain-openai", marker = "extra == 'agentic-evaluation'", specifier = ">=1.7.2" }, + { name = "markdown-it-py", marker = "extra == 'agentic'", specifier = ">=4.2.0" }, + { name = "mistralai", marker = "extra == 'agentic-mistral-embeddings'", specifier = ">=3.3.0" }, + { name = "numpy", marker = "extra == 'agentic-embeddings'", specifier = ">=2.5.4" }, + { name = "numpy", marker = "extra == 'agentic-evaluation'", specifier = ">=2.5.4" }, + { name = "numpy", marker = "extra == 'agentic-reasoning-eval'", specifier = ">=2.5.4" }, + { name = "openai", marker = "extra == 'agentic-azure-embeddings'", specifier = ">=3.36.0" }, + { name = "openai", marker = "extra == 'agentic-openai-embeddings'", specifier = ">=3.36.0" }, + { name = "openfeature-flagd-core", marker = "extra == 'feature-flags'", specifier = ">=1.0.0,<2" }, { name = "openfeature-sdk", marker = "extra == 'feature-flags'", specifier = ">=0.10.0" }, - { name = "opentelemetry-api", marker = "extra == 'agentic'", specifier = ">=1.29.0" }, - { name = "opentelemetry-api", marker = "extra == 'observability'", specifier = ">=1.45.0" }, - { name = "opentelemetry-instrumentation-starlette", marker = "extra == 'observability'", specifier = ">=0.66b0" }, - { name = "opentelemetry-sdk", marker = "extra == 'agentic'", specifier = ">=1.29.0" }, - { name = "opentelemetry-sdk", marker = "extra == 'observability'", specifier = ">=1.45.0" }, - { name = "pandas", marker = "extra == 'agentic-reasoning-eval'", specifier = ">=2.2.0" }, + { name = "opentelemetry-api", marker = "extra == 'agentic'", specifier = ">=1.45.1" }, + { name = "opentelemetry-api", marker = "extra == 'observability'", specifier = ">=1.45.1" }, + { name = "opentelemetry-instrumentation-starlette", marker = "extra == 'observability'", specifier = ">=0.66b1" }, + { name = "opentelemetry-sdk", marker = "extra == 'agentic'", specifier = ">=1.45.1" }, + { name = "opentelemetry-sdk", marker = "extra == 'observability'", specifier = ">=1.45.1" }, + { name = "pandas", marker = "extra == 'agentic-reasoning-eval'", specifier = ">=3.0.6" }, { name = "pika", marker = "extra == 'testcontainers'", specifier = ">=1.4.4" }, - { name = "pillow", marker = "extra == 'agentic-binary'", specifier = ">=12.3.0" }, - { name = "pillow-heif", marker = "extra == 'agentic-binary'", specifier = ">=0.18" }, - { name = "pinecone", marker = "extra == 'agentic-vectorstores-pinecone'", specifier = ">=5.0.0" }, - { name = "presidio-analyzer", marker = "extra == 'pii'", specifier = ">=2.2.364" }, - { name = "presidio-anonymizer", marker = "extra == 'pii'", git = "https://github.com/data-privacy-stack/presidio.git?subdirectory=presidio-anonymizer&rev=5e2fcea990aa3b99660d2aea9121d0ba74a8940b" }, + { name = "pillow", marker = "extra == 'agentic-binary'", specifier = ">=13.0.0" }, + { name = "pillow-heif", marker = "extra == 'agentic-binary'", specifier = ">=1.8.1" }, + { name = "pinecone", marker = "extra == 'agentic-vectorstores-pinecone'", specifier = ">=10.1.0" }, { name = "prometheus-client", marker = "extra == 'observability'", specifier = ">=0.26.0" }, { name = "py7zr", marker = "extra == 'agentic-binary'", specifier = ">=1.1.4" }, - { name = "pydantic", specifier = ">=2.13.5" }, - { name = "pydantic", marker = "extra == 'agentic'", specifier = ">=2.13,<3" }, - { name = "pydantic-ai", extras = ["ag-ui", "bedrock", "cohere", "groq", "huggingface", "mistral", "retries", "spec", "temporal", "ui", "xai"], marker = "extra == 'agentic'", specifier = "==2.55.0" }, - { name = "pydantic-monty", marker = "extra == 'agentic-script-execution'", specifier = "==0.0.18" }, - { name = "pydantic-settings", marker = "extra == 'agentic'", specifier = ">=2.14.2,<3" }, + { name = "pydantic", specifier = ">=2.14.1" }, + { name = "pydantic", marker = "extra == 'agentic'", specifier = ">=2.14.1,<3" }, + { name = "pydantic-ai", extras = ["ag-ui", "bedrock", "cohere", "groq", "huggingface", "mistral", "retries", "spec", "temporal", "ui", "xai"], marker = "extra == 'agentic'", specifier = "==2.59.0" }, + { name = "pydantic-monty", marker = "extra == 'agentic-script-execution'", specifier = "==0.0.23" }, + { name = "pydantic-settings", marker = "extra == 'agentic'", specifier = ">=2.16.1,<3" }, { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-azure-embeddings'" }, { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-bedrock-embeddings'" }, { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-binary'" }, @@ -2133,59 +2131,59 @@ requires-dist = [ { name = "pyfly", extras = ["web", "granian"], marker = "extra == 'web-fast'" }, { name = "pyfly", extras = ["web", "templates", "data-relational", "data-document", "postgresql", "mysql", "eda", "cache", "client", "grpc", "websocket", "ecm-aws", "ecm-azure", "observability", "security", "scheduling", "cli", "shell", "kafka", "rabbitmq", "redis", "granian", "fastapi", "hypercorn", "idp-azure", "idp-keycloak", "idp-cognito", "notifications", "config-server-git", "feature-flags"], marker = "extra == 'full'" }, { name = "pyfly", extras = ["web", "templates", "security"], marker = "extra == 'webapp'" }, - { name = "pyjwt", extras = ["crypto"], marker = "extra == 'security'", specifier = ">=2.15.0" }, + { name = "pyjwt", extras = ["crypto"], marker = "extra == 'security'", specifier = ">=2.15.1" }, { name = "pyotp", marker = "extra == 'security'", specifier = ">=2.10.0" }, - { name = "pypdf", marker = "extra == 'agentic-binary'", specifier = ">=6.19.0" }, - { name = "python-dotenv", marker = "extra == 'agentic'", specifier = ">=1.0.0" }, + { name = "pypdf", marker = "extra == 'agentic-binary'", specifier = ">=6.21.2" }, + { name = "python-dotenv", marker = "extra == 'agentic'", specifier = ">=1.2.4" }, { name = "python-multipart", marker = "extra == 'web'", specifier = ">=0.0.32" }, { name = "pyyaml", specifier = ">=6.0.3" }, { name = "pyyaml", marker = "extra == 'agentic'", specifier = ">=6.0" }, - { name = "qdrant-client", marker = "extra == 'agentic-vectorstores-qdrant'", specifier = ">=1.12.0" }, + { name = "qdrant-client", marker = "extra == 'agentic-vectorstores-qdrant'", specifier = ">=1.19.1" }, { name = "questionary", marker = "extra == 'cli'", specifier = ">=2.1.1" }, { name = "ragas", marker = "extra == 'agentic-evaluation'", specifier = ">=0.2.6,<0.2.7" }, { name = "redis", extras = ["hiredis"], marker = "extra == 'cache'", specifier = ">=8.1.0" }, { name = "redis", extras = ["hiredis"], marker = "extra == 'redis'", specifier = ">=8.1.0" }, { name = "rich", marker = "extra == 'cli'", specifier = ">=15.0.0" }, { name = "sqlalchemy", extras = ["asyncio"], marker = "extra == 'data-relational'", specifier = ">=2.0.50" }, - { name = "sqlite-vec", marker = "extra == 'agentic-vectorstores-sqlite-vec'", specifier = ">=0.1.6" }, - { name = "starlette", marker = "extra == 'web'", specifier = ">=1.7.0" }, + { name = "sqlite-vec", marker = "extra == 'agentic-vectorstores-sqlite-vec'", specifier = ">=0.1.9" }, + { name = "starlette", marker = "extra == 'web'", specifier = ">=1.9.0" }, { name = "structlog", marker = "extra == 'observability'", specifier = ">=26.1.0" }, { name = "testcontainers", marker = "extra == 'testcontainers'", specifier = ">=4.15.0" }, { name = "uvicorn", extras = ["standard"], marker = "extra == 'web'", specifier = ">=0.54.0" }, - { name = "uvloop", marker = "sys_platform != 'win32' and extra == 'web-fast'", specifier = ">=0.22.1" }, - { name = "uvloop", marker = "sys_platform != 'win32' and extra == 'web-fastapi'", specifier = ">=0.22.1" }, - { name = "voyageai", marker = "extra == 'agentic-voyage-embeddings'", specifier = ">=0.3.0" }, - { name = "watchfiles", marker = "extra == 'agentic-watch'", specifier = ">=0.24.0" }, - { name = "websockets", marker = "extra == 'websocket'", specifier = ">=17.1" }, + { name = "uvloop", marker = "sys_platform != 'win32' and extra == 'web-fast'", specifier = ">=0.23.0" }, + { name = "uvloop", marker = "sys_platform != 'win32' and extra == 'web-fastapi'", specifier = ">=0.23.0" }, + { name = "voyageai", marker = "extra == 'agentic-voyage-embeddings'", specifier = ">=0.5.0" }, + { name = "watchfiles", marker = "extra == 'agentic-watch'", specifier = ">=1.3.0" }, + { name = "websockets", marker = "extra == 'websocket'", specifier = ">=17.3" }, ] -provides-extras = ["agentic", "agentic-relational", "agentic-postgres", "agentic-mongodb", "agentic-security", "agentic-script-execution", "agentic-embeddings", "agentic-openai-embeddings", "agentic-cohere-embeddings", "agentic-google-embeddings", "agentic-mistral-embeddings", "agentic-voyage-embeddings", "agentic-azure-embeddings", "agentic-bedrock-embeddings", "agentic-ollama-embeddings", "agentic-reasoning-eval", "agentic-vectorstores-chroma", "agentic-vectorstores-sqlite-vec", "agentic-vectorstores-pinecone", "agentic-vectorstores-qdrant", "agentic-vectorstores-pgvector", "agentic-watch", "agentic-binary", "agentic-all", "agentic-evaluation", "templates", "webapp", "web", "data-relational", "testing", "argon2", "testcontainers", "data-document", "postgresql", "mysql", "eda", "fastapi", "granian", "hypercorn", "kafka", "rabbitmq", "redis", "cache", "oauth2-client", "client", "feature-flags", "config-server-git", "grpc", "websocket", "idp-azure", "idp-keycloak", "idp-cognito", "ecm-aws", "ecm-azure", "observability", "scheduling", "pii", "security", "notifications", "cli", "shell", "web-fast", "web-fastapi", "full"] +provides-extras = ["agentic", "agentic-relational", "agentic-postgres", "agentic-mongodb", "agentic-security", "agentic-script-execution", "agentic-embeddings", "agentic-openai-embeddings", "agentic-cohere-embeddings", "agentic-google-embeddings", "agentic-mistral-embeddings", "agentic-voyage-embeddings", "agentic-azure-embeddings", "agentic-bedrock-embeddings", "agentic-ollama-embeddings", "agentic-reasoning-eval", "agentic-vectorstores-chroma", "agentic-vectorstores-sqlite-vec", "agentic-vectorstores-pinecone", "agentic-vectorstores-qdrant", "agentic-vectorstores-pgvector", "agentic-watch", "agentic-binary", "agentic-all", "agentic-evaluation", "templates", "webapp", "web", "data-relational", "testing", "argon2", "testcontainers", "data-document", "postgresql", "mysql", "eda", "fastapi", "granian", "hypercorn", "kafka", "rabbitmq", "redis", "cache", "oauth2-client", "client", "feature-flags", "config-server-git", "grpc", "websocket", "idp-azure", "idp-keycloak", "idp-cognito", "ecm-aws", "ecm-azure", "observability", "scheduling", "security", "notifications", "cli", "shell", "web-fast", "web-fastapi", "full"] [package.metadata.requires-dev] agentic-dev = [ { name = "httpx", specifier = ">=0.28.0" }, - { name = "pdfplumber", specifier = ">=0.11.0" }, - { name = "pre-commit", specifier = ">=3.8.0" }, - { name = "pyright", specifier = ">=1.1.0" }, + { name = "pdfplumber", specifier = ">=0.11.10" }, + { name = "pre-commit", specifier = ">=4.7.0" }, + { name = "pyright", specifier = ">=1.1.414" }, { name = "pytest", specifier = ">=8.3.0" }, { name = "pytest-asyncio", specifier = ">=0.24.0" }, - { name = "pytest-benchmark", specifier = ">=5.0.0" }, + { name = "pytest-benchmark", specifier = ">=5.3.0" }, { name = "pytest-cov", specifier = ">=6.0.0" }, - { name = "ruff", specifier = ">=0.9.0" }, + { name = "ruff", specifier = ">=0.17.1" }, { name = "testcontainers", specifier = ">=4.10.0" }, ] -browser = [{ name = "playwright", specifier = ">=1.63.0" }] +browser = [{ name = "playwright", specifier = ">=1.64.0" }] dev = [ { name = "aiomysql", specifier = ">=0.3.2" }, { name = "aiosmtpd", specifier = ">=1.4.6" }, - { name = "coverage", extras = ["toml"], specifier = ">=7.16.1" }, - { name = "jsonpath-ng", specifier = ">=1.8.0" }, - { name = "mypy", specifier = ">=2.3.1" }, - { name = "opentelemetry-exporter-otlp-proto-http", specifier = ">=1.45.0" }, + { name = "coverage", extras = ["toml"], specifier = ">=7.16.2" }, + { name = "jsonpath-ng", specifier = ">=1.12.0" }, + { name = "mypy", specifier = ">=2.4.0" }, + { name = "opentelemetry-exporter-otlp-proto-http", specifier = ">=1.45.1" }, { name = "pytest", specifier = ">=9.1.1" }, { name = "pytest-asyncio", specifier = ">=1.4.0" }, { name = "pytest-cov", specifier = ">=7.1.0" }, { name = "respx", specifier = ">=0.23.1" }, - { name = "ruff", specifier = ">=0.16.9" }, + { name = "ruff", specifier = ">=0.17.1" }, ] [[package]] diff --git a/samples/lumen/uv.lock b/samples/lumen/uv.lock index e5d555fe..3778f23e 100644 --- a/samples/lumen/uv.lock +++ b/samples/lumen/uv.lock @@ -13,16 +13,16 @@ wheels = [ [[package]] name = "alembic" -version = "1.18.4" +version = "1.20.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mako" }, { name = "sqlalchemy" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/94/13/8b084e0f2efb0275a1d534838844926f798bd766566b1375174e2448cd31/alembic-1.18.4.tar.gz", hash = "sha256:cb6e1fd84b6174ab8dbb2329f86d631ba9559dd78df550b57804d607672cedbc", size = 2056725, upload-time = "2026-02-10T16:00:47.195Z" } +sdist = { url = "https://files.pythonhosted.org/packages/93/1c/00909e0fbebad2121d916fdcab044cae988146680e9ee4387ba25fef8747/alembic-1.20.1.tar.gz", hash = "sha256:83490def1f723413db5096591f7609ac52544805be93849170088ed04f5a2e0b", size = 2103576, upload-time = "2026-10-22T03:24:35.93Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/29/6533c317b74f707ea28f8d633734dbda2119bbadfc61b2f3640ba835d0f7/alembic-1.18.4-py3-none-any.whl", hash = "sha256:a5ed4adcf6d8a4cb575f3d759f071b03cd6e5c7618eb796cb52497be25bfe19a", size = 263893, upload-time = "2026-02-10T16:00:49.997Z" }, + { url = "https://files.pythonhosted.org/packages/11/3c/8740f5b4e1bd57333e4f84265b9b6363da4f7cf70f5622dd1e2fde7a0bd5/alembic-1.20.1-py3-none-any.whl", hash = "sha256:9970712cfb81ea26c8658d378aaa5b8f6ff9146e5bb111d70497c164016cf598", size = 270355, upload-time = "2026-10-22T03:24:37.667Z" }, ] [[package]] @@ -58,14 +58,11 @@ wheels = [ [[package]] name = "click" -version = "8.4.1" +version = "8.5.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9b/98/518d8e5081007684232226f475082b30087d0f585e8457db087298259f49/click-8.4.1.tar.gz", hash = "sha256:918b5633eddf6b41c32d4f454bf0de810065c74e3f7dbf8ee5452f8be88d3e96", size = 353007, upload-time = "2026-05-22T04:08:37.769Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/0e/7fa0ef50764b67090eca4114772a2abf8b6148198475e54c660b97caeee6/click-8.5.0.tar.gz", hash = "sha256:ba0d2089de75ea0310e2dde03160e6ca10009947fb95a182f9b54021bb272e34", size = 382235, upload-time = "2026-08-26T13:33:14.56Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl", hash = "sha256:482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2", size = 116639, upload-time = "2026-05-22T04:08:35.26Z" }, + { url = "https://files.pythonhosted.org/packages/58/50/6c0d534c5f134586a8e1ba4e330569e32f057e33372ae556463212fb4cd3/click-8.5.0-py3-none-any.whl", hash = "sha256:255bc9599cf7748b4b1a446ccc735421bd08a2ae529a8b88597d3de5664ee360", size = 125251, upload-time = "2026-08-26T13:33:12.928Z" }, ] [[package]] @@ -580,7 +577,7 @@ wheels = [ [[package]] name = "pydantic" -version = "2.13.4" +version = "2.14.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, @@ -588,89 +585,120 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/18/a5/b60d21ac674192f8ab0ba4e9fd860690f9b4a6e51ca5df118733b487d8d6/pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6", size = 844775, upload-time = "2026-05-06T13:43:05.343Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/0b/8e10b2e693af8ec54346a14caf36221334775975a747c9ceaa3f8371d96d/pydantic-2.14.1.tar.gz", hash = "sha256:94f478203dd03404682a1ada216965651dd74b1d2d5ffd62e00e0837caab5c26", size = 900362, upload-time = "2026-10-11T18:37:55.396Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba", size = 472262, upload-time = "2026-05-06T13:43:02.641Z" }, + { url = "https://files.pythonhosted.org/packages/35/ea/a56b9fe5066f3537b7882f77e9c5dfb26d8c2eefdaed9b5fc73d57b4dc22/pydantic-2.14.1-py3-none-any.whl", hash = "sha256:9195d967ec791692a04438115466764fb8b9a27b31f14a760437694f40d6b454", size = 488106, upload-time = "2026-10-11T18:37:53.437Z" }, ] [[package]] name = "pydantic-core" -version = "2.46.4" +version = "2.50.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9d/56/921726b776ace8d8f5db44c4ef961006580d91dc52b803c489fafd1aa249/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1", size = 471464, upload-time = "2026-05-06T13:37:06.98Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/24/af4ec4be49fbc810f35b0bdcacc3d433b56bbfa469fd3bfd4ae116cd9bf1/pydantic_core-2.50.1.tar.gz", hash = "sha256:e50d7b94baac6c7d09927fa5ca5800a0c7ee5015c7fcff65beb3a1931b5a6e09", size = 513515, upload-time = "2026-10-11T18:35:44.82Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/8c/af022f0af448d7747c5154288d46b5f2bc5f17366eaa0e23e9aa04d59f3b/pydantic_core-2.46.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3245406455a5d98187ec35530fd772b1d799b26667980872c8d4614991e2c4a2", size = 2106158, upload-time = "2026-05-06T13:38:57.215Z" }, - { url = "https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:962ccbab7b642487b1d8b7df90ef677e03134cf1fd8880bf698649b22a69371f", size = 1951724, upload-time = "2026-05-06T13:37:02.697Z" }, - { url = "https://files.pythonhosted.org/packages/8e/bc/f47d1ff9cbb1620e1b5b697eef06010035735f07820180e74178226b27b3/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8233f2947cf85404441fd7e0085f53b10c93e0ee78611099b5c7237e36aacbf7", size = 1975742, upload-time = "2026-05-06T13:37:09.448Z" }, - { url = "https://files.pythonhosted.org/packages/5b/11/9b9a5b0306345664a2da6410877af6e8082481b5884b3ddd78d47c6013ce/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a233125ac121aa3ffba9a2b59edfc4a985a76092dc8279586ab4b71390875e7", size = 2052418, upload-time = "2026-05-06T13:37:38.234Z" }, - { url = "https://files.pythonhosted.org/packages/f1/b7/a65fec226f5d78fc39f4a13c4cc0c768c22b113438f60c14adc9d2865038/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b712b53160b79a5850310b912a5ef8e57e56947c8ad690c227f5c9d7e561712", size = 2232274, upload-time = "2026-05-06T13:38:27.753Z" }, - { url = "https://files.pythonhosted.org/packages/68/f0/92039db98b907ef49269a8271f67db9cb78ae2fc68062ef7e4e77adb5f61/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9401557acd873c3a7f3eb9383edef8ac4968f9510e340f4808d427e75667e7b4", size = 2309940, upload-time = "2026-05-06T13:38:05.353Z" }, - { url = "https://files.pythonhosted.org/packages/5f/97/2aab507d3d00ca626e8e57c1eac6a79e4e5fbcc63eb99733ff55d1717f65/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:926c9541b14b12b1681dca8a0b75feb510b06c6341b70a8e500c2fdcff837cce", size = 2094516, upload-time = "2026-05-06T13:39:10.577Z" }, - { url = "https://files.pythonhosted.org/packages/22/37/a8aca44d40d737dde2bc05b3c6c07dff0de07ce6f82e9f3167aeaf4d5dea/pydantic_core-2.46.4-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:56cb4851bcaf3d117eddcef4fe66afd750a50274b0da8e22be256d10e5611987", size = 2136854, upload-time = "2026-05-06T13:40:22.59Z" }, - { url = "https://files.pythonhosted.org/packages/24/99/fcef1b79238c06a8cbec70819ac722ba76e02bc8ada9b0fd66eba40da01b/pydantic_core-2.46.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c68fcd102d71ea85c5b2dfac3f4f8476eff42a9e078fd5faefff6d145063536b", size = 2180306, upload-time = "2026-05-06T13:40:10.666Z" }, - { url = "https://files.pythonhosted.org/packages/ae/6c/fc44000918855b42779d007ae63b0532794739027b2f417321cddbc44f6a/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b2f69dec1725e79a012d920df1707de5caf7ed5e08f3be4435e25803efc47458", size = 2190044, upload-time = "2026-05-06T13:40:43.231Z" }, - { url = "https://files.pythonhosted.org/packages/6b/65/d9cadc9f1920d7a127ad2edba16c1db7916e59719285cd6c94600b0080ba/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:8d0820e8192167f80d88d64038e609c31452eeca865b4e1d9950a27a4609b00b", size = 2329133, upload-time = "2026-05-06T13:39:57.365Z" }, - { url = "https://files.pythonhosted.org/packages/d0/cf/c873d91679f3a30bcf5e7ac280ce5573483e72295307685120d0d5ad3416/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fbdb89b3e1c94a30cc5edfce477c6e6a5dc4d8f84665b455c27582f211a1c72c", size = 2374464, upload-time = "2026-05-06T13:38:06.976Z" }, - { url = "https://files.pythonhosted.org/packages/47/bd/6f2fc8188f31bf10590f1e98e7b306336161fac930a8c514cd7bd828c7dc/pydantic_core-2.46.4-cp312-cp312-win32.whl", hash = "sha256:9aa768456404a8bf48a4406685ac2bec8e72b62c69313734fa3b73cf33b3a894", size = 1974823, upload-time = "2026-05-06T13:40:47.985Z" }, - { url = "https://files.pythonhosted.org/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl", hash = "sha256:e9c26f834c65f5752f3f06cb08cb86a913ceb7274d0db6e267808a708b46bc89", size = 2072919, upload-time = "2026-05-06T13:39:21.153Z" }, - { url = "https://files.pythonhosted.org/packages/c4/ba/f463d006e0c47373ca7ec5e1a261c59dc01ef4d62b2657af925fb0deee3a/pydantic_core-2.46.4-cp312-cp312-win_arm64.whl", hash = "sha256:4fc73cb559bdb54b1134a706a2802a4cddd27a0633f5abb7e53056268751ac6a", size = 2027604, upload-time = "2026-05-06T13:39:03.753Z" }, - { url = "https://files.pythonhosted.org/packages/51/a2/5d30b469c5267a17b39dec53208222f76a8d351dfac4af661888c5aee77d/pydantic_core-2.46.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5d5902252db0d3cedf8d4a1bc68f70eeb430f7e4c7104c8c476753519b423008", size = 2106306, upload-time = "2026-05-06T13:37:48.029Z" }, - { url = "https://files.pythonhosted.org/packages/c1/81/4fa520eaffa8bd7d1525e644cd6d39e7d60b1592bc5b516693c7340b50f1/pydantic_core-2.46.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c94f0688e7b8d0a67abf40e57a7eaaecd17cc9586706a31b76c031f63df052b4", size = 1951906, upload-time = "2026-05-06T13:37:17.012Z" }, - { url = "https://files.pythonhosted.org/packages/03/d5/fd02da45b659668b05923b17ba3a0100a0a3d5541e3bd8fcc4ecb711309e/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f027324c56cd5406ca49c124b0db10e56c69064fec039acc571c29020cc87c76", size = 1976802, upload-time = "2026-05-06T13:37:35.113Z" }, - { url = "https://files.pythonhosted.org/packages/21/f2/95727e1368be3d3ed485eaab7adbd7dda408f33f7a36e8b48e0144002b91/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e739fee756ba1010f8bcccb534252e85a35fe45ae92c295a06059ce58b74ccd3", size = 2052446, upload-time = "2026-05-06T13:37:12.313Z" }, - { url = "https://files.pythonhosted.org/packages/9c/86/5d99feea3f77c7234b8718075b23db11532773c1a0dbd9b9490215dc2eeb/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d56801be94b86a9da183e5f3766e6310752b99ff647e38b09a9500d88e46e76", size = 2232757, upload-time = "2026-05-06T13:39:01.149Z" }, - { url = "https://files.pythonhosted.org/packages/d2/3a/508ac615935ef7588cf6d9e9b91309fdc2da751af865e02a9098de88258c/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2412e734dcb48da14d4e4006b82b46b74f2518b8a26ee7e58c6844a6cd6d03c4", size = 2309275, upload-time = "2026-05-06T13:37:41.406Z" }, - { url = "https://files.pythonhosted.org/packages/07/f8/41db9de19d7987d6b04715a02b3b40aea467000275d9d758ffaa31af7d50/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9551187363ffc0de2a00b2e47c25aeaeb1020b69b668762966df15fc5659dd5a", size = 2094467, upload-time = "2026-05-06T13:39:18.847Z" }, - { url = "https://files.pythonhosted.org/packages/2c/e2/f35033184cb11d0052daf4416e8e10a502ea2ac006fc4f459aee872727d1/pydantic_core-2.46.4-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:0186750b482eefa11d7f435892b09c5c606193ef3375bcf94aa00ae6bfb66262", size = 2134417, upload-time = "2026-05-06T13:40:17.944Z" }, - { url = "https://files.pythonhosted.org/packages/7e/7b/6ceeb1cc90e193862f444ebe373d8fdf613f0a82572dde03fb10734c6c71/pydantic_core-2.46.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5855698a4856556d86e8e6cd8434bc3ac0314ee8e12089ae0e143f64c6256e4e", size = 2179782, upload-time = "2026-05-06T13:40:32.618Z" }, - { url = "https://files.pythonhosted.org/packages/5a/f2/c8d7773ede6af08036423a00ae0ceffce266c3c52a096c435d68c896083f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:cbaf13819775b7f769bf4a1f066cb6df7a28d4480081a589828ef190226881cd", size = 2188782, upload-time = "2026-05-06T13:36:51.018Z" }, - { url = "https://files.pythonhosted.org/packages/59/31/0c864784e31f09f05cdd87606f08923b9c9e7f6e51dd27f20f62f975ce9f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:633147d34cf4550417f12e2b1a0383973bdf5cdfde212cb09e9a581cf10820be", size = 2328334, upload-time = "2026-05-06T13:40:37.764Z" }, - { url = "https://files.pythonhosted.org/packages/c2/eb/4f6c8a41efa30baa755590f4141abf3a8c370fab610915733e74134a7270/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:82cf5301172168103724d49a1444d3378cb20cdee30b116a1bd6031236298a5d", size = 2372986, upload-time = "2026-05-06T13:39:34.152Z" }, - { url = "https://files.pythonhosted.org/packages/5b/24/b375a480d53113860c299764bfe9f349a3dc9108b3adc0d7f0d786492ebf/pydantic_core-2.46.4-cp313-cp313-win32.whl", hash = "sha256:9fa8ae11da9e2b3126c6426f147e0fba88d96d65921799bb30c6abd1cb2c97fb", size = 1973693, upload-time = "2026-05-06T13:37:55.072Z" }, - { url = "https://files.pythonhosted.org/packages/7e/e8/cff247591966f2d22ec8c003cd7587e27b7ba7b81ab2fb888e3ab75dc285/pydantic_core-2.46.4-cp313-cp313-win_amd64.whl", hash = "sha256:6b3ace8194b0e5204818c92802dcdca7fc6d88aabbb799d7c795540d9cd6d292", size = 2071819, upload-time = "2026-05-06T13:38:49.139Z" }, - { url = "https://files.pythonhosted.org/packages/c6/1a/f4aee670d5670e9e148e0c82c7db98d780be566c6e6a97ee8035528ca0b3/pydantic_core-2.46.4-cp313-cp313-win_arm64.whl", hash = "sha256:184c081504d17f1c1066e430e117142b2c77d9448a97f7b65c6ac9fd9aee238d", size = 2027411, upload-time = "2026-05-06T13:40:45.796Z" }, - { url = "https://files.pythonhosted.org/packages/8d/74/228a26ddad29c6672b805d9fd78e8d251cd04004fa7eed0e622096cd0250/pydantic_core-2.46.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:428e04521a40150c85216fc8b85e8d39fece235a9cf5e383761238c7fa9b96fb", size = 2102079, upload-time = "2026-05-06T13:38:41.019Z" }, - { url = "https://files.pythonhosted.org/packages/ad/1f/8970b150a4b4365623ae00fc88603491f763c627311ae8031e3111356d6e/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23ace664830ee0bfe014a0c7bc248b1f7f25ed7ad103852c317624a1083af462", size = 1952179, upload-time = "2026-05-06T13:36:59.812Z" }, - { url = "https://files.pythonhosted.org/packages/95/30/5211a831ae054928054b2f79731661087a2bc5c01e825c672b3a4a8f1b3e/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce5c1d2a8b27468f433ca974829c44060b8097eedc39933e3c206a90ee49c4a9", size = 1978926, upload-time = "2026-05-06T13:37:39.933Z" }, - { url = "https://files.pythonhosted.org/packages/57/e9/689668733b1eb67adeef047db3c2e8788fcf65a7fd9c9e2b46b7744fe245/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7283d57845ecf5a163403eb0702dfc220cc4fbdd18919cb5ccea4f95ee1cdab4", size = 2046785, upload-time = "2026-05-06T13:38:01.995Z" }, - { url = "https://files.pythonhosted.org/packages/60/d9/6715260422ff50a2109878fd24d948a6c3446bb2664f34ee78cd972b3acd/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8daafc69c93ee8a0204506a3b6b30f586ef54028f52aeeeb5c4cfc5184fd5914", size = 2228733, upload-time = "2026-05-06T13:40:50.371Z" }, - { url = "https://files.pythonhosted.org/packages/18/ae/fdb2f64316afca925640f8e70bb1a564b0ec2721c1389e25b8eb4bf9a299/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2213145bcc2ba85884d0ac63d222fece9209678f77b9b4d76f054c561adb28", size = 2307534, upload-time = "2026-05-06T13:37:21.531Z" }, - { url = "https://files.pythonhosted.org/packages/89/1d/8eff589b45bb8190a9d12c49cfad0f176a5cbd1534908a6b5125e2886239/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a5f930472650a82629163023e630d160863fce524c616f4e5186e5de9d9a49b", size = 2099732, upload-time = "2026-05-06T13:39:31.942Z" }, - { url = "https://files.pythonhosted.org/packages/06/d5/ee5a3366637fee41dee51a1fc91562dcf12ddbc68fda34e6b253da2324bb/pydantic_core-2.46.4-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:c1b3f518abeca3aa13c712fd202306e145abf59a18b094a6bafb2d2bbf59192c", size = 2129627, upload-time = "2026-05-06T13:37:25.033Z" }, - { url = "https://files.pythonhosted.org/packages/94/33/2414be571d2c6a6c4d08be21f9292b6d3fdb08949a97b6dfe985017821db/pydantic_core-2.46.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a7dd0b3ee80d90150e3495a3a13ac34dbcbfd4f012996a6a1d8900e91b5c0fb", size = 2179141, upload-time = "2026-05-06T13:37:14.046Z" }, - { url = "https://files.pythonhosted.org/packages/7b/79/7daa95be995be0eecc4cf75064cb33f9bbbfe3fe0158caf2f0d4a996a5c7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:3fb702cd90b0446a3a1c5e470bfa0dd23c0233b676a9099ddcc964fa6ca13898", size = 2184325, upload-time = "2026-05-06T13:36:53.615Z" }, - { url = "https://files.pythonhosted.org/packages/9f/cb/d0a382f5c0de8a222dc61c65348e0ce831b1f68e0a018450d31c2cace3a5/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b8458003118a712e66286df6a707db01c52c0f52f7db8e4a38f0da1d3b94fc4e", size = 2323990, upload-time = "2026-05-06T13:40:29.971Z" }, - { url = "https://files.pythonhosted.org/packages/05/db/d9ba624cc4a5aced1598e88c04fdbd8310c8a69b9d38b9a3d39ce3a61ed7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:372429a130e469c9cd698925ce5fc50940b7a1336b0d82038e63d5bbc4edc519", size = 2369978, upload-time = "2026-05-06T13:37:23.027Z" }, - { url = "https://files.pythonhosted.org/packages/f2/20/d15df15ba918c423461905802bfd2981c3af0bfa0e40d05e13edbfa48bc3/pydantic_core-2.46.4-cp314-cp314-win32.whl", hash = "sha256:85bb3611ff1802f3ee7fdd7dbff26b56f343fb432d57a4728fdd49b6ef35e2f4", size = 1966354, upload-time = "2026-05-06T13:38:03.499Z" }, - { url = "https://files.pythonhosted.org/packages/fc/b6/6b8de4c0a7d7ab3004c439c80c5c1e0a3e8d78bbae19379b01960383d9e5/pydantic_core-2.46.4-cp314-cp314-win_amd64.whl", hash = "sha256:811ff8e9c313ab425368bcbb36e5c4ebd7108c2bbf4e4089cfbb0b01eff63fac", size = 2072238, upload-time = "2026-05-06T13:39:40.807Z" }, - { url = "https://files.pythonhosted.org/packages/32/36/51eb763beec1f4cf59b1db243a7dcc39cbb41230f050a09b9d69faaf0a48/pydantic_core-2.46.4-cp314-cp314-win_arm64.whl", hash = "sha256:bfec22eab3c8cc2ceec0248aec886624116dc079afa027ecc8ad4a7e62010f8a", size = 2018251, upload-time = "2026-05-06T13:37:26.72Z" }, - { url = "https://files.pythonhosted.org/packages/e8/91/855af51d625b23aa987116a19e231d2aaef9c4a415273ddc189b79a45fee/pydantic_core-2.46.4-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:af8244b2bef6aaad6d92cda81372de7f8c8d36c9f0c3ea36e827c60e7d9467a0", size = 2099593, upload-time = "2026-05-06T13:39:47.682Z" }, - { url = "https://files.pythonhosted.org/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a4330cdbc57162e4b3aa303f588ba752257694c9c9be3e7ebb11b4aca659b5d", size = 1935226, upload-time = "2026-05-06T13:40:40.428Z" }, - { url = "https://files.pythonhosted.org/packages/e8/e7/1955d28d1afc56dd4b3ad7cc0cf39df1b9852964cf16e5d13912756d6d6b/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c61fc04a3d840155ff08e475a04809278972fe6aef51e2720554e96367e34b", size = 1974605, upload-time = "2026-05-06T13:37:32.029Z" }, - { url = "https://files.pythonhosted.org/packages/93/e2/3fedbf0ba7a22850e6e9fd78117f1c0f10f950182344d8a6c535d468fdd8/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c50f2528cf200c5eed56faf3f4e22fcd5f38c157a8b78576e6ba3168ec35f000", size = 2030777, upload-time = "2026-05-06T13:38:55.239Z" }, - { url = "https://files.pythonhosted.org/packages/f8/61/46be275fcaaba0b4f5b9669dd852267ce1ff616592dccf7a7845588df091/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0cbe8b01f948de4286c74cdd6c667aceb38f5c1e26f0693b3983d9d74887c65e", size = 2236641, upload-time = "2026-05-06T13:37:08.096Z" }, - { url = "https://files.pythonhosted.org/packages/60/db/12e93e46a8bac9988be3c016860f83293daea8c716c029c9ace279036f2f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:617d7e2ca7dcb8c5cf6bcb8c59b8832c94b36196bbf1cbd1bfb56ed341905edd", size = 2286404, upload-time = "2026-05-06T13:40:20.221Z" }, - { url = "https://files.pythonhosted.org/packages/e2/4a/4d8b19008f38d31c53b8219cfedc2e3d5de5fe99d90076b7e767de29274f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7027560ee92211647d0d34e3f7cd6f50da56399d26a9c8ad0da286d3869a53f3", size = 2109219, upload-time = "2026-05-06T13:38:12.153Z" }, - { url = "https://files.pythonhosted.org/packages/88/70/3cbc40978fefb7bb09c6708d40d4ad1a5d70fd7213c3d17f971de868ec1f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:f99626688942fb746e545232e7726926f3be91b5975f8b55327665fafda991c7", size = 2110594, upload-time = "2026-05-06T13:40:02.971Z" }, - { url = "https://files.pythonhosted.org/packages/9d/20/b8d36736216e29491125531685b2f9e61aa5b4b2599893f8268551da3338/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3e9034a63de20e15e8ade85358bc6efc614008cab72898b4b4952bea0509ff", size = 2159542, upload-time = "2026-05-06T13:39:27.506Z" }, - { url = "https://files.pythonhosted.org/packages/1d/a2/367df868eb584dacf6bf82a389272406d7178e301c4ac82545ab98bc2dd9/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:97e7cf2be5c77b7d1a9713a05605d49460d02c6078d38d8bef3cbe323c548424", size = 2168146, upload-time = "2026-05-06T13:38:31.93Z" }, - { url = "https://files.pythonhosted.org/packages/c1/b8/4460f77f7e201893f649a29ab355dddd3beee8a97bcb1a320db414f9a06e/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:3bf92c5d0e00fefaab325a4d27828fe6b6e2a21848686b5b60d2d9eeb09d76c6", size = 2306309, upload-time = "2026-05-06T13:37:44.717Z" }, - { url = "https://files.pythonhosted.org/packages/64/c4/be2639293acd87dc8ddbcec41a73cee9b2ebf996fe6d892a1a74e88ad3f7/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:3ecbc122d18468d06ca279dc26a8c2e2d5acb10943bb35e36ae92096dc3b5565", size = 2369736, upload-time = "2026-05-06T13:37:05.645Z" }, - { url = "https://files.pythonhosted.org/packages/30/a6/9f9f380dbb301f67023bf8f707aaa75daadf84f7152d95c410fd7e81d994/pydantic_core-2.46.4-cp314-cp314t-win32.whl", hash = "sha256:e846ae7835bf0703ae43f534ab79a867146dadd59dc9ca5c8b53d5c8f7c9ef02", size = 1955575, upload-time = "2026-05-06T13:38:51.116Z" }, - { url = "https://files.pythonhosted.org/packages/40/1f/f1eb9eb350e795d1af8586289746f5c5677d16043040d63710e22abc43c9/pydantic_core-2.46.4-cp314-cp314t-win_amd64.whl", hash = "sha256:2108ba5c1c1eca18030634489dc544844144ee36357f2f9f780b93e7ddbb44b5", size = 2051624, upload-time = "2026-05-06T13:38:21.672Z" }, - { url = "https://files.pythonhosted.org/packages/f6/d2/42dd53d0a85c27606f316d3aa5d2869c4e8470a5ed6dec30e4a1abe19192/pydantic_core-2.46.4-cp314-cp314t-win_arm64.whl", hash = "sha256:4fcbe087dbc2068af7eda3aa87634eba216dbda64d1ae73c8684b621d33f6596", size = 2017325, upload-time = "2026-05-06T13:40:52.723Z" }, - { url = "https://files.pythonhosted.org/packages/9d/1d/8987ad40f65ae1432753072f214fb5c74fe47ffbd0698bb9cbbb585664f8/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:1d8ba486450b14f3b1d63bc521d410ec7565e52f887b9fb671791886436a42f7", size = 2095527, upload-time = "2026-05-06T13:39:52.283Z" }, - { url = "https://files.pythonhosted.org/packages/64/d3/84c282a7eee1d3ac4c0377546ef5a1ea436ce26840d9ac3b7ed54a377507/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:3009f12e4e90b7f88b4f9adb1b0c4a3d58fe7820f3238c190047209d148026df", size = 1936024, upload-time = "2026-05-06T13:40:15.671Z" }, - { url = "https://files.pythonhosted.org/packages/d7/ca/eac61596cdeb4d7e174d3dc0bd8a6238f14f75f97a24e7b7db4c7e7340a0/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad785e92e6dc634c21555edc8bd6b64957ab844541bcb96a1366c202951ae526", size = 1990696, upload-time = "2026-05-06T13:38:34.717Z" }, - { url = "https://files.pythonhosted.org/packages/fa/c3/7c8b240552251faf6b3a957db200fcfbbcec36763c050428b601e0c9b83b/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00c603d540afdd6b80eb39f078f33ebd46211f02f33e34a32d9f053bba711de0", size = 2147590, upload-time = "2026-05-06T13:39:29.883Z" }, + { url = "https://files.pythonhosted.org/packages/ee/94/101b49a6c63f99586755690696eae14532772587d9e39e93f7b8d28a49da/pydantic_core-2.50.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:704075d10b74f2f3c6e15407c696d88701df35fc8953f434a431add0d0074db0", size = 2222428, upload-time = "2026-10-11T18:32:20.228Z" }, + { url = "https://files.pythonhosted.org/packages/db/a3/f8b1b39349c33037c73d7a1b794c9c29d8f07d5bd2b74399c1375a529cc6/pydantic_core-2.50.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e8e1d6ce820aa23317e8209a86bd65a540973c12dc7552b48a4f6c8e9926815e", size = 2025779, upload-time = "2026-10-11T18:32:21.723Z" }, + { url = "https://files.pythonhosted.org/packages/d2/2d/862a7d115305cc621358e51ba13f296e0ffdf4fbd984be9f63bc7862730b/pydantic_core-2.50.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c18db21573bd2c6489f9a544b7499f0df2853958c568e5e783536ee1f690af41", size = 2048429, upload-time = "2026-10-11T18:32:23.3Z" }, + { url = "https://files.pythonhosted.org/packages/c0/7d/fed95d18bf2b5abe2d5ab2bbec4184bfc22b6805994a33ccdae8edffd25a/pydantic_core-2.50.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cb57f304525a5e3c13333b772bf9a473f36326e9c821b2e8e1b2fd36f80ae2c3", size = 2173274, upload-time = "2026-10-11T18:32:24.697Z" }, + { url = "https://files.pythonhosted.org/packages/93/1e/c6f22ceac65dc3d291ff79bea0eb74cbd1de8b128f01fee48af03bcea1e1/pydantic_core-2.50.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a27c09d86600f1bf2fe3f37e1ae697faf3143931c09322cd799da94deee923b5", size = 2360403, upload-time = "2026-10-11T18:32:26.281Z" }, + { url = "https://files.pythonhosted.org/packages/2c/97/190b5b6bfe4c72f265feb657913eb30749193927a5ad7b83cfa7866a25a2/pydantic_core-2.50.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:46b3301d3b5c886f77de7546e47274a5842c622ea2020b8c6524c6b66913b4a6", size = 2439799, upload-time = "2026-10-11T18:32:27.844Z" }, + { url = "https://files.pythonhosted.org/packages/90/24/48cd98388e4ac2c08d0800af36d15413db15e20387f1038123a2c86cb2f6/pydantic_core-2.50.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93ba4e9d8210d941c200431a56b2c0400b131865947903937ed3ec5404307d2e", size = 2160157, upload-time = "2026-10-11T18:32:29.553Z" }, + { url = "https://files.pythonhosted.org/packages/00/86/d909133d0b9979ed14c20f110f21124a0e346caf071bd66ac5af3009062b/pydantic_core-2.50.1-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:e5faeaee74a57d32b3ab3aebad2e348f06d3ba946fc5d28c1728455f00a3d13a", size = 2229523, upload-time = "2026-10-11T18:32:31.027Z" }, + { url = "https://files.pythonhosted.org/packages/90/31/4b43f08131b2098e73a852fd932063385f3103b33839fd9d1abdb89e673d/pydantic_core-2.50.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3cda0e538208e5d722bbf3698b24f19c0a7d05bc8d5f8a7f9b121ea7fa243d9", size = 2242700, upload-time = "2026-10-11T18:32:32.622Z" }, + { url = "https://files.pythonhosted.org/packages/88/77/de39658569dc7a4c293d110a89629f61145e7538f00d1e4280c28debefd3/pydantic_core-2.50.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:57f51b31ff826e2859120cf4737c5a758a48d96f3e97da40ccee1796d58078ff", size = 2278452, upload-time = "2026-10-11T18:32:34.165Z" }, + { url = "https://files.pythonhosted.org/packages/46/bd/1eeb9e4e791e81210ef9096f58080b32ba15b5b13c108d50aaa3f8ce9f73/pydantic_core-2.50.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:8daa7ee75245d43ad7d747e5c9ecc1b1d06552f72b14887e9276f787d57375f4", size = 2450098, upload-time = "2026-10-11T18:32:35.547Z" }, + { url = "https://files.pythonhosted.org/packages/1c/e6/b2accfdff17e5a88d6358536702146de00f9339adaa4d5bbe1ee93cb4832/pydantic_core-2.50.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:acbf31f37c53a5ac0c34706c80b4f5107ba20b05fdd3816124bf236ef0c57dd2", size = 2476839, upload-time = "2026-10-11T18:32:37.119Z" }, + { url = "https://files.pythonhosted.org/packages/3b/7e/c8a83eb5d2cd42c2e13507150fb777b1edea5a018adc9cbf2858a1d08285/pydantic_core-2.50.1-cp312-cp312-win32.whl", hash = "sha256:45b11cac094aa25725581d9304eee93c9028516b9ea80dd9e175e13a5a2c840e", size = 2101425, upload-time = "2026-10-11T18:32:38.593Z" }, + { url = "https://files.pythonhosted.org/packages/c5/17/8bbd530b8659e9d963f5b16f6cb8e159f4cd174b4d6304e48969ab12dba8/pydantic_core-2.50.1-cp312-cp312-win_amd64.whl", hash = "sha256:132529c83901437ff642f585216831bf5fd7a91df66829907e155192ead62498", size = 2172522, upload-time = "2026-10-11T18:32:40.112Z" }, + { url = "https://files.pythonhosted.org/packages/af/9f/a79d690b127e4e3cff143d031538ab9aa715f6b2fbeecbd07cd6f2bf9fb7/pydantic_core-2.50.1-cp312-cp312-win_arm64.whl", hash = "sha256:4e834f6a8e4ff772dcc34f58ef5504147a3ea5b0f4eeb13b0f8eb2ca75ac57f1", size = 2161366, upload-time = "2026-10-11T18:32:41.606Z" }, + { url = "https://files.pythonhosted.org/packages/ae/57/0e237d7091d2cd44a35d243b7344227f90440166860469cd036afc23a04d/pydantic_core-2.50.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:d5e062c01286d861fd6a1c4ff6e063547b3e713067f2df033c0ff97ac2ca006b", size = 2222774, upload-time = "2026-10-11T18:32:43.103Z" }, + { url = "https://files.pythonhosted.org/packages/f7/b9/c720e56858d4e1539503297ed37063e0c08e0f3541c41b777f6a800f75fa/pydantic_core-2.50.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0c003c3b7f49debb893d2d85ae099ac5959c9839e2f330fadb1fcdf7a6594482", size = 2024738, upload-time = "2026-10-11T18:32:44.587Z" }, + { url = "https://files.pythonhosted.org/packages/4d/b8/fbfc25875219cc060e613170ff10e850c6d8924beb4910da57c2ee3ba1d2/pydantic_core-2.50.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:409e0ea40ec30d9158f33574fd758e689f6045a0f2596701828c27816ca9687d", size = 2047049, upload-time = "2026-10-11T18:32:46.164Z" }, + { url = "https://files.pythonhosted.org/packages/d7/43/34210124d504c553688f2f04b48500b131237528ac545b445e0d6d30e0d5/pydantic_core-2.50.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:131059670f1d2444269b8585cb888963994871932447c08b39ac6a51fcfef658", size = 2173415, upload-time = "2026-10-11T18:32:47.722Z" }, + { url = "https://files.pythonhosted.org/packages/65/cf/6e178e8fdc11da5965bef980983bf46326a42f436871dd51ba0a57f39df1/pydantic_core-2.50.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6dbcbee53bf17196a7f745aa9bf5a9603953a1e365b1f020be3207c676a3e7c4", size = 2361719, upload-time = "2026-10-11T18:32:49.217Z" }, + { url = "https://files.pythonhosted.org/packages/11/14/bd5169d356aa91bf777e28ba0b281c192d286d03c2812c9c9db023a2f00e/pydantic_core-2.50.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:325c23f3e35cfbf0fe3486fa5f7260d1e45885173002d30a28ca019994124255", size = 2439803, upload-time = "2026-10-11T18:32:51.025Z" }, + { url = "https://files.pythonhosted.org/packages/1c/bc/d79d000e5203ebef39af839f2ce77a777fcad6e08ad26af9a2fcd114ffc8/pydantic_core-2.50.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17e722e156d0444ecaefbe640bdb60928752bf2013e2b7a11cdb099aaae19bec", size = 2158402, upload-time = "2026-10-11T18:32:52.714Z" }, + { url = "https://files.pythonhosted.org/packages/1b/a5/4902cb5fd599422c130bd3124ab31ee8b771199bd56662702eed07d3fec7/pydantic_core-2.50.1-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:aa8224f10880d9bf1b5993988ba153d42a8b4f3f4f511f93b1f09c93ff613c72", size = 2229755, upload-time = "2026-10-11T18:32:54.126Z" }, + { url = "https://files.pythonhosted.org/packages/1a/f5/c1481f8669f6060d89110c9b1374173fc8767ca276b84f4870bd8acd5e3f/pydantic_core-2.50.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:41bc8237121bd8dc8d888dfd6279fc166ffc88c1f1bf3a8bf00869680533ca4c", size = 2242303, upload-time = "2026-10-11T18:32:55.641Z" }, + { url = "https://files.pythonhosted.org/packages/04/f9/77fc3c7653ba9b6e42049e17e96b25388187d4a7c274ab1cb07f58ac8419/pydantic_core-2.50.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:45c6266d071c241f2a168d45bf8c54344f0effce35e7e6b73afdec11f3687568", size = 2278345, upload-time = "2026-10-11T18:32:57.38Z" }, + { url = "https://files.pythonhosted.org/packages/95/9b/0579c5d12e7f2b16b27e6782427987341fcce07b0725e02ddb0b74add0c4/pydantic_core-2.50.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:1deeacb112d14d3f4fcb16b165f7dbaf76c70ba6e82f37ba042bdab51970a0b8", size = 2449947, upload-time = "2026-10-11T18:32:58.896Z" }, + { url = "https://files.pythonhosted.org/packages/a8/ac/1b677db91eba54cc5922f4de6edc46ba45c2bd712dfdc0130382d158e214/pydantic_core-2.50.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1c96fd793b73d1b92e65570132505498fe7b21eaef73cdf74e67e5dfba7ac9e4", size = 2476889, upload-time = "2026-10-11T18:33:00.665Z" }, + { url = "https://files.pythonhosted.org/packages/4d/2a/3a9f6624ee3ea9ccba5249dde11418bb4c35780a7a92608f8768bd3fea39/pydantic_core-2.50.1-cp313-cp313-win32.whl", hash = "sha256:06ead20d39ffd6f2f6f2a8f8a6de67ff8bb1b4f14a8a30e058502514ee2ac685", size = 2101118, upload-time = "2026-10-11T18:33:02.329Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1f/323f78ddd9d9938aac420c1abb4e8ba799fc8bdab0acc67c0593b837c979/pydantic_core-2.50.1-cp313-cp313-win_amd64.whl", hash = "sha256:7816e98acc08119dc0f340ab167048ecc54126316330c1f0caf7c6756c88e28f", size = 2170840, upload-time = "2026-10-11T18:33:03.919Z" }, + { url = "https://files.pythonhosted.org/packages/cb/09/8497c52a739ae425c3ac2f7f56414cbc711c67d374346174f40fe2062644/pydantic_core-2.50.1-cp313-cp313-win_arm64.whl", hash = "sha256:c17799a62c142d61b8a3c51752a7cbc87fe2ad4ccfab10e628a77b405075c662", size = 2161633, upload-time = "2026-10-11T18:33:05.518Z" }, + { url = "https://files.pythonhosted.org/packages/49/33/28b96e81677153715e3eafb9f26663a80841e859fde282a380359b0d3fa1/pydantic_core-2.50.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:1cf41f1ae3fa155cf167a72689ad044bcc1e3c97e064123677149bdfb5dafc4a", size = 2224428, upload-time = "2026-10-11T18:33:07.153Z" }, + { url = "https://files.pythonhosted.org/packages/94/40/15c06410c9b7b8da5805d27b64e09bd3f900e986728106db2689dbc51513/pydantic_core-2.50.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4df197990c15b5a37c5a277d131d9f2c67de6133f2e5dafd80d9bba4b99f46f9", size = 2023740, upload-time = "2026-10-11T18:33:08.763Z" }, + { url = "https://files.pythonhosted.org/packages/a1/4e/5eb629f6efc2a27e421d789dd4bfacbb5f6d09c80c28b13d1e87d73163d5/pydantic_core-2.50.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0036473f5583e6a60e50b8b21651511564277a3f05cc5dab8cf579f552cd5f6c", size = 2049435, upload-time = "2026-10-11T18:33:10.366Z" }, + { url = "https://files.pythonhosted.org/packages/ba/8e/f195aebec49ad12318876ac2368c197a7939f5d52f8e156d2238ef8a4588/pydantic_core-2.50.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:992c3514ec891fa7858099183e4d64e6bd5a5d4ff452fae29df22faa77a006bb", size = 2172975, upload-time = "2026-10-11T18:33:12.368Z" }, + { url = "https://files.pythonhosted.org/packages/e0/f5/7ad9fb83010cd5ea0948409db105676ed779c4e709e2d3d89b9fe2558794/pydantic_core-2.50.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:739dc730e6be3bd5ec2f4ab5cfc7eb047cc45fc1497b3bafec74ff2ed07df597", size = 2364197, upload-time = "2026-10-11T18:33:14.244Z" }, + { url = "https://files.pythonhosted.org/packages/ca/fb/bf0aab3e78301d202b82a0322ec968cd703b11fc0623fde9a28708936f62/pydantic_core-2.50.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:32fad3a91e51b6d2039c572db04a5a873260b399f6bd62c3552671fa7a4a2899", size = 2444259, upload-time = "2026-10-11T18:33:15.79Z" }, + { url = "https://files.pythonhosted.org/packages/45/35/38f6d6564fae57d9b12e5676dfa947e0e7d5c46dbeaa7eb3352261d6d299/pydantic_core-2.50.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42b54c2c90ad348b5e3a85e03e715d572c1fde357ef104cdfe3b03b697a404ea", size = 2159857, upload-time = "2026-10-11T18:33:17.51Z" }, + { url = "https://files.pythonhosted.org/packages/65/a0/fb0a3ca10f139dcf765b2d312d10cf0f65c57c59993229d00ad12b14ceff/pydantic_core-2.50.1-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:2df1ff41884de2bc4b307bafd7c40a691094fad2ff8e767e5b45a319257bcf4e", size = 2233954, upload-time = "2026-10-11T18:33:19.591Z" }, + { url = "https://files.pythonhosted.org/packages/8c/6a/e63842252702aa4ec6e6b7178ca85e541a77459076592c23ebe2d9840b33/pydantic_core-2.50.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fe90228920fd8ff2be62622b6bb8a2b11acd65046d50c6b130614b5879605a20", size = 2243876, upload-time = "2026-10-11T18:33:21.393Z" }, + { url = "https://files.pythonhosted.org/packages/39/25/5991cf8318b37e0dfab47b87541619a1df8501a793cba0d978846cba37a7/pydantic_core-2.50.1-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:844b869f118e22a41a091bdcedda8a71bc1b0f62c38d1a0c3211cece47e1d8fc", size = 2277908, upload-time = "2026-10-11T18:33:23.324Z" }, + { url = "https://files.pythonhosted.org/packages/a7/3e/3ee8baaa6cc25a6961c69168cf9ff0f002d56f4e0d541ad6724c18fb61f3/pydantic_core-2.50.1-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:2eb75304506894a281d346220a4f7481a1b8729577c5ed2a05395991966a8396", size = 2449285, upload-time = "2026-10-11T18:33:24.942Z" }, + { url = "https://files.pythonhosted.org/packages/c0/c7/acbec6deac13fe697a80c275a9b6661db62c4d323bac8a47347b1f39c7cd/pydantic_core-2.50.1-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:6b20a4bffabdad0db2927ac034ae3b8a681b1f7a0182f3e60b479ad2fde21ebb", size = 2479013, upload-time = "2026-10-11T18:33:26.925Z" }, + { url = "https://files.pythonhosted.org/packages/10/08/21a3f237b264389f6219d053ee78fc1b5c2fd402c1b1cb2b6cb8b85f9834/pydantic_core-2.50.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl", hash = "sha256:99ba9bc2b8062ea0c326a990f7f00e6530c23579de66dd246e72c4cafef950a5", size = 1484400, upload-time = "2026-10-11T18:33:28.693Z" }, + { url = "https://files.pythonhosted.org/packages/09/ce/077a6d262d12ef09108377ac0717f029f420d773ace63cafd6143af75568/pydantic_core-2.50.1-cp314-cp314-win32.whl", hash = "sha256:cf356f70551d40374eaffb1aa63f1eb6d2006681cbd7a9faea173ce0f4dd7cd2", size = 2103222, upload-time = "2026-10-11T18:33:30.326Z" }, + { url = "https://files.pythonhosted.org/packages/14/4c/350a2415209c43d670eb71d3c040f332c04a30583d39e311b05c7ac15762/pydantic_core-2.50.1-cp314-cp314-win_amd64.whl", hash = "sha256:d32f3acc081cc3923386d88f422cde8892335e95f034e0104bb4cf9310d9915f", size = 2171586, upload-time = "2026-10-11T18:33:32.139Z" }, + { url = "https://files.pythonhosted.org/packages/bf/92/9bea6ca96580a0902fed366f064f0829e404f41889b34543279a1162b888/pydantic_core-2.50.1-cp314-cp314-win_arm64.whl", hash = "sha256:bed5163e03b98bc1fa2eb05d74c63d9c5c95d8ed6254985481640fbf5e237dea", size = 2155773, upload-time = "2026-10-11T18:33:33.896Z" }, + { url = "https://files.pythonhosted.org/packages/86/8c/f121f073cf32bdd5cba7e6230b1ce0ac845b0cf43e44dd597d95af272db2/pydantic_core-2.50.1-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:9572c1369e9c9da2d64a7b7992c786d90ff295abc93964cfe3125e4290768070", size = 2234017, upload-time = "2026-10-11T18:33:35.588Z" }, + { url = "https://files.pythonhosted.org/packages/a4/69/2bb2bcd6146cffe98d760a46c42ae71efd5151d9b2f9c9bf6619a3b32083/pydantic_core-2.50.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2005207aafe1231315718bf6ed5d064a7300fb4772754af35ee72fc68159492e", size = 2001016, upload-time = "2026-10-11T18:33:37.57Z" }, + { url = "https://files.pythonhosted.org/packages/20/b3/fbf854c7d07ec114260c26e9e2071a4381740f9ae09641dbfcbdf2a18c45/pydantic_core-2.50.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64f6047f62a6c5ae08d0a6afb035667aa2d97c3d20d69762e034c5ea144d92a5", size = 2023015, upload-time = "2026-10-11T18:33:39.433Z" }, + { url = "https://files.pythonhosted.org/packages/65/20/6de55b2f92cdb614b745c6e9ced639fc4fd7e1e77604825a88bdece6fcbd/pydantic_core-2.50.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ef800dd7d85bcdadf4c3076e4c94e43939493558a3b69a1ea830c706d4617bb", size = 2192543, upload-time = "2026-10-11T18:33:41.381Z" }, + { url = "https://files.pythonhosted.org/packages/0c/d9/19e91c94bd5c405945ce2f15526808aea37e162c253160de8ed7bf70b406/pydantic_core-2.50.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b0135bcdcaa0f23573f286e4cb5e0fd2962700964ed13df085b85f2b97aeab9e", size = 2388704, upload-time = "2026-10-11T18:33:43.167Z" }, + { url = "https://files.pythonhosted.org/packages/b6/bc/2e24c8415eae1a25ee5a5484946a917123bad2e9d01689a759236928175a/pydantic_core-2.50.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0b3a6f334c6a2345ca15318ff894502a90012536404b37c844a976c76c846e0b", size = 2464118, upload-time = "2026-10-11T18:33:44.856Z" }, + { url = "https://files.pythonhosted.org/packages/bd/1f/945b8053cb061c64e102bcaf7bfb9ed740c0bd4349f9bb978a7d4ddff4ab/pydantic_core-2.50.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06e01fbbfdb9be777b316a71b6c49efaf4a08b615d0a98d678cda3023f79d019", size = 2150142, upload-time = "2026-10-11T18:33:46.661Z" }, + { url = "https://files.pythonhosted.org/packages/2b/78/96a3e50bf0d64aaae781107eb9335b7529d05a85793ed6e7241c4cd1d931/pydantic_core-2.50.1-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:a29a061fec0b4e2d714f277e70a3a18125ecff803f2fea6eade2f2e53711d112", size = 2245577, upload-time = "2026-10-11T18:33:48.574Z" }, + { url = "https://files.pythonhosted.org/packages/7a/5d/a6038a0322232758a6ebfa709f4ca14a60bf5b93940cd0b345056a557da4/pydantic_core-2.50.1-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f5187624823423e1d1b82b1072ac41dc837389e18d3d0572cc19bbee46cd550a", size = 2263728, upload-time = "2026-10-11T18:33:50.527Z" }, + { url = "https://files.pythonhosted.org/packages/0d/4b/76ded3333a457a9344c4f2d63f2d82d0101654b05178fa4ddfe7d3627674/pydantic_core-2.50.1-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:3e46a9eb0a0901dd6275e6b06ac3a464885ef350ec4121fe486869de8053e4bb", size = 2293630, upload-time = "2026-10-11T18:33:52.362Z" }, + { url = "https://files.pythonhosted.org/packages/a9/00/9eca378335c9c1b72bc779bf6e4c2a82ce784f14ec48a0e87102c9870e05/pydantic_core-2.50.1-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:756d669f04e62ec4148ecfe22be6a4484d9b1181a6ef32e205ebfd200540858b", size = 2468048, upload-time = "2026-10-11T18:33:54.118Z" }, + { url = "https://files.pythonhosted.org/packages/35/ca/e3832e9cf93651251de43c8c5c029ed680a3c1a0a1b17ee26c81bed08cbd/pydantic_core-2.50.1-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:c516cc5367ca3448995d42cb994bf3f4c9002d2a7c22eac9622551269ad1b807", size = 2512159, upload-time = "2026-10-11T18:33:55.99Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f2/773469b5a10a39116a2cb17edaf6d722f017dd8da07161b371465311c542/pydantic_core-2.50.1-cp314-cp314t-win32.whl", hash = "sha256:9d1bed94af6a63835461f3cf7502058eb166c58c4778e11d0f433cfb1bd69e19", size = 2098406, upload-time = "2026-10-11T18:33:58.043Z" }, + { url = "https://files.pythonhosted.org/packages/ee/42/0bb74f8f25204b259b11ab7c12dc7f180893b6bd706118b385147fb6efd5/pydantic_core-2.50.1-cp314-cp314t-win_amd64.whl", hash = "sha256:c8dce1f1e0e5358b682a6ad3fa5e31b31d4560997b8e61417e9217c8d60f8a0c", size = 2148481, upload-time = "2026-10-11T18:33:59.913Z" }, + { url = "https://files.pythonhosted.org/packages/47/0d/d801646c9679a4e630e15cf521d4108b93854b42a6e6e02391bd4c6b1095/pydantic_core-2.50.1-cp314-cp314t-win_arm64.whl", hash = "sha256:ceff0acc940be2715bd6ad17b24c0e5304abf44f6efd0f81ee8499e640f9dc86", size = 2174972, upload-time = "2026-10-11T18:34:01.875Z" }, + { url = "https://files.pythonhosted.org/packages/b2/84/23984b763d8862a02a13d27a44b6e8169428fd85ecfed88f54c29108604d/pydantic_core-2.50.1-cp315-cp315-macosx_10_12_x86_64.whl", hash = "sha256:8a6791afa2245e6c6b180122d105941644f5bd410bb18623b408808cc41a3102", size = 2224599, upload-time = "2026-10-11T18:34:04.016Z" }, + { url = "https://files.pythonhosted.org/packages/4d/90/a63cf8586abc1d1a3f6d9b18f0224789ebf003851f092ebda3c7c863fd32/pydantic_core-2.50.1-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:84f34323a61a365b4e9295de6028474754829aaddd59c7bf1a040e7487ef8f3c", size = 2024191, upload-time = "2026-10-11T18:34:05.901Z" }, + { url = "https://files.pythonhosted.org/packages/a6/6a/f34bff9808ffb4907fbf5f5040457d253cacf2da7fce9efbc99ca1b1a44d/pydantic_core-2.50.1-cp315-cp315-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23edad659e8dbd8ca7e4e877fe6c81573abbdf215bd25a68b53e1272f58b80c7", size = 2048252, upload-time = "2026-10-11T18:34:07.757Z" }, + { url = "https://files.pythonhosted.org/packages/b2/54/13f419bf1eb59852003818e25935aaf175687d978f4c4bca70e08fe40a3b/pydantic_core-2.50.1-cp315-cp315-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a5fce22f1e87d181e924e12da7d81cfe031fb3881a5ddf26ad28f141756ca43", size = 2173376, upload-time = "2026-10-11T18:34:09.592Z" }, + { url = "https://files.pythonhosted.org/packages/6d/6c/b5a34d24cd0c81669d8f8339d74e6815abcf2f8fb48ab4b49b84c09be1d5/pydantic_core-2.50.1-cp315-cp315-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c73622ef819328873b53109ee4f77ceb598bffedd02daf916102be3228866b78", size = 2364559, upload-time = "2026-10-11T18:34:11.534Z" }, + { url = "https://files.pythonhosted.org/packages/eb/8d/d64d6216a8df365082665927ff923f183056f9049fee08e9777c9ac05296/pydantic_core-2.50.1-cp315-cp315-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ce8c25ca38cc0e3d7753ba180808de2c0c8cb24eae0df64491e40921454e9831", size = 2444697, upload-time = "2026-10-11T18:34:13.535Z" }, + { url = "https://files.pythonhosted.org/packages/b8/0d/1b1149f60a00ea21ba5f70e28acbd40feb4598af414f80f53c921fac07c9/pydantic_core-2.50.1-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7689580e72a642ab5ec64d5f55b2e33636fa43b4ebe63c0c2c965ef307c7d1aa", size = 2159961, upload-time = "2026-10-11T18:34:15.56Z" }, + { url = "https://files.pythonhosted.org/packages/1e/35/f236549299dcc78e71e945495d7ec67e78d20844d0999c60601685003031/pydantic_core-2.50.1-cp315-cp315-manylinux_2_31_riscv64.whl", hash = "sha256:d5c0e32fdbce7f1e8ef4d11f655694bf5f4175c757a9f1dc2be09b8864e5bcf5", size = 2234581, upload-time = "2026-10-11T18:34:17.502Z" }, + { url = "https://files.pythonhosted.org/packages/6a/85/26901a490522b7f75ef9bb9a7afb73e5bb550f0e1cb5b99a0069183e2eb9/pydantic_core-2.50.1-cp315-cp315-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40f523349960fa30f3ea51404308ff50f9997a90df639590f47a057c1f32b415", size = 2244090, upload-time = "2026-10-11T18:34:19.402Z" }, + { url = "https://files.pythonhosted.org/packages/ca/2c/481bcfc70ceeb77a778ca6e5b705fe592cb64735c108157f81b7dd9c280e/pydantic_core-2.50.1-cp315-cp315-musllinux_1_1_aarch64.whl", hash = "sha256:d4193206b6587047437f6f11d7e776df23e1c1e23af2a54d9347275614791e10", size = 2277948, upload-time = "2026-10-11T18:34:21.317Z" }, + { url = "https://files.pythonhosted.org/packages/24/eb/f1e09333faa7ba447cde967310f758430cc7c5e987bdab5228816c70030d/pydantic_core-2.50.1-cp315-cp315-musllinux_1_1_armv7l.whl", hash = "sha256:84bc765b282a9d5b7fe0348b8648904f25a6a04b2139da52b1dd30c8ac3a2c8f", size = 2449688, upload-time = "2026-10-11T18:34:23.321Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b3/036bde636db8f76d92996e81aefc75678ab5cec4a07eea1ad0c72a893fc3/pydantic_core-2.50.1-cp315-cp315-musllinux_1_1_x86_64.whl", hash = "sha256:ed1e728b39a383c81035b2459cfcb35d99dfb01f7d6ebe3a913bc1cc5b81e459", size = 2479286, upload-time = "2026-10-11T18:34:25.214Z" }, + { url = "https://files.pythonhosted.org/packages/d0/a3/07f018294ee18d144afeb6df1a47d9e92960f014be45c5ed13519fa5af95/pydantic_core-2.50.1-cp315-cp315-win32.whl", hash = "sha256:bc94f474417604bd383d2cd445d071b07dd55fedceed3ce33407bf1fcc107290", size = 2103683, upload-time = "2026-10-11T18:34:27.42Z" }, + { url = "https://files.pythonhosted.org/packages/5f/98/f9bd7e1f9b6709f155acb9ef826d9c3884fe925f811fd8e55b9b52280bad/pydantic_core-2.50.1-cp315-cp315-win_amd64.whl", hash = "sha256:983a662de2571cb2502fc8ff47b6770b03d025d2eb314c92f77b3f07c74720ed", size = 2171681, upload-time = "2026-10-11T18:34:29.508Z" }, + { url = "https://files.pythonhosted.org/packages/10/87/4bb3e1e7f385c076ab5af4d6dd0571b22042cd8207eb810d5b9fef15ae31/pydantic_core-2.50.1-cp315-cp315-win_arm64.whl", hash = "sha256:94845ff54dc5193f228cab81b2662a04bfbb892e95bdc15edf7399000ce57d54", size = 2156251, upload-time = "2026-10-11T18:34:31.455Z" }, + { url = "https://files.pythonhosted.org/packages/47/47/83643225b08f2aef6c8cc4bbe6e3f79c5e139c4364a6e450d0f399d87774/pydantic_core-2.50.1-cp315-cp315t-macosx_10_12_x86_64.whl", hash = "sha256:4a53d13cdfbedbfa87f08b83c1a0a5efcc767d785a4b41934fa9cb672670493a", size = 2234363, upload-time = "2026-10-11T18:34:33.65Z" }, + { url = "https://files.pythonhosted.org/packages/5e/66/127ca649ba2f2462039dc1e694c6c01e00a3689f023a617364d3507e6d97/pydantic_core-2.50.1-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:efbecf43d321f7b9281441f1f213f7c21c66988b0e06c2730ba13ed47a46bb08", size = 2000972, upload-time = "2026-10-11T18:34:36.037Z" }, + { url = "https://files.pythonhosted.org/packages/5e/4f/e421e0a5d653b1203b090b2e48745976988d7338a647940704b5b9c2b399/pydantic_core-2.50.1-cp315-cp315t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc1f08f68dac9f9e83845a8039880aba2ab553eb9b2259c3243a313182c253fe", size = 2022925, upload-time = "2026-10-11T18:34:37.972Z" }, + { url = "https://files.pythonhosted.org/packages/d5/4e/ea5568e2491e1a71100f15ae8c2d01ef52db42a184a2d4e716bc79e5eb8f/pydantic_core-2.50.1-cp315-cp315t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5dfe41f232befddb9c4377f6cfc702b51595e2d78ed082672adf8758d2c4619f", size = 2192867, upload-time = "2026-10-11T18:34:39.921Z" }, + { url = "https://files.pythonhosted.org/packages/ae/5e/3b8c3a35acbe219909ada5defad5d7d9fed845fb2b37bd5ec518f453c119/pydantic_core-2.50.1-cp315-cp315t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:adc06d218a1cadfd2ec4628424d7d79ce4eba69c2965e7e7b55106f0da5208c8", size = 2388687, upload-time = "2026-10-11T18:34:42.184Z" }, + { url = "https://files.pythonhosted.org/packages/b6/aa/7889b4e515f91a2e8c0ae6b5081fec0feb30c4398d1434e14793c60f173a/pydantic_core-2.50.1-cp315-cp315t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2cf91809d0721ab81592ba67bea7694821679c10b1a2e3c3460082b286c1918a", size = 2464415, upload-time = "2026-10-11T18:34:44.384Z" }, + { url = "https://files.pythonhosted.org/packages/08/78/93449e628eb8a6fdcce3eff9043081179d1bc7ce6f1bff32dc5006f41e00/pydantic_core-2.50.1-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23923ab9292c40da026330b1ecf4dc2618c8e86e0422e5d1fbf50d94d64ca4f8", size = 2150823, upload-time = "2026-10-11T18:34:46.392Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f1/72c5bc129fceb0d00f05dc1e67f518c1728de1928c55f81fc13d7690de39/pydantic_core-2.50.1-cp315-cp315t-manylinux_2_31_riscv64.whl", hash = "sha256:f3377c8c2b3ce898423c5e5dd94c7982e30aa7717a7e6ab2470b9de364963709", size = 2245806, upload-time = "2026-10-11T18:34:48.805Z" }, + { url = "https://files.pythonhosted.org/packages/28/2a/922a0e78f3aa6ab837b59f88190233fb8dad546c17995fde9bb3ed3b9b49/pydantic_core-2.50.1-cp315-cp315t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:455a773617b5913bf5c20d0692e5787b119e52c4d40ea644ca31f5758fd31be2", size = 2264160, upload-time = "2026-10-11T18:34:50.876Z" }, + { url = "https://files.pythonhosted.org/packages/52/a8/0f1449e3e1b20941c9372faa18e7b6a092e30cdfa841902473f7989532ac/pydantic_core-2.50.1-cp315-cp315t-musllinux_1_1_aarch64.whl", hash = "sha256:1a9006395dece0e32e704c315eff8a00bede494f6108546cfc5539c89fef4f9a", size = 2294031, upload-time = "2026-10-11T18:34:52.876Z" }, + { url = "https://files.pythonhosted.org/packages/d1/d0/1031f492857de70355fb16524bbb03efce5fd34c93ed4a1ec60be07e0d4b/pydantic_core-2.50.1-cp315-cp315t-musllinux_1_1_armv7l.whl", hash = "sha256:d2d82aa62521c55ddfb000ae70f88cdd8de974078f6024e821dfe5addd0c818f", size = 2468423, upload-time = "2026-10-11T18:34:54.995Z" }, + { url = "https://files.pythonhosted.org/packages/46/52/269ffffa645b8e47906395a39cf9db1151ae9fa4bcd7f47b960bc31baf37/pydantic_core-2.50.1-cp315-cp315t-musllinux_1_1_x86_64.whl", hash = "sha256:009634b83993777ddcd69cad0ffcace43dabde692109528e35f0fde91e386a8b", size = 2512598, upload-time = "2026-10-11T18:34:57.149Z" }, + { url = "https://files.pythonhosted.org/packages/31/5c/e47e28281f20326ff6f3c31d626f0a83e615d2d94ba41bb0ad6ec237184a/pydantic_core-2.50.1-cp315-cp315t-win32.whl", hash = "sha256:3fde4fdc6487a58d944ca87cf5adc95d5f266e872c19599f5f4c0a8a1b1f9f9f", size = 2098535, upload-time = "2026-10-11T18:34:59.313Z" }, + { url = "https://files.pythonhosted.org/packages/03/ad/759e181e69c1b472c60b2049e5f61d5da1deefdd5ce1df4bb2ebcf771f25/pydantic_core-2.50.1-cp315-cp315t-win_amd64.whl", hash = "sha256:1c8632d4ac04e6f91128fca584b3a8a507d81604c24eeaaad00d4be42765c32b", size = 2148645, upload-time = "2026-10-11T18:35:01.571Z" }, + { url = "https://files.pythonhosted.org/packages/6d/56/8a702c27e5be9f47e5f19d8669227424290e4c024e7c370279cbaf244b4e/pydantic_core-2.50.1-cp315-cp315t-win_arm64.whl", hash = "sha256:c3ede305158e75510be50869b319550ab072008c13d64d4ab1e094fb286b6f44", size = 2175297, upload-time = "2026-10-11T18:35:04.079Z" }, + { url = "https://files.pythonhosted.org/packages/a5/09/1bcf160f3cd6333e2a76982fae5963e5032de0bcaaba38464223dc266bfe/pydantic_core-2.50.1-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:76e2e83fa6ec8cdc972d438dafc2522b3a47bee4ec0ae668b29cfb1977ab5242", size = 2217070, upload-time = "2026-10-11T18:35:15.688Z" }, + { url = "https://files.pythonhosted.org/packages/3d/81/f02de95eec7794dfc7a5bc69a834f0e834b31b3009014ce6de903855f775/pydantic_core-2.50.1-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:a51eee75939cf811ac09b278745a6cee7dc873ccfbc8b9af3cc88fe4b7ce25b5", size = 2039027, upload-time = "2026-10-11T18:35:18.07Z" }, + { url = "https://files.pythonhosted.org/packages/4d/16/227746ed3771d9bf2304568b55134849ece34e13b38b1d76de763015c77f/pydantic_core-2.50.1-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae28183297fb0d2b8dc46a1f01d51f5e45825fc5afe76a835a6cb7fb34821295", size = 2109009, upload-time = "2026-10-11T18:35:20.218Z" }, + { url = "https://files.pythonhosted.org/packages/e5/b9/7664d1592a0e5a74903f357cd5b28ceb7336f3473256c5a4e8c8432f1881/pydantic_core-2.50.1-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88e492e8b9d0312e7dc13667c30222abf284dc3b79b5302b3607b41a5784ce61", size = 2269883, upload-time = "2026-10-11T18:35:22.48Z" }, ] [[package]] name = "pyfly" -version = "26.10.1" +version = "26.10.11" source = { editable = "../../" } dependencies = [ { name = "pydantic" }, @@ -702,85 +730,161 @@ web = [ [package.metadata] requires-dist = [ - { name = "aio-pika", marker = "extra == 'eda'", specifier = ">=9.6.2" }, - { name = "aio-pika", marker = "extra == 'rabbitmq'", specifier = ">=9.6.2" }, + { name = "aio-pika", marker = "extra == 'eda'", specifier = ">=10.1.1" }, + { name = "aio-pika", marker = "extra == 'rabbitmq'", specifier = ">=10.1.1" }, { name = "aiokafka", marker = "extra == 'eda'", specifier = ">=0.14.0" }, { name = "aiokafka", marker = "extra == 'kafka'", specifier = ">=0.14.0" }, { name = "aiosqlite", marker = "extra == 'data-relational'", specifier = ">=0.22.1" }, - { name = "alembic", marker = "extra == 'data-relational'", specifier = ">=1.18.4" }, - { name = "argon2-cffi", marker = "extra == 'argon2'", specifier = ">=23.1.0" }, + { name = "alembic", marker = "extra == 'data-relational'", specifier = ">=1.20.0" }, + { name = "argon2-cffi", marker = "extra == 'argon2'", specifier = ">=25.1.0" }, { name = "asyncmy", marker = "extra == 'mysql'", specifier = ">=0.2.11" }, - { name = "asyncpg", marker = "extra == 'postgresql'", specifier = ">=0.31.0" }, - { name = "azure-storage-blob", marker = "extra == 'ecm-azure'", specifier = ">=12.19.0" }, + { name = "asyncpg", marker = "extra == 'postgresql'", specifier = ">=0.32.0" }, + { name = "azure-storage-blob", marker = "extra == 'ecm-azure'", specifier = ">=12.31.0" }, { name = "bcrypt", marker = "extra == 'security'", specifier = ">=5.0.0" }, - { name = "beanie", marker = "extra == 'data-document'", specifier = ">=2.1.0" }, - { name = "boto3", marker = "extra == 'ecm-aws'", specifier = ">=1.34.0" }, - { name = "boto3", marker = "extra == 'idp-cognito'", specifier = ">=1.34.0" }, - { name = "click", marker = "extra == 'cli'", specifier = ">=8.3.3" }, - { name = "click", marker = "extra == 'shell'", specifier = ">=8.3.3" }, - { name = "croniter", marker = "extra == 'scheduling'", specifier = ">=6.2.2" }, - { name = "cryptography", marker = "extra == 'security'", specifier = ">=48.0.0" }, - { name = "fastapi", marker = "extra == 'fastapi'", specifier = ">=0.136.1" }, - { name = "gitpython", marker = "extra == 'config-server-git'", specifier = ">=3.1" }, - { name = "granian", marker = "extra == 'granian'", specifier = ">=2.7.4" }, - { name = "grpcio", marker = "extra == 'grpc'", specifier = ">=1.60.0" }, + { name = "beanie", marker = "extra == 'data-document'", specifier = ">=2.2.0" }, + { name = "boto3", marker = "extra == 'agentic-bedrock-embeddings'", specifier = ">=1.43.116" }, + { name = "boto3", marker = "extra == 'ecm-aws'", specifier = ">=1.43.116" }, + { name = "boto3", marker = "extra == 'idp-cognito'", specifier = ">=1.43.116" }, + { name = "cairosvg", marker = "extra == 'agentic-binary'", specifier = ">=2.9.1" }, + { name = "chromadb", marker = "extra == 'agentic-vectorstores-chroma'", specifier = ">=1.5.9" }, + { name = "click", marker = "extra == 'cli'", specifier = ">=8.5.0" }, + { name = "click", marker = "extra == 'shell'", specifier = ">=8.5.0" }, + { name = "cohere", marker = "extra == 'agentic-cohere-embeddings'", specifier = ">=7.3.0" }, + { name = "croniter", marker = "extra == 'scheduling'", specifier = ">=6.2.4" }, + { name = "cryptography", marker = "extra == 'agentic-security'", specifier = ">=50.0.2" }, + { name = "cryptography", marker = "extra == 'security'", specifier = ">=50.0.2" }, + { name = "datasets", marker = "extra == 'agentic-evaluation'", specifier = ">=5.0.1" }, + { name = "extract-msg", marker = "extra == 'agentic-binary'", specifier = ">=0.56.1" }, + { name = "fastapi", marker = "extra == 'fastapi'", specifier = ">=0.158.0" }, + { name = "genai-prices", marker = "extra == 'agentic'", specifier = ">=0.1.13,<0.2" }, + { name = "gitpython", marker = "extra == 'config-server-git'", specifier = ">=3.2.1" }, + { name = "google-generativeai", marker = "extra == 'agentic-google-embeddings'", specifier = ">=0.8.6" }, + { name = "granian", marker = "extra == 'granian'", specifier = ">=2.8.5" }, + { name = "grpcio", marker = "extra == 'grpc'", specifier = ">=1.84.0" }, + { name = "httpx", marker = "extra == 'agentic'", specifier = ">=0.28.0" }, + { name = "httpx", marker = "extra == 'agentic-ollama-embeddings'", specifier = ">=0.28.0" }, { name = "httpx", marker = "extra == 'client'", specifier = ">=0.28.1" }, { name = "httpx", marker = "extra == 'feature-flags'", specifier = ">=0.28" }, { name = "httpx", marker = "extra == 'idp-azure'", specifier = ">=0.28.1" }, { name = "httpx", marker = "extra == 'idp-keycloak'", specifier = ">=0.28.1" }, { name = "httpx", marker = "extra == 'oauth2-client'", specifier = ">=0.28.1" }, { name = "hypercorn", marker = "extra == 'hypercorn'", specifier = ">=0.18.0" }, + { name = "jinja2", marker = "extra == 'agentic'", specifier = ">=3.1.0" }, { name = "jinja2", marker = "extra == 'cli'", specifier = ">=3.1.6" }, { name = "jinja2", marker = "extra == 'notifications'", specifier = ">=3.1.6" }, { name = "jinja2", marker = "extra == 'templates'", specifier = ">=3.1.6" }, - { name = "jsonpath-ng", marker = "extra == 'testing'", specifier = ">=1.8.0" }, - { name = "openfeature-flagd-core", marker = "extra == 'feature-flags'", specifier = ">=1.0.0" }, + { name = "jsonpath-ng", marker = "extra == 'testing'", specifier = ">=1.12.0" }, + { name = "langchain-anthropic", marker = "extra == 'agentic-evaluation'", specifier = ">=1.7.6" }, + { name = "langchain-community", marker = "extra == 'agentic-evaluation'", specifier = ">=0.3.31,<0.4" }, + { name = "langchain-ollama", marker = "extra == 'agentic-evaluation'", specifier = ">=1.1.0" }, + { name = "langchain-openai", marker = "extra == 'agentic-evaluation'", specifier = ">=1.7.2" }, + { name = "markdown-it-py", marker = "extra == 'agentic'", specifier = ">=4.2.0" }, + { name = "mistralai", marker = "extra == 'agentic-mistral-embeddings'", specifier = ">=3.3.0" }, + { name = "numpy", marker = "extra == 'agentic-embeddings'", specifier = ">=2.5.4" }, + { name = "numpy", marker = "extra == 'agentic-evaluation'", specifier = ">=2.5.4" }, + { name = "numpy", marker = "extra == 'agentic-reasoning-eval'", specifier = ">=2.5.4" }, + { name = "openai", marker = "extra == 'agentic-azure-embeddings'", specifier = ">=3.36.0" }, + { name = "openai", marker = "extra == 'agentic-openai-embeddings'", specifier = ">=3.36.0" }, + { name = "openfeature-flagd-core", marker = "extra == 'feature-flags'", specifier = ">=1.0.0,<2" }, { name = "openfeature-sdk", marker = "extra == 'feature-flags'", specifier = ">=0.10.0" }, - { name = "opentelemetry-api", marker = "extra == 'observability'", specifier = ">=1.41.1" }, - { name = "opentelemetry-instrumentation-starlette", marker = "extra == 'observability'", specifier = ">=0.62b1" }, - { name = "opentelemetry-sdk", marker = "extra == 'observability'", specifier = ">=1.41.1" }, - { name = "pika", marker = "extra == 'testcontainers'", specifier = ">=1.3.0" }, - { name = "presidio-analyzer", marker = "extra == 'pii'", specifier = ">=2.2" }, - { name = "presidio-anonymizer", marker = "extra == 'pii'", specifier = ">=2.2" }, - { name = "prometheus-client", marker = "extra == 'observability'", specifier = ">=0.25.0" }, - { name = "pydantic", specifier = ">=2.13.3" }, + { name = "opentelemetry-api", marker = "extra == 'agentic'", specifier = ">=1.45.1" }, + { name = "opentelemetry-api", marker = "extra == 'observability'", specifier = ">=1.45.1" }, + { name = "opentelemetry-instrumentation-starlette", marker = "extra == 'observability'", specifier = ">=0.66b1" }, + { name = "opentelemetry-sdk", marker = "extra == 'agentic'", specifier = ">=1.45.1" }, + { name = "opentelemetry-sdk", marker = "extra == 'observability'", specifier = ">=1.45.1" }, + { name = "pandas", marker = "extra == 'agentic-reasoning-eval'", specifier = ">=3.0.6" }, + { name = "pika", marker = "extra == 'testcontainers'", specifier = ">=1.4.4" }, + { name = "pillow", marker = "extra == 'agentic-binary'", specifier = ">=13.0.0" }, + { name = "pillow-heif", marker = "extra == 'agentic-binary'", specifier = ">=1.8.1" }, + { name = "pinecone", marker = "extra == 'agentic-vectorstores-pinecone'", specifier = ">=10.1.0" }, + { name = "prometheus-client", marker = "extra == 'observability'", specifier = ">=0.26.0" }, + { name = "py7zr", marker = "extra == 'agentic-binary'", specifier = ">=1.1.4" }, + { name = "pydantic", specifier = ">=2.14.1" }, + { name = "pydantic", marker = "extra == 'agentic'", specifier = ">=2.14.1,<3" }, + { name = "pydantic-ai", extras = ["ag-ui", "bedrock", "cohere", "groq", "huggingface", "mistral", "retries", "spec", "temporal", "ui", "xai"], marker = "extra == 'agentic'", specifier = "==2.59.0" }, + { name = "pydantic-monty", marker = "extra == 'agentic-script-execution'", specifier = "==0.0.23" }, + { name = "pydantic-settings", marker = "extra == 'agentic'", specifier = ">=2.16.1,<3" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-azure-embeddings'" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-bedrock-embeddings'" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-binary'" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-cohere-embeddings'" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-embeddings'" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-evaluation'" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-google-embeddings'" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-mistral-embeddings'" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-ollama-embeddings'" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-openai-embeddings'" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-reasoning-eval'" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-script-execution'" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-security'" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-vectorstores-chroma'" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-vectorstores-pinecone'" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-vectorstores-qdrant'" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-vectorstores-sqlite-vec'" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-voyage-embeddings'" }, + { name = "pyfly", extras = ["agentic"], marker = "extra == 'agentic-watch'" }, + { name = "pyfly", extras = ["agentic", "agentic-postgres", "agentic-mongodb", "agentic-security", "agentic-embeddings", "agentic-openai-embeddings", "agentic-cohere-embeddings", "agentic-google-embeddings", "agentic-mistral-embeddings", "agentic-voyage-embeddings", "agentic-azure-embeddings", "agentic-bedrock-embeddings", "agentic-ollama-embeddings", "agentic-vectorstores-chroma", "agentic-vectorstores-pinecone", "agentic-vectorstores-qdrant", "agentic-vectorstores-pgvector", "agentic-vectorstores-sqlite-vec", "agentic-watch", "agentic-binary", "agentic-script-execution"], marker = "extra == 'agentic-all'" }, + { name = "pyfly", extras = ["agentic", "data-document"], marker = "extra == 'agentic-mongodb'" }, + { name = "pyfly", extras = ["agentic", "data-relational"], marker = "extra == 'agentic-relational'" }, + { name = "pyfly", extras = ["agentic", "data-relational", "postgresql"], marker = "extra == 'agentic-postgres'" }, + { name = "pyfly", extras = ["agentic", "data-relational", "postgresql"], marker = "extra == 'agentic-vectorstores-pgvector'" }, { name = "pyfly", extras = ["fastapi", "granian"], marker = "extra == 'web-fastapi'" }, { name = "pyfly", extras = ["web", "granian"], marker = "extra == 'web-fast'" }, { name = "pyfly", extras = ["web", "templates", "data-relational", "data-document", "postgresql", "mysql", "eda", "cache", "client", "grpc", "websocket", "ecm-aws", "ecm-azure", "observability", "security", "scheduling", "cli", "shell", "kafka", "rabbitmq", "redis", "granian", "fastapi", "hypercorn", "idp-azure", "idp-keycloak", "idp-cognito", "notifications", "config-server-git", "feature-flags"], marker = "extra == 'full'" }, { name = "pyfly", extras = ["web", "templates", "security"], marker = "extra == 'webapp'" }, - { name = "pyjwt", extras = ["crypto"], marker = "extra == 'security'", specifier = ">=2.12.1" }, - { name = "pyotp", marker = "extra == 'security'", specifier = ">=2.9.0" }, - { name = "python-multipart", marker = "extra == 'web'", specifier = ">=0.0.27" }, + { name = "pyjwt", extras = ["crypto"], marker = "extra == 'security'", specifier = ">=2.15.1" }, + { name = "pyotp", marker = "extra == 'security'", specifier = ">=2.10.0" }, + { name = "pypdf", marker = "extra == 'agentic-binary'", specifier = ">=6.21.2" }, + { name = "python-dotenv", marker = "extra == 'agentic'", specifier = ">=1.2.4" }, + { name = "python-multipart", marker = "extra == 'web'", specifier = ">=0.0.32" }, { name = "pyyaml", specifier = ">=6.0.3" }, + { name = "pyyaml", marker = "extra == 'agentic'", specifier = ">=6.0" }, + { name = "qdrant-client", marker = "extra == 'agentic-vectorstores-qdrant'", specifier = ">=1.19.1" }, { name = "questionary", marker = "extra == 'cli'", specifier = ">=2.1.1" }, - { name = "redis", extras = ["hiredis"], marker = "extra == 'cache'", specifier = ">=7.4.0" }, - { name = "redis", extras = ["hiredis"], marker = "extra == 'redis'", specifier = ">=7.4.0" }, + { name = "ragas", marker = "extra == 'agentic-evaluation'", specifier = ">=0.2.6,<0.2.7" }, + { name = "redis", extras = ["hiredis"], marker = "extra == 'cache'", specifier = ">=8.1.0" }, + { name = "redis", extras = ["hiredis"], marker = "extra == 'redis'", specifier = ">=8.1.0" }, { name = "rich", marker = "extra == 'cli'", specifier = ">=15.0.0" }, { name = "sqlalchemy", extras = ["asyncio"], marker = "extra == 'data-relational'", specifier = ">=2.0.50" }, - { name = "starlette", marker = "extra == 'web'", specifier = ">=1.0.0" }, - { name = "structlog", marker = "extra == 'observability'", specifier = ">=25.5.0" }, - { name = "testcontainers", marker = "extra == 'testcontainers'", specifier = ">=4.0.0" }, - { name = "uvicorn", extras = ["standard"], marker = "extra == 'web'", specifier = ">=0.46.0" }, - { name = "uvloop", marker = "sys_platform != 'win32' and extra == 'web-fast'", specifier = ">=0.22.1" }, - { name = "uvloop", marker = "sys_platform != 'win32' and extra == 'web-fastapi'", specifier = ">=0.22.1" }, - { name = "websockets", marker = "extra == 'websocket'", specifier = ">=12.0" }, -] -provides-extras = ["templates", "webapp", "web", "data-relational", "testing", "argon2", "testcontainers", "data-document", "postgresql", "mysql", "eda", "fastapi", "granian", "hypercorn", "kafka", "rabbitmq", "redis", "cache", "oauth2-client", "client", "feature-flags", "config-server-git", "grpc", "websocket", "idp-azure", "idp-keycloak", "idp-cognito", "ecm-aws", "ecm-azure", "observability", "scheduling", "pii", "security", "notifications", "cli", "shell", "web-fast", "web-fastapi", "full"] + { name = "sqlite-vec", marker = "extra == 'agentic-vectorstores-sqlite-vec'", specifier = ">=0.1.9" }, + { name = "starlette", marker = "extra == 'web'", specifier = ">=1.9.0" }, + { name = "structlog", marker = "extra == 'observability'", specifier = ">=26.1.0" }, + { name = "testcontainers", marker = "extra == 'testcontainers'", specifier = ">=4.15.0" }, + { name = "uvicorn", extras = ["standard"], marker = "extra == 'web'", specifier = ">=0.54.0" }, + { name = "uvloop", marker = "sys_platform != 'win32' and extra == 'web-fast'", specifier = ">=0.23.0" }, + { name = "uvloop", marker = "sys_platform != 'win32' and extra == 'web-fastapi'", specifier = ">=0.23.0" }, + { name = "voyageai", marker = "extra == 'agentic-voyage-embeddings'", specifier = ">=0.5.0" }, + { name = "watchfiles", marker = "extra == 'agentic-watch'", specifier = ">=1.3.0" }, + { name = "websockets", marker = "extra == 'websocket'", specifier = ">=17.3" }, +] +provides-extras = ["agentic", "agentic-relational", "agentic-postgres", "agentic-mongodb", "agentic-security", "agentic-script-execution", "agentic-embeddings", "agentic-openai-embeddings", "agentic-cohere-embeddings", "agentic-google-embeddings", "agentic-mistral-embeddings", "agentic-voyage-embeddings", "agentic-azure-embeddings", "agentic-bedrock-embeddings", "agentic-ollama-embeddings", "agentic-reasoning-eval", "agentic-vectorstores-chroma", "agentic-vectorstores-sqlite-vec", "agentic-vectorstores-pinecone", "agentic-vectorstores-qdrant", "agentic-vectorstores-pgvector", "agentic-watch", "agentic-binary", "agentic-all", "agentic-evaluation", "templates", "webapp", "web", "data-relational", "testing", "argon2", "testcontainers", "data-document", "postgresql", "mysql", "eda", "fastapi", "granian", "hypercorn", "kafka", "rabbitmq", "redis", "cache", "oauth2-client", "client", "feature-flags", "config-server-git", "grpc", "websocket", "idp-azure", "idp-keycloak", "idp-cognito", "ecm-aws", "ecm-azure", "observability", "scheduling", "security", "notifications", "cli", "shell", "web-fast", "web-fastapi", "full"] [package.metadata.requires-dev] -browser = [{ name = "playwright", specifier = ">=1.63.0" }] +agentic-dev = [ + { name = "httpx", specifier = ">=0.28.0" }, + { name = "pdfplumber", specifier = ">=0.11.10" }, + { name = "pre-commit", specifier = ">=4.7.0" }, + { name = "pyright", specifier = ">=1.1.414" }, + { name = "pytest", specifier = ">=8.3.0" }, + { name = "pytest-asyncio", specifier = ">=0.24.0" }, + { name = "pytest-benchmark", specifier = ">=5.3.0" }, + { name = "pytest-cov", specifier = ">=6.0.0" }, + { name = "ruff", specifier = ">=0.17.1" }, + { name = "testcontainers", specifier = ">=4.10.0" }, +] +browser = [{ name = "playwright", specifier = ">=1.64.0" }] dev = [ { name = "aiomysql", specifier = ">=0.3.2" }, - { name = "aiosmtpd", specifier = ">=1.4" }, - { name = "coverage", extras = ["toml"], specifier = ">=7.13.5" }, - { name = "jsonpath-ng", specifier = ">=1.8.0" }, - { name = "mypy", specifier = ">=1.20.2" }, - { name = "opentelemetry-exporter-otlp-proto-http", specifier = ">=1.41.1" }, - { name = "pytest", specifier = ">=9.0.3" }, - { name = "pytest-asyncio", specifier = ">=1.3.0" }, + { name = "aiosmtpd", specifier = ">=1.4.6" }, + { name = "coverage", extras = ["toml"], specifier = ">=7.16.2" }, + { name = "jsonpath-ng", specifier = ">=1.12.0" }, + { name = "mypy", specifier = ">=2.4.0" }, + { name = "opentelemetry-exporter-otlp-proto-http", specifier = ">=1.45.1" }, + { name = "pytest", specifier = ">=9.1.1" }, + { name = "pytest-asyncio", specifier = ">=1.4.0" }, { name = "pytest-cov", specifier = ">=7.1.0" }, - { name = "respx", specifier = ">=0.21.0" }, - { name = "ruff", specifier = ">=0.15.12" }, + { name = "respx", specifier = ">=0.23.1" }, + { name = "ruff", specifier = ">=0.17.1" }, ] [[package]] @@ -967,54 +1071,53 @@ asyncio = [ [[package]] name = "starlette" -version = "1.2.1" +version = "1.10.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/25/44/ec35f1b6e83094b997da438a02c8c9b0ade2b1e84cfc48bd4656780760a6/starlette-1.2.1.tar.gz", hash = "sha256:9b9b5ebb992e67d6093741e63c2f59e4f6fff986f81163c087867bd7b924b3f6", size = 2701854, upload-time = "2026-05-31T01:07:51.847Z" } +sdist = { url = "https://files.pythonhosted.org/packages/48/bb/3d8757f21e9a53d9035c9eb039a777047139a16bfdbedfc7a58241c3d914/starlette-1.10.0.tar.gz", hash = "sha256:b8399098d4c1e3522734f7235dc79b1fc967f96cf139c81e0fa30479e0685f9b", size = 2734356, upload-time = "2026-10-24T15:04:12.342Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1c/54/196d0c1db10af76baa4f64894448505d60d3cdf70ef92cbb35f46a4e4c71/starlette-1.2.1-py3-none-any.whl", hash = "sha256:4de0082d08c8f6764a85a54cf1120d6939507a19905c7768acad2a9f875d2b89", size = 73350, upload-time = "2026-05-31T01:07:50.09Z" }, + { url = "https://files.pythonhosted.org/packages/88/2e/947cfe02def9371c07cd5bf5b6b61c829e9aecb9904db02a66cfafbc1eec/starlette-1.10.0-py3-none-any.whl", hash = "sha256:478c0ab3b4ced6e82719849c118fa406f0278a3499c1a898cd15cd31bdc38ce4", size = 80571, upload-time = "2026-10-24T15:04:10.371Z" }, ] [[package]] name = "typing-extensions" -version = "4.15.0" +version = "4.16.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", size = 113555, upload-time = "2026-07-02T08:40:05.92Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, + { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571, upload-time = "2026-07-02T08:40:04.659Z" }, ] [[package]] name = "typing-inspection" -version = "0.4.2" +version = "0.4.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/26/b09b8010994eccc3c09092e6b34058f36a460eea2d4c3e8b910c695975a0/typing_inspection-0.4.4.tar.gz", hash = "sha256:547274fa6b0a561ccf549cc9524b999a578e737d015d8709d021f9d0d13bea47", size = 76928, upload-time = "2026-08-12T12:37:25.997Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, + { url = "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl", hash = "sha256:65b8397ba37ccbce054456aaccddfc91e6e3083c92824df348d96ca832f3f147", size = 14750, upload-time = "2026-08-12T12:37:24.648Z" }, ] [[package]] name = "uvicorn" -version = "0.49.0" +version = "0.54.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c4/1f/fa18009dea8469069cca78a4e877a008ab78f08b064bfc9ab891579077ff/uvicorn-0.49.0.tar.gz", hash = "sha256:ebf4271aa580d9de97f93192d4595176df6e91f9aae919ca73e4fc07df1e66a3", size = 91284, upload-time = "2026-06-03T22:01:30.448Z" } +sdist = { url = "https://files.pythonhosted.org/packages/da/34/30e9280707135d2cfc589dfff3cb796bd07a3aeb1a3e415ba09dd89d7bb4/uvicorn-0.54.0.tar.gz", hash = "sha256:a2e33cbfaa0306f8e6b0c13e0cb89d7d7a2da3e62b90c66e18c33d9807b28620", size = 112283, upload-time = "2026-09-25T06:52:37.601Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/fa/e1388bbcf24ef3274f45c0c1c7b501fd14971037c1b6ee23610553307497/uvicorn-0.49.0-py3-none-any.whl", hash = "sha256:ba3d14c3ee7e41c6c654c46c9eb489d33213cdd30aa1696eab1374337c13f68f", size = 71376, upload-time = "2026-06-03T22:01:29.037Z" }, + { url = "https://files.pythonhosted.org/packages/38/0c/b54a4fdd7f90a3af8b02ebc9ce6712c2c208b7926a2f7bad95c33ebbe943/uvicorn-0.54.0-py3-none-any.whl", hash = "sha256:505bdb0f318731d45f1f712071fc781a8981f6847a31c902c9f5e652d4f67faf", size = 87427, upload-time = "2026-09-25T06:52:35.829Z" }, ] [package.optional-dependencies] standard = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "httptools" }, { name = "python-dotenv" }, { name = "pyyaml" }, diff --git a/src/pyfly/__init__.py b/src/pyfly/__init__.py index af2aa63c..70ff44ae 100644 --- a/src/pyfly/__init__.py +++ b/src/pyfly/__init__.py @@ -14,4 +14,4 @@ # limitations under the License. """PyFly — Enterprise Python Framework.""" -__version__ = "26.10.10" +__version__ = "26.10.11" diff --git a/tests/cli/test_agentic_scaffold.py b/tests/cli/test_agentic_scaffold.py index 891b93b2..b4e9f780 100644 --- a/tests/cli/test_agentic_scaffold.py +++ b/tests/cli/test_agentic_scaffold.py @@ -50,7 +50,7 @@ def test_agentic_selection_generates_explicit_native_config(tmp_path: Path, inte dependencies = tomllib.loads((project / "pyproject.toml").read_text())["project"]["dependencies"] assert dependencies == [ "pyfly[agentic] @ https://github.com/fireflyframework/fireflyframework-pyfly/" - "releases/download/v26.10.10/pyfly-26.10.10-py3-none-any.whl" + "releases/download/v26.10.11/pyfly-26.10.11-py3-none-any.whl" ] @@ -66,7 +66,7 @@ def test_agentic_selection_generates_explicit_native_config(tmp_path: Path, inte ) @pytest.mark.parametrize( ("version", "tag", "wheel_version"), - [("26.10.10", "v26.10.10", "26.10.10"), ("26.1.02", "v26.01.02", "26.1.2")], + [("26.10.11", "v26.10.11", "26.10.11"), ("26.1.02", "v26.01.02", "26.1.2")], ) def test_agentic_scaffold_pins_official_wheel_for_cli_version( tmp_path: Path, @@ -155,7 +155,7 @@ def test_new_plain_core_then_add_agentic_pins_native_release(tmp_path: Path) -> assert requirement.extras == {"agentic"} assert requirement.url == ( "https://github.com/fireflyframework/fireflyframework-pyfly/releases/" - "download/v26.10.10/pyfly-26.10.10-py3-none-any.whl" + "download/v26.10.11/pyfly-26.10.11-py3-none-any.whl" ) @@ -169,7 +169,7 @@ def test_add_agentic_to_unversioned_dependency_preserves_extras_and_literal_mark tail = " " + rest if rest.startswith(";") else rest assert dependency == ( "pyfly[agentic,web] @ https://github.com/fireflyframework/fireflyframework-pyfly/" - "releases/download/v26.10.10/pyfly-26.10.10-py3-none-any.whl" + tail + "releases/download/v26.10.11/pyfly-26.10.11-py3-none-any.whl" + tail ) assert Requirement(dependency).extras == {"agentic", "web"} @@ -185,7 +185,7 @@ def test_add_agentic_rejects_version_constraint_without_mutation(tmp_path: Path, assert added.exit_code == 1, added.output assert "version constraint" in added.output assert "official release wheel" in added.output - assert "v26.10.10/pyfly-26.10.10-py3-none-any.whl" in added.output + assert "v26.10.11/pyfly-26.10.11-py3-none-any.whl" in added.output assert manifest.read_text() == original @@ -193,7 +193,7 @@ def test_add_agentic_rejects_version_constraint_without_mutation(tmp_path: Path, def test_add_list_remove_agentic_preserves_direct_wheel_reference(tmp_path: Path, separator: str) -> None: reference = ( separator + "https://github.com/fireflyframework/fireflyframework-pyfly/releases/" - "download/v26.10.10/pyfly-26.10.10-py3-none-any.whl ; python_version >= '3.12'" + "download/v26.10.11/pyfly-26.10.11-py3-none-any.whl ; python_version >= '3.12'" ) manifest = tmp_path / "pyproject.toml" manifest.write_text('[project]\nname = "app"\ndependencies = ["pyfly[web]' + reference + '"]\n') diff --git a/uv.lock b/uv.lock index 24f40850..4c5c01fa 100644 --- a/uv.lock +++ b/uv.lock @@ -6108,7 +6108,7 @@ wheels = [ [[package]] name = "pyfly" -version = "26.10.10" +version = "26.10.11" source = { editable = "." } dependencies = [ { name = "pydantic" }, diff --git a/web/index.html b/web/index.html index a7ab6cd9..200714a2 100644 --- a/web/index.html +++ b/web/index.html @@ -90,7 +90,7 @@

Apache 2.0 mypy strict async-first - v26.10.10 + v26.10.11 @@ -406,8 +406,8 @@

It's live

pyfly by example

The official, project-driven book. Across 21 chapters in six parts it builds Lumen — a real wallet & ledger microservice — from an empty folder into a secured, observable, event-driven service. Every listing is drawn from a running project. Spring developers get a parity callout at every turn.

- Download PDF - Download EPUB + Download PDF + Download EPUB Source on GitHub