# Contributing

Contributions are welcome. Please fork the repository and work on a feature branch — pull requests are warmly welcome.

## Workflow

1. Fork and clone the repo.
2. Create a feature branch from `main`.
3. Set up the dev environment (see [development.md](development.md)).
4. Make your changes with tests.
5. Run lint, type checks, and tests locally before opening a PR.
6. Open a pull request describing the change and motivation.

## Code style

- PascalCase for classes, `snake_case` for functions/variables, `SCREAMING_SNAKE_CASE` for module constants.
- Frozen, kw-only, slotted dataclasses.
- Type hints everywhere.
- Comments only when *why* is non-obvious — well-named identifiers handle *what*.

## Reporting issues

Use the [issue tracker](https://github.com/nineti-GmbH/energieleser.py/issues). For security-sensitive reports, contact info@energieleser.de directly instead of filing a public issue.
