Contribute#
Set up the development environment, then:
Run the checks of the development guide; the pre-commit hooks run ruff.
Describe user visible changes in a news fragment: a file
news/<issue number>.<type>without extension, such asnews/42.feature, where the type isbreaking,feature,bugfix,documentationormisc. Without an issue use+name.<type>. Pull requests without a fragment fail the check unless they have the labelskip-changelog.todo.txtlists what is done and open.
Project constraints#
Errors are split up as finely as possible: one class per cause in
community_insights/errors/, each with a docstring that says what happened and how to solve it. Then each has its own entry in Errors and can be caught specifically. Do not raise a general error where a specific one can be defined.All classes and functions have a docstring in the Google style: a summary line, a blank line, the description, and the sections
Args:,Returns:,Raises:andExamples:where they apply.make lintchecks it with ruff.tests/quality/test_docstrings.pyallows only these headings and fails for a docstring that lacks a section it needs;tests/quality/test_with_doctest.pyruns the examples (>>>) of the code and of the documentation. Both are adapted from icalendar (BSD-2-Clause).One class per module (see Set up for development).
AI contributions#
You may use AI to contribute. Follow the AI policy of icalendar and the Python Calendaring Ecosystem: say which model you used and how, take responsibility for the result, and make sure nothing is copied from sources you may not use. The ai-prompt-auto-commit pre-commit hook records the prompts and adds them to the commits.
AI agents that work in this repository follow AGENTS.md (Claude Code reads it through CLAUDE.md): every prompt becomes items of todo.txt, nothing is committed or deleted without asking, and the project constraints above apply.