chore: update dependencies and enhance Dockerfile for server

- Updated `pyproject.toml` to include new optional dependencies for Ollama: `anthropic`, `openai`, and `pywinctl`.
- Modified `compose.yaml` to add a new volume for the server's virtual environment.
- Enhanced the server Dockerfile to install all optional dependencies during the build process, improving flexibility and functionality.

All quality checks pass.
This commit is contained in:
2025-12-31 11:31:13 -05:00
parent 5ed7c377a2
commit b423199c5f
5 changed files with 26 additions and 10 deletions

2
client

Submodule client updated: 4e52a319fb...d85f9edd6d

View File

@@ -98,6 +98,7 @@ services:
NOTEFLOW_QDRANT_URL: http://qdrant:6333
volumes:
- .:/workspace
- server_venv:/workspace/.venv
depends_on:
db:
condition: service_healthy
@@ -130,6 +131,7 @@ services:
NOTEFLOW_QDRANT_URL: http://qdrant:6333
volumes:
- .:/workspace
- server_venv:/workspace/.venv
depends_on:
db:
condition: service_healthy
@@ -190,6 +192,7 @@ volumes:
noteflow_qdrant_data:
client_cargo_cache:
client_npm_cache:
server_venv:
networks:
noteflow-net:

View File

@@ -30,18 +30,18 @@ FROM base AS server
# Install dependencies (server needs dev deps for watchfiles)
RUN --mount=type=cache,target=/root/.cache/uv \
uv sync --frozen --no-install-project --group dev
uv sync --frozen --no-install-project --group dev --all-extras
# Copy source code
COPY . .
# Install the project itself
RUN --mount=type=cache,target=/root/.cache/uv \
uv sync --frozen --group dev
uv sync --frozen --group dev --all-extras
EXPOSE 50051
CMD ["uv", "run", "python", "scripts/dev_watch_server.py"]
CMD ["sh", "-c", "uv sync --frozen --group dev --all-extras && uv run python scripts/dev_watch_server.py"]
# =============================================================================
# Server Production Stage (all optional dependencies)
@@ -50,18 +50,18 @@ FROM base AS server-full
# Install all dependencies including optional extras
RUN --mount=type=cache,target=/root/.cache/uv \
uv sync --frozen --no-install-project --group dev --extra triggers --extra summarization --extra diarization
uv sync --frozen --no-install-project --group dev --all-extras
# Copy source code
COPY . .
# Install the project itself
RUN --mount=type=cache,target=/root/.cache/uv \
uv sync --frozen --group dev --extra triggers --extra summarization --extra diarization
uv sync --frozen --group dev --all-extras
EXPOSE 50051
CMD ["uv", "run", "python", "scripts/dev_watch_server.py"]
CMD ["sh", "-c", "uv sync --frozen --group dev --all-extras && uv run python scripts/dev_watch_server.py"]
# -----------------------------------------------------------------------------
# NER stage: Add spaCy model for named entity recognition
@@ -80,4 +80,4 @@ RUN python -c "import spacy; nlp = spacy.load('en_core_web_sm'); print('NER mode
# -----------------------------------------------------------------------------
FROM base AS dev
CMD ["uv", "run", "python", "scripts/dev_watch_server.py"]
CMD ["sh", "-c", "uv sync --frozen --group dev --all-extras && uv run python scripts/dev_watch_server.py"]

View File

@@ -109,6 +109,11 @@ optional = [
all = [
"noteflow[audio,dev,triggers,summarization,diarization,pdf,ner,calendar,observability]",
]
ollama = [
"anthropic>=0.75.0",
"openai>=2.13.0",
"pywinctl>=0.4.1",
]
[build-system]
requires = ["hatchling"]

12
uv.lock generated
View File

@@ -1,5 +1,5 @@
version = 1
revision = 3
revision = 2
requires-python = ">=3.12"
resolution-markers = [
"python_full_version >= '3.13'",
@@ -2315,6 +2315,11 @@ observability = [
{ name = "opentelemetry-instrumentation-grpc" },
{ name = "opentelemetry-sdk" },
]
ollama = [
{ name = "anthropic" },
{ name = "openai" },
{ name = "pywinctl" },
]
optional = [
{ name = "anthropic" },
{ name = "diart" },
@@ -2360,6 +2365,7 @@ dev = [
[package.metadata]
requires-dist = [
{ name = "alembic", specifier = ">=1.13" },
{ name = "anthropic", marker = "extra == 'ollama'", specifier = ">=0.75.0" },
{ name = "anthropic", marker = "extra == 'optional'", specifier = ">=0.75.0" },
{ name = "anthropic", marker = "extra == 'summarization'", specifier = ">=0.75.0" },
{ name = "asyncpg", specifier = ">=0.29" },
@@ -2385,6 +2391,7 @@ requires-dist = [
{ name = "numpy", marker = "extra == 'optional'", specifier = ">=1.26" },
{ name = "ollama", marker = "extra == 'optional'", specifier = ">=0.6.1" },
{ name = "ollama", marker = "extra == 'summarization'", specifier = ">=0.6.1" },
{ name = "openai", marker = "extra == 'ollama'", specifier = ">=2.13.0" },
{ name = "openai", marker = "extra == 'optional'", specifier = ">=2.13.0" },
{ name = "openai", marker = "extra == 'summarization'", specifier = ">=2.13.0" },
{ name = "opentelemetry-api", marker = "extra == 'observability'", specifier = ">=1.28" },
@@ -2405,6 +2412,7 @@ requires-dist = [
{ name = "pytest", marker = "extra == 'dev'", specifier = ">=8.0" },
{ name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.23" },
{ name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=4.0" },
{ name = "pywinctl", marker = "extra == 'ollama'", specifier = ">=0.4.1" },
{ name = "pywinctl", marker = "extra == 'optional'", specifier = ">=0.3" },
{ name = "pywinctl", marker = "extra == 'triggers'", specifier = ">=0.3" },
{ name = "rich", specifier = ">=14.2.0" },
@@ -2423,7 +2431,7 @@ requires-dist = [
{ name = "weasyprint", marker = "extra == 'optional'", specifier = ">=67.0" },
{ name = "weasyprint", marker = "extra == 'pdf'", specifier = ">=67.0" },
]
provides-extras = ["audio", "dev", "triggers", "summarization", "diarization", "pdf", "ner", "calendar", "observability", "optional", "all"]
provides-extras = ["audio", "dev", "triggers", "summarization", "diarization", "pdf", "ner", "calendar", "observability", "optional", "all", "ollama"]
[package.metadata.requires-dev]
dev = [