63 lines
2.5 KiB
Markdown
63 lines
2.5 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Project Overview
|
|
|
|
This is a Python CLI client for the trygo webapp built with a hybrid development environment using both uv and Nix. The project has dual entry points: `hello` (hello_world package) and `taco` (trygo_py_cliclient.cli package).
|
|
|
|
## Development Commands
|
|
|
|
### Core Commands (via justfile)
|
|
- `just test` - Run full test suite (ruff check + mypy + pytest)
|
|
- `just fmt` - Format code using nix fmt (includes ruff, nixfmt, etc.)
|
|
- `just update-snapshots` - Update test snapshots using syrupy
|
|
- `just build` - Build the Python module (currently placeholder)
|
|
- `just check` - Run nix flake check for Nix environment validation
|
|
|
|
### Direct Tool Commands
|
|
- `uv run pytest` - Run tests with coverage
|
|
- `uv run ruff check src tests` - Lint code
|
|
- `uv run mypy src` - Type checking
|
|
- `uv run pytest --snapshot-update` - Update test snapshots
|
|
|
|
## Architecture
|
|
|
|
### Package Structure
|
|
- `src/hello_world/` - Hello world demonstration package
|
|
- `src/trygo_py_cliclient/` - Main CLI client package
|
|
- `cli/` - Command-line interface and argument parsing
|
|
- `config/` - Configuration management with TOML support
|
|
|
|
### Configuration System
|
|
- Uses dataclasses for type-safe configuration (`src/trygo_py_cliclient/config/config.py`)
|
|
- TOML-based configuration files (`config.toml`)
|
|
- Supports logging configuration and general application settings
|
|
|
|
### Development Environment
|
|
The project supports both uv and Nix environments:
|
|
- **uv mode**: Standard Python toolchain with uv for dependency management
|
|
- **Nix mode**: Reproducible environment with integrated formatting tools
|
|
- Environment detection via `DO_NIX_CUSTOM` environment variable
|
|
|
|
### Testing
|
|
- pytest with syrupy for snapshot testing
|
|
- Coverage reporting enabled (50% minimum)
|
|
- Test configuration in pyproject.toml with XML and HTML output
|
|
|
|
### Code Quality
|
|
- ruff for linting and formatting (tab indentation style)
|
|
- mypy for type checking
|
|
- flake8 for additional linting
|
|
- treefmt.nix for comprehensive formatting in Nix environment
|
|
|
|
## Entry Points
|
|
- `hello` command maps to `hello_world:main`
|
|
- `taco` command maps to `trygo_py_cliclient.cli:main`
|
|
|
|
## Configuration Files
|
|
- `pyproject.toml` - Python project configuration and dependencies
|
|
- `config.toml` - Application runtime configuration
|
|
- `flake.nix` - Nix development environment
|
|
- `treefmt.nix` - Code formatting configuration
|
|
- `justfile` - Development task automation |