Thank you for your interest in contributing to DeepSecure! This guide will help you get started with development.
DeepSecure supports multiple ways to set up your development environment. Choose the approach that best fits your workflow:
For the fastest setup, use our automated script:
# Automated setup with modern dependencies
./scripts/setup_dev.sh
# OR using Make
make dev-setupInstall using our modern optional dependency groups:
# Everything you need for development
pip install -e ".[all-dev]"
# OR install specific groups as needed
pip install -e ".[lint,test]" # Just linting and testing
pip install -e ".[docs,build]" # Documentation and building
pip install -e ".[frameworks]" # Framework integrationsAvailable dependency groups:
lint- Code quality tools (black, ruff, mypy)test- Testing framework and utilitiesdocs- Documentation generation toolsbuild- Package building and publishing toolssecurity- Security scanning toolsframeworks- Optional framework integrationsall-dev- All development dependencies
If you prefer requirements files:
# Full development environment
pip install -r requirements/dev.txt
# OR install specific components
pip install -r requirements/base.txt # Core dependencies
pip install -r requirements/test.txt # Testing only
pip install -r requirements/docs.txt # Documentation only# Run all tests
make test
# Run with coverage
make test-cov
# Run specific test file
pytest tests/test_specific.py# Format code
make format
# Run linting
make lint
# Run security checks
make security# Build the package
make build
# Run the full build script (tests + build)
./scripts/build_package.sh# Serve documentation locally
make docs-serve
# Build documentation
make docs-build- Fork the repository and create a new branch for your feature
- Set up your development environment using one of the methods above
- Make your changes following our coding standards
- Add tests for any new functionality
- Run the test suite to ensure everything works
- Submit a pull request with a clear description of your changes
- Formatting: We use
blackfor code formatting - Linting: We use
rufffor fast linting - Type Checking: We use
mypyfor static type checking - Testing: We use
pytestfor testing - Documentation: We use
mkdocsfor documentation
Run make lint to check your code against our standards.
- Check our documentation
- Look at existing examples
- Open an issue for questions or problems
- Join our community discussions
We appreciate your contributions! 🎉