Contributing
Thank you for your interest in contributing to the Sabbath School Lessons Reproducer! This page provides guidelines for contributing to the project.
Setting Up Development Environment
Clone the repository:
git clone https://github.com/SabbathSchool/sabbath-school-reproducer.git cd sabbath-school-reproducer
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
Install in development mode:
pip install -e . pip install -r requirements-dev.txt
Code Standards
Follow PEP 8 style guidelines
Use docstrings for all modules, classes, and functions
Write unit tests for new functionality
Keep functions focused and reasonably sized
Workflow for Contributing
Create a fork of the repository
Clone your fork to your local machine
Create a feature branch:
git checkout -b feature/your-feature-name
Make your changes and commit them:
git add . git commit -m "Description of your changes"
Push your changes to your fork:
git push origin feature/your-feature-name
Create a pull request from your fork to the main repository
Adding New Features
When adding new features:
Start by creating an issue to discuss the feature
Write tests for the new functionality
Update documentation to reflect the changes
Submit a pull request
Testing
Run the test suite with pytest:
pytest
For more thorough testing:
pytest --cov=sabbath_school_reproducer tests/
Building Documentation
To build the documentation:
cd docs
make html
The built documentation will be in the docs/_build/html directory.
Releasing
The release process is automated through GitHub Actions when a new tag is created.
To prepare a release:
Update version in
__init__.pyUpdate CHANGELOG.md
Commit changes:
git add . git commit -m "Prepare for release X.Y.Z"
Tag the release:
git tag vX.Y.Z git push origin vX.Y.Z
The GitHub Actions workflow will build and publish the package to PyPI
Code of Conduct
Please be respectful and considerate of others when contributing. We aim to foster an inclusive and welcoming community.
License
By contributing to this project, you agree that your contributions will be licensed under the project’s MIT License.