rnet 3.0.0rc3__cp311-abi3-manylinux_2_34_aarch64.whl → 3.0.0rc5__cp311-abi3-manylinux_2_34_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of rnet might be problematic. Click here for more details.

rnet/cookie.py CHANGED
@@ -10,6 +10,8 @@ import datetime
10
10
  from enum import Enum, auto
11
11
  from typing import List, Optional
12
12
 
13
+ __all__ = ["SameSite", "Cookie", "Jar"]
14
+
13
15
 
14
16
  class SameSite(Enum):
15
17
  r"""
@@ -68,20 +70,21 @@ class Cookie:
68
70
  """
69
71
 
70
72
  def __init__(
71
- cls,
73
+ self,
72
74
  name: str,
73
75
  value: str,
74
76
  domain: str | None = None,
75
77
  path: str | None = None,
76
78
  max_age: datetime.timedelta | None = None,
77
79
  expires: datetime.datetime | None = None,
78
- http_only: bool = False,
79
- secure: bool = False,
80
+ http_only: bool | None = None,
81
+ secure: bool | None = None,
80
82
  same_site: SameSite | None = None,
81
- ) -> "Cookie":
83
+ ) -> None:
82
84
  r"""
83
85
  Create a new cookie.
84
86
  """
87
+ ...
85
88
 
86
89
  def __str__(self) -> str: ...
87
90
 
@@ -94,37 +97,44 @@ class Jar:
94
97
  to automatically handle cookies during HTTP requests and responses.
95
98
  """
96
99
 
97
- def __init__(cls) -> "Jar":
100
+ def __init__(self) -> None:
98
101
  r"""
99
102
  Create a new cookie jar.
100
103
  """
104
+ ...
101
105
 
102
106
  def get(self, name: str, url: str) -> Optional[Cookie]:
103
107
  r"""
104
108
  Get a cookie by name and URL.
105
109
  """
110
+ ...
106
111
 
107
112
  def get_all(self) -> List[Cookie]:
108
113
  r"""
109
114
  Get all cookies.
110
115
  """
116
+ ...
111
117
 
112
118
  def add_cookie(self, cookie: Cookie, url: str) -> None:
113
119
  r"""
114
120
  Add a cookie to this jar.
115
121
  """
122
+ ...
116
123
 
117
124
  def add_cookie_str(self, cookie: str, url: str) -> None:
118
125
  r"""
119
126
  Add a cookie str to this jar.
120
127
  """
128
+ ...
121
129
 
122
130
  def remove(self, name: str, url: str) -> None:
123
131
  r"""
124
132
  Remove a cookie from this jar by name and URL.
125
133
  """
134
+ ...
126
135
 
127
136
  def clear(self) -> None:
128
137
  r"""
129
138
  Clear all cookies in this jar.
130
139
  """
140
+ ...
rnet/emulation.py CHANGED
@@ -12,6 +12,8 @@ authentic and less likely to be blocked by anti-bot systems.
12
12
 
13
13
  from enum import Enum, auto
14
14
 
15
+ __all__ = ["Emulation", "EmulationOS", "EmulationOption"]
16
+
15
17
 
16
18
  class Emulation(Enum):
17
19
  r"""
@@ -131,12 +133,12 @@ class EmulationOption:
131
133
  """
132
134
 
133
135
  def __init__(
134
- cls,
136
+ self,
135
137
  emulation: Emulation,
136
138
  emulation_os: EmulationOS | None = None,
137
139
  skip_http2: bool | None = None,
138
140
  skip_headers: bool | None = None,
139
- ) -> "EmulationOption":
141
+ ) -> None:
140
142
  """
141
143
  Create a new emulation configuration.
142
144
 
@@ -162,6 +164,7 @@ class EmulationOption:
162
164
  )
163
165
  ```
164
166
  """
167
+ ...
165
168
 
166
169
  @staticmethod
167
170
  def random() -> "EmulationOption":
@@ -182,3 +185,4 @@ class EmulationOption:
182
185
  client2 = rnet.Client(emulation=EmulationOption.random())
183
186
  ```
