Name | qirrunner JSON |
Version |
0.7.5
JSON |
| download |
home_page | https://github.com/qir-alliance/qir-runner |
Summary | JIT compiles and executes programs written in QIR (Quantum Intermediate Representation). |
upload_time | 2024-12-03 18:51:01 |
maintainer | None |
docs_url | None |
author | Microsoft |
requires_python | >=3.8 |
license | MIT |
keywords |
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# QIR Runner
This project implements a basic QIR runtime and execution tool. Once installed, `qir-runner` will be available via the command line in your python environment as well as the `qirrunner` module which can be imported into a Python program.
## Usage
### Command line
```shell
Usage: qir-runner [OPTIONS] --file <PATH>
Options:
-f, --file <PATH> (Required) Path to the QIR file to run
-e, --entrypoint <NAME> Name of the entry point function to execute
-s, --shots <NUM> The number of times to repeat the execution of the chosen entry point in the program [default: 1]
-r, --rngseed <NUM> The value to use when seeding the random number generator used for quantum simulation
-h, --help Print help
-V, --version Print version
```
### Python module
From a Python program, `qirrunner` provides a `run` function and two output helpers `Output` and `OutputHandler`. If the `output_fn` parameter of `run` is not specified, output will be written to `stdout`. Supplying the parameter allows the output of the execution to be captured.
```python
from qirrunner import run, OutputHandler
path = "./runner/tests/resources/bv.bc"
handler = OutputHandler()
run(path, shots=2, output_fn=handler.handle)
print(handler.get_output())
```
## Installation
```shell
pip install qirrunner
```
### Installing from sdist
Platforms for which `qirrunner` doesn't have pre-built wheels (such as `aarch64` macos), installation is available via sdist. Before installing `qirrunner` via `pip`:
- Install a usable LLVM distribution which has `llvm-config` available.
- Set the `LLVM_SYS_140_PREFIX` environment variable to the LLVM installation directory
- example: `export LLVM_SYS_140_PREFIX=/Users/sample/llvm`
- Install: `python -m pip install qirrunner`
- This will build `qirrunner` from source. You will need a working Rust installation in order for this to compile.
## Implemented APIs
```llvm
double @__quantum__qis__arccos__body(double)
double @__quantum__qis__arcsin__body(double)
double @__quantum__qis__arctan__body(double)
double @__quantum__qis__arctan2__body(double)
void @__quantum__qis__assertmeasurementprobability__body(%Array*, %Array*, %Result*, double, %String*, double)
void @__quantum__qis__assertmeasurementprobability__ctl(%Array*, %Tuple*)
void @__quantum__qis__ccx__body(%Qubit*, %Qubit*)
void @__quantum__qis__cnot__body(%Qubit*, %Qubit*)
double @__quantum__qis__cos__body(double)
double @__quantum__qis__cosh__body(double)
void @__quantum__qis__cx__body(%Qubit*, %Qubit*)
void @__quantum__qis__cy__body(%Qubit*, %Qubit*)
void @__quantum__qis__cz__body(%Qubit*, %Qubit*)
double @__quantum__qis__drawrandomdouble__body()
i64 @__quantum__qis__drawrandomint__body()
void @__quantum__qis__dumpmachine__body()
void @__quantum__qis__exp__adj(%Array*, double, %Array*)
void @__quantum__qis__exp__body(%Array*, double, %Array*)
void @__quantum__qis__exp__ctl(%Array*, %Tuple*)
void @__quantum__qis__exp__ctladj(%Array*, %Tuple*)
void @__quantum__qis__exp__ctl(%Array*, %Tuple*)
void @__quantum__qis__h__body(%Qubit*)
void @__quantum__qis__h__ctl(%Array*, %Qubit*)
double @__quantum__qis__ieeeremainder__body(double, double)
double @__quantum__qis__infinity__body()
i1 @__quantum__qis__isinf__body()
i1 @__quantum__qis__isnan__body()
i1 @__quantum__qis__isnegativeinfinity__body()
double @__quantum__qis__log__body(double)
%Result* @__quantum__qis__m__body(%Qubit*)
%Result* @__quantum__qis__measure__body(%Array*, %Array*)
%Result* @__quantum__qis__mresetz__body(%Qubit*)
void @__quantum__qis__mz__body(%Qubit*, %Result*)
double @__quantum__qis__nan__body()
void @__quantum__qis__r__adj(i2, double, %Qubit*)
void @__quantum__qis__r__body(i2, double, %Qubit*)
void @__quantum__qis__r__ctl(%Array*, %Tuple*)
void @__quantum__qis__r__ctladj(%Array*, %Tuple*)
bool @__quantum__qis__read_result__body(%Result*)
void @__quantum__qis__reset__body(%Qubit*)
void @__quantum__qis__rx__body(double, %Qubit*)
void @__quantum__qis__rx__ctl(%Array*, %Tuple*)
void @__quantum__qis__rxx__body(double, %Qubit*, %Qubit*)
void @__quantum__qis__ry__body(double, %Qubit*)
void @__quantum__qis__ry__ctl(%Array*, %Tuple*)
void @__quantum__qis__ryy__body(double, %Qubit*, %Qubit*)
void @__quantum__qis__rz__body(double, %Qubit*)
void @__quantum__qis__rz__ctl(%Array*, %Tuple*)
void @__quantum__qis__rzz__body(double, %Qubit*, %Qubit*)
void @__quantum__qis__s__adj(%Qubit*)
void @__quantum__qis__s__body(%Qubit*)
void @__quantum__qis__s__ctl(%Array*, %Qubit*)
void @__quantum__qis__s__ctladj(%Array*, %Qubit*)
double @__quantum__qis__sin__body(double)
double @__quantum__qis__sinh__body(double)
double @__quantum__qis__sqrt__body(double)
void @__quantum__qis__swap__body(%Qubit*, %Qubit*)
void @__quantum__qis__t__adj(%Qubit*)
void @__quantum__qis__t__body(%Qubit*)
void @__quantum__qis__t__ctl(%Array*, %Qubit*)
void @__quantum__qis__t__ctladj(%Array*, %Qubit*)
double @__quantum__qis__tan__body(double)
double @__quantum__qis__tanh__body(double)
void @__quantum__qis__x__body(%Qubit*)
void @__quantum__qis__x__ctl(%Array*, %Qubit*)
void @__quantum__qis__y__body(%Qubit*)
void @__quantum__qis__y__ctl(%Array*, %Qubit*)
void @__quantum__qis__z__body(%Qubit*)
void @__quantum__qis__z__ctl(%Array*, %Qubit*)
%Array* @__quantum__rt__array_concatenate(%Array*, %Array*)
%Array* @__quantum__rt__array_copy(%Array*, bool)
%Array* @__quantum__rt__array_create_1d(i32, i64)
i8* @__quantum__rt__array_get_element_ptr_1d(%Array*, i64)
i64 @__quantum__rt__array_get_size_1d(%Array*)
void @__quantum__rt__array_record_output(i64, i8*)
void @__quantum__rt__array_update_alias_count(%Array*, i32)
void @__quantum__rt__array_update_reference_count(%Array*, i32)
%BigInt* @__quantum__rt__bigint_add(%BigInt*, %BigInt*)
%BigInt* @__quantum__rt__bigint_bitand(%BigInt*, %BigInt*)
%BigInt* @__quantum__rt__bigint_bitnot(%BigInt*)
%BigInt* @__quantum__rt__bigint_bitor(%BigInt*, %BigInt*)
%BigInt* @__quantum__rt__bigint_bitxor(%BigInt*, %BigInt*)
%BigInt* @__quantum__rt__bigint_create_array(i32, i8*)
%BigInt* @__quantum__rt__bigint_create_i64(i64)
%BigInt* @__quantum__rt__bigint_divide(%BigInt*, %BigInt*)
bool @__quantum__rt__bigint_equal(%BigInt*, %BigInt*)
i8* @__quantum__rt__bigint_get_data(%BigInt*)
i32 @__quantum__rt__bigint_get_length(%BigInt*)
bool @__quantum__rt__bigint_greater(%BigInt*, %BigInt*)
bool @__quantum__rt__bigint_greater_eq(%BigInt*, %BigInt*)
%BigInt* @__quantum__rt__bigint_modulus(%BigInt*, %BigInt*)
%BigInt* @__quantum__rt__bigint_multiply(%BigInt*, %BigInt*)
%BigInt* @__quantum__rt__bigint_negate(%BigInt*)
%BigInt* @__quantum__rt__bigint_power(%BigInt*, i32)
%BigInt* @__quantum__rt__bigint_shiftleft(%BigInt*, i64)
%BigInt*@__quantum__rt__bigint_shiftright(%BigInt*, i64)
void @__quantum__rt__bigint_subtract(%BigInt*, %BigInt*)
%String* @__quantum__rt__bigint_to_string(%BigInt*)
void @__quantum__rt__bigint_update_reference_count(%BigInt*, i32)
void @__quantum__rt__bool_record_output(i1, i8*)
%String* @__quantum__rt__bool_to_string(i1)
%Callable* @__quantum__rt__callable_copy(%Callable*, bool)
%Callable* @__quantum__rt__callable_create([4 x void(%Tuple*, %Tuple*, %Tuple*)*]*, [2 x void (%Tuple*, i32)]*, %Tuple*)
void @__quantum__rt__callable_invoke(%Callable*, %Tuple*, %Tuple*)
void @__quantum__rt__callable_make_adjoint(%Callable*)
void @__quantum__rt__callable_make_controlled(%Callable*)
void @__quantum__rt__callable_update_alias_count(%Callable*, i32)
void @__quantum__rt__callable_update_reference_count(%Callable*, i32)
void @__quantum__rt__capture_update_alias_count(%Callable*, i32)
void @__quantum__rt__capture_update_reference_count(%Callable*, i32)
void @__quantum__rt__double_record_output(double, i8*)
%String* @__quantum__rt__double_to_string(double)
void @__quantum__rt__fail(%String*)
void @__quantum__rt__int_record_output(i64, i8*)
%String* @__quantum__rt__int_to_string(i64)
i8* @__quantum__rt__memory_allocate(i64)
void @__quantum__rt__message(%String*)
void @__quantum__rt__message_record_output(%String*)
%String* @__quantum__rt__pauli_to_string(i2)
%Qubit* @__quantum__rt__qubit_allocate()
%Array* @__quantum__rt__qubit_allocate_array(i64)
void @__quantum__rt__qubit_release(%Qubit*)
void @__quantum__rt__qubit_release_array(%Array*)
%String* @__quantum__rt__qubit_to_string(%Qubit*)
bool @__quantum__rt__result_equal(%Result*, %Result*)
%Result* @__quantum__rt__result_get_one()
%Result* @__quantum__rt__result_get_zero()
void @__quantum__rt__result_record_output(%Result*, i8*)
%String* @__quantum__rt__result_to_string(%Result*)
void @__quantum__rt__result_update_reference_count(%Result*, i32)
%String* @__quantum__rt__string_concatenate(%String*, %String*)
%String* @__quantum__rt__string_create(i8*)
bool @__quantum__rt__string_equal(%String*, %String*)
i8* @__quantum__rt__string_get_data(%String*)
i32 @__quantum__rt__string_get_length(%String*)
void @__quantum__rt__string_update_reference_count(%String*, i32)
%Tuple* @__quantum__rt__tuple_copy(%Tuple*, i1)
%Tuple* @__quantum__rt__tuple_create(i64)
void @__quantum__rt__tuple_record_output(i64, i8*)
void @__quantum__rt__tuple_update_alias_count(%Tuple*, i32)
void @__quantum__rt__tuple_update_reference_count(%Tuple*, i32)
```
Raw data
{
"_id": null,
"home_page": "https://github.com/qir-alliance/qir-runner",
"name": "qirrunner",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": null,
"author": "Microsoft",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/2d/65/cabcb3ed2ba16b6d19a2e05f42ef293f3043d0151256171c0f339b227534/qirrunner-0.7.5.tar.gz",
"platform": null,
"description": "# QIR Runner\n\nThis project implements a basic QIR runtime and execution tool. Once installed, `qir-runner` will be available via the command line in your python environment as well as the `qirrunner` module which can be imported into a Python program.\n\n## Usage\n\n### Command line\n\n```shell\nUsage: qir-runner [OPTIONS] --file <PATH>\n\nOptions:\n -f, --file <PATH> (Required) Path to the QIR file to run\n -e, --entrypoint <NAME> Name of the entry point function to execute\n -s, --shots <NUM> The number of times to repeat the execution of the chosen entry point in the program [default: 1]\n -r, --rngseed <NUM> The value to use when seeding the random number generator used for quantum simulation\n -h, --help Print help\n -V, --version Print version\n```\n\n### Python module\n\nFrom a Python program, `qirrunner` provides a `run` function and two output helpers `Output` and `OutputHandler`. If the `output_fn` parameter of `run` is not specified, output will be written to `stdout`. Supplying the parameter allows the output of the execution to be captured.\n\n```python\nfrom qirrunner import run, OutputHandler\n\npath = \"./runner/tests/resources/bv.bc\"\n\nhandler = OutputHandler()\nrun(path, shots=2, output_fn=handler.handle)\n\nprint(handler.get_output())\n```\n\n## Installation\n\n```shell\npip install qirrunner\n```\n\n### Installing from sdist\n\nPlatforms for which `qirrunner` doesn't have pre-built wheels (such as `aarch64` macos), installation is available via sdist. Before installing `qirrunner` via `pip`:\n\n- Install a usable LLVM distribution which has `llvm-config` available.\n- Set the `LLVM_SYS_140_PREFIX` environment variable to the LLVM installation directory\n - example: `export LLVM_SYS_140_PREFIX=/Users/sample/llvm`\n- Install: `python -m pip install qirrunner`\n - This will build `qirrunner` from source. You will need a working Rust installation in order for this to compile.\n\n## Implemented APIs\n\n```llvm\ndouble @__quantum__qis__arccos__body(double)\ndouble @__quantum__qis__arcsin__body(double)\ndouble @__quantum__qis__arctan__body(double)\ndouble @__quantum__qis__arctan2__body(double)\nvoid @__quantum__qis__assertmeasurementprobability__body(%Array*, %Array*, %Result*, double, %String*, double)\nvoid @__quantum__qis__assertmeasurementprobability__ctl(%Array*, %Tuple*)\nvoid @__quantum__qis__ccx__body(%Qubit*, %Qubit*)\nvoid @__quantum__qis__cnot__body(%Qubit*, %Qubit*)\ndouble @__quantum__qis__cos__body(double)\ndouble @__quantum__qis__cosh__body(double)\nvoid @__quantum__qis__cx__body(%Qubit*, %Qubit*)\nvoid @__quantum__qis__cy__body(%Qubit*, %Qubit*)\nvoid @__quantum__qis__cz__body(%Qubit*, %Qubit*)\ndouble @__quantum__qis__drawrandomdouble__body()\ni64 @__quantum__qis__drawrandomint__body()\nvoid @__quantum__qis__dumpmachine__body()\nvoid @__quantum__qis__exp__adj(%Array*, double, %Array*)\nvoid @__quantum__qis__exp__body(%Array*, double, %Array*)\nvoid @__quantum__qis__exp__ctl(%Array*, %Tuple*)\nvoid @__quantum__qis__exp__ctladj(%Array*, %Tuple*)\nvoid @__quantum__qis__exp__ctl(%Array*, %Tuple*)\nvoid @__quantum__qis__h__body(%Qubit*)\nvoid @__quantum__qis__h__ctl(%Array*, %Qubit*)\ndouble @__quantum__qis__ieeeremainder__body(double, double)\ndouble @__quantum__qis__infinity__body()\ni1 @__quantum__qis__isinf__body()\ni1 @__quantum__qis__isnan__body()\ni1 @__quantum__qis__isnegativeinfinity__body()\ndouble @__quantum__qis__log__body(double)\n%Result* @__quantum__qis__m__body(%Qubit*)\n%Result* @__quantum__qis__measure__body(%Array*, %Array*)\n%Result* @__quantum__qis__mresetz__body(%Qubit*)\nvoid @__quantum__qis__mz__body(%Qubit*, %Result*)\ndouble @__quantum__qis__nan__body()\nvoid @__quantum__qis__r__adj(i2, double, %Qubit*)\nvoid @__quantum__qis__r__body(i2, double, %Qubit*)\nvoid @__quantum__qis__r__ctl(%Array*, %Tuple*)\nvoid @__quantum__qis__r__ctladj(%Array*, %Tuple*)\nbool @__quantum__qis__read_result__body(%Result*)\nvoid @__quantum__qis__reset__body(%Qubit*)\nvoid @__quantum__qis__rx__body(double, %Qubit*)\nvoid @__quantum__qis__rx__ctl(%Array*, %Tuple*)\nvoid @__quantum__qis__rxx__body(double, %Qubit*, %Qubit*)\nvoid @__quantum__qis__ry__body(double, %Qubit*)\nvoid @__quantum__qis__ry__ctl(%Array*, %Tuple*)\nvoid @__quantum__qis__ryy__body(double, %Qubit*, %Qubit*)\nvoid @__quantum__qis__rz__body(double, %Qubit*)\nvoid @__quantum__qis__rz__ctl(%Array*, %Tuple*)\nvoid @__quantum__qis__rzz__body(double, %Qubit*, %Qubit*)\nvoid @__quantum__qis__s__adj(%Qubit*)\nvoid @__quantum__qis__s__body(%Qubit*)\nvoid @__quantum__qis__s__ctl(%Array*, %Qubit*)\nvoid @__quantum__qis__s__ctladj(%Array*, %Qubit*)\ndouble @__quantum__qis__sin__body(double)\ndouble @__quantum__qis__sinh__body(double)\ndouble @__quantum__qis__sqrt__body(double)\nvoid @__quantum__qis__swap__body(%Qubit*, %Qubit*)\nvoid @__quantum__qis__t__adj(%Qubit*)\nvoid @__quantum__qis__t__body(%Qubit*)\nvoid @__quantum__qis__t__ctl(%Array*, %Qubit*)\nvoid @__quantum__qis__t__ctladj(%Array*, %Qubit*)\ndouble @__quantum__qis__tan__body(double)\ndouble @__quantum__qis__tanh__body(double)\nvoid @__quantum__qis__x__body(%Qubit*)\nvoid @__quantum__qis__x__ctl(%Array*, %Qubit*)\nvoid @__quantum__qis__y__body(%Qubit*)\nvoid @__quantum__qis__y__ctl(%Array*, %Qubit*)\nvoid @__quantum__qis__z__body(%Qubit*)\nvoid @__quantum__qis__z__ctl(%Array*, %Qubit*)\n%Array* @__quantum__rt__array_concatenate(%Array*, %Array*)\n%Array* @__quantum__rt__array_copy(%Array*, bool)\n%Array* @__quantum__rt__array_create_1d(i32, i64)\ni8* @__quantum__rt__array_get_element_ptr_1d(%Array*, i64)\ni64 @__quantum__rt__array_get_size_1d(%Array*)\nvoid @__quantum__rt__array_record_output(i64, i8*)\nvoid @__quantum__rt__array_update_alias_count(%Array*, i32)\nvoid @__quantum__rt__array_update_reference_count(%Array*, i32)\n%BigInt* @__quantum__rt__bigint_add(%BigInt*, %BigInt*)\n%BigInt* @__quantum__rt__bigint_bitand(%BigInt*, %BigInt*)\n%BigInt* @__quantum__rt__bigint_bitnot(%BigInt*)\n%BigInt* @__quantum__rt__bigint_bitor(%BigInt*, %BigInt*)\n%BigInt* @__quantum__rt__bigint_bitxor(%BigInt*, %BigInt*)\n%BigInt* @__quantum__rt__bigint_create_array(i32, i8*)\n%BigInt* @__quantum__rt__bigint_create_i64(i64)\n%BigInt* @__quantum__rt__bigint_divide(%BigInt*, %BigInt*)\nbool @__quantum__rt__bigint_equal(%BigInt*, %BigInt*)\ni8* @__quantum__rt__bigint_get_data(%BigInt*)\ni32 @__quantum__rt__bigint_get_length(%BigInt*)\nbool @__quantum__rt__bigint_greater(%BigInt*, %BigInt*)\nbool @__quantum__rt__bigint_greater_eq(%BigInt*, %BigInt*)\n%BigInt* @__quantum__rt__bigint_modulus(%BigInt*, %BigInt*)\n%BigInt* @__quantum__rt__bigint_multiply(%BigInt*, %BigInt*)\n%BigInt* @__quantum__rt__bigint_negate(%BigInt*)\n%BigInt* @__quantum__rt__bigint_power(%BigInt*, i32)\n%BigInt* @__quantum__rt__bigint_shiftleft(%BigInt*, i64)\n%BigInt*@__quantum__rt__bigint_shiftright(%BigInt*, i64)\nvoid @__quantum__rt__bigint_subtract(%BigInt*, %BigInt*)\n%String* @__quantum__rt__bigint_to_string(%BigInt*)\nvoid @__quantum__rt__bigint_update_reference_count(%BigInt*, i32)\nvoid @__quantum__rt__bool_record_output(i1, i8*)\n%String* @__quantum__rt__bool_to_string(i1)\n%Callable* @__quantum__rt__callable_copy(%Callable*, bool)\n%Callable* @__quantum__rt__callable_create([4 x void(%Tuple*, %Tuple*, %Tuple*)*]*, [2 x void (%Tuple*, i32)]*, %Tuple*)\nvoid @__quantum__rt__callable_invoke(%Callable*, %Tuple*, %Tuple*)\nvoid @__quantum__rt__callable_make_adjoint(%Callable*)\nvoid @__quantum__rt__callable_make_controlled(%Callable*)\nvoid @__quantum__rt__callable_update_alias_count(%Callable*, i32)\nvoid @__quantum__rt__callable_update_reference_count(%Callable*, i32)\nvoid @__quantum__rt__capture_update_alias_count(%Callable*, i32)\nvoid @__quantum__rt__capture_update_reference_count(%Callable*, i32)\nvoid @__quantum__rt__double_record_output(double, i8*)\n%String* @__quantum__rt__double_to_string(double)\nvoid @__quantum__rt__fail(%String*)\nvoid @__quantum__rt__int_record_output(i64, i8*)\n%String* @__quantum__rt__int_to_string(i64)\ni8* @__quantum__rt__memory_allocate(i64)\nvoid @__quantum__rt__message(%String*)\nvoid @__quantum__rt__message_record_output(%String*)\n%String* @__quantum__rt__pauli_to_string(i2)\n%Qubit* @__quantum__rt__qubit_allocate()\n%Array* @__quantum__rt__qubit_allocate_array(i64)\nvoid @__quantum__rt__qubit_release(%Qubit*)\nvoid @__quantum__rt__qubit_release_array(%Array*)\n%String* @__quantum__rt__qubit_to_string(%Qubit*)\nbool @__quantum__rt__result_equal(%Result*, %Result*)\n%Result* @__quantum__rt__result_get_one()\n%Result* @__quantum__rt__result_get_zero()\nvoid @__quantum__rt__result_record_output(%Result*, i8*)\n%String* @__quantum__rt__result_to_string(%Result*)\nvoid @__quantum__rt__result_update_reference_count(%Result*, i32)\n%String* @__quantum__rt__string_concatenate(%String*, %String*)\n%String* @__quantum__rt__string_create(i8*)\nbool @__quantum__rt__string_equal(%String*, %String*)\ni8* @__quantum__rt__string_get_data(%String*)\ni32 @__quantum__rt__string_get_length(%String*)\nvoid @__quantum__rt__string_update_reference_count(%String*, i32)\n%Tuple* @__quantum__rt__tuple_copy(%Tuple*, i1)\n%Tuple* @__quantum__rt__tuple_create(i64)\nvoid @__quantum__rt__tuple_record_output(i64, i8*)\nvoid @__quantum__rt__tuple_update_alias_count(%Tuple*, i32)\nvoid @__quantum__rt__tuple_update_reference_count(%Tuple*, i32)\n```\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "JIT compiles and executes programs written in QIR (Quantum Intermediate Representation).",
"version": "0.7.5",
"project_urls": {
"Homepage": "https://github.com/qir-alliance/qir-runner",
"Source Code": "https://github.com/qir-alliance/qir-runner"
},
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "61fa2dbcc0cb95ce6bc56da8d869df083fbd6a7c521ee089c17ba7ed7f3a5da3",
"md5": "074aab1e8c511c7979ce59b1835930e4",
"sha256": "1ccaffc33d8dddcad9dc78f02ed86fa72059f34830e5ce86f252fc803ad2e123"
},
"downloads": -1,
"filename": "qirrunner-0.7.5-cp38-abi3-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "074aab1e8c511c7979ce59b1835930e4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 14727405,
"upload_time": "2024-12-03T18:51:03",
"upload_time_iso_8601": "2024-12-03T18:51:03.141126Z",
"url": "https://files.pythonhosted.org/packages/61/fa/2dbcc0cb95ce6bc56da8d869df083fbd6a7c521ee089c17ba7ed7f3a5da3/qirrunner-0.7.5-cp38-abi3-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3282048b78597c9cd61d869b653f83097675e983fa1e6f3f6255e618d6fe6028",
"md5": "ed9eff06295ab434862a338c05968266",
"sha256": "aac0e787aeee6a9656e8a9bce9b6913ffcd1298f33ef11731dceab677d2fc0df"
},
"downloads": -1,
"filename": "qirrunner-0.7.5-cp38-abi3-manylinux_2_31_x86_64.whl",
"has_sig": false,
"md5_digest": "ed9eff06295ab434862a338c05968266",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 24339298,
"upload_time": "2024-12-03T18:51:06",
"upload_time_iso_8601": "2024-12-03T18:51:06.679745Z",
"url": "https://files.pythonhosted.org/packages/32/82/048b78597c9cd61d869b653f83097675e983fa1e6f3f6255e618d6fe6028/qirrunner-0.7.5-cp38-abi3-manylinux_2_31_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b40c106bf44cdcdf706a204121d77a1cfddd0429d7f218cc4b36343a3dbd63ee",
"md5": "226262e3a8edc2bb8b88bf07f662f696",
"sha256": "f273d5657ddd935196230824c537300b21851cde41ad6672486cf6c8cf979014"
},
"downloads": -1,
"filename": "qirrunner-0.7.5-cp38-abi3-win_amd64.whl",
"has_sig": false,
"md5_digest": "226262e3a8edc2bb8b88bf07f662f696",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 13968220,
"upload_time": "2024-12-03T18:51:09",
"upload_time_iso_8601": "2024-12-03T18:51:09.450152Z",
"url": "https://files.pythonhosted.org/packages/b4/0c/106bf44cdcdf706a204121d77a1cfddd0429d7f218cc4b36343a3dbd63ee/qirrunner-0.7.5-cp38-abi3-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2d65cabcb3ed2ba16b6d19a2e05f42ef293f3043d0151256171c0f339b227534",
"md5": "d3813bd74125c63703525a23fb27052e",
"sha256": "2d73760456c9741123e650ac31f5801ef60c9b37e73fc9ff3d6395dbbf0de248"
},
"downloads": -1,
"filename": "qirrunner-0.7.5.tar.gz",
"has_sig": false,
"md5_digest": "d3813bd74125c63703525a23fb27052e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 254509,
"upload_time": "2024-12-03T18:51:01",
"upload_time_iso_8601": "2024-12-03T18:51:01.166839Z",
"url": "https://files.pythonhosted.org/packages/2d/65/cabcb3ed2ba16b6d19a2e05f42ef293f3043d0151256171c0f339b227534/qirrunner-0.7.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-03 18:51:01",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "qir-alliance",
"github_project": "qir-runner",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "qirrunner"
}