Community
Contributing
How to contribute to uPKI CA.
Contributing to uPKI CA
Thank you for your interest in contributing! Please read this guide before submitting patches.
Code of Conduct
Be respectful and inclusive. Focus on what is best for the project. We will not tolerate harassment of any kind.
Getting started
- Fork the repository on GitHub
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/upki-ca.git - Create a branch:
git checkout -b feature/my-feature
Development environment
git clone https://github.com/circle-rd/upki-ca.git
cd upki-ca
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
# Verify
pytest
Pre-commit hooks
pip install pre-commit
pre-commit install
Coding standards
| Rule | Value |
|---|---|
| Language | English (code, comments, docs) |
| File naming | snake_case.py |
| Class naming | PascalCase |
| Function naming | snake_case |
| Constants | UPPER_SNAKE_CASE |
| Line length | 120 characters |
| Type hints | Required on all public functions |
| Docstrings | Google style, required on all public functions/classes |
Linter and formatter
# Lint
ruff check upki_ca/ tests/
# Format
ruff format upki_ca/ tests/
Testing
All new code must include tests:
pytest # run all tests
pytest tests/test_core.py # run a specific file
pytest --cov=upki_ca # with coverage
Minimum coverage target: 80%.
Submitting changes
- Push your branch:
git push origin feature/my-feature - Open a Pull Request against
main - Fill in the PR template — describe what changes and why
- Ensure all CI checks pass (tests, lint)
Reporting issues
Use the GitHub issue tracker. Include:
- Python version
- uPKI CA version
- Steps to reproduce
- Expected vs actual behaviour
- Relevant log output
Documentation
Documentation contributions are welcome. The docs site lives in docs-site/. Add or update Markdown files under docs-site/content/docs/.