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

  1. Clone the repository:

    git clone https://github.com/SabbathSchool/sabbath-school-reproducer.git
    cd sabbath-school-reproducer
    
  2. Create a virtual environment:

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  3. 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

  1. Create a fork of the repository

  2. Clone your fork to your local machine

  3. Create a feature branch:

    git checkout -b feature/your-feature-name
    
  4. Make your changes and commit them:

    git add .
    git commit -m "Description of your changes"
    
  5. Push your changes to your fork:

    git push origin feature/your-feature-name
    
  6. Create a pull request from your fork to the main repository

Adding New Features

When adding new features:

  1. Start by creating an issue to discuss the feature

  2. Write tests for the new functionality

  3. Update documentation to reflect the changes

  4. 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:

  1. Update version in __init__.py

  2. Update CHANGELOG.md

  3. Commit changes:

    git add .
    git commit -m "Prepare for release X.Y.Z"
    
  4. Tag the release:

    git tag vX.Y.Z
    git push origin vX.Y.Z
    
  5. 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.