Modern Python project setup following software engineering principles from .claude/claude.md.
# Install uv (fast Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install just (task runner)
curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -sThis project contains git submodules, so clone with:
# Clone with submodules
git clone --recurse-submodules git@github.com:yonata-learn/llm_as_a_judge.git
# OR if you already cloned without submodules:
git submodule update --init --recursive# Install dependencies
just install
# Copy environment file
cp .env.example .env
# Edit .env and add your API keysjust # List all commands
just check # Run all checks (format, lint, type)
just fix # Auto-fix formatting and linting
just test # Run tests
just clean # Clean build artifacts
just repl # Interactive Python shell.
├── .claude/ # Claude Code configuration
├── justfile # Task runner commands
├── pyproject.toml # Project dependencies and config
├── .pre-commit-config.yaml # Pre-commit hooks
└── .env.example # Environment variables template
Create your source code in a src/ directory:
mkdir -p src
touch src/__init__.pyThis project follows principles from .claude/claude.md:
- Pure core, effects at edges: Isolate I/O from business logic
- Small, focused modules: Single responsibility per module
- Explicit dependencies: Dependency injection, no globals
- Type safety: Use type hints, Pydantic for validation
- Observability: Structured logging, metrics, tracing
- Testing: Unit > Integration > E2E test pyramid
See .claude/claude.md for detailed principles.