Contributing¶
Thank you for your interest in contributing to BioEPIC Skills!
Development Setup¶
Using uv (Recommended)¶
-
Install uv:
-
Clone the repository:
-
Install dependencies:
-
Set up environment variables:
Using pip¶
-
Clone the repository:
-
Create a virtual environment:
-
Install dependencies:
-
Set up environment variables:
Running Tests¶
Run all tests:
Run with coverage:
Run specific test files:
uv run pytest bioepic_skills/test/test_api_search.py
uv run pytest bioepic_skills/test/test_data_processing.py
Building Documentation¶
Build the documentation locally:
This will start a local development server at http://127.0.0.1:8000/ where you can preview your changes.
To build the static site:
The documentation will be built in the site/ directory.
Project Structure¶
bioepic_skills/
├── bioepic_skills/ # Main package directory
│ ├── __init__.py # Package initialization
│ ├── api_base.py # Base API class
│ ├── api_search.py # API search functionality
│ ├── auth.py # Authentication handler
│ ├── data_processing.py # Data processing utilities
│ ├── decorators.py # Custom decorators
│ ├── utils.py # Utility functions
│ ├── example_usage.py # Usage examples
│ └── test/ # Test directory
│ ├── __init__.py
│ ├── test_api_search.py
│ └── test_data_processing.py
├── docs/ # Documentation (MkDocs)
│ ├── index.md
│ ├── getting-started/
│ ├── user-guide/
│ ├── api/
│ └── development/
├── .github/
│ └── workflows/
│ └── ci.yml # GitHub Actions CI/CD
├── .gitignore
├── .env.example
├── LICENSE
├── README.md
├── pyproject.toml
├── mkdocs.yml # MkDocs configuration
├── CONTRIBUTING.md
└── CHANGELOG.md
Code Style¶
We follow Python best practices:
- Use meaningful variable and function names
- Add docstrings to all public functions and classes
- Follow PEP 8 style guidelines
- Keep functions focused and modular
- Add type hints where appropriate
Example:
def get_record_by_id(self, record_id: str) -> dict:
"""
Retrieve a single record by its ID.
Parameters
----------
record_id : str
The unique identifier of the record
Returns
-------
dict
The record data
Raises
------
RuntimeError
If the API request fails
"""
# Implementation...
Submitting Changes¶
- Fork the repository
- Create a feature branch:
- Make your changes
- Run tests to ensure everything works:
- Commit your changes:
- Push to your fork:
- Open a Pull Request
Pull Request Guidelines¶
- Provide a clear description of the changes
- Reference any related issues
- Ensure all tests pass
- Update documentation if needed
- Add tests for new features
- Keep changes focused - one feature per PR
Reporting Issues¶
When reporting issues, please include:
- Python version
- Operating system
- Steps to reproduce the issue
- Expected behavior
- Actual behavior
- Error messages or stack traces
Documentation¶
When adding or modifying features:
- Update relevant documentation in
docs/ - Add docstrings to new functions/classes
- Update the CHANGELOG.md
- Test your documentation locally with
mkdocs serve
Questions?¶
Feel free to open an issue for:
- Feature requests
- Bug reports
- Documentation improvements
- General questions
License¶
By contributing, you agree that your contributions will be licensed under the same license as the project (see LICENSE file).