## QuTrunk
[![Documentation Status](https://img.shields.io/badge/docs-latest-brightgreen.svg)](http://developer.queco.cn/qutrunk_api/)
[![License](https://img.shields.io/badge/license-Apache%202-blue.svg)](LICENSE)
[![Download Code](https://img.shields.io/badge/download-zip-green.svg)](https://github.com/queco-quantum/qutrunk/archive/refs/heads/main.zip)
### **概述**
---
* QuTrunk 是启科量子自主研发的一款免费、开源、跨平台的量子计算编程框架,包括量子编程API、量子命令转译、量子计算后端接口等。
* QuTrunk 使用 Python 作为宿主语言,利用 Python 的语法特性实现针对量子程序的 DSL (领域专用语言),所有使用 Python 编程的 IDE 均可使用安装。
* QuTrunk 基于量子逻辑门、量子线路等概念提供量子编程所需各类 API,这些 API 由相应的模块实现。例如 QCircuit 实现量子线路,Qubit 实现量子比特,Qureg 实现量子寄存器,Command 实现每个量子门操作的指令,Backend 实现运行量子线路的后端模块,gate 模块实现各类基础量子门操作。
* QuTrunk 还可以作为其他上层量子计算应用的基础,例如:量子算法、量子可视化编程、量子机器学习等。
QuTrunk内部模块划分及层次结构如下:
<div align=center>
<img src="http://developer.queco.cn/media/images/qutrunkTuPian.original.png"/>
</div>
### **核心模块**
---
* cicuit: 量子线路,通过应用各类基础门操作以及算符操作构建量子线路,代表了整个量子算法的实现。
* qubit: 代表单个量子比特,是量子门和量子算符操作的目标对象。
* qureg: 用于申请量子计算资源,维护若干个量子比特,用于实现某个具体的量子算法。
* gate: 量子逻辑门模块,提供各类基础量子门操作,包括:*H*, *X*, *Y*, *Z*,*P*, *R*, *Rx*, *Ry*, *Rz*, *S*, *Sdg*, *T*, *Tdg*, *CNOT*, *Toffoli*, *Swap*等。
* operator: 量子算符操作,通过若干基础量子门实现某些通用量子操作,比如振幅放大QAA, 量子傅立叶变换QFT等。
* command: 对量子线路中所有门级操作做参数化处理,对接目标后端模块,用于运行整个量子线路。
* qasm: 兼容OpenQASM 2.0标准,实现量子线路到OpenQASM指令的序列化和反序列化。
* qusl: QuTrunk量子汇编标准,实现与qasm类似功能。
* backend: 量子计算后端模块,用于执行量子线路,支持Python本地后端,qusprout和qusaas两种远程后端以及第三方后端(目前支持IBM和AWS Braket)。
* qusprout: 对接启科研制的qubox设备,使用经典计算资源并针对量子计算特点做优化,提供高性能量子模拟计算服务。
* qusaas: 对接启科量子计算云平台,接入多种量子计算资源,包括经典计算资源,离子阱量子计算机(研发中)。
### 主要特点
---
* 基于量子逻辑门、量子算符和量子线路实现量子程序开发。
* 提供QuSL量子汇编指令标准,QuSL量子汇编与Python代码完全兼容。
* 设备独立,同一个量子线路只需替换后端类型即可以在不同的量子后端上运行。
* 提供多种量子计算体验,本地量子计算提供Python计算后端,远程后端提供OMP多线程、MPI多节点并行、GPU加速等计算模式,同时预留了接口对接启科量子自行研制的离子阱量子计算机。
* 兼容多种量子汇编指令格式:OpenQASM 2.0标准和QuSL汇编标准。
* 支持量子可视化编程(需要配合启科量子研发的量子集成开发环境 QuBranch)。
### **下载和安装**
---
#### **pip安装**
QuTrunk 已发布于 PyPI 官网,可以通过 pip 命令进行安装。
注意在正式使用 QuTurnk 之前,您需要先安装 Python(版本 3.8+)。
```shell
pip install qutrunk
# 可选安装:braket——支持AWS Braket作为量子计算后端
pip install 'qutrunk[braket]'
# 可选安装:parallel——支持多节点并行计算
pip install 'qutrunk[parallel]'
# 可选安装:gpu——支持gpu计算加速(目前支持到:cuda 11)
pip install 'qutrunk[gpu]'
```
验证QuTrunk是否安装成功,打开终端进入python交互模式,执行如下语句:
``` python
import qutrunk
qutrunk.run_check()
```
输出结果为:"QuTrunk is installed successfully! You can use QuTrunk now."表明QuTrunk安装成功。
### **示例代码**
---
以下示例展示了利用 QuTrunk 运行 bell-pair 量子算法:
```python
# import package
from qutrunk.circuit import QCircuit
from qutrunk.circuit.gates import H, CNOT, Measure, All
# allocate resource
qc = QCircuit()
qr = qc.allocate(2)
# apply quantum gates
H * qr[0]
CNOT * (qr[0], qr[1])
All(Measure) * qr
# print circuit
qc.print()
# run circuit
res = qc.run(shots=1024)
# print result
print(res.get_counts())
# draw circuit
qc.draw()
```
运行结果:
<div>
<img src="http://developer.queco.cn/media/images/bell_pairYunXingJieGuo.original.png"/>
</div>
### **量子可视化编程**
---
QuBranch是由启科量子基于vscode开发的量子编程集成开发环境, QuTrunk与QuBranch相互配合可以实现量子可视化编程,
具体步骤参见[量子可视化编程](http://developer.queco.cn/learn/doc/detail?id=12&childrenid=14)
### **文档**
---
* [QuTrunk 快速上手教程](http://developer.queco.cn/learn/doc/detail?id=12&childrenid=14)
* [QuTrunk API](http://developer.queco.cn/qutrunk_api/)
### **如何参与开发**
---
1. 阅读源代码,了解我们当前的开发方向
2. 找到自己感兴趣的功能或模块
3. 进行开发,开发完成后自测功能是否正确
4. Fork代码库,将修复代码提交到fork的代码库
5. 发起pull request
6. 更多详情请参见[链接](./CONTRIBUTING.md)
### **许可证**
---
QuTrunk是自由和开源的,在Apache 2.0许可证版本下发布。
Raw data
{
"_id": null,
"home_page": "http://www.qudoor.com/",
"name": "qutrunk",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8,<3.11",
"maintainer_email": "",
"keywords": "qutrunk,quantum,sdk",
"author": "qudoorzh2022",
"author_email": "qudoorzh2022@163.com",
"download_url": "https://files.pythonhosted.org/packages/f6/67/30817e02e4234fa0108ef6dfe3f84eb3d3e271f3129c92575c86222abbe1/qutrunk-0.2.1.tar.gz",
"platform": null,
"description": "## QuTrunk\n\n[![Documentation Status](https://img.shields.io/badge/docs-latest-brightgreen.svg)](http://developer.queco.cn/qutrunk_api/)\n[![License](https://img.shields.io/badge/license-Apache%202-blue.svg)](LICENSE)\n[![Download Code](https://img.shields.io/badge/download-zip-green.svg)](https://github.com/queco-quantum/qutrunk/archive/refs/heads/main.zip)\n\n\n### **\u6982\u8ff0**\n---\n* QuTrunk \u662f\u542f\u79d1\u91cf\u5b50\u81ea\u4e3b\u7814\u53d1\u7684\u4e00\u6b3e\u514d\u8d39\u3001\u5f00\u6e90\u3001\u8de8\u5e73\u53f0\u7684\u91cf\u5b50\u8ba1\u7b97\u7f16\u7a0b\u6846\u67b6\uff0c\u5305\u62ec\u91cf\u5b50\u7f16\u7a0bAPI\u3001\u91cf\u5b50\u547d\u4ee4\u8f6c\u8bd1\u3001\u91cf\u5b50\u8ba1\u7b97\u540e\u7aef\u63a5\u53e3\u7b49\u3002\n* QuTrunk \u4f7f\u7528 Python \u4f5c\u4e3a\u5bbf\u4e3b\u8bed\u8a00\uff0c\u5229\u7528 Python \u7684\u8bed\u6cd5\u7279\u6027\u5b9e\u73b0\u9488\u5bf9\u91cf\u5b50\u7a0b\u5e8f\u7684 DSL (\u9886\u57df\u4e13\u7528\u8bed\u8a00)\uff0c\u6240\u6709\u4f7f\u7528 Python \u7f16\u7a0b\u7684 IDE \u5747\u53ef\u4f7f\u7528\u5b89\u88c5\u3002\n* QuTrunk \u57fa\u4e8e\u91cf\u5b50\u903b\u8f91\u95e8\u3001\u91cf\u5b50\u7ebf\u8def\u7b49\u6982\u5ff5\u63d0\u4f9b\u91cf\u5b50\u7f16\u7a0b\u6240\u9700\u5404\u7c7b API\uff0c\u8fd9\u4e9b API \u7531\u76f8\u5e94\u7684\u6a21\u5757\u5b9e\u73b0\u3002\u4f8b\u5982 QCircuit \u5b9e\u73b0\u91cf\u5b50\u7ebf\u8def\uff0cQubit \u5b9e\u73b0\u91cf\u5b50\u6bd4\u7279\uff0cQureg \u5b9e\u73b0\u91cf\u5b50\u5bc4\u5b58\u5668\uff0cCommand \u5b9e\u73b0\u6bcf\u4e2a\u91cf\u5b50\u95e8\u64cd\u4f5c\u7684\u6307\u4ee4\uff0cBackend \u5b9e\u73b0\u8fd0\u884c\u91cf\u5b50\u7ebf\u8def\u7684\u540e\u7aef\u6a21\u5757\uff0cgate \u6a21\u5757\u5b9e\u73b0\u5404\u7c7b\u57fa\u7840\u91cf\u5b50\u95e8\u64cd\u4f5c\u3002\n* QuTrunk \u8fd8\u53ef\u4ee5\u4f5c\u4e3a\u5176\u4ed6\u4e0a\u5c42\u91cf\u5b50\u8ba1\u7b97\u5e94\u7528\u7684\u57fa\u7840\uff0c\u4f8b\u5982\uff1a\u91cf\u5b50\u7b97\u6cd5\u3001\u91cf\u5b50\u53ef\u89c6\u5316\u7f16\u7a0b\u3001\u91cf\u5b50\u673a\u5668\u5b66\u4e60\u7b49\u3002\n\nQuTrunk\u5185\u90e8\u6a21\u5757\u5212\u5206\u53ca\u5c42\u6b21\u7ed3\u6784\u5982\u4e0b\uff1a \n\n<div align=center>\n<img src=\"http://developer.queco.cn/media/images/qutrunkTuPian.original.png\"/>\n</div>\n\n\n### **\u6838\u5fc3\u6a21\u5757**\n---\n* cicuit: \u91cf\u5b50\u7ebf\u8def\uff0c\u901a\u8fc7\u5e94\u7528\u5404\u7c7b\u57fa\u7840\u95e8\u64cd\u4f5c\u4ee5\u53ca\u7b97\u7b26\u64cd\u4f5c\u6784\u5efa\u91cf\u5b50\u7ebf\u8def\uff0c\u4ee3\u8868\u4e86\u6574\u4e2a\u91cf\u5b50\u7b97\u6cd5\u7684\u5b9e\u73b0\u3002\n* qubit: \u4ee3\u8868\u5355\u4e2a\u91cf\u5b50\u6bd4\u7279\uff0c\u662f\u91cf\u5b50\u95e8\u548c\u91cf\u5b50\u7b97\u7b26\u64cd\u4f5c\u7684\u76ee\u6807\u5bf9\u8c61\u3002\n* qureg: \u7528\u4e8e\u7533\u8bf7\u91cf\u5b50\u8ba1\u7b97\u8d44\u6e90\uff0c\u7ef4\u62a4\u82e5\u5e72\u4e2a\u91cf\u5b50\u6bd4\u7279\uff0c\u7528\u4e8e\u5b9e\u73b0\u67d0\u4e2a\u5177\u4f53\u7684\u91cf\u5b50\u7b97\u6cd5\u3002\n* gate: \u91cf\u5b50\u903b\u8f91\u95e8\u6a21\u5757\uff0c\u63d0\u4f9b\u5404\u7c7b\u57fa\u7840\u91cf\u5b50\u95e8\u64cd\u4f5c\uff0c\u5305\u62ec:*H*, *X*, *Y*, *Z*\uff0c*P*, *R*, *Rx*, *Ry*, *Rz*, *S*, *Sdg*, *T*, *Tdg*, *CNOT*, *Toffoli*, *Swap*\u7b49\u3002\n* operator: \u91cf\u5b50\u7b97\u7b26\u64cd\u4f5c\uff0c\u901a\u8fc7\u82e5\u5e72\u57fa\u7840\u91cf\u5b50\u95e8\u5b9e\u73b0\u67d0\u4e9b\u901a\u7528\u91cf\u5b50\u64cd\u4f5c\uff0c\u6bd4\u5982\u632f\u5e45\u653e\u5927QAA, \u91cf\u5b50\u5085\u7acb\u53f6\u53d8\u6362QFT\u7b49\u3002\n* command: \u5bf9\u91cf\u5b50\u7ebf\u8def\u4e2d\u6240\u6709\u95e8\u7ea7\u64cd\u4f5c\u505a\u53c2\u6570\u5316\u5904\u7406\uff0c\u5bf9\u63a5\u76ee\u6807\u540e\u7aef\u6a21\u5757\uff0c\u7528\u4e8e\u8fd0\u884c\u6574\u4e2a\u91cf\u5b50\u7ebf\u8def\u3002\n* qasm: \u517c\u5bb9OpenQASM 2.0\u6807\u51c6\uff0c\u5b9e\u73b0\u91cf\u5b50\u7ebf\u8def\u5230OpenQASM\u6307\u4ee4\u7684\u5e8f\u5217\u5316\u548c\u53cd\u5e8f\u5217\u5316\u3002\n* qusl: QuTrunk\u91cf\u5b50\u6c47\u7f16\u6807\u51c6\uff0c\u5b9e\u73b0\u4e0eqasm\u7c7b\u4f3c\u529f\u80fd\u3002\n* backend: \u91cf\u5b50\u8ba1\u7b97\u540e\u7aef\u6a21\u5757\uff0c\u7528\u4e8e\u6267\u884c\u91cf\u5b50\u7ebf\u8def\uff0c\u652f\u6301Python\u672c\u5730\u540e\u7aef\uff0cqusprout\u548cqusaas\u4e24\u79cd\u8fdc\u7a0b\u540e\u7aef\u4ee5\u53ca\u7b2c\u4e09\u65b9\u540e\u7aef(\u76ee\u524d\u652f\u6301IBM\u548cAWS Braket)\u3002\n* qusprout: \u5bf9\u63a5\u542f\u79d1\u7814\u5236\u7684qubox\u8bbe\u5907\uff0c\u4f7f\u7528\u7ecf\u5178\u8ba1\u7b97\u8d44\u6e90\u5e76\u9488\u5bf9\u91cf\u5b50\u8ba1\u7b97\u7279\u70b9\u505a\u4f18\u5316\uff0c\u63d0\u4f9b\u9ad8\u6027\u80fd\u91cf\u5b50\u6a21\u62df\u8ba1\u7b97\u670d\u52a1\u3002\n* qusaas: \u5bf9\u63a5\u542f\u79d1\u91cf\u5b50\u8ba1\u7b97\u4e91\u5e73\u53f0\uff0c\u63a5\u5165\u591a\u79cd\u91cf\u5b50\u8ba1\u7b97\u8d44\u6e90\uff0c\u5305\u62ec\u7ecf\u5178\u8ba1\u7b97\u8d44\u6e90\uff0c\u79bb\u5b50\u9631\u91cf\u5b50\u8ba1\u7b97\u673a\uff08\u7814\u53d1\u4e2d\uff09\u3002\n\n\n### \u4e3b\u8981\u7279\u70b9\n---\n* \u57fa\u4e8e\u91cf\u5b50\u903b\u8f91\u95e8\u3001\u91cf\u5b50\u7b97\u7b26\u548c\u91cf\u5b50\u7ebf\u8def\u5b9e\u73b0\u91cf\u5b50\u7a0b\u5e8f\u5f00\u53d1\u3002\n* \u63d0\u4f9bQuSL\u91cf\u5b50\u6c47\u7f16\u6307\u4ee4\u6807\u51c6\uff0cQuSL\u91cf\u5b50\u6c47\u7f16\u4e0ePython\u4ee3\u7801\u5b8c\u5168\u517c\u5bb9\u3002\n* \u8bbe\u5907\u72ec\u7acb\uff0c\u540c\u4e00\u4e2a\u91cf\u5b50\u7ebf\u8def\u53ea\u9700\u66ff\u6362\u540e\u7aef\u7c7b\u578b\u5373\u53ef\u4ee5\u5728\u4e0d\u540c\u7684\u91cf\u5b50\u540e\u7aef\u4e0a\u8fd0\u884c\u3002\n* \u63d0\u4f9b\u591a\u79cd\u91cf\u5b50\u8ba1\u7b97\u4f53\u9a8c\uff0c\u672c\u5730\u91cf\u5b50\u8ba1\u7b97\u63d0\u4f9bPython\u8ba1\u7b97\u540e\u7aef\uff0c\u8fdc\u7a0b\u540e\u7aef\u63d0\u4f9bOMP\u591a\u7ebf\u7a0b\u3001MPI\u591a\u8282\u70b9\u5e76\u884c\u3001GPU\u52a0\u901f\u7b49\u8ba1\u7b97\u6a21\u5f0f\uff0c\u540c\u65f6\u9884\u7559\u4e86\u63a5\u53e3\u5bf9\u63a5\u542f\u79d1\u91cf\u5b50\u81ea\u884c\u7814\u5236\u7684\u79bb\u5b50\u9631\u91cf\u5b50\u8ba1\u7b97\u673a\u3002\n* \u517c\u5bb9\u591a\u79cd\u91cf\u5b50\u6c47\u7f16\u6307\u4ee4\u683c\u5f0f\uff1aOpenQASM 2.0\u6807\u51c6\u548cQuSL\u6c47\u7f16\u6807\u51c6\u3002\n* \u652f\u6301\u91cf\u5b50\u53ef\u89c6\u5316\u7f16\u7a0b\uff08\u9700\u8981\u914d\u5408\u542f\u79d1\u91cf\u5b50\u7814\u53d1\u7684\u91cf\u5b50\u96c6\u6210\u5f00\u53d1\u73af\u5883 QuBranch\uff09\u3002\n\n\n### **\u4e0b\u8f7d\u548c\u5b89\u88c5**\n---\n#### **pip\u5b89\u88c5** \n\nQuTrunk \u5df2\u53d1\u5e03\u4e8e PyPI \u5b98\u7f51\uff0c\u53ef\u4ee5\u901a\u8fc7 pip \u547d\u4ee4\u8fdb\u884c\u5b89\u88c5\u3002\n\u6ce8\u610f\u5728\u6b63\u5f0f\u4f7f\u7528 QuTurnk \u4e4b\u524d\uff0c\u60a8\u9700\u8981\u5148\u5b89\u88c5 Python\uff08\u7248\u672c 3.8+\uff09\u3002\n\n ```shell\n pip install qutrunk\n \n # \u53ef\u9009\u5b89\u88c5\uff1abraket\u2014\u2014\u652f\u6301AWS Braket\u4f5c\u4e3a\u91cf\u5b50\u8ba1\u7b97\u540e\u7aef\n pip install 'qutrunk[braket]'\n\n # \u53ef\u9009\u5b89\u88c5\uff1aparallel\u2014\u2014\u652f\u6301\u591a\u8282\u70b9\u5e76\u884c\u8ba1\u7b97\n pip install 'qutrunk[parallel]'\n\n # \u53ef\u9009\u5b89\u88c5\uff1agpu\u2014\u2014\u652f\u6301gpu\u8ba1\u7b97\u52a0\u901f(\u76ee\u524d\u652f\u6301\u5230\uff1acuda 11)\n pip install 'qutrunk[gpu]'\n ```\n\n\u9a8c\u8bc1QuTrunk\u662f\u5426\u5b89\u88c5\u6210\u529f\uff0c\u6253\u5f00\u7ec8\u7aef\u8fdb\u5165python\u4ea4\u4e92\u6a21\u5f0f\uff0c\u6267\u884c\u5982\u4e0b\u8bed\u53e5\uff1a\n\n``` python\nimport qutrunk\nqutrunk.run_check()\n```\n\u8f93\u51fa\u7ed3\u679c\u4e3a\uff1a\"QuTrunk is installed successfully! You can use QuTrunk now.\"\u8868\u660eQuTrunk\u5b89\u88c5\u6210\u529f\u3002\n\n\n### **\u793a\u4f8b\u4ee3\u7801**\n---\n\u4ee5\u4e0b\u793a\u4f8b\u5c55\u793a\u4e86\u5229\u7528 QuTrunk \u8fd0\u884c bell-pair \u91cf\u5b50\u7b97\u6cd5\uff1a\n\n ```python\n # import package\n from qutrunk.circuit import QCircuit\n from qutrunk.circuit.gates import H, CNOT, Measure, All\n\n # allocate resource\n qc = QCircuit()\n qr = qc.allocate(2) \n\n # apply quantum gates\n H * qr[0] \n CNOT * (qr[0], qr[1])\n All(Measure) * qr\n\n # print circuit\n qc.print() \n # run circuit\n res = qc.run(shots=1024) \n # print result\n print(res.get_counts()) \n # draw circuit\n qc.draw()\n ```\n\n\u8fd0\u884c\u7ed3\u679c\uff1a\n<div>\n<img src=\"http://developer.queco.cn/media/images/bell_pairYunXingJieGuo.original.png\"/>\n</div>\n\n### **\u91cf\u5b50\u53ef\u89c6\u5316\u7f16\u7a0b** \n---\nQuBranch\u662f\u7531\u542f\u79d1\u91cf\u5b50\u57fa\u4e8evscode\u5f00\u53d1\u7684\u91cf\u5b50\u7f16\u7a0b\u96c6\u6210\u5f00\u53d1\u73af\u5883, QuTrunk\u4e0eQuBranch\u76f8\u4e92\u914d\u5408\u53ef\u4ee5\u5b9e\u73b0\u91cf\u5b50\u53ef\u89c6\u5316\u7f16\u7a0b,\n\u5177\u4f53\u6b65\u9aa4\u53c2\u89c1[\u91cf\u5b50\u53ef\u89c6\u5316\u7f16\u7a0b](http://developer.queco.cn/learn/doc/detail?id=12&childrenid=14)\n\n### **\u6587\u6863**\n---\n* [QuTrunk \u5feb\u901f\u4e0a\u624b\u6559\u7a0b](http://developer.queco.cn/learn/doc/detail?id=12&childrenid=14)\n* [QuTrunk API](http://developer.queco.cn/qutrunk_api/)\n\n\n### **\u5982\u4f55\u53c2\u4e0e\u5f00\u53d1**\n---\n1. \u9605\u8bfb\u6e90\u4ee3\u7801\uff0c\u4e86\u89e3\u6211\u4eec\u5f53\u524d\u7684\u5f00\u53d1\u65b9\u5411\n2. \u627e\u5230\u81ea\u5df1\u611f\u5174\u8da3\u7684\u529f\u80fd\u6216\u6a21\u5757\n3. \u8fdb\u884c\u5f00\u53d1\uff0c\u5f00\u53d1\u5b8c\u6210\u540e\u81ea\u6d4b\u529f\u80fd\u662f\u5426\u6b63\u786e\n4. Fork\u4ee3\u7801\u5e93\uff0c\u5c06\u4fee\u590d\u4ee3\u7801\u63d0\u4ea4\u5230fork\u7684\u4ee3\u7801\u5e93\n5. \u53d1\u8d77pull request\n6. \u66f4\u591a\u8be6\u60c5\u8bf7\u53c2\u89c1[\u94fe\u63a5](./CONTRIBUTING.md)\n\n\n### **\u8bb8\u53ef\u8bc1**\n---\nQuTrunk\u662f\u81ea\u7531\u548c\u5f00\u6e90\u7684\uff0c\u5728Apache 2.0\u8bb8\u53ef\u8bc1\u7248\u672c\u4e0b\u53d1\u5e03\u3002\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "qutrunk is an open source library for quantum computing.",
"version": "0.2.1",
"split_keywords": [
"qutrunk",
"quantum",
"sdk"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "f73d2c18b1e20b02ef08707be1d3b4575f73be0a4072f22c419adf06191497f4",
"md5": "6b81d6692e7f45ec0824ffd1b6abfb24",
"sha256": "68a83130d21eb7299ef31578b502e12e1ed69013012e3db895d7af3a40492831"
},
"downloads": -1,
"filename": "qutrunk-0.2.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6b81d6692e7f45ec0824ffd1b6abfb24",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8,<3.11",
"size": 418124,
"upload_time": "2023-02-09T02:00:56",
"upload_time_iso_8601": "2023-02-09T02:00:56.536697Z",
"url": "https://files.pythonhosted.org/packages/f7/3d/2c18b1e20b02ef08707be1d3b4575f73be0a4072f22c419adf06191497f4/qutrunk-0.2.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f66730817e02e4234fa0108ef6dfe3f84eb3d3e271f3129c92575c86222abbe1",
"md5": "4570065fd70831422379a457f06c0fdf",
"sha256": "d1d0ad3cac4e1ab02cd14b08ec800bf682aa40dd3cbe1c4befa23406096ed343"
},
"downloads": -1,
"filename": "qutrunk-0.2.1.tar.gz",
"has_sig": false,
"md5_digest": "4570065fd70831422379a457f06c0fdf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8,<3.11",
"size": 331449,
"upload_time": "2023-02-09T02:00:58",
"upload_time_iso_8601": "2023-02-09T02:00:58.564178Z",
"url": "https://files.pythonhosted.org/packages/f6/67/30817e02e4234fa0108ef6dfe3f84eb3d3e271f3129c92575c86222abbe1/qutrunk-0.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-02-09 02:00:58",
"github": false,
"gitlab": false,
"bitbucket": false,
"lcname": "qutrunk"
}