184
187
  """
188
+ ...
rnet/exceptions.py CHANGED
@@ -6,6 +6,23 @@ The exceptions are organized into logical categories based on their cause and
6
6
  severity, making it easier to handle specific types of errors appropriately.
7
7
  """
8
8
 
9
+ __all__ = [
10
+ "DNSResolverError",
11
+ "TlsError",
12
+ "ConnectionError",
13
+ "ConnectionResetError",
14
+ "BodyError",
15
+ "BuilderError",
16
+ "DecodingError",
17
+ "StatusError",
18
+ "RequestError",
19
+ "RedirectError",
20
+ "UpgradeError",
21
+ "WebSocketError",
22
+ "URLParseError",
23
+ "TimeoutError",
24
+ ]
25
+
9
26
  # ========================================
10
27
  # Network and System-Level Errors
11
28
  # ========================================
@@ -181,19 +198,6 @@ class URLParseError(Exception):
181
198
  """
182
199
 
183
200
 
184
- class MIMEParseError(Exception):
185
- r"""
186
- An error occurred while parsing a MIME type.
187
-
188
- This exception covers failures in parsing or processing
189
- MIME types and related content type information, such as:
190
- - Invalid MIME type format
191
- - Unsupported content types
192
- - Malformed content-type headers
193
- - Character set parsing issues
194
- """
195
-
196
-
197
201
  # ========================================
198
202
  # Timeout Errors
199
203
  # ========================================
rnet/header.py CHANGED
@@ -11,7 +11,9 @@ including proper support for headers that can have multiple values (like
11
11
  Set-Cookie, Accept-Encoding, etc.).
12
12
  """
13
13
 
14
- from typing import Iterator, List, Optional, Tuple
14
+ from typing import Dict, Iterator, List, Optional, Tuple
15
+
16
+ __all__ = ["HeaderMap", "OrigHeaderMap"]
15
17
 
16
18
 
17
19
  class HeaderMap:
@@ -56,8 +58,8 @@ class HeaderMap:
56
58
  ...
57
59
 
58
60
  def __init__(
59
- cls, init: Optional[dict] = None, capacity: Optional[int] = None
60
- ) -> "HeaderMap":
61
+ self, init: Dict[str, str] | None = None, capacity: int | None = None
62
+ ) -> None:
61
63
  """
62
64
  Create a new HeaderMap.
63
65
 
@@ -97,6 +99,7 @@ class HeaderMap:
97
99
  Returns:
98
100
  True if the header exists, False otherwise
99
101
  """
102
+ ...
100
103
 
101
104
  def insert(self, key: str, value: str) -> None:
102
105
  r"""
@@ -109,6 +112,7 @@ class HeaderMap:
109
112
  key: The header name (case-insensitive)
110
113
  value: The header value to set
111
114
  """
115
+ ...
112
116
 
113
117
  def append(self, key: str, value: str) -> None:
114
118
  r"""
@@ -122,6 +126,7 @@ class HeaderMap:
122
126
  key: The header name (case-insensitive)
123
127
  value: The header value to append
124
128
  """
129
+ ...
125
130
 
126
131
  def remove(self, key: str) -> None:
127
132
  r"""
@@ -133,6 +138,7 @@ class HeaderMap:
133
138
  Args:
134
139
  key: The header name to remove (case-insensitive)
135
140
  """
141
+ ...
136
142
 
137
143
  def get(self, key: str, default: Optional[bytes] = None) -> Optional[bytes]:
138
144
  r"""
@@ -149,6 +155,7 @@ class HeaderMap:
149
155
  Returns:
150
156
  The first header value as bytes, or the default value
151
157
  """
158
+ ...
152
159
 
153
160
  def get_all(self, key: str) -> Iterator[bytes]:
154
161
  r"""
@@ -164,6 +171,7 @@ class HeaderMap:
164
171
  Returns:
165
172
  An iterator over all header values
166
173
  """
