Contributing
We welcome contributions to the TACO Format project! This page provides guidelines for contributing to the project.
Getting Started
Fork the repository on GitLab
Clone your fork:
git clone https://gitlab.com/YOUR_USERNAME/taco.git cd taco
Create a development environment:
# Install development dependencies pip install -e ".[dev]"
Create a branch for your feature:
git checkout -b feature-name
Make your changes and add tests
Run the tests to ensure everything works:
# Run Rust tests cargo test # Run Python tests pytest
Submit a merge request on GitLab
Development Guidelines
Code Style
Rust code should follow Rust style conventions and pass cargo clippy checks
Python code should follow PEP 8 guidelines
Documentation should be written in reStructuredText
Adding Features
Start with tests: Write tests that define how your feature should work
Implement the feature: Make it work!
Document it: Add documentation for your feature
Update examples: If applicable, add examples using your feature
Adding Documentation
Documentation is written in reStructuredText and built with Sphinx:
Add or update documentation in the docs/ directory
Build the documentation to test your changes:
cd docs make html
Open _build/html/index.html in your browser to view the result
Running Benchmarks
Performance is important to TACO Format. You can run benchmarks to ensure your changes don’t negatively impact performance:
cd docs
python format_comparison.py --atoms 1000 --frames 100 --output benchmark_results
This will produce benchmark results comparing TACO with other formats.
Continuous Integration
Our GitLab CI pipeline runs tests and checks for each merge request. It:
Runs tests on multiple platforms
Checks code style with clippy
Ensures documentation builds correctly
Runs security audits with cargo audit
Release Process
Update version numbers in: - Cargo.toml - pyproject.toml - Documentation
Update the changelog (CHANGELOG.md)
Create a tag for the new version
Push to GitLab to trigger the release pipeline
The release pipeline will: 1. Run all tests 2. Build documentation 3. Publish to crates.io and PyPI (these are manual steps in the pipeline)