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:
+11
-5
@@ -25,15 +25,12 @@ dependencies = [
|
||||
"fastapi[standard]<1.0.0,>=0.114.2",
|
||||
"python-multipart<1.0.0,>=0.0.7",
|
||||
"email-validator<3.0.0.0,>=2.1.0.post1",
|
||||
"tenacity<9.0.0,>=8.2.3",
|
||||
"pydantic>2.0",
|
||||
"emails<1.0,>=0.6",
|
||||
"jinja2<4.0.0,>=3.1.4",
|
||||
"alembic<2.0.0,>=1.12.1",
|
||||
"httpx<1.0.0,>=0.25.1",
|
||||
"sqlmodel<1.0.0,>=0.0.21",
|
||||
"pydantic-settings<3.0.0,>=2.2.1",
|
||||
"sentry-sdk[fastapi]>=2.20.0",
|
||||
"pyjwt<3.0.0,>=2.8.0",
|
||||
"pwdlib[argon2,bcrypt]>=0.3.0",
|
||||
"numpy>=2.2.6",
|
||||
@@ -43,8 +40,6 @@ dependencies = [
|
||||
# copied onto other people's machines and stays dependency-free.
|
||||
"orjson>=3.10",
|
||||
"cryptography>=44.0.0",
|
||||
"aiomqtt>=2.0.0",
|
||||
"influxdb-client[async]>=1.40.0",
|
||||
"croniter>=1.3.0",
|
||||
"mcp>=1.29,<2",
|
||||
"fluksio-worker>=0.1,<0.2",
|
||||
@@ -62,6 +57,17 @@ dependencies = [
|
||||
# extra rather than a dependency: csv and jsonl need nothing, and pyarrow is
|
||||
# tens of megabytes for whoever wants dtypes kept.
|
||||
parquet = ["pyarrow>=17"]
|
||||
# What a deployment has and a laptop does not: the device connectors, outbound
|
||||
# mail and error reporting. The engine, the CLI and every python node work
|
||||
# without them — `pip install fluksio` in a data-science environment is the
|
||||
# case this exists for, and lxml and the aiohttp stack are most of its wait.
|
||||
# Each import is guarded and names this extra. The image installs it.
|
||||
server = [
|
||||
"emails<1.0,>=0.6",
|
||||
"sentry-sdk[fastapi]>=2.20.0",
|
||||
"aiomqtt>=2.0.0",
|
||||
"influxdb-client[async]>=1.40.0",
|
||||
]
|
||||
|
||||
[project.urls]
|
||||
Homepage = "https://fluksio.com"
|
||||
|
||||
Reference in New Issue
Block a user