174
+ ...
167
175
 
168
176
  def values(self) -> Iterator[bytes]:
169
177
  """
@@ -172,6 +180,7 @@ class HeaderMap:
172
180
  Returns:
173
181
  An iterator over all header values as bytes.
174
182
  """
183
+ ...
175
184
 
176
185
  def keys(self) -> Iterator[bytes]:
177
186
  """
@@ -180,6 +189,7 @@ class HeaderMap:
180
189
  Returns:
181
190
  An iterator over unique header names as bytes.
182
191
  """
192
+ ...
183
193
 
184
194
  def len(self) -> int:
185
195
  """
@@ -192,6 +202,7 @@ class HeaderMap:
192
202
  Returns:
193
203
  Total number of header values stored
194
204
  """
205
+ ...
195
206
 
196
207
  def keys_len(self) -> int:
197
208
  """
@@ -203,6 +214,7 @@ class HeaderMap:
203
214
  Returns:
204
215
  Number of unique header names
205
216
  """
217
+ ...
206
218
 
207
219
  def is_empty(self) -> bool:
208
220
  """
@@ -211,6 +223,7 @@ class HeaderMap:
211
223
  Returns:
212
224
  True if no headers are stored, False otherwise
213
225
  """
226
+ ...
214
227
 
215
228
  def clear(self) -> None:
216
229
  """
@@ -219,6 +232,7 @@ class HeaderMap:
219
232
  After calling this method, the header map will be empty and
220
233
  is_empty() will return True.
221
234
  """
235
+ ...
222
236
 
223
237
 
224
238
  class OrigHeaderMap:
rnet/rnet.abi3.so CHANGED
Binary file
rnet/tls.py CHANGED
@@ -10,6 +10,8 @@ from enum import Enum, auto
10
10
  from pathlib import Path
11
11
  from typing import List
12
12
 
13
+ __all__ = ["TlsVersion", "Identity", "CertStore", "KeyLogPolicy"]
14
+
13
15
 
14
16
  class TlsVersion(Enum):
15
17
  r"""
@@ -44,7 +46,7 @@ class Identity:
44
46
  ...
45
47
 
46
48
  @staticmethod
47
- def from_pkcs8_pem(buf: bytes, key: bytes) -> "CertStore":
49
+ def from_pkcs8_pem(buf: bytes, key: bytes) -> "Identity":
48
50
  """
49
51
  Parses a chain of PEM encoded X509 certificates, with the leaf certificate first.
50
52
  `key` is a PEM encoded PKCS #8 formatted private key for the leaf certificate.
@@ -63,11 +65,11 @@ class CertStore:
63
65
  """
64
66
 
65
67
  def __init__(
66
- cls,
68
+ self,
67
69
  der_certs: List[bytes] | None = None,
68
70
  pem_certs: List[str] | None = None,
69
71
  default_paths: bool | None = None,
70
- ) -> "CertStore":
72
+ ) -> None:
71
73
  """
72
74
  Creates a new CertStore.
73
75
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rnet
3
- Version: 3.0.0rc3
3
+ Version: 3.0.0rc5
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -19,7 +19,7 @@ License-File: LICENSE
19
19
  Summary: A blazing-fast Python HTTP client with TLS fingerprint
20
20
  Keywords: http,client,websocket,ja3,ja4
21
21
  Author-email: 0x676e67 <gngppz@gmail.com>
22
- License: GPL-3.0
22
+ License: Apache-2.0
23
23
  Requires-Python: >=3.11
24
24
  Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
25
25
  Project-URL: Documentation, https://github.com/0x676e67/rnet/blob/main/rnet.pyi
@@ -36,7 +36,7 @@ Project-URL: Repository, https://github.com/0x676e67/rnet
36
36
 
37
37
  > 🚀 Help me work seamlessly with open source sharing by [sponsoring me on GitHub](https://github.com/0x676e67/0x676e67/blob/main/SPONSOR.md)
38
38
 
39
- A blazing-fast Python HTTP client with advanced browser fingerprinting that accurately emulates **Chrome**, **Firefox**, **Safari**, **Opera**, and **OkHttp**, with precise **TLS/HTTP2** signatures, and powered by [wreq](https://github.com/0x676e67/wreq) for high performance.
39
+ A blazing-fast Python HTTP client with advanced browser fingerprinting that accurately emulates **Chrome**, **Firefox**, **Safari**, **Opera**, and **OkHttp**, with precise TLS and HTTP2 signatures, and powered by [wreq](https://github.com/0x676e67/wreq) for high performance.
40
40
 
41
41
  ## Features
42
42
 
@@ -57,10 +57,10 @@ A blazing-fast Python HTTP client with advanced browser fingerprinting that accu
57
57
 
58
58
  ## Example
59
59
 
60
- 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:
60
+ The following example uses the `asyncio` runtime with `rnet` installed via pip:
61
61
 
62
62
  ```bash
63
- pip install asyncio rnet==3.0.0rc3
63
+ pip install asyncio rnet==3.0.0rc5
64
64
  ```
65
65
 
66
66
  And then the code:
@@ -93,6 +93,31 @@ Additional learning resources include:
93
93
  - [Repository Tests](https://github.com/0x676e67/rnet/tree/main/tests)
94
94
  - [Synchronous Examples](https://github.com/0x676e67/rnet/tree/main/python/examples/blocking)
95
95
  - [Asynchronous Examples](https://github.com/0x676e67/rnet/tree/main/python/examples)
96
+ - <details>
97
+ <summary>Available OS emulations</summary>
98
+
99
+ | **OS** | **Description** |
100
+ | ----------- | ------------------------------ |
101
+ | **Windows** | Windows (any version) |
102
+ | **MacOS** | macOS (any version) |
103
+ | **Linux** | Linux (any distribution) |
104
+ | **Android** | Android (mobile) |
105
+ | **iOS** | iOS (iPhone/iPad) |
106
+
107
+ </details>
108
+ - <details>
109
+ <summary>Available browser emulations</summary>
110
+
111
+ | **Browser** | **Versions** |
112
+ | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
113
+ | **Chrome** | `Chrome100`, `Chrome101`, `Chrome104`, `Chrome105`, `Chrome106`, `Chrome107`, `Chrome108`, `Chrome109`, `Chrome110`, `Chrome114`, `Chrome116`, `Chrome117`, `Chrome118`, `Chrome119`, `Chrome120`, `Chrome123`, `Chrome124`, `Chrome126`, `Chrome127`, `Chrome128`, `Chrome129`, `Chrome130`, `Chrome131`, `Chrome132`, `Chrome133`, `Chrome134`, `Chrome135`, `Chrome136`, `Chrome137` |
114
+ | **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`, `SafariIos18_1_1`, `Safari18_3`, `Safari18_3_1`, `Safari18_5` |
115
+ | **Firefox** | `Firefox109`, `Firefox117`, `Firefox128`, `Firefox133`, `Firefox135`, `FirefoxPrivate135`, `FirefoxAndroid135`, `Firefox136`, `FirefoxPrivate136`, `Firefox139` |
116
+ | **OkHttp** | `OkHttp3_9`, `OkHttp3_11`, `OkHttp3_13`, `OkHttp3_14`, `OkHttp4_9`, `OkHttp4_10`, `OkHttp4_12`, `OkHttp5` |
117
+ | **Edge** | `Edge101`, `Edge122`, `Edge127`, `Edge131`, `Edge134` |
118
+ | **Opera** | `Opera116`, `Opera117`, `Opera118`, `Opera119` |
119
+
120
+ </details>
96
121
 
97
122
  ## Platforms
98
123
 
@@ -107,48 +132,39 @@ Additional learning resources include:
107
132
 
108
133
  ## Building
109
134
 
110
- 1. Install environment
135
+ 1. Development
136
+
137
+ 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).
111
138
 
112
139
  ```bash
140
+ # on ubuntu or debian
141
+ sudo apt install -y build-essential cmake perl pkg-config libclang-dev musl-tools git
113
142
  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
114
- pip install maturin
115
- pip install uv
143
+ pip install uv maturin
116
144
 
117
145
  uv venv
118
146
  source .venv/bin/activate
119
- ```
120
-
121
- 2. Development
122
147
 
123
- ```bash
124
- # build and install the package
148
+ # Development
125
149
  maturin develop --uv
126
- python3 examples/client.py
127
- ```
128
-
129
- 3. Compile wheels
130
150
 
131
- 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).
132
-
133
- ```bash
134
- # on ubuntu or debian
135
- sudo apt-get install build-essential cmake perl pkg-config libclang-dev musl-tools git -y
151
+ # Build wheels
136
152
  maturin build --release
137
153
  ```
138
154
 
139
- - Musllinux
155
+ 2. Musllinux
140
156
 
141
157
  Make sure you have Docker installed. The provided image may be outdated, so you might need to build it yourself. See [rust-cross-musl](https://github.com/0x676e67/toolchain/blob/master/rust-musl-cross/Dockerfile) and the upstream [rust-cross/rust-musl-cross](https://github.com/rust-cross/rust-musl-cross) for reference.
142
158
  **Note:** The upstream image does not include some platform-specific linker environment variables; you may need to add these manually.
143
159
 
144
160
  ```bash
161
+ bash .github/musl_build.sh i686-unknown-linux-musl
145
162
  bash .github/musl_build.sh x86_64-unknown-linux-musl
146
163
  bash .github/musl_build.sh aarch64-unknown-linux-musl
147
164
  bash .github/musl_build.sh armv7-unknown-linux-musleabihf
148
- bash .github/musl_build.sh i686-unknown-linux-musl
149
165
  ```
150
166
 
151
- - Manylinux
167
+ 3. Manylinux
152
168
 
153
169
  For Manylinux compilation, refer to [manylinux](https://github.com/PyO3/maturin?tab=readme-ov-file#manylinux-and-auditwheel).
154
170
 
@@ -156,26 +172,13 @@ For Manylinux compilation, refer to [manylinux](https://github.com/PyO3/maturin?
156
172
 
157
173
  Outperforms `requests`, `httpx`, `Python-TLS-Client`, and `curl_cffi`. See the [benchmark](https://github.com/0x676e67/rnet/tree/main/python/benchmark) for details. Benchmark data is for reference only—actual performance may vary based on your environment and use case.
158
174
 
159
- ## Documentation
160
-
161
- For a comprehensive introduction to this library, refer to the [DeepWiki](https://deepwiki.com/0x676e67/rnet) documentation. This AI-generated guide, created by a third party, offers a solid overview and allows interaction with the AI to explore specific APIs.
162
-
163
- ## Emulation
164
-
165
- In fact, most device models share the same `TLS`/`HTTP2` configuration, with the main difference being the `User-Agent`.
175
+ ## License
166
176
 
167
- | **Browser** | **Versions** |
168
- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
169
- | **Chrome** | `Chrome100`, `Chrome101`, `Chrome104`, `Chrome105`, `Chrome106`, `Chrome107`, `Chrome108`, `Chrome109`, `Chrome110`, `Chrome114`, `Chrome116`, `Chrome117`, `Chrome118`, `Chrome119`, `Chrome120`, `Chrome123`, `Chrome124`, `Chrome126`, `Chrome127`, `Chrome128`, `Chrome129`, `Chrome130`, `Chrome131`, `Chrome132`, `Chrome133`, `Chrome134`, `Chrome135`, `Chrome136`, `Chrome137` |
170
- | **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`, `SafariIos18_1_1`, `Safari18_3`, `Safari18_3_1`, `Safari18_5` |
171
- | **Firefox** | `Firefox109`, `Firefox117`, `Firefox128`, `Firefox133`, `Firefox135`, `FirefoxPrivate135`, `FirefoxAndroid135`, `Firefox136`, `FirefoxPrivate136`, `Firefox139` |
172
- | **OkHttp** | `OkHttp3_9`, `OkHttp3_11`, `OkHttp3_13`, `OkHttp3_14`, `OkHttp4_9`, `OkHttp4_10`, `OkHttp4_12`, `OkHttp5` |
173
- | **Edge** | `Edge101`, `Edge122`, `Edge127`, `Edge131`, `Edge134` |
174
- | **Opera** | `Opera116`, `Opera117`, `Opera118`, `Opera119` |
177
+ Licensed under either of Apache License, Version 2.0 ([LICENSE](./LICENSE) or http://www.apache.org/licenses/LICENSE-2.0).
175
178
 
176
- ## Contributing
179
+ ## Contribution
177
180
 
178
- If you would like to submit your contribution, please open a [Pull Request](https://github.com/0x676e67/rnet/pulls).
181
+ Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the [Apache-2.0](./LICENSE) license, shall be licensed as above, without any additional terms or conditions.
179
182
 
180
183
  ## Sponsors
181
184
 
@@ -183,7 +186,3 @@ If you would like to submit your contribution, please open a [Pull Request](http
183
186
 
184
187
  [CapSolver](https://www.capsolver.com/?utm_source=github&utm_medium=banner_repo&utm_campaign=rnet) leverages AI-powered Auto Web Unblock to bypass Captchas effortlessly, providing fast, reliable, and cost-effective data access with seamless integration into Colly, Puppeteer, and Playwright—use code **`RNET`** for a 6% bonus!
185
188
 
186
- ## License
187
-
188
- **rnet** © [0x676e67](https://github.com/0x676e67), Released under the [GPL-3.0](https://github.com/0x676e67/rnet/blob/main/LICENSE) License.
189
-
@@ -0,0 +1,14 @@
1
+ rnet-3.0.0rc5.dist-info/METADATA,sha256=bp8ICFMAga2eIDMrjPG9EqUn-bBnSSg3bbwoyJ6PZGU,10167
2
+ rnet-3.0.0rc5.dist-info/WHEEL,sha256=HwUB2T2cAYEzC4Q0WvTd5eLKhJXwSa-JjoJJavr46OE,108
3
+ rnet-3.0.0rc5.dist-info/licenses/LICENSE,sha256=ld2UNRYADDwfLyJ9Q34VP3bWRfS53mvK1tixHd57kN0,11357
4
+ rnet/__init__.py,sha256=-ls4I6NTnLT8vB8ST0KgphHliSJ8c_NyhrVzBa5JMJ0,277
5
+ rnet/__init__.pyi,sha256=agbHpzttbVqUvdL5tgeEriT2BwC1ugUbNBJO0cxapmI,32430
6
+ rnet/blocking.py,sha256=SBmDK2L-hHucROnBQrX71oggOyftEw144j9Q1ee7DXc,8608
7
+ rnet/cookie.py,sha256=4UYJY9jlXqe8vObXLSqzk1dFoKRO5mCnsgC0TCC4N1Y,3023
8
+ rnet/emulation.py,sha256=JWLvOAtvFa_xkozDinU83BFYW7G8KuEyGVDiaqjqVmQ,5064
9
+ rnet/exceptions.py,sha256=A-3i9K-Ek4KRTap2gAI8Z7-ZMjbsOgKCikT3xWSralc,5854
10
+ rnet/header.py,sha256=K_bp5F_4D21UjMaBp7aM-aGVYI162IsX-vn2fjExEF4,9749
11
+ rnet/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
+ rnet/rnet.abi3.so,sha256=ddSnHqZ6cFlakb4a0QgL6Jr1C87rnHauYRZ-LSPLqFs,8206736
13
+ rnet/tls.py,sha256=xTTuk3XSReGvzrTvBLyepWm3wq-bHYW-tetsX66Na3g,4853
14
+ rnet-3.0.0rc5.dist-info/RECORD,,