From 40c9ee5c0d406d41237d33c243fcbd11cebfd2a8 Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Thu, 10 Jul 2025 15:26:23 +0200 Subject: [PATCH] Add CONTRIBUTING.md with project guidelines --- CONTRIBUTING.md | 142 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..ece10cd --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,142 @@ +# Contributing to doi2dataset + +Thank you for your interest in contributing to **doi2dataset**! We welcome contributions from the community and appreciate your help in making this project better. + +## Quick Start + +1. **Fork** the repository on GitLab +2. **Clone** your fork locally: + ```bash + git clone https://git.uni-due.de/your-username/doi2dataset.git + cd doi2dataset + ``` +3. **Install** development dependencies: + ```bash + pip install -r requirements-dev.txt + ``` +4. **Make** your changes +5. **Test** your changes (see [Testing](#testing) below) +6. **Submit** a pull request + +## How to Contribute + +### Reporting Issues + +- Use the GitLab issue tracker to report bugs or request features +- Provide clear descriptions and steps to reproduce issues +- Include relevant system information and error messages + +### Code Contributions + +- Create a new branch for your feature or bug fix +- Write clear, descriptive commit messages +- Follow the existing code style and conventions +- Add tests for new functionality +- Update documentation as needed +- Ensure all tests pass before submitting + +### Documentation + +- Documentation is built using Sphinx and deployed automatically +- Source files are in `docs/source/` +- See the [full documentation](https://doi2dataset-66f763.gitpages.uni) for more details + +## Development Setup + +### Prerequisites + +- Python 3.7+ +- pip + +### Installation + +```bash +# Clone the repository +git clone https://git.uni-due.de/your-username/doi2dataset.git +cd doi2dataset + +# Install development dependencies +pip install -r requirements-dev.txt + +# Install documentation dependencies (optional) +pip install -r requirements-doc.txt +``` + +## Testing + +We use pytest for testing with comprehensive coverage of core functionalities. + +### Running Tests + +```bash +# Run all tests +pytest + +# Run with coverage +pytest --cov=. + +# Generate HTML coverage report +pytest --cov=. --cov-report=html +``` + +### Test Structure + +Tests are organized into several files covering: +- Core functionality (DOI validation, name processing) +- API integration (mock responses) +- Citation building +- Metadata processing +- License processing +- Publication utilities + +## Code Style + +- Follow existing code conventions +- Write clear, descriptive variable and function names +- Add docstrings for public functions and classes +- Use type hints where appropriate +- Keep functions focused and modular + +## Documentation + +### Building Documentation Locally + +```bash +# Build current branch documentation +cd docs +make html + +# Build multiversion documentation +cd docs +make multiversion +``` + +The documentation supports multiple versions and is automatically deployed via GitLab CI/CD. + +## Submitting Changes + +1. **Create a branch** from `main` for your changes +2. **Make your changes** with appropriate tests +3. **Ensure all tests pass** +4. **Update documentation** if needed +5. **Submit a merge request** with: + - Clear description of changes + - Reference to related issues + - List of testing performed + +## Need Help? + +For detailed information about contributing, building documentation, testing, and development setup, please refer to our comprehensive [Contributing Guide](https://doi2dataset-66f763.gitpages.uni/contributing.html) in the documentation. + +## Code of Conduct + +Please be respectful and constructive in all interactions. We aim to maintain a welcoming environment for all contributors. + +## Questions? + +If you have questions about contributing, feel free to: +- Open an issue for discussion +- Check the existing documentation +- Contact the maintainers + +Thank you for contributing to doi2dataset! 🚀