refactor: consolidate deps into pyproject.toml, remove requirements.txt

- All dependencies now in pyproject.toml [project.dependencies]
- Dev/test deps in [project.optional-dependencies] dev and [tool.uv]
- Dockerfile uses uv pip install . from pyproject.toml
- CI uses uv pip install ".[dev]"
- Deleted requirements.txt and requirements-dev.txt
- Updated README, CLAUDE.md install instructions
- Enhanced .dockerignore (exclude tests, docs, infra from image)
This commit is contained in:
ZdenekSrotyr 2026-04-09 13:17:59 +02:00
parent fa3aef652f
commit 0279cc06fa
9 changed files with 39 additions and 64 deletions

View file

@ -1,4 +1,5 @@
.git .git
.github
.venv .venv
venv venv
__pycache__ __pycache__
@ -13,5 +14,11 @@ build/
.pytest_cache .pytest_cache
.mypy_cache .mypy_cache
.claude/ .claude/
.idea
node_modules/ node_modules/
tests/
docs/
dev_docs/
infra/
server/
docs/ZS_PADAK_* docs/ZS_PADAK_*

View file

@ -20,7 +20,7 @@ jobs:
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v5
- name: Install dependencies - name: Install dependencies
run: uv pip install --system -r requirements-dev.txt run: uv pip install --system ".[dev]"
- name: Run tests - name: Run tests
run: pytest tests/ -v --tb=short run: pytest tests/ -v --tb=short

View file

@ -18,7 +18,7 @@ jobs:
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v5
- name: Install dependencies - name: Install dependencies
run: uv pip install --system -r requirements-dev.txt run: uv pip install --system ".[dev]"
- name: Run tests - name: Run tests
run: pytest tests/ -v --tb=short run: pytest tests/ -v --tb=short

View file

@ -123,7 +123,7 @@ Table definitions: DuckDB `table_registry` table in `system.duckdb`.
```bash ```bash
# Setup # Setup
python3 -m venv .venv && source .venv/bin/activate python3 -m venv .venv && source .venv/bin/activate
uv pip install -r requirements.txt uv pip install ".[dev]"
# Run FastAPI locally # Run FastAPI locally
uvicorn app.main:app --reload uvicorn app.main:app --reload

View file

@ -8,13 +8,12 @@ COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
WORKDIR /app WORKDIR /app
# Copy dependency files first for layer caching
COPY requirements.txt .
RUN uv pip install --system --no-cache -r requirements.txt
# Copy application code # Copy application code
COPY . . COPY . .
# Install production dependencies from pyproject.toml
RUN uv pip install --system --no-cache .
# Default: run FastAPI server # Default: run FastAPI server
EXPOSE 8000 EXPOSE 8000
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"] CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]

View file

@ -80,7 +80,7 @@ curl -X POST http://localhost:8000/api/sync/trigger
python3 -m venv .venv && source .venv/bin/activate python3 -m venv .venv && source .venv/bin/activate
# Install dependencies # Install dependencies
uv pip install -r requirements.txt uv pip install ".[dev]"
# Run FastAPI locally with hot reload # Run FastAPI locally with hot reload
uvicorn app.main:app --reload uvicorn app.main:app --reload

View file

@ -1,9 +1,10 @@
[project] [project]
name = "data-analyst" name = "agnes-the-ai-analyst"
version = "2.0.0" version = "2.0.0"
description = "AI Data Analyst — data distribution platform for AI analytical systems" description = "Agnes — AI Data Analyst platform for AI analytical systems"
requires-python = ">=3.9" requires-python = ">=3.11"
license = "MIT" license = "MIT"
readme = "README.md"
dependencies = [ dependencies = [
# Core database # Core database
@ -13,6 +14,7 @@ dependencies = [
"uvicorn[standard]>=0.32.0", "uvicorn[standard]>=0.32.0",
"python-multipart>=0.0.9", "python-multipart>=0.0.9",
"jinja2>=3.1.0", "jinja2>=3.1.0",
"starlette>=0.41.0",
# Authentication # Authentication
"PyJWT>=2.8.0", "PyJWT>=2.8.0",
"itsdangerous>=2.1.0", "itsdangerous>=2.1.0",
@ -37,19 +39,32 @@ dependencies = [
# Profiler visualizations # Profiler visualizations
"matplotlib>=3.8.0", "matplotlib>=3.8.0",
"numpy>=1.24.0", "numpy>=1.24.0",
# Sample data generation ]
[project.optional-dependencies]
dev = [
"pytest>=9.0.0",
"pytest-timeout>=2.0.0",
"faker>=24.0.0", "faker>=24.0.0",
"anthropic>=0.30.0",
"openai>=1.30.0",
] ]
[project.scripts] [project.scripts]
da = "cli.main:app" da = "cli.main:app"
[project.optional-dependencies]
dev = [
"pytest>=7.0.0",
"pytest-mock>=3.0.0",
]
[build-system] [build-system]
requires = ["hatchling"] requires = ["hatchling"]
build-backend = "hatchling.build" build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["app", "src", "connectors", "cli", "services", "config"]
[tool.uv]
dev-dependencies = [
"pytest>=9.0.0",
"pytest-timeout>=2.0.0",
"faker>=24.0.0",
"anthropic>=0.30.0",
"openai>=1.30.0",
]

View file

@ -1,4 +0,0 @@
-r requirements.txt
faker>=24.0.0
anthropic>=0.30.0
openai>=1.30.0

View file

@ -1,42 +0,0 @@
# Core database
duckdb>=0.9.0
# Web framework (FastAPI)
fastapi>=0.115.0
uvicorn[standard]>=0.32.0
python-multipart>=0.0.9
jinja2>=3.1.0
# Authentication
PyJWT>=2.8.0
itsdangerous>=2.1.0
authlib>=1.3.0
argon2-cffi>=23.1.0
# HTTP client
httpx>=0.27.0
# CLI
typer>=0.12.0
rich>=13.0.0
# Configuration
python-dotenv>=1.0.0
pyyaml>=6.0
# Data processing
pandas>=2.0.0
pyarrow>=12.0.0
pytz>=2024.1
# Data source connectors
kbcstorage>=0.9.0
google-cloud-bigquery>=3.0.0
google-cloud-bigquery-storage>=2.0.0
# Profiler visualizations
matplotlib>=3.8.0
numpy>=1.24.0
# Testing
pytest-timeout>=2.0.0