Contributing to HydroErr ======================== We welcome contributions from the community! Whether you're fixing bugs, adding new error metrics, improving documentation, or enhancing the codebase, your contributions help make HydroErr better. Getting Started ^^^^^^^^^^^^^^^ Before you begin, ensure you have the following installed: - `Git `_ - `Python 3.10+ `_ - `uv `_ Setting Up Your Development Environment ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1. **Fork and Clone the Repository** .. code-block:: bash git clone https://github.com/BYU-Hydroinformatics/HydroErr.git cd HydroErr 3. **Install Dependencies** .. code-block:: bash uv sync Development Workflow ^^^^^^^^^^^^^^^^^^^^ 1. **Create a Feature Branch** Use a descriptive branch name for your changes: .. code-block:: bash git checkout -b feature/your-feature-name # or git checkout -b fix/issue-number 2. **Make Your Changes** When implementing new features or metrics: - Write clear, modular code - Include comprehensive docstrings using the `NumPy docstring format `_ - Include relevant references to scholarly papers in docstrings 3. **Write Tests** Add test cases for any new functionality in the ``tests/`` directory: .. code-block:: bash # Run tests to ensure nothing is broken uv run pytest - Aim for high code coverage - Test edge cases (NaN, Inf, negative, and zero values) - Test with different data structures (lists, NumPy arrays, Pandas Series/DataFrames) 4. **Ensure Code Quality** - Follow PEP 8 style guidelines - Run the full test suite before committing 5. **Commit and Push** .. code-block:: bash git add . git commit -m "Clear description of your changes" git push origin feature/your-feature-name 6. **Create a Pull Request** - Go to `GitHub `_ and create a new pull request - Provide a clear title and description - Link any related issues - Wait for continuous integration pipeline to pass Contributing Metrics ^^^^^^^^^^^^^^^^^^^^ When adding new error metrics: - Ensure the metric is mathematically sound and well-documented - Include references to the scholarly paper or source where the metric is defined - Add usage examples in the docstring - Test with various hydrologic datasets - Document the metric's advantages and limitations Contributing to the Documentation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The documentation can be built locally with this command: .. code-block:: bash uv run --only-group docs sphinx-build docs/ docs/_build It will generate the documentation files in the docs/_build directory. You can open that directory and open the index.html file to locally view the docs. Important Guidelines ^^^^^^^^^^^^^^^^^^^^ - **Code Style:** Follow PEP 8 guidelines. Code should be clean and well-commented. - **Documentation:** All functions and classes must include NumPy-style docstrings. - **Testing:** Write tests for new features. Ensure all tests pass before submitting a PR. - **Pull Requests:** Always create pull requests before merging to the main branch. This allows continuous integration testing and code review. - **Communication:** If you're working on a large feature, open an issue first to discuss it with the maintainers. For BYU-Hydroinformatics Members ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Please make pull requests before merging changes to the master branch. This ensures continuous integration testing and maintains code quality standards.