python-with-rust


Namepython-with-rust JSON
Version 0.1.5 PyPI version JSON
download
home_pageNone
SummaryPython 调用 Rust 的示例
upload_time2024-10-24 06:31:54
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords rust pyo3 python performance hybrid
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
# python_with_rust

演示 Python 如何调用一个 Rust 项目
1. Python 传给 Rust 这些数据结构:str, int, float, list, dict 等
2. Rust 返回给 Python 这些数据结构:String, i32, f64, Vec<i32>, Vec<String>
3. Python 使用 Rust 类
4. 把 Python 项目发布,并且兼容多种操作系统


说明
- 自从 [PEP 518](https://peps.python.org/pep-0518/) 以来,`pyproject.toml` 是比 `setup.py` 更为先进的构建文件。
- 使用 `setup.py` 管理方式见于分支 [use_setup.py](https://github.com/guofei9987/python_with_rust/tree/use_setup.py),main 分支使用 `pyproject.toml`


## 一、安装

两种方式:
1. 使用 `pip install python_with_rust==0.1.5` 但只限于已经对对应的环境预编译的情况,包含:
    - `ubuntu-latest`, `macos-latest`, `windows-latest`; python 版本为:'3.8', '3.9', '3.10', '3.11' ,'3.12'
    - 使用 CI 方法,在 **release** 时从 pypi 针对一些环境预编译并发布,CI见于[workflows/release.yml](workflows/release.yml)
    - pypi 托管的预编译文件可以查看 [https://pypi.org/project/numpy/#files](https://pypi.org/project/numpy/#files)
2. 如果环境不在上述范围内,可以下载项目后在本地编译并安装。包括以下情况:
    - macos x86。Intel 系列的 Macbook,或者虽然是 M 系列处理器,但是 python 环境是通过 Rosetta 2 以 Intel 模拟模式运行的。
    - manylinux/musllinux 的 aarch64版本。一般出现在移动设备、嵌入式设备上,或者用 MacBook 打开的默认 docker
    - Linux 的 glibc 版本较老的
    - win32
    - macOS 14.7 + arm64 不支持 python 3.7,因此没发布较老的 Python 版本
    - 上述情况实际上也可以用 CI 方法批量向 pypi 发布。但此项目只是示例,没必要都涵盖。



如何查询自己的环境?
- `uname -m` 查询架构
- `python -c "import platform; print(platform.machine())"` 查询 Python 环境
- `ldd --version` 查询 glibc 版本

本地编译并安装的步骤:
1. 安装 rust、Python(略),可以升级到较新版本
2. 安装 maturin `pip install maturin`
3. 在本地编译并安装此项目 `matruin develop`


## 二、测试

```shell
python examples/example1.py # 测试可以调用 Python 函数
python examples/example2.py # 测试可以调用 Rust 函数
python examples/example3.py # 测试相互传递 list、string 等数据
python examples/example4.py # 测试可以调用 Rust 类
```

## 三、说明

- `./my_rust_project1` 是一个纯 Rust 项目,是 python 所要调用的 rust项目。它与 `pyo3` 之类的无关。
- `./Cargo.toml` 是一个中间层,它使用 pyo3,调用 `my_rust_project1` 并被 Python 调用
- 另一个方案是 ffi 方法,使用 C 标准编译 `my_rust_project1`,编译后的代码可以被 Python(ctypes)/C/Rust/Java 调用。具体参见 [郭飞的笔记](https://www.guofei.site/2022/08/28/rust2.html#Python%20%E8%B0%83%E7%94%A8%20Rust%20%E7%BC%96%E8%AF%91%E5%90%8E)
    - 缺点是需要自定义数据类型,并有内存泄露的风险。优点是某些情况下潜在性能更高
    - 使用 `pyo3` 是以一个比较好的实践,这个项目仅展示使用 `pyo3` 的方案



            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "python-with-rust",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "rust, pyo3, python, performance, hybrid",
    "author": null,
    "author_email": "Guo Fei <me@guofei.site>",
    "download_url": null,
    "platform": null,
    "description": "\n# python_with_rust\n\n\u6f14\u793a Python \u5982\u4f55\u8c03\u7528\u4e00\u4e2a Rust \u9879\u76ee\n1. Python \u4f20\u7ed9 Rust \u8fd9\u4e9b\u6570\u636e\u7ed3\u6784\uff1astr, int, float, list, dict \u7b49\n2. Rust \u8fd4\u56de\u7ed9 Python \u8fd9\u4e9b\u6570\u636e\u7ed3\u6784\uff1aString, i32, f64, Vec<i32>, Vec<String>\n3. Python \u4f7f\u7528 Rust \u7c7b\n4. \u628a Python \u9879\u76ee\u53d1\u5e03\uff0c\u5e76\u4e14\u517c\u5bb9\u591a\u79cd\u64cd\u4f5c\u7cfb\u7edf\n\n\n\u8bf4\u660e\n- \u81ea\u4ece [PEP 518](https://peps.python.org/pep-0518/) \u4ee5\u6765\uff0c`pyproject.toml` \u662f\u6bd4 `setup.py` \u66f4\u4e3a\u5148\u8fdb\u7684\u6784\u5efa\u6587\u4ef6\u3002\n- \u4f7f\u7528 `setup.py` \u7ba1\u7406\u65b9\u5f0f\u89c1\u4e8e\u5206\u652f [use_setup.py](https://github.com/guofei9987/python_with_rust/tree/use_setup.py)\uff0cmain \u5206\u652f\u4f7f\u7528 `pyproject.toml`\n\n\n## \u4e00\u3001\u5b89\u88c5\n\n\u4e24\u79cd\u65b9\u5f0f\uff1a\n1. \u4f7f\u7528 `pip install python_with_rust==0.1.5` \u4f46\u53ea\u9650\u4e8e\u5df2\u7ecf\u5bf9\u5bf9\u5e94\u7684\u73af\u5883\u9884\u7f16\u8bd1\u7684\u60c5\u51b5\uff0c\u5305\u542b\uff1a\n    - `ubuntu-latest`, `macos-latest`, `windows-latest`; python \u7248\u672c\u4e3a\uff1a'3.8', '3.9', '3.10', '3.11' ,'3.12'\n    - \u4f7f\u7528 CI \u65b9\u6cd5\uff0c\u5728 **release** \u65f6\u4ece pypi \u9488\u5bf9\u4e00\u4e9b\u73af\u5883\u9884\u7f16\u8bd1\u5e76\u53d1\u5e03\uff0cCI\u89c1\u4e8e[workflows/release.yml](workflows/release.yml)\n    - pypi \u6258\u7ba1\u7684\u9884\u7f16\u8bd1\u6587\u4ef6\u53ef\u4ee5\u67e5\u770b [https://pypi.org/project/numpy/#files](https://pypi.org/project/numpy/#files)\n2. \u5982\u679c\u73af\u5883\u4e0d\u5728\u4e0a\u8ff0\u8303\u56f4\u5185\uff0c\u53ef\u4ee5\u4e0b\u8f7d\u9879\u76ee\u540e\u5728\u672c\u5730\u7f16\u8bd1\u5e76\u5b89\u88c5\u3002\u5305\u62ec\u4ee5\u4e0b\u60c5\u51b5\uff1a\n    - macos x86\u3002Intel \u7cfb\u5217\u7684 Macbook\uff0c\u6216\u8005\u867d\u7136\u662f M \u7cfb\u5217\u5904\u7406\u5668\uff0c\u4f46\u662f python \u73af\u5883\u662f\u901a\u8fc7 Rosetta 2 \u4ee5 Intel \u6a21\u62df\u6a21\u5f0f\u8fd0\u884c\u7684\u3002\n    - manylinux/musllinux \u7684 aarch64\u7248\u672c\u3002\u4e00\u822c\u51fa\u73b0\u5728\u79fb\u52a8\u8bbe\u5907\u3001\u5d4c\u5165\u5f0f\u8bbe\u5907\u4e0a\uff0c\u6216\u8005\u7528 MacBook \u6253\u5f00\u7684\u9ed8\u8ba4 docker\n    - Linux \u7684 glibc \u7248\u672c\u8f83\u8001\u7684\n    - win32\n    - macOS 14.7 + arm64 \u4e0d\u652f\u6301 python 3.7\uff0c\u56e0\u6b64\u6ca1\u53d1\u5e03\u8f83\u8001\u7684 Python \u7248\u672c\n    - \u4e0a\u8ff0\u60c5\u51b5\u5b9e\u9645\u4e0a\u4e5f\u53ef\u4ee5\u7528 CI \u65b9\u6cd5\u6279\u91cf\u5411 pypi \u53d1\u5e03\u3002\u4f46\u6b64\u9879\u76ee\u53ea\u662f\u793a\u4f8b\uff0c\u6ca1\u5fc5\u8981\u90fd\u6db5\u76d6\u3002\n\n\n\n\u5982\u4f55\u67e5\u8be2\u81ea\u5df1\u7684\u73af\u5883\uff1f\n- `uname -m` \u67e5\u8be2\u67b6\u6784\n- `python -c \"import platform; print(platform.machine())\"` \u67e5\u8be2 Python \u73af\u5883\n- `ldd --version` \u67e5\u8be2 glibc \u7248\u672c\n\n\u672c\u5730\u7f16\u8bd1\u5e76\u5b89\u88c5\u7684\u6b65\u9aa4\uff1a\n1. \u5b89\u88c5 rust\u3001Python\uff08\u7565\uff09\uff0c\u53ef\u4ee5\u5347\u7ea7\u5230\u8f83\u65b0\u7248\u672c\n2. \u5b89\u88c5 maturin `pip install maturin`\n3. \u5728\u672c\u5730\u7f16\u8bd1\u5e76\u5b89\u88c5\u6b64\u9879\u76ee `matruin develop`\n\n\n## \u4e8c\u3001\u6d4b\u8bd5\n\n```shell\npython examples/example1.py # \u6d4b\u8bd5\u53ef\u4ee5\u8c03\u7528 Python \u51fd\u6570\npython examples/example2.py # \u6d4b\u8bd5\u53ef\u4ee5\u8c03\u7528 Rust \u51fd\u6570\npython examples/example3.py # \u6d4b\u8bd5\u76f8\u4e92\u4f20\u9012 list\u3001string \u7b49\u6570\u636e\npython examples/example4.py # \u6d4b\u8bd5\u53ef\u4ee5\u8c03\u7528 Rust \u7c7b\n```\n\n## \u4e09\u3001\u8bf4\u660e\n\n- `./my_rust_project1` \u662f\u4e00\u4e2a\u7eaf Rust \u9879\u76ee\uff0c\u662f python \u6240\u8981\u8c03\u7528\u7684 rust\u9879\u76ee\u3002\u5b83\u4e0e `pyo3` \u4e4b\u7c7b\u7684\u65e0\u5173\u3002\n- `./Cargo.toml` \u662f\u4e00\u4e2a\u4e2d\u95f4\u5c42\uff0c\u5b83\u4f7f\u7528 pyo3\uff0c\u8c03\u7528 `my_rust_project1` \u5e76\u88ab Python \u8c03\u7528\n- \u53e6\u4e00\u4e2a\u65b9\u6848\u662f ffi \u65b9\u6cd5\uff0c\u4f7f\u7528 C \u6807\u51c6\u7f16\u8bd1 `my_rust_project1`\uff0c\u7f16\u8bd1\u540e\u7684\u4ee3\u7801\u53ef\u4ee5\u88ab Python(ctypes)/C/Rust/Java \u8c03\u7528\u3002\u5177\u4f53\u53c2\u89c1 [\u90ed\u98de\u7684\u7b14\u8bb0](https://www.guofei.site/2022/08/28/rust2.html#Python%20%E8%B0%83%E7%94%A8%20Rust%20%E7%BC%96%E8%AF%91%E5%90%8E)\n    - \u7f3a\u70b9\u662f\u9700\u8981\u81ea\u5b9a\u4e49\u6570\u636e\u7c7b\u578b\uff0c\u5e76\u6709\u5185\u5b58\u6cc4\u9732\u7684\u98ce\u9669\u3002\u4f18\u70b9\u662f\u67d0\u4e9b\u60c5\u51b5\u4e0b\u6f5c\u5728\u6027\u80fd\u66f4\u9ad8\n    - \u4f7f\u7528 `pyo3` \u662f\u4ee5\u4e00\u4e2a\u6bd4\u8f83\u597d\u7684\u5b9e\u8df5\uff0c\u8fd9\u4e2a\u9879\u76ee\u4ec5\u5c55\u793a\u4f7f\u7528 `pyo3` \u7684\u65b9\u6848\n\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Python \u8c03\u7528 Rust \u7684\u793a\u4f8b",
    "version": "0.1.5",
    "project_urls": null,
    "split_keywords": [
        "rust",
        " pyo3",
        " python",
        " performance",
        " hybrid"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "48eaffc18ddf09f4451838d48c11368a393bbc6622ab593e4321f4b01cb176b8",
                "md5": "09dd3e3530663110d509169bb9fc342c",
                "sha256": "c64726e72f4358ccfdfaca71e1adfdc075b496f1b3e4e24110657c92d1ad6077"
            },
            "downloads": -1,
            "filename": "python_with_rust-0.1.5-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "09dd3e3530663110d509169bb9fc342c",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 242703,
            "upload_time": "2024-10-24T06:31:54",
            "upload_time_iso_8601": "2024-10-24T06:31:54.873701Z",
            "url": "https://files.pythonhosted.org/packages/48/ea/ffc18ddf09f4451838d48c11368a393bbc6622ab593e4321f4b01cb176b8/python_with_rust-0.1.5-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3d8cc12b913510df109ce2e17d85e1959731454db68a04dc0373092460c3e79c",
                "md5": "1eaec979d357ea77f4ea755938a81a42",
                "sha256": "0df3042dbc305d455e21a83dc6b50390443b44f4e87b10b37f765814fefaed12"
            },
            "downloads": -1,
            "filename": "python_with_rust-0.1.5-cp310-cp310-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1eaec979d357ea77f4ea755938a81a42",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 278654,
            "upload_time": "2024-10-24T06:31:59",
            "upload_time_iso_8601": "2024-10-24T06:31:59.844583Z",
            "url": "https://files.pythonhosted.org/packages/3d/8c/c12b913510df109ce2e17d85e1959731454db68a04dc0373092460c3e79c/python_with_rust-0.1.5-cp310-cp310-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "34887f63766460f391eeaa7b0481ee93b6fba063013376c86a1a1ecda909fde6",
                "md5": "613e00ad2dede799f028e051e880ad96",
                "sha256": "9503e355c62e7cfba1e11b541443048cad80458f54c4d7c0a713087d6613c5c2"
            },
            "downloads": -1,
            "filename": "python_with_rust-0.1.5-cp310-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "613e00ad2dede799f028e051e880ad96",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 145356,
            "upload_time": "2024-10-24T06:31:55",
            "upload_time_iso_8601": "2024-10-24T06:31:55.948369Z",
            "url": "https://files.pythonhosted.org/packages/34/88/7f63766460f391eeaa7b0481ee93b6fba063013376c86a1a1ecda909fde6/python_with_rust-0.1.5-cp310-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e4c91d7c45675c5b73556ad82b6ac4ee8c991394a12db779fafbffd8c773d8b6",
                "md5": "7890d82bdbe536672fc6ac081fc38519",
                "sha256": "fbf4bfbdff488d3e79708c4391370bde9651bcd3d224725fec0fac9cb3d6a14a"
            },
            "downloads": -1,
            "filename": "python_with_rust-0.1.5-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "7890d82bdbe536672fc6ac081fc38519",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 242518,
            "upload_time": "2024-10-24T06:31:52",
            "upload_time_iso_8601": "2024-10-24T06:31:52.647627Z",
            "url": "https://files.pythonhosted.org/packages/e4/c9/1d7c45675c5b73556ad82b6ac4ee8c991394a12db779fafbffd8c773d8b6/python_with_rust-0.1.5-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6b2434759f0e1bbda315ac548b568e78a6cca58a82975cd8bd51de649f6db2b6",
                "md5": "5bb711765ebb76125efa2bf1dfc66161",
                "sha256": "14dae107501f5ccd33dc4d47998defb76cdee8303d61dcd5216a474e49c1f2f4"
            },
            "downloads": -1,
            "filename": "python_with_rust-0.1.5-cp311-cp311-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5bb711765ebb76125efa2bf1dfc66161",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 278584,
            "upload_time": "2024-10-24T06:31:57",
            "upload_time_iso_8601": "2024-10-24T06:31:57.708484Z",
            "url": "https://files.pythonhosted.org/packages/6b/24/34759f0e1bbda315ac548b568e78a6cca58a82975cd8bd51de649f6db2b6/python_with_rust-0.1.5-cp311-cp311-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "31dff5b531cd6b313df11bd1e8781f2dee21480e77453d7ac350978f0b3f23fb",
                "md5": "562c83812fadc0b4ff30f3fd316046c7",
                "sha256": "38811657c9e9214030ec1bc2c29b7e5faa82bac547214acc257424eb94572c2b"
            },
            "downloads": -1,
            "filename": "python_with_rust-0.1.5-cp311-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "562c83812fadc0b4ff30f3fd316046c7",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 145281,
            "upload_time": "2024-10-24T06:31:55",
            "upload_time_iso_8601": "2024-10-24T06:31:55.470478Z",
            "url": "https://files.pythonhosted.org/packages/31/df/f5b531cd6b313df11bd1e8781f2dee21480e77453d7ac350978f0b3f23fb/python_with_rust-0.1.5-cp311-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5e8bad65ca1c74bfa8733a7f6d5a67449e52244820766b34b87ff9371fc29c14",
                "md5": "a6f0d95dce963e87c7efd2e211c1415d",
                "sha256": "84fa79a95c488677393d29f8a8436fae6a5bc1b857410240143b7b85eb131d1a"
            },
            "downloads": -1,
            "filename": "python_with_rust-0.1.5-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "a6f0d95dce963e87c7efd2e211c1415d",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 241539,
            "upload_time": "2024-10-24T06:31:54",
            "upload_time_iso_8601": "2024-10-24T06:31:54.470746Z",
            "url": "https://files.pythonhosted.org/packages/5e/8b/ad65ca1c74bfa8733a7f6d5a67449e52244820766b34b87ff9371fc29c14/python_with_rust-0.1.5-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5ae2aa6c2a19f1a603f748dbfd9a9c716428f1300a654edda3478b5cca12133d",
                "md5": "65cb0a053a779c5d107befc46e51d219",
                "sha256": "4d4422f40d0d360dcfe4d318d8e45d244e64a528555f478e0ce75f4ae664c49b"
            },
            "downloads": -1,
            "filename": "python_with_rust-0.1.5-cp312-cp312-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "65cb0a053a779c5d107befc46e51d219",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 278353,
            "upload_time": "2024-10-24T06:31:54",
            "upload_time_iso_8601": "2024-10-24T06:31:54.538513Z",
            "url": "https://files.pythonhosted.org/packages/5a/e2/aa6c2a19f1a603f748dbfd9a9c716428f1300a654edda3478b5cca12133d/python_with_rust-0.1.5-cp312-cp312-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "06fd8b984b8924e883227e558aec70ef70b61ef861b6d70ebc352acff0ccffbc",
                "md5": "fb520a0357b7efd90b5194255fafff71",
                "sha256": "8003a19f07030104e1b6e5b3bc742ceecfb0e9ae7777f86e9c7936a6971d464d"
            },
            "downloads": -1,
            "filename": "python_with_rust-0.1.5-cp312-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "fb520a0357b7efd90b5194255fafff71",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 144395,
            "upload_time": "2024-10-24T06:31:54",
            "upload_time_iso_8601": "2024-10-24T06:31:54.890125Z",
            "url": "https://files.pythonhosted.org/packages/06/fd/8b984b8924e883227e558aec70ef70b61ef861b6d70ebc352acff0ccffbc/python_with_rust-0.1.5-cp312-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7b73eb81bbbb3760ea1df5a2b07fda5c0bd34b505e8ff764626502df076334fb",
                "md5": "d09bb6756ff0c35305af4619b7c51321",
                "sha256": "9bee2c20db37f08b14bdbbb32990c03dd2f754a17a288748039ecb17b9f81214"
            },
            "downloads": -1,
            "filename": "python_with_rust-0.1.5-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "d09bb6756ff0c35305af4619b7c51321",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 243341,
            "upload_time": "2024-10-24T06:31:53",
            "upload_time_iso_8601": "2024-10-24T06:31:53.717217Z",
            "url": "https://files.pythonhosted.org/packages/7b/73/eb81bbbb3760ea1df5a2b07fda5c0bd34b505e8ff764626502df076334fb/python_with_rust-0.1.5-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "02209eefd4605cc5e10905f051bbb888b21140f43962c147e80db47a823d8848",
                "md5": "ac044d0850615db5b5617370abf61fb0",
                "sha256": "12461491d81df94137777f952acb5c0da7833562dbbb5defe6a40f35bd6cfc35"
            },
            "downloads": -1,
            "filename": "python_with_rust-0.1.5-cp38-cp38-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ac044d0850615db5b5617370abf61fb0",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 279546,
            "upload_time": "2024-10-24T06:31:58",
            "upload_time_iso_8601": "2024-10-24T06:31:58.547710Z",
            "url": "https://files.pythonhosted.org/packages/02/20/9eefd4605cc5e10905f051bbb888b21140f43962c147e80db47a823d8848/python_with_rust-0.1.5-cp38-cp38-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "10d102989fc5fbbcd0ede1cadbf38c6d15b8a9ab4a65b75ae80054fe073ee1e0",
                "md5": "993893da9df35a36a013356b8cf0852c",
                "sha256": "66bd021f71271e240d0d8bb66a900d10f6e4d169b10db812a2edea1fa21ec1a1"
            },
            "downloads": -1,
            "filename": "python_with_rust-0.1.5-cp38-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "993893da9df35a36a013356b8cf0852c",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 145876,
            "upload_time": "2024-10-24T06:31:54",
            "upload_time_iso_8601": "2024-10-24T06:31:54.169116Z",
            "url": "https://files.pythonhosted.org/packages/10/d1/02989fc5fbbcd0ede1cadbf38c6d15b8a9ab4a65b75ae80054fe073ee1e0/python_with_rust-0.1.5-cp38-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "482270137ddcd1eb9450dbeaf0893ddeb1d636e9bdb0f2705cc06f12b8d9e48b",
                "md5": "8356dcc139ef93c198c462ed60fcb440",
                "sha256": "f85185e39938da357f81cfc42f16dae0674b26f14da58382cc717c7f3048d622"
            },
            "downloads": -1,
            "filename": "python_with_rust-0.1.5-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "8356dcc139ef93c198c462ed60fcb440",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 245002,
            "upload_time": "2024-10-24T06:31:53",
            "upload_time_iso_8601": "2024-10-24T06:31:53.104508Z",
            "url": "https://files.pythonhosted.org/packages/48/22/70137ddcd1eb9450dbeaf0893ddeb1d636e9bdb0f2705cc06f12b8d9e48b/python_with_rust-0.1.5-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "13bd1b5a2df5f79127b3b58ecb27b2d0ab0c3cb8e712707311c3565eba55b6ca",
                "md5": "51e3d727c4ec4d0fa10d97f5c09527a4",
                "sha256": "74a0dbbce65c11871f26e6b7fee9548fa48747cdb72efc03106218338eee49f1"
            },
            "downloads": -1,
            "filename": "python_with_rust-0.1.5-cp39-cp39-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "51e3d727c4ec4d0fa10d97f5c09527a4",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 279739,
            "upload_time": "2024-10-24T06:31:57",
            "upload_time_iso_8601": "2024-10-24T06:31:57.639380Z",
            "url": "https://files.pythonhosted.org/packages/13/bd/1b5a2df5f79127b3b58ecb27b2d0ab0c3cb8e712707311c3565eba55b6ca/python_with_rust-0.1.5-cp39-cp39-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f8fb3fb1c9211b865ebae498b829669c563e36e90050abc7ff7b6e0183b09f7e",
                "md5": "d29dcb8208ed277e56d7146b42fd2de6",
                "sha256": "be5654c58a2b0f493e0e7f032eb09ff5a84009593ea172bafa788a6df3b016ba"
            },
            "downloads": -1,
            "filename": "python_with_rust-0.1.5-cp39-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "d29dcb8208ed277e56d7146b42fd2de6",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 145948,
            "upload_time": "2024-10-24T06:31:56",
            "upload_time_iso_8601": "2024-10-24T06:31:56.675135Z",
            "url": "https://files.pythonhosted.org/packages/f8/fb/3fb1c9211b865ebae498b829669c563e36e90050abc7ff7b6e0183b09f7e/python_with_rust-0.1.5-cp39-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-24 06:31:54",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "python-with-rust"
}
        
Elapsed time: 0.37787s