35 lines
2.2 KiB
Markdown
Executable File
35 lines
2.2 KiB
Markdown
Executable File
# 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/<store>/selectors.yml` and `pricewatch/app/stores/<store>/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.
|