Put the deployment-only dependencies behind a server extra
A data-science environment installing fluksio waited for lxml, aiohttp and the rest of a connector stack it has nothing to talk to. Outbound mail, error reporting and the MQTT and InfluxDB clients moved to `fluksio[server]`, which the image installs; each import is guarded and names the extra. `tenacity` had no import site at all and is gone. 23 fewer packages and the compiled ones among them — a bare `pip install fluksio` still serves, runs every python node, and registers the mqtt and influxdb node types, which only need the library when one is actually built. sentry-sdk arrives anyway underneath `fastapi[standard]`; what changed there is that nothing of ours requires it. The dev environment keeps every extra: the suite exercises the connectors and strict mypy checks their call sites. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019Hra4ndWMCLU5F3KjUuVAc
This commit is contained in:
@@ -872,16 +872,13 @@ name = "fluksio"
|
||||
version = "0.1.4+dev"
|
||||
source = { editable = "backend" }
|
||||
dependencies = [
|
||||
{ name = "aiomqtt" },
|
||||
{ name = "alembic" },
|
||||
{ name = "croniter" },
|
||||
{ name = "cryptography" },
|
||||
{ name = "email-validator" },
|
||||
{ name = "emails" },
|
||||
{ name = "fastapi", extra = ["standard"] },
|
||||
{ name = "fluksio-worker" },
|
||||
{ name = "httpx" },
|
||||
{ name = "influxdb-client", extra = ["async"] },
|
||||
{ name = "jinja2" },
|
||||
{ name = "mcp" },
|
||||
{ name = "numpy" },
|
||||
@@ -893,9 +890,7 @@ dependencies = [
|
||||
{ name = "python-multipart" },
|
||||
{ name = "redis" },
|
||||
{ name = "rich" },
|
||||
{ name = "sentry-sdk", extra = ["fastapi"] },
|
||||
{ name = "sqlmodel" },
|
||||
{ name = "tenacity" },
|
||||
{ name = "uv" },
|
||||
]
|
||||
|
||||
@@ -903,6 +898,12 @@ dependencies = [
|
||||
parquet = [
|
||||
{ name = "pyarrow" },
|
||||
]
|
||||
server = [
|
||||
{ name = "aiomqtt" },
|
||||
{ name = "emails" },
|
||||
{ name = "influxdb-client", extra = ["async"] },
|
||||
{ name = "sentry-sdk", extra = ["fastapi"] },
|
||||
]
|
||||
|
||||
[package.dev-dependencies]
|
||||
dev = [
|
||||
@@ -915,16 +916,16 @@ dev = [
|
||||
|
||||
[package.metadata]
|
||||
requires-dist = [
|
||||
{ name = "aiomqtt", specifier = ">=2.0.0" },
|
||||
{ name = "aiomqtt", marker = "extra == 'server'", specifier = ">=2.0.0" },
|
||||
{ name = "alembic", specifier = ">=1.12.1,<2.0.0" },
|
||||
{ name = "croniter", specifier = ">=1.3.0" },
|
||||
{ name = "cryptography", specifier = ">=44.0.0" },
|
||||
{ name = "email-validator", specifier = ">=2.1.0.post1,<3.0.0.0" },
|
||||
{ name = "emails", specifier = ">=0.6,<1.0" },
|
||||
{ name = "emails", marker = "extra == 'server'", specifier = ">=0.6,<1.0" },
|
||||
{ name = "fastapi", extras = ["standard"], specifier = ">=0.114.2,<1.0.0" },
|
||||
{ name = "fluksio-worker", editable = "worker" },
|
||||
{ name = "httpx", specifier = ">=0.25.1,<1.0.0" },
|
||||
{ name = "influxdb-client", extras = ["async"], specifier = ">=1.40.0" },
|
||||
{ name = "influxdb-client", extras = ["async"], marker = "extra == 'server'", specifier = ">=1.40.0" },
|
||||
{ name = "jinja2", specifier = ">=3.1.4,<4.0.0" },
|
||||
{ name = "mcp", specifier = ">=1.29,<2" },
|
||||
{ name = "numpy", specifier = ">=2.2.6" },
|
||||
@@ -937,12 +938,11 @@ requires-dist = [
|
||||
{ name = "python-multipart", specifier = ">=0.0.7,<1.0.0" },
|
||||
{ name = "redis", specifier = ">=7.1.0" },
|
||||
{ name = "rich", specifier = ">=13" },
|
||||
{ name = "sentry-sdk", extras = ["fastapi"], specifier = ">=2.20.0" },
|
||||
{ name = "sentry-sdk", extras = ["fastapi"], marker = "extra == 'server'", specifier = ">=2.20.0" },
|
||||
{ name = "sqlmodel", specifier = ">=0.0.21,<1.0.0" },
|
||||
{ name = "tenacity", specifier = ">=8.2.3,<9.0.0" },
|
||||
{ name = "uv", specifier = ">=0.5" },
|
||||
]
|
||||
provides-extras = ["parquet"]
|
||||
provides-extras = ["parquet", "server"]
|
||||
|
||||
[package.metadata.requires-dev]
|
||||
dev = [
|
||||
@@ -2673,15 +2673,6 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/c8/cb/6a6a47d5b464bd08695d254f3da6e7986cc70c9fa5d778eda57538edfe56/starlette-1.6.0-py3-none-any.whl", hash = "sha256:a86dd39d14bb45f85a3d18525215a9ef0cfd1f192ac793220e72598c90335f0c", size = 75969, upload-time = "2026-08-08T18:27:56.196Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tenacity"
|
||||
version = "8.5.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/a3/4d/6a19536c50b849338fcbe9290d562b52cbdcf30d8963d3588a68a4107df1/tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78", size = 47309, upload-time = "2024-07-05T07:25:31.836Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/d2/3f/8ba87d9e287b9d385a02a7114ddcef61b26f86411e121c9003eb509a1773/tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687", size = 28165, upload-time = "2024-07-05T07:25:29.591Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "typer"
|
||||
version = "0.21.1"
|
||||
|
||||
Reference in New Issue
Block a user