rnet


Namernet JSON
Version 1.2.1 PyPI version JSON
download
home_pageNone
SummaryAsynchronous Python HTTP Client with Black Magic
upload_time2025-02-26 05:51:38
maintainerNone
docs_urlNone
author0x676e67 <gngppz@gmail.com>
requires_python>=3.7
licenseGPL-3.0
keywords http client websocket ja3 ja4
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # rnet

[![CI](https://github.com/0x676e67/rnet/actions/workflows/ci.yml/badge.svg)](https://github.com/0x676e67/rnet/actions/workflows/ci.yml)
[![PyPI - License](https://img.shields.io/pypi/l/rnet)](https://github.com/0x676e67/rnet/blob/main/LICENSE)
[![PyPI](https://img.shields.io/pypi/v/rnet)](https://pypi.org/project/rnet/)
![Python Version from PEP 621 TOML](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2F0x676e67%2Frnet%2Fmain%2Fpyproject.toml)
[![PyPI Downloads](https://static.pepy.tech/badge/rnet)](https://pepy.tech/projects/rnet)
> 🚀 Help me work seamlessly with open source sharing by [sponsoring me on GitHub](https://github.com/0x676e67/0x676e67/blob/main/SPONSOR.md)

An easy and powerful Python HTTP Client with Black Magic, capable of mimicking `TLS` and `HTTP2` fingerprints of popular browsers like `Chrome`, `Safari`, `Firefox`, and `OkHttp`.

## Features

- Async and Blocking `Client`s
- Plain, JSON, urlencoded, multipart bodies
- Header Order
- Redirect Policy
- Cookie Store
- HTTP Proxies
- WebSocket Upgrade
- HTTPS via BoringSSL
- Async DNS Resolver
- Free-Threaded Safety

## Example

This asynchronous example demonstrates how to make a simple GET request using the `rnet` library. So you need install `rnet` and run the following code:

```bash
pip install asyncio rnet
```

And then the code:

```python
import asyncio
from rnet import Impersonate, Client


async def main():
    client = Client(
        impersonate=Impersonate.Firefox135,
        user_agent="rnet",
    )
    resp = await client.get("https://tls.peet.ws/api/all")
    print("Status Code: ", resp.status_code)
    print("Version: ", resp.version)
    print("Response URL: ", resp.url)
    print("Headers: ", resp.headers)
    print("Encoding: ", resp.encoding)
    print("Content-Length: ", resp.content_length)
    print("Remote Address: ", resp.remote_addr)
    print(await resp.text())


if __name__ == "__main__":
    asyncio.run(main())

```

Additional learning resources include:

- [API Documentation](https://github.com/0x676e67/rnet/blob/main/rnet.pyi)
- [Repository Examples](https://github.com/0x676e67/rnet/tree/main/examples)

## Platforms

1. Linux

- **musl**: `x86_64`, `aarch64`, `armv7`, `i686`
- **glibc >= 2.17**: `x86_64`
- **glibc >= 2.31**: `aarch64`, `armv7`, `i686`

2. macOS: `x86_64`,`aarch64`

3. Windows: `x86_64`,`i686`,`aarch64`

## Building

1. Install environment

```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
pip install maturin
pip install uv

uv venv
source .venv/bin/activate
```

2. Development

```bash
maturin develop --uv
python3 examples/client.py
```

1. Compile wheels

- Local Compilation

Install the BoringSSL build environment by referring to [boring](https://github.com/cloudflare/boring/blob/master/.github/workflows/ci.yml) and [boringssl](https://github.com/google/boringssl/blob/master/BUILDING.md#build-prerequisites).

```bash
maturin build --release
```

- Musllinux

Also install the Docker environment. The image might be outdated, so if building the image yourself is required, refer to [rust-cross-musl](https://github.com/0x676e67/toolchain/blob/master/rust-musl-cross/Dockerfile) and the upstream [rust-cross-musl](https://github.com/rust-cross/rust-musl-cross). The upstream [rust-cross-musl](https://github.com/rust-cross/rust-musl-cross) lacks the relevant platform linker environment variables, which must be added manually.
  
```bash
bash .github/musl_build.sh x86_64-unknown-linux-musl
bash .github/musl_build.sh aarch64-unknown-linux-musl
bash .github/musl_build.sh armv7-unknown-linux-musleabihf
bash .github/musl_build.sh i686-unknown-linux-musl
```

- Manylinux

For Manylinux compilation, refer to [manylinux](https://github.com/PyO3/maturin?tab=readme-ov-file#manylinux-and-auditwheel).

## Impersonate

In fact, most device models share the same `TLS`/`HTTP2` configuration, with the main difference being the `User-Agent`.

| **Browser**   | **Versions**                                                                                     |
|---------------|--------------------------------------------------------------------------------------------------|
| **Chrome**    | `Chrome100`, `Chrome101`, `Chrome104`, `Chrome105`, `Chrome106`, `Chrome107`, `Chrome108`, `Chrome109`, `Chrome114`, `Chrome116`, `Chrome117`, `Chrome118`, `Chrome119`, `Chrome120`, `Chrome123`, `Chrome124`, `Chrome126`, `Chrome127`, `Chrome128`, `Chrome129`, `Chrome130`, `Chrome131`, `Chrome133` |
| **Edge**      | `Edge101`, `Edge122`, `Edge127`, `Edge131`                                                       |
| **Safari**    | `SafariIos17_2`, `SafariIos17_4_1`, `SafariIos16_5`, `Safari15_3`, `Safari15_5`, `Safari15_6_1`, `Safari16`, `Safari16_5`, `Safari17_0`, `Safari17_2_1`, `Safari17_4_1`, `Safari17_5`, `Safari18`, `SafariIPad18`, `Safari18_2`, `Safari18_1_1` |
| **OkHttp**    | `OkHttp3_9`, `OkHttp3_11`, `OkHttp3_13`, `OkHttp3_14`, `OkHttp4_9`, `OkHttp4_10`, `OkHttp5`         |
| **Firefox**   | `Firefox109`, `Firefox117`, `Firefox128`, `Firefox133`, `Firefox135`, `FirefoxPrivate135`, `FirefoxAndroid135` |

## Documentation

The python documentation is automatically supported by [pyo3-stub-gen](https://github.com/Jij-Inc/pyo3-stub-gen). It is not perfect. If you have any suggestions, you can submit a PR to improve it.

## Contributing

If you would like to submit your contribution, please open a [Pull Request](https://github.com/0x676e67/rnet/pulls).

## Getting help

Your question might already be answered on the [issues](https://github.com/0x676e67/rnet/issues)

## License

**rnet** © [0x676e67](https://github.com/0x676e67), Released under the [GPL-3.0](https://github.com/0x676e67/rnet/blob/main/LICENSE) License.


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "rnet",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "http, client, websocket, ja3, ja4",
    "author": "0x676e67 <gngppz@gmail.com>",
    "author_email": "0x676e67 <gngppz@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/57/4a/b89705569ea49f285551555568d0973bbeb985f6033d5c94ec3a89ecf029/rnet-1.2.1.tar.gz",
    "platform": null,
    "description": "# rnet\n\n[![CI](https://github.com/0x676e67/rnet/actions/workflows/ci.yml/badge.svg)](https://github.com/0x676e67/rnet/actions/workflows/ci.yml)\n[![PyPI - License](https://img.shields.io/pypi/l/rnet)](https://github.com/0x676e67/rnet/blob/main/LICENSE)\n[![PyPI](https://img.shields.io/pypi/v/rnet)](https://pypi.org/project/rnet/)\n![Python Version from PEP 621 TOML](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2F0x676e67%2Frnet%2Fmain%2Fpyproject.toml)\n[![PyPI Downloads](https://static.pepy.tech/badge/rnet)](https://pepy.tech/projects/rnet)\n> \ud83d\ude80 Help me work seamlessly with open source sharing by [sponsoring me on GitHub](https://github.com/0x676e67/0x676e67/blob/main/SPONSOR.md)\n\nAn easy and powerful Python HTTP Client with Black Magic, capable of mimicking `TLS` and `HTTP2` fingerprints of popular browsers like `Chrome`, `Safari`, `Firefox`, and `OkHttp`.\n\n## Features\n\n- Async and Blocking `Client`s\n- Plain, JSON, urlencoded, multipart bodies\n- Header Order\n- Redirect Policy\n- Cookie Store\n- HTTP Proxies\n- WebSocket Upgrade\n- HTTPS via BoringSSL\n- Async DNS Resolver\n- Free-Threaded Safety\n\n## Example\n\nThis asynchronous example demonstrates how to make a simple GET request using the `rnet` library. So you need install `rnet` and run the following code:\n\n```bash\npip install asyncio rnet\n```\n\nAnd then the code:\n\n```python\nimport asyncio\nfrom rnet import Impersonate, Client\n\n\nasync def main():\n    client = Client(\n        impersonate=Impersonate.Firefox135,\n        user_agent=\"rnet\",\n    )\n    resp = await client.get(\"https://tls.peet.ws/api/all\")\n    print(\"Status Code: \", resp.status_code)\n    print(\"Version: \", resp.version)\n    print(\"Response URL: \", resp.url)\n    print(\"Headers: \", resp.headers)\n    print(\"Encoding: \", resp.encoding)\n    print(\"Content-Length: \", resp.content_length)\n    print(\"Remote Address: \", resp.remote_addr)\n    print(await resp.text())\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n\n```\n\nAdditional learning resources include:\n\n- [API Documentation](https://github.com/0x676e67/rnet/blob/main/rnet.pyi)\n- [Repository Examples](https://github.com/0x676e67/rnet/tree/main/examples)\n\n## Platforms\n\n1. Linux\n\n- **musl**: `x86_64`, `aarch64`, `armv7`, `i686`\n- **glibc >= 2.17**: `x86_64`\n- **glibc >= 2.31**: `aarch64`, `armv7`, `i686`\n\n2. macOS: `x86_64`,`aarch64`\n\n3. Windows: `x86_64`,`i686`,`aarch64`\n\n## Building\n\n1. Install environment\n\n```bash\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\npip install maturin\npip install uv\n\nuv venv\nsource .venv/bin/activate\n```\n\n2. Development\n\n```bash\nmaturin develop --uv\npython3 examples/client.py\n```\n\n1. Compile wheels\n\n- Local Compilation\n\nInstall the BoringSSL build environment by referring to [boring](https://github.com/cloudflare/boring/blob/master/.github/workflows/ci.yml) and [boringssl](https://github.com/google/boringssl/blob/master/BUILDING.md#build-prerequisites).\n\n```bash\nmaturin build --release\n```\n\n- Musllinux\n\nAlso install the Docker environment. The image might be outdated, so if building the image yourself is required, refer to [rust-cross-musl](https://github.com/0x676e67/toolchain/blob/master/rust-musl-cross/Dockerfile) and the upstream [rust-cross-musl](https://github.com/rust-cross/rust-musl-cross). The upstream [rust-cross-musl](https://github.com/rust-cross/rust-musl-cross) lacks the relevant platform linker environment variables, which must be added manually.\n  \n```bash\nbash .github/musl_build.sh x86_64-unknown-linux-musl\nbash .github/musl_build.sh aarch64-unknown-linux-musl\nbash .github/musl_build.sh armv7-unknown-linux-musleabihf\nbash .github/musl_build.sh i686-unknown-linux-musl\n```\n\n- Manylinux\n\nFor Manylinux compilation, refer to [manylinux](https://github.com/PyO3/maturin?tab=readme-ov-file#manylinux-and-auditwheel).\n\n## Impersonate\n\nIn fact, most device models share the same `TLS`/`HTTP2` configuration, with the main difference being the `User-Agent`.\n\n| **Browser**   | **Versions**                                                                                     |\n|---------------|--------------------------------------------------------------------------------------------------|\n| **Chrome**    | `Chrome100`, `Chrome101`, `Chrome104`, `Chrome105`, `Chrome106`, `Chrome107`, `Chrome108`, `Chrome109`, `Chrome114`, `Chrome116`, `Chrome117`, `Chrome118`, `Chrome119`, `Chrome120`, `Chrome123`, `Chrome124`, `Chrome126`, `Chrome127`, `Chrome128`, `Chrome129`, `Chrome130`, `Chrome131`, `Chrome133` |\n| **Edge**      | `Edge101`, `Edge122`, `Edge127`, `Edge131`                                                       |\n| **Safari**    | `SafariIos17_2`, `SafariIos17_4_1`, `SafariIos16_5`, `Safari15_3`, `Safari15_5`, `Safari15_6_1`, `Safari16`, `Safari16_5`, `Safari17_0`, `Safari17_2_1`, `Safari17_4_1`, `Safari17_5`, `Safari18`, `SafariIPad18`, `Safari18_2`, `Safari18_1_1` |\n| **OkHttp**    | `OkHttp3_9`, `OkHttp3_11`, `OkHttp3_13`, `OkHttp3_14`, `OkHttp4_9`, `OkHttp4_10`, `OkHttp5`         |\n| **Firefox**   | `Firefox109`, `Firefox117`, `Firefox128`, `Firefox133`, `Firefox135`, `FirefoxPrivate135`, `FirefoxAndroid135` |\n\n## Documentation\n\nThe python documentation is automatically supported by [pyo3-stub-gen](https://github.com/Jij-Inc/pyo3-stub-gen). It is not perfect. If you have any suggestions, you can submit a PR to improve it.\n\n## Contributing\n\nIf you would like to submit your contribution, please open a [Pull Request](https://github.com/0x676e67/rnet/pulls).\n\n## Getting help\n\nYour question might already be answered on the [issues](https://github.com/0x676e67/rnet/issues)\n\n## License\n\n**rnet** \u00a9 [0x676e67](https://github.com/0x676e67), Released under the [GPL-3.0](https://github.com/0x676e67/rnet/blob/main/LICENSE) License.\n\n",
    "bugtrack_url": null,
    "license": "GPL-3.0",
    "summary": "Asynchronous Python HTTP Client with Black Magic",
    "version": "1.2.1",
    "project_urls": {
        "Documentation": "https://github.com/0x676e67/rnet/blob/main/rnet.pyi",
        "Homepage": "https://github.com/0x676e67/rnet",
        "Repository": "https://github.com/0x676e67/rnet"
    },
    "split_keywords": [
        "http",
        " client",
        " websocket",
        " ja3",
        " ja4"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d627aac94793cbaba271b60f67a86855af39d6c492e6c62168b43e24149dca9c",
                "md5": "7a62f91849268d58544efa0fb3aed4fa",
                "sha256": "3518120b2eee23b61d0d6a14215b9a09fff680bc5399f693a74df9ae16012419"
            },
            "downloads": -1,
            "filename": "rnet-1.2.1-cp37-abi3-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7a62f91849268d58544efa0fb3aed4fa",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 3555507,
            "upload_time": "2025-02-26T05:51:26",
            "upload_time_iso_8601": "2025-02-26T05:51:26.626767Z",
            "url": "https://files.pythonhosted.org/packages/d6/27/aac94793cbaba271b60f67a86855af39d6c492e6c62168b43e24149dca9c/rnet-1.2.1-cp37-abi3-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f39b5c4d86cbd59dbb63868e76cad8cdaec2985b8d44c1ac6d0a2c160bfe1e55",
                "md5": "7dffd3e8345b4199b0fb0952438727ff",
                "sha256": "7b6b1f0ba45a4374abc041532c857c401762f104a5f58afe7b1d102c726f439d"
            },
            "downloads": -1,
            "filename": "rnet-1.2.1-cp37-abi3-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "7dffd3e8345b4199b0fb0952438727ff",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 3273794,
            "upload_time": "2025-02-26T05:51:24",
            "upload_time_iso_8601": "2025-02-26T05:51:24.731176Z",
            "url": "https://files.pythonhosted.org/packages/f3/9b/5c4d86cbd59dbb63868e76cad8cdaec2985b8d44c1ac6d0a2c160bfe1e55/rnet-1.2.1-cp37-abi3-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "60a3664cdbffefe67482f60460b6bd82dba0f1419fcb39200fad98d250911eb8",
                "md5": "2ef34a13dc5e0e0328ad35469eb7f62b",
                "sha256": "7d9ba3f5dc56952dc4ce94d6572dfeb89a95bdf838f7e5693a1dc96c910bd4c7"
            },
            "downloads": -1,
            "filename": "rnet-1.2.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2ef34a13dc5e0e0328ad35469eb7f62b",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 3636636,
            "upload_time": "2025-02-26T05:51:21",
            "upload_time_iso_8601": "2025-02-26T05:51:21.752947Z",
            "url": "https://files.pythonhosted.org/packages/60/a3/664cdbffefe67482f60460b6bd82dba0f1419fcb39200fad98d250911eb8/rnet-1.2.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "14211f77afc71b34f5aa96b6921f2e076b00e0ea3149ad749e594b90ea4917cd",
                "md5": "84e84862df94f3aab5379aa1cd109953",
                "sha256": "d9b2f2ecae13df1212909676a2ec475a3561546786a018ffad825018933708f7"
            },
            "downloads": -1,
            "filename": "rnet-1.2.1-cp37-abi3-manylinux_2_31_aarch64.whl",
            "has_sig": false,
            "md5_digest": "84e84862df94f3aab5379aa1cd109953",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 3665533,
            "upload_time": "2025-02-26T05:42:28",
            "upload_time_iso_8601": "2025-02-26T05:42:28.702899Z",
            "url": "https://files.pythonhosted.org/packages/14/21/1f77afc71b34f5aa96b6921f2e076b00e0ea3149ad749e594b90ea4917cd/rnet-1.2.1-cp37-abi3-manylinux_2_31_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "236fa20d7e1cba4524f6b8e566720d31689e452c411e6b6703887b0fdd3cc746",
                "md5": "b20e6fcdd536ab3eacdd2d082cb507ab",
                "sha256": "6c2667fa026106888ffd47632d28ac6050acc4dbef2bf3edec963f5dbae78513"
            },
            "downloads": -1,
            "filename": "rnet-1.2.1-cp37-abi3-manylinux_2_31_armv7l.whl",
            "has_sig": false,
            "md5_digest": "b20e6fcdd536ab3eacdd2d082cb507ab",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 3462182,
            "upload_time": "2025-02-26T05:51:17",
            "upload_time_iso_8601": "2025-02-26T05:51:17.035868Z",
            "url": "https://files.pythonhosted.org/packages/23/6f/a20d7e1cba4524f6b8e566720d31689e452c411e6b6703887b0fdd3cc746/rnet-1.2.1-cp37-abi3-manylinux_2_31_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e6d2e1dc1bf7a1ef59d89366cb85cae64b5b7aa8f30a0561a1648a0af43affce",
                "md5": "86a955bbd5d61ffe437ea9ef58c254d3",
                "sha256": "2e2a5fcf5a4d35893aff6e673d116f1747d49914f8b578cb2977cfaf3174a528"
            },
            "downloads": -1,
            "filename": "rnet-1.2.1-cp37-abi3-manylinux_2_31_i686.whl",
            "has_sig": false,
            "md5_digest": "86a955bbd5d61ffe437ea9ef58c254d3",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 3764281,
            "upload_time": "2025-02-26T05:51:19",
            "upload_time_iso_8601": "2025-02-26T05:51:19.427191Z",
            "url": "https://files.pythonhosted.org/packages/e6/d2/e1dc1bf7a1ef59d89366cb85cae64b5b7aa8f30a0561a1648a0af43affce/rnet-1.2.1-cp37-abi3-manylinux_2_31_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "767c59440fec83978ab3b76023d062e11c573ee31e2d5bb2525e9965387663d6",
                "md5": "c9bf93d3a4a6b8f19973afcae224e633",
                "sha256": "4070839fee40ada8c383dc1bd429796776d1ade99a0cbd1416cdc0756d687d68"
            },
            "downloads": -1,
            "filename": "rnet-1.2.1-cp37-abi3-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "c9bf93d3a4a6b8f19973afcae224e633",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 3811154,
            "upload_time": "2025-02-26T05:51:29",
            "upload_time_iso_8601": "2025-02-26T05:51:29.137085Z",
            "url": "https://files.pythonhosted.org/packages/76/7c/59440fec83978ab3b76023d062e11c573ee31e2d5bb2525e9965387663d6/rnet-1.2.1-cp37-abi3-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "803166a4adc5de0f5e503f20ebc1e1969fa1251fb277b27cea16d2754c8be980",
                "md5": "5c46fe3f0340f53552c1c1084af90394",
                "sha256": "b08176e27819abd47c1d535dbe29e1607ff85cc47bddab49bdaea68d909cce2f"
            },
            "downloads": -1,
            "filename": "rnet-1.2.1-cp37-abi3-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "5c46fe3f0340f53552c1c1084af90394",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 3746949,
            "upload_time": "2025-02-26T05:51:31",
            "upload_time_iso_8601": "2025-02-26T05:51:31.605857Z",
            "url": "https://files.pythonhosted.org/packages/80/31/66a4adc5de0f5e503f20ebc1e1969fa1251fb277b27cea16d2754c8be980/rnet-1.2.1-cp37-abi3-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0b10c13baf5a08e4da644499ba87f470364f70fe68e50769fe08812d6eb5abe6",
                "md5": "34fe022531bf2d0cbb144d2cccd94f4d",
                "sha256": "65bc19853d44b330393d00230aef0c2d595b8c197fc729c597445ea107602cbe"
            },
            "downloads": -1,
            "filename": "rnet-1.2.1-cp37-abi3-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "34fe022531bf2d0cbb144d2cccd94f4d",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 3848810,
            "upload_time": "2025-02-26T05:51:33",
            "upload_time_iso_8601": "2025-02-26T05:51:33.904675Z",
            "url": "https://files.pythonhosted.org/packages/0b/10/c13baf5a08e4da644499ba87f470364f70fe68e50769fe08812d6eb5abe6/rnet-1.2.1-cp37-abi3-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "75b948200ca056a1a53c67bb07d733c44707ddaf5aed06ca9187248aafdf1b17",
                "md5": "780384eee81d8bf7824b24ee61cb447c",
                "sha256": "b676013c4d85ef752049b630a9a10ccdb251517f0b6695bd059987e8bb1b0d9e"
            },
            "downloads": -1,
            "filename": "rnet-1.2.1-cp37-abi3-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "780384eee81d8bf7824b24ee61cb447c",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 4020857,
            "upload_time": "2025-02-26T05:51:36",
            "upload_time_iso_8601": "2025-02-26T05:51:36.554599Z",
            "url": "https://files.pythonhosted.org/packages/75/b9/48200ca056a1a53c67bb07d733c44707ddaf5aed06ca9187248aafdf1b17/rnet-1.2.1-cp37-abi3-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6a5e62ce65ac2295fcc975c6968d56dd0e8850d13215022b093ad1e1e6f0faa9",
                "md5": "a89a1a8df7f7fce3990410ada5067ce2",
                "sha256": "e96895aa9a08809aaa2f0fbe2243664953fcb13b888e247a25f91f97e6867b4f"
            },
            "downloads": -1,
            "filename": "rnet-1.2.1-cp37-abi3-win32.whl",
            "has_sig": false,
            "md5_digest": "a89a1a8df7f7fce3990410ada5067ce2",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 3076287,
            "upload_time": "2025-02-26T05:51:44",
            "upload_time_iso_8601": "2025-02-26T05:51:44.304289Z",
            "url": "https://files.pythonhosted.org/packages/6a/5e/62ce65ac2295fcc975c6968d56dd0e8850d13215022b093ad1e1e6f0faa9/rnet-1.2.1-cp37-abi3-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e684512e2846960ff376fa1778b43a81f568a64d93aac1481d1be5eb5055217e",
                "md5": "6caff13421d030c0618b4f6941cfbad4",
                "sha256": "0a568073831e8a3d4fa195f49308617a333ecf47b29e8a432df9f193bbfbde1f"
            },
            "downloads": -1,
            "filename": "rnet-1.2.1-cp37-abi3-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "6caff13421d030c0618b4f6941cfbad4",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 3411626,
            "upload_time": "2025-02-26T05:51:42",
            "upload_time_iso_8601": "2025-02-26T05:51:42.521961Z",
            "url": "https://files.pythonhosted.org/packages/e6/84/512e2846960ff376fa1778b43a81f568a64d93aac1481d1be5eb5055217e/rnet-1.2.1-cp37-abi3-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "beb95ae34c34afd9c0d2ca50bfafe72e780f7ceb7b51458c793101331a21a2e5",
                "md5": "73f7512fa23363a133153a15bda64bf0",
                "sha256": "a01fb40420191d29e664fd6053b7ededb879ef14be4a3e518137d13c6c71a96b"
            },
            "downloads": -1,
            "filename": "rnet-1.2.1-cp37-abi3-win_arm64.whl",
            "has_sig": false,
            "md5_digest": "73f7512fa23363a133153a15bda64bf0",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 3059738,
            "upload_time": "2025-02-26T05:51:39",
            "upload_time_iso_8601": "2025-02-26T05:51:39.895329Z",
            "url": "https://files.pythonhosted.org/packages/be/b9/5ae34c34afd9c0d2ca50bfafe72e780f7ceb7b51458c793101331a21a2e5/rnet-1.2.1-cp37-abi3-win_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "574ab89705569ea49f285551555568d0973bbeb985f6033d5c94ec3a89ecf029",
                "md5": "05278bdc3ae38aa15683569147c4d752",
                "sha256": "e6d80a249f88be7d09175d7e846c1efa1cffbc526c7e7838c0722e01b77f6545"
            },
            "downloads": -1,
            "filename": "rnet-1.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "05278bdc3ae38aa15683569147c4d752",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 73298,
            "upload_time": "2025-02-26T05:51:38",
            "upload_time_iso_8601": "2025-02-26T05:51:38.657501Z",
            "url": "https://files.pythonhosted.org/packages/57/4a/b89705569ea49f285551555568d0973bbeb985f6033d5c94ec3a89ecf029/rnet-1.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-26 05:51:38",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "0x676e67",
    "github_project": "rnet",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "rnet"
}
        
Elapsed time: 0.99274s