Contribution Guide
You are very welcome to contribute to this project. In order to simplify the process please try to follow the following suggestions.
Please use English for all communications to include as many people as possible.
Did you find a bug?
-
Ensure the bug was not already reported by searching on GitHub under Issues.
-
If you're unable to find an open issue addressing the problem, open a new one. Be sure to include a title and clear description, as much relevant information as possible, and a minimal code sample or an executable test case demonstrating the expected behavior that is not occurring.
Want to enhance the code?
How to start
- Create an issue to discuss your idea before you spend a lot of time into designing or coding.
- Leave an
I like to work on thiscomment on an existing issue to let the maintainer know about it. - Fork the repository into your personal GitHub account to get started.
- Create a separate branch for each feature or bug-fix.
While contributing
- Make sure that existing static code analysis and tests keep working.
- run
TOXENV=flake8 toxfor style checking - run
TOXENV=mypy toxfor type checking - run
toxfor the full suite of tests orpoetry run pytest tests/for just the test suite. - Write unit, integration or end-to-end tests as appropriate to your feature or bug-fix.
- Review and update the Changelog and Documentation. Your changes may affect sections of these documents.
- You can run the documentation locally using
mkdocs serve. - If your feature is large, or has a significant impact on other parts of the code, write an Architecture Decision Record describing the consideractions related to the change.
Git best practices
- This project uses git-flow and Semantic Versioning
- Pull requests will automatically be opened against the
developbranch. - Be sure to include a textual description in both your commit(s) and in the pull request if you are implementing a new feature or changing the behavior of an existing one.
Want to create examples?
Not only the core project can use contributions, but there are also several repositories dedicated to user examples.
This starts with the hvcc-examples project which contains some general abstractions and requirements. There are links to several dedicated generator projects that are based on this repository.
If you want to create a new generator example project open an Issue so it can be set up for you.
Use of AI and LLMs
It is not allowed to create issues, documentation or pull requests made entirely using an LLM. When it becomes aparent that no real effort was put into creating such contributions these will be removed.
You can of course use LLM tools for private research and features like auto-complete in your IDE. PRs are required to be fully understood by their creator, adhere to the project style and have suitable tests included.