The most up-to-date version of PyQBench can be installed from PyPI:
pip install pyqbench
qbench library, as well as the CLI tool. To verify that the install suceeded,
you can check if the package is importable and the CLI tool is visible in your path.
python -c "import qbench" # Should silently pass qbench -h # Should produce help message
If you want to contribute to PyQBench, clone the repository and install the package in development mode. The example below clones repository via SSH and installs the package.
git clone email@example.com:iitis/PyQBench.git pip install -e PyQBench
Installing extra dependencies#
When developing PyQBench, you most likely want to install dependencies needed for running tests, assisting you in following style guidelines and building documentation. To this end, PyQBench defines the following extras:
test: dependencies needed for running tests
dev: development tools (e.g. linters)
docs: tools needed for building the documentation
Extras can be installed, as usually, by passing them in square brackets to
pip install command.
The extras can be mixed and matched (although you probably want to install all of them).
As an illustration, example below installs the cloned repository with
pip install -e PyQBench[test,dev]
Installing pre-commit hook#
PyQBench provides a pre-commit configuration matching the one used in our CI. The hooks run linters and static analysis tools, allowing you to catch any typing errors, common mistakes and verify inconsistencies in your code style before pushing the code to the repository (or its fork).
To use the hooks, first install pre-commit:
pip install pre-commit
And then install the hooks:
List and explanation of the dependencies#
This section discusses dependencies used by PyQBench and their role in the project. Please note that transitive dependencies are not included in the list.
qiskit: used for constructing quantum circuits and interfacing with quantum devices
qiskit-braket-provider: used for interacting with Amazon Braket devices
mthree: used for readout error mitigation
scipy: basic libraries for numerical calculations
tqdm: used for rendering progress bars in CLI
pydantic: for reading/writing input/output files in the CLI, and validating their contents
pandas: used for outputting final CSV file with discrimination probabilities
pytest: used for defining and running tests
pytest-cov: used with pytest for obtaining test-coverage
flake8: used for linting code
black: used for formatting code in a consistent way
isort: used for consistently sorting imoprts
mypy: used for static analysis of type hints
sphinx: framework used for building this documentation
pydata-sphinx-theme: theme of this documentation
myst-parser: used to allow Markdown instead of ReST in the docs