Thank you for your interest in contributing to QuantumMeter Pro! This document provides guidelines and information for contributors.
- Python 3.8 or higher
- Git
- Basic knowledge of Python, PyQt6, and Flask
-
Fork the repository
git clone https://github.com/michaelgermini/quantum-meter-pro.git cd quantum-meter-pro -
Create a virtual environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt pip install -r requirements-dev.txt # Development dependencies -
Run tests
python -m pytest tests/
Before creating an issue, please:
- Check if the issue has already been reported
- Use the appropriate issue template
- Provide detailed information including:
- Operating system and Python version
- Steps to reproduce the issue
- Expected vs actual behavior
- Error messages or logs
When requesting a feature:
- Describe the feature clearly
- Explain the use case and benefits
- Consider if it aligns with the project's goals
- Provide examples if possible
-
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes
- Follow the coding standards below
- Add tests for new functionality
- Update documentation if needed
-
Test your changes
python -m pytest tests/ python main.py # Test desktop app python src/web/app.py # Test web dashboard
-
Commit your changes
git add . git commit -m "Add: your feature description"
-
Push and create a Pull Request
git push origin feature/your-feature-name
Use conventional commit messages:
Add:for new featuresFix:for bug fixesUpdate:for improvementsRemove:for deletionsDocs:for documentation changes
Examples:
Add: real-time temperature monitoring
Fix: chart rendering issue on mobile devices
Update: improve AI analysis accuracy
Docs: add installation guide for Windows
- Follow PEP 8 style guidelines
- Use type hints where appropriate
- Write docstrings for all functions and classes
- Keep functions small and focused
- Use meaningful variable names
#!/usr/bin/env python3
"""
Module description.
"""
from typing import Dict, List, Optional
import numpy as np
class MeasurementProcessor:
"""Process quantum measurement data."""
def __init__(self, config: Dict[str, any]) -> None:
"""Initialize the processor.
Args:
config: Configuration dictionary
"""
self.config = config
self.data = []
def process_measurement(self, data: np.ndarray) -> Dict[str, float]:
"""Process a single measurement.
Args:
data: Raw measurement data
Returns:
Processed measurement results
"""
# Implementation here
pass- Use consistent indentation (2 spaces)
- Follow BEM naming convention for CSS
- Use semantic HTML elements
- Write self-documenting JavaScript code
- Add comments for complex logic
# Run all tests
python -m pytest
# Run with coverage
python -m pytest --cov=src
# Run specific test file
python -m pytest tests/test_measurement.py
# Run with verbose output
python -m pytest -v- Write tests for all new functionality
- Use descriptive test names
- Test both success and failure cases
- Mock external dependencies
- Use fixtures for common setup
Example test:
import pytest
from src.core.measurement import MeasurementProcessor
class TestMeasurementProcessor:
"""Test the MeasurementProcessor class."""
def test_process_measurement_valid_data(self):
"""Test processing valid measurement data."""
processor = MeasurementProcessor({})
data = np.array([1.0, 2.0, 3.0])
result = processor.process_measurement(data)
assert result is not None
assert 'mean' in result
assert result['mean'] == 2.0- Write clear docstrings for all functions
- Include type hints
- Provide usage examples
- Document exceptions and edge cases
- Update README.md for user-facing changes
- Add screenshots for UI changes
- Include step-by-step instructions
- Provide troubleshooting guides
- VS Code: Install Python and PyQt6 extensions
- PyCharm: Configure for PyQt6 development
- Vim/Emacs: Use appropriate Python plugins
Install pre-commit hooks for code quality:
pip install pre-commit
pre-commit install# Format code with black
black src/ tests/
# Check code style with flake8
flake8 src/ tests/
# Sort imports with isort
isort src/ tests/QuantumMeter Pro/
├── src/
│ ├── core/ # Core measurement logic
│ ├── gui/ # Desktop application
│ ├── web/ # Web dashboard
│ ├── ai/ # AI analysis modules
│ └── utils/ # Utility functions
├── tests/ # Test suite
├── docs/ # Documentation
├── config/ # Configuration files
└── data/ # Sample data
- Be respectful and inclusive
- Help others learn and grow
- Provide constructive feedback
- Follow the project's coding standards
- Use GitHub Issues for discussions
- Be clear and concise in communications
- Ask questions when unsure
- Share knowledge and experiences
- Bug fixes and performance improvements
- Documentation improvements
- Test coverage expansion
- UI/UX enhancements
- New measurement device support
- Additional export formats
- Advanced AI analysis features
- Mobile app development
- Cosmetic improvements
- Additional language support
- Plugin system development
- Cloud integration features
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: michael@germini.info
Contributors will be recognized in:
- The project's README.md file
- Release notes
- Contributor hall of fame
- Project documentation
Thank you for contributing to QuantumMeter Pro! 🚀