# Repository Guidelines ## Project Structure & Module Organization - `pricewatch/app/` contains the core Python package. Key areas: `core/` (Pydantic schema, registry, IO, logging), `scraping/` (HTTP and Playwright fetchers), `stores/` (site-specific parsers), and `cli/` (Typer entrypoint). - Store assets live under `pricewatch/app/stores//selectors.yml` and `pricewatch/app/stores//fixtures/`. - Tests are in `tests/` with store-specific tests under `tests/stores/`. - Runtime/debug artifacts (HTML/screenshots) go in `scraped/`. Input/output examples: `scrap_url.yaml`, `scraped_store.json`. ## Build, Test, and Development Commands - `pip install -e .` installs the package in editable mode. - `playwright install chromium` installs the browser used for anti-bot fallback. - `pricewatch doctor` validates the local setup. - `pricewatch run --yaml scrap_url.yaml --out scraped_store.json` runs the full pipeline. - `pytest` runs the full test suite; `pytest --cov=pricewatch` adds coverage. ## Coding Style & Naming Conventions - Python 3.12, 4-space indentation, and a 100-character line length (Black/Ruff settings). - Use `ruff check .`, `black .`, and `mypy pricewatch` before submitting changes. - Prefer `snake_case` for modules/functions, `PascalCase` for classes, and `test_*.py` for test files. - Project language is French for code comments and discussion notes. ## Testing Guidelines - Test framework: `pytest` with coverage configured in `pyproject.toml`. - Keep store parsing tests alongside fixtures for reproducibility (e.g., `pricewatch/app/stores/amazon/fixtures/`). - Name tests `test_*` and favor unit tests for parsing and URL handling before integration tests. ## Commit & Pull Request Guidelines - No Git history is available in this repository, so use clear, imperative commit subjects (e.g., “Add Cdiscount price parser”). - PRs should include: a concise description, relevant CLI output or sample JSON, and test results. - Update `README.md`, `TODO.md`, and `CHANGELOG.md` when behavior or usage changes. ## Agent-Specific Instructions - Keep decisions justified briefly (1–3 sentences) and avoid silent failure paths. - Ensure debug information is preserved in `ProductSnapshot.debug` for scraping errors.