Contributing¶
Contributions should preserve LazyPye’s standard-library-first philosophy, remain easy to discover, and include complete user-facing documentation.
Before you begin¶
Confirm the feature does not add an unnecessary third-party runtime dependency.
Choose the existing package domain that best owns the feature.
Create a new distribution only when real code exists for a separate domain.
Keep imports beneath the shared lazypye namespace.
Discuss breaking public API changes before implementation.
Feature implementation workflow¶
1. Choose the package and module¶
Place the implementation beneath the matching distribution:
packages/PACKAGE_DIRECTORY/src/lazypye/PACKAGE_NAME/MODULE_NAME.py
Use lowercase snake_case module names and descriptive public names.
2. Implement the feature¶
Prefer Python’s standard library, keep behaviour predictable, handle important boundary cases, and document every public class, method, and function.
3. Add tests¶
Cover normal use, edge cases, expected failures, and examples. A public feature is not complete until its documented behaviour is tested.
4. Update documentation¶
Update the relevant package guide and generated API page. The package guide should teach usage; the API page should provide signatures and docstrings.
Follow Writing Sphinx documentation for the authoritative feature-guide checklist, reStructuredText syntax, navigation, API generation, and preview instructions.
5. Run project checks¶
Replace PACKAGE_DIRECTORY before running the package-install command:
ruff check .
pytest
py -m pip install ./packages/PACKAGE_DIRECTORY
py -m sphinx -W --keep-going -b html docs docs/_build/html
6. Review the finished change¶
Confirm imports and examples work exactly as documented, generated files are not included, and the change does not create placeholder package directories.
Submission checklist¶
Requirement |
Complete |
|---|---|
Correct package and module location |
[ ] |
Exact installation and import commands |
[ ] |
User guide and public docstrings updated |
[ ] |
Normal, edge, and failure cases tested |
[ ] |
Ruff and pytest pass |
[ ] |
Sphinx builds without warnings |
[ ] |