Contributing to qiskit-waveform-sim
We welcome contributions! This guide will help you get started.
Code of Conduct
This project follows our Code of Conduct. By participating, you agree to uphold this code.
How to Contribute
### Reporting Issues
Search existing issues first to avoid duplicates
Use the issue templates when available
Provide minimal reproduction steps
Include environment info (Python version, Qiskit version, OS)
### Submitting Pull Requests
Fork the repository
Create a feature branch:
git checkout -b feature/my-featureMake your changes
Run tests and linters (see below)
Submit a PR with a clear description
### Development Setup
git clone https://github.com/PratulDeshpande/qiskit-waveform-sim
cd qiskit-waveform-sim
pip install -e ".[dev,test,docs]"
pre-commit install
### Running Tests
# Run all tests
pytest -v tests/
# Run with coverage
pytest --cov=qiskit_waveform_sim tests/
# Run specific test file
pytest -v tests/test_core.py
# Run with parallel execution
pytest -n auto tests/
### Code Style
We use the following tools (configured in pyproject.toml):
Ruff - Fast Python linter
Black - Code formatter
MyPy - Static type checker
Run all checks:
ruff check qiskit_waveform_sim tests
black --check qiskit_waveform_sim tests
mypy qiskit_waveform_sim
Auto-fix formatting:
ruff check --fix qiskit_waveform_sim tests
black qiskit_waveform_sim tests
### Adding New Features
Core Engine: Add new envelope types in
AnalyticalEnvelopesAnnotations: Extend
PulseEnvelopeAnnotationfor new pulse parametersVisualization: Add new Plotly/Matplotlib functions in
visualization/Hardware Export: Add new export functions in tutorials/examples
### Testing Guidelines
Write tests for new functionality in
tests/Use fixtures from
tests/conftest.pyMark slow tests with
@pytest.mark.slowMark integration tests with
@pytest.mark.integration
### Documentation
Update docstrings for public APIs (NumPy style)
Add examples to relevant tutorial notebooks
Build docs locally:
cd docs && sphinx-build -b html source source/_build/html
### Release Process
Releases are managed by maintainers:
Update version in
pyproject.tomlandqiskit_waveform_sim/__init__.pyUpdate
CHANGELOG.mdCreate git tag:
git tag vX.Y.ZPush tag:
git push origin vX.Y.ZGitHub Actions builds and publishes to PyPI
Architecture Decisions
Key architectural decisions are documented in the Idea.md file and the Implementation Plan. Major changes should reference these documents.
Getting Help
Open a GitHub Discussion for questions
Check existing issues and PRs