rnet 3.0.0rc8__cp311-abi3-win_amd64.whl → 3.0.0rc10__cp311-abi3-win_amd64.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/__init__.pyi CHANGED
@@ -12,6 +12,7 @@ from typing import (
12
12
  TypedDict,
13
13
  Unpack,
14
14
  NotRequired,
15
+ final,
15
16
  )
16
17
  from pathlib import Path
17
18
  from enum import Enum, auto
@@ -23,6 +24,7 @@ from .header import *
23
24
  from .emulation import *
24
25
  from .tls import *
25
26
 
27
+ @final
26
28
  class Method(Enum):
27
29
  r"""
28
30
  An HTTP method.
@@ -37,6 +39,7 @@ class Method(Enum):
37
39
  TRACE = auto()
38
40
  PATCH = auto()
39
41
 
42
+ @final
40
43
  class Version(Enum):
41
44
  r"""
42
45
  An HTTP version.
@@ -48,6 +51,7 @@ class Version(Enum):
48
51
  HTTP_2 = auto()
49
52
  HTTP_3 = auto()
50
53
 
54
+ @final
51
55
  class StatusCode:
52
56
  r"""
53
57
  HTTP status code.
@@ -90,6 +94,7 @@ class StatusCode:
90
94
  """
91
95
  ...
92
96
 
97
+ @final
93
98
  class SocketAddr:
94
99
  r"""
95
100
  A IP socket address.
@@ -106,6 +111,7 @@ class SocketAddr:
106
111
  Returns the port number of the socket address.
107
112
  """
108
113
 
114
+ @final
109
115
  class Multipart:
110
116
  r"""
111
117
  A multipart form for a request.
@@ -117,6 +123,7 @@ class Multipart:
117
123
  """
118
124
  ...
119
125
 
126
+ @final
120
127
  class Part:
121
128
  r"""
122
129
  A part of a multipart form.
@@ -166,6 +173,7 @@ class ProxyParams(TypedDict):
166
173
  exclusion: NotRequired[str]
167
174
  r"""List of domains to exclude from proxying."""
168
175
 
176
+ @final
169
177
  class Proxy:
170
178
  r"""
171
179
  A proxy server for a request.
@@ -332,6 +340,7 @@ class Message:
332
340
 
333
341
  def __str__(self) -> str: ...
334
342
 
343
+ @final
335
344
  class History:
336
345
  """
337
346
  An entry in the redirect history.
@@ -896,7 +905,7 @@ class Request(TypedDict):
896
905
  The query parameters to use for the request.
897
906
  """
898
907
 
899
- form: NotRequired[List[Tuple[str, str]]]
908
+ form: NotRequired[Union[List[Tuple[str, str]], Dict[str, str]]]
900
909
  """
901
910
  The form parameters to use for the request.
902
911
  """
rnet/cookie.py CHANGED
@@ -8,11 +8,12 @@ and provides a cookie jar for automatic cookie handling during HTTP requests.
8
8
 
9
9
  import datetime
10
10
  from enum import Enum, auto
11
- from typing import List, Optional
11
+ from typing import List, Optional, final
12
12
 
13
13
  __all__ = ["SameSite", "Cookie", "Jar"]
14
14
 
15
15
 
16
+ @final
16
17
  class SameSite(Enum):
17
18
  r"""
18
19
  The Cookie SameSite attribute.
rnet/emulation.py CHANGED
@@ -9,10 +9,12 @@ authentic and less likely to be blocked by anti-bot systems.
9
9
  """
10
10
 
11
11
  from enum import Enum, auto
12
+ from typing import final
12
13
 
13
14
  __all__ = ["Emulation", "EmulationOS", "EmulationOption"]
14
15
 
15
16
 
17
+ @final
16
18
  class Emulation(Enum):
17
19
  r"""
18
20
  An emulation.
@@ -51,6 +53,7 @@ class Emulation(Enum):
51
53
  Chrome138 = auto()
52
54
  Chrome139 = auto()
53
55
  Chrome140 = auto()
56
+ Chrome141 = auto()
54
57
 
55
58
  # Microsoft Edge versions
56
59
  Edge101 = auto()
@@ -114,6 +117,7 @@ class Emulation(Enum):
114
117
  Opera119 = auto()
115
118
 
116
119
 
120
+ @final
117
121
  class EmulationOS(Enum):
118
122
  """
119
123
  Operating systems that can be emulated.
@@ -129,6 +133,7 @@ class EmulationOS(Enum):
129
133
  IOS = auto() # iOS (iPhone/iPad)
130
134
 
131
135
 
136
+ @final
132
137
  class EmulationOption:
133
138
  """
134
139
  Configuration options for browser and client emulation.
rnet/http1.py CHANGED
@@ -2,7 +2,7 @@
2
2
  HTTP/1 connection configuration.
3
3
  """
4
4
 
5
- from typing import TypedDict, Unpack, NotRequired
5
+ from typing import TypedDict, Unpack, NotRequired, final
6
6
 
7
7
  __all__ = ["Http1Options", "Params"]
8
8
 
@@ -53,6 +53,7 @@ class Params(TypedDict):
53
53
  """
54
54
 
55
55
 
56
+ @final
56
57
  class Http1Options:
57
58
  """
58
59
  HTTP/1 protocol options for customizing connection behavior.
rnet/http2.py CHANGED
@@ -4,7 +4,7 @@ HTTP/2 connection configuration.
4
4
 
5
5
  import datetime
6
6
  from enum import Enum, auto
7
- from typing import ClassVar, Self, TypedDict, NotRequired, Unpack
7
+ from typing import ClassVar, Self, TypedDict, NotRequired, Unpack, final
8
8
 
9
9
  __all__ = [
10
10
  "StreamId",
@@ -20,6 +20,7 @@ __all__ = [
20
20
  ]
21
21
 
22
22
 
23
+ @final
23
24
  class PseudoId(Enum):
24
25
  """
25
26
  Represents the order of HTTP/2 pseudo-header fields in the header block.
@@ -37,6 +38,7 @@ class PseudoId(Enum):
37
38
  STATUS = auto()
38
39
 
39
40
 
41
+ @final
40
42
  class SettingId(Enum):
41
43
  """
42
44
  An enum that lists all valid settings that can be sent in a SETTINGS frame.
@@ -94,6 +96,7 @@ class SettingId(Enum):
94
96
  """
95
97
 
96
98
 
99
+ @final
97
100
  class StreamId:
98
101
  """
99
102
  A stream identifier, as described in [Section 5.1.1] of RFC 7540.
@@ -121,6 +124,7 @@ class StreamId:
121
124
  ...
122
125
 
123
126
 
127
+ @final
124
128
  class StreamDependency:
125
129
  """
126
130
  Represents a stream dependency in HTTP/2 priority frames.
@@ -146,6 +150,7 @@ class StreamDependency:
146
150
  ...
147
151
 
148
152
 
153
+ @final
149
154
  class Priority:
150
155
  """
151
156
  Represents an HTTP/2 PRIORITY frame (type=0x2).
@@ -168,6 +173,7 @@ class Priority:
168
173
  ...
169
174
 
170
175
 
176
+ @final
171
177
  class Priorities:
172
178
  """
173
179
  A collection of HTTP/2 PRIORITY frames.
@@ -186,6 +192,7 @@ class Priorities:
186
192
  ...
187
193
 
188
194
 
195
+ @final
189
196
  class PseudoOrder:
190
197
  """
191
198
  Represents the order of HTTP/2 pseudo-header fields in the header block.
@@ -203,6 +210,7 @@ class PseudoOrder:
203
210
  ...
204
211
 
205
212
 
213
+ @final
206
214
  class SettingsOrder:
207
215
  """
208
216
  Represents the order of HTTP/2 settings parameters in the SETTINGS frame.
@@ -337,6 +345,7 @@ class Params(TypedDict):
337
345
  """
338
346
 
339
347
 
348
+ @final
340
349
  class Http2Options:
341
350
  """
342
351
  Configuration for an HTTP/2 connection.
rnet/rnet.pyd CHANGED
Binary file
rnet/tls.py CHANGED
@@ -8,7 +8,7 @@ These types are typically used to configure client-side TLS authentication and c
8
8
 
9
9
  from enum import Enum, auto
10
10
  from pathlib import Path
11
- from typing import List, NotRequired, TypedDict, Unpack
11
+ from typing import List, NotRequired, TypedDict, Unpack, final
12
12
 
13
13
  __all__ = [
14
14
  "TlsVersion",
@@ -24,6 +24,7 @@ __all__ = [
24
24
  ]
25
25
 
26
26
 
27
+ @final
27
28
  class TlsVersion(Enum):
28
29
  r"""
29
30
  The TLS version.
@@ -35,6 +36,7 @@ class TlsVersion(Enum):
35
36
  TLS_1_3 = auto()
36
37
 
37
38
 
39
+ @final
38
40
  class AlpnProtocol(Enum):
39
41
  """
40
42
  A TLS ALPN protocol.
@@ -45,6 +47,7 @@ class AlpnProtocol(Enum):
45
47
  HTTP3 = auto()
46
48
 
47
49
 
50
+ @final
48
51
  class AlpsProtocol(Enum):
49
52
  """
50
53
  Application-layer protocol settings for HTTP/1.1 and HTTP/2.
@@ -55,6 +58,7 @@ class AlpsProtocol(Enum):
55
58
  HTTP3 = auto()
56
59
 
57
60
 
61
+ @final
58
62
  class CertificateCompressionAlgorithm(Enum):
59
63
  """
60
64
  IANA assigned identifier of compression algorithm.
@@ -66,6 +70,7 @@ class CertificateCompressionAlgorithm(Enum):
66
70
  ZSTD = auto()
67
71
 
68
72
 
73
+ @final
69
74
  class ExtensionType(Enum):
70
75
  """
71
76
  A TLS extension type.
@@ -103,6 +108,7 @@ class ExtensionType(Enum):
103
108
  RECORD_SIZE_LIMIT = auto()
104
109
 
105
110
 
111
+ @final
106
112
  class Identity:
107
113
  """
108
114
  Represents a private key and X509 cert as a client certificate.
@@ -138,6 +144,7 @@ class Identity:
138
144
  ...
139
145
 
140
146
 
147
+ @final
141
148
  class CertStore:
142
149
  """
143
150
  Represents a certificate store for verifying TLS connections.
@@ -190,6 +197,7 @@ class CertStore:
190
197
  ...
191
198
 
192
199
 
200
+ @final
193
201
  class KeyLog:
194
202
  """
195
203
  Specifies the intent for a (TLS) keylogger to be used in a client or server configuration.
@@ -398,6 +406,7 @@ class Params(TypedDict):
398
406
  """
399
407
 
400
408
 
409
+ @final
401
410
  class TlsOptions:
402
411
  """
403
412
  TLS connection configuration options.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rnet
3
- Version: 3.0.0rc8
3
+ Version: 3.0.0rc10
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -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 and HTTP2 signatures, and powered by [wreq](https://github.com/0x676e67/wreq) for high performance.
39
+ A blazing-fast, ergonomic, and modular Python HTTP client for advanced and low-level emulation, featuring customizable TLS, JA3/JA4, and HTTP/2 fingerprinting capabilities, powered by [wreq](https://github.com/0x676e67/wreq).
40
40
 
41
41
  ## Features
42
42
 
@@ -59,7 +59,7 @@ A blazing-fast Python HTTP client with advanced browser fingerprinting that accu
59
59
  The following example uses the `asyncio` runtime with `rnet` installed via pip:
60
60
 
61
61
  ```bash
62
- pip install asyncio rnet==3.0.0rc8
62
+ pip install asyncio rnet==3.0.0rc10
63
63
  ```
64
64
 
65
65
  And then the code:
@@ -71,7 +71,7 @@ from rnet import Client, Emulation
71
71
 
72
72
  async def main():
73
73
  # Build a client
74
- client = Client(emulation=Emulation.Firefox143)
74
+ client = Client(emulation=Emulation.Safari26)
75
75
 
76
76
  # Use the API you're already familiar with
77
77
  resp = await client.get("https://tls.peet.ws/api/all")
@@ -92,6 +92,17 @@ Additional learning resources include:
92
92
  - [Repository Tests](https://github.com/0x676e67/rnet/tree/main/tests)
93
93
  - [Synchronous Examples](https://github.com/0x676e67/rnet/tree/main/python/examples/blocking)
94
94
  - [Asynchronous Examples](https://github.com/0x676e67/rnet/tree/main/python/examples)
95
+
96
+ ## Behavior
97
+
98
+ 1. **HTTP/2 over TLS**
99
+
100
+ Due to the complexity of TLS encryption and the widespread adoption of HTTP/2, browser fingerprints such as **JA3**, **JA4**, and **Akamai** cannot be reliably emulated using simple fingerprint strings. Instead of parsing and emulating these string-based fingerprints, `rnet` provides fine-grained control over TLS and HTTP/2 extensions and settings for precise browser behavior emulation.
101
+
102
+ 2. **Device Emulation**
103
+
104
+ Most browser device models share identical TLS and HTTP/2 configurations, differing only in the `User-Agent` string.
105
+
95
106
  - <details>
96
107
  <summary>Available OS emulations</summary>
97
108
 
@@ -109,7 +120,7 @@ Additional learning resources include:
109
120
 
110
121
  | **Browser** | **Versions** |
111
122
  | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
112
- | **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`, `Chrome138`, `Chrome139`, `Chrome140` |
123
+ | **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`, `Chrome138`, `Chrome139`, `Chrome140`, `Chrome141` |
113
124
  | **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`, `Safari26`, `SafariIos26`, `SafariIPad26` |
114
125
  | **Firefox** | `Firefox109`, `Firefox117`, `Firefox128`, `Firefox133`, `Firefox135`, `FirefoxPrivate135`, `FirefoxAndroid135`, `Firefox136`, `FirefoxPrivate136`, `Firefox139`, `Firefox142`, `Firefox143` |
115
126
  | **OkHttp** | `OkHttp3_9`, `OkHttp3_11`, `OkHttp3_13`, `OkHttp3_14`, `OkHttp4_9`, `OkHttp4_10`, `OkHttp4_12`, `OkHttp5` |
@@ -118,20 +129,16 @@ Additional learning resources include:
118
129
 
119
130
  </details>
120
131
 
121
- ## Platforms
122
-
123
- 1. Linux
124
-
125
- - **glibc >= 2.34**: `x86_64`, `aarch64`, `armv7`, `i686`
126
- - **musl**: `x86_64`, `aarch64`, `armv7`, `i686`
127
-
128
- 2. macOS: `x86_64`,`aarch64`
132
+ ## Building
129
133
 
130
- 3. Windows: `x86_64`,`i686`,`aarch64`
134
+ 1. Platforms
131
135
 
132
- ## Building
136
+ - Linux(**glibc**/**musl**): `x86_64`, `aarch64`, `armv7`, `i686`
137
+ - macOS: `x86_64`,`aarch64`
138
+ - Windows: `x86_64`,`i686`,`aarch64`
139
+ - Android: `aarch64`, `x86_64`
133
140
 
134
- 1. Development
141
+ 2. Manylinux
135
142
 
136
143
  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).
137
144
 
@@ -151,10 +158,9 @@ maturin develop --uv
151
158
  maturin build --release
152
159
  ```
153
160
 
154
- 2. Musllinux
161
+ 3. Musllinux
155
162
 
156
- 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.
157
- **Note:** The upstream image does not include some platform-specific linker environment variables; you may need to add these manually.
163
+ 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.
158
164
 
159
165
  ```bash
160
166
  bash .github/musl_build.sh i686-unknown-linux-musl
@@ -163,10 +169,6 @@ bash .github/musl_build.sh aarch64-unknown-linux-musl
163
169
  bash .github/musl_build.sh armv7-unknown-linux-musleabihf
164
170
  ```
165
171
 
166
- 3. Manylinux
167
-
168
- For Manylinux compilation, refer to [manylinux](https://github.com/PyO3/maturin?tab=readme-ov-file#manylinux-and-auditwheel).
169
-
170
172
  ## Services
171
173
 
172
174
  Help sustain the ongoing development of this open-source project by reaching out for [commercial support](mailto:gngppz@gmail.com). Receive private guidance, expert reviews, or direct access to the maintainer, with personalized technical assistance tailored to your needs.
@@ -0,0 +1,16 @@
1
+ rnet-3.0.0rc10.dist-info/METADATA,sha256=Ha01MLxWbLUyNODsofTAV0U3dyAh280u2w75C1rT24k,11820
2
+ rnet-3.0.0rc10.dist-info/WHEEL,sha256=QC3zdlgimDC1GtRrc0qfjqbzuc7G6nDvPrjaINbNOTw,95
3
+ rnet-3.0.0rc10.dist-info/licenses/LICENSE,sha256=OgFMgRC_5WSQ1t5oy1xTzIRPejYh83apCq2Hf6M74rw,11558
4
+ rnet/__init__.py,sha256=V_zT7nyh_yTXs_mbCVpf3Vy2YIaGsLWG1N65z4757o0,407
5
+ rnet/__init__.pyi,sha256=RtdAc3W33Sypju4bAPstnxecT0xXITTcdPRZpxrnDcw,35077
6
+ rnet/blocking.py,sha256=SBG07JFKRVBKjLCsPwhQqguhYB8FR-5afZcVkXRnAeQ,9181
7
+ rnet/cookie.py,sha256=szf7_pkM2unk9GVmb-OTOwNHBA1eq2Lw4LAddiNBegs,3178
8
+ rnet/emulation.py,sha256=GUxeKZvz7_GmbvkUIHvZdidcOupiQlBVtmmEdixjuLM,5492
9
+ rnet/exceptions.py,sha256=FPWpnieeYJHb2z4o2LgFhMlaVJ7IJPgxf0JvM6O2Vqo,6175
10
+ rnet/header.py,sha256=vVLquV5IG8tivo_MbEzcZTV48vWIbSZjHgFGVj46flY,10068
11
+ rnet/http1.py,sha256=52jS6OtBBvPwgsFtxEqPIWRXWvsEHHWyZJ0GHlLYl4I,1579
12
+ rnet/http2.py,sha256=s-GuNMSe1mXkMTrUhyg8UrJukh3mndLyLhuHIki4wVU,9558
13
+ rnet/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ rnet/rnet.pyd,sha256=6sWM6kbgO2Ebf233eCLHabwX-E4eM1dxPbOTqwQECnk,9058816
15
+ rnet/tls.py,sha256=NL_t_rKo3tVTjh0yeQHHKT25P0enk663rGnFdCoEFCc,12063
16
+ rnet-3.0.0rc10.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: maturin (1.9.4)
2
+ Generator: maturin (1.9.6)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp311-abi3-win_amd64
@@ -1,16 +0,0 @@
1
- rnet-3.0.0rc8.dist-info/METADATA,sha256=ZbI33ye-losEmUEw76S6TUdEATjYEXizU7_TV4kD_0Q,11588
2
- rnet-3.0.0rc8.dist-info/WHEEL,sha256=8hEf8NzM1FnmM77AjVt5h8nDuYkN3UqZ79LoIAHXeRE,95
3
- rnet-3.0.0rc8.dist-info/licenses/LICENSE,sha256=OgFMgRC_5WSQ1t5oy1xTzIRPejYh83apCq2Hf6M74rw,11558
4
- rnet/__init__.py,sha256=V_zT7nyh_yTXs_mbCVpf3Vy2YIaGsLWG1N65z4757o0,407
5
- rnet/__init__.pyi,sha256=A9U121PCFWeREDUxQjc3Yw_DST8w3G87dwM21PJttD0,34978
6
- rnet/blocking.py,sha256=SBG07JFKRVBKjLCsPwhQqguhYB8FR-5afZcVkXRnAeQ,9181
7
- rnet/cookie.py,sha256=l0P_3CWQItvBF70egPTMVWXEP5GW0J3WPm0c66q4o1U,3163
8
- rnet/emulation.py,sha256=GRe8j7fKxPubG3_gbzRecePcK3lEkpwIRQykpfgbeQU,5418
9
- rnet/exceptions.py,sha256=FPWpnieeYJHb2z4o2LgFhMlaVJ7IJPgxf0JvM6O2Vqo,6175
10
- rnet/header.py,sha256=vVLquV5IG8tivo_MbEzcZTV48vWIbSZjHgFGVj46flY,10068
11
- rnet/http1.py,sha256=orvuLtLTIEdmQURaH3cO3VEkBUHQM59Z-7gbeYugW4k,1564
12
- rnet/http2.py,sha256=J2IEzDRCxqf8Noh9WAeN5D_xNsI3JjDAHcfGBhJn3-A,9479
13
- rnet/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- rnet/rnet.pyd,sha256=QIDtB-yNTFXQu4xlYKIms89mkNAJHQoUebpxstOXp5o,9066496
15
- rnet/tls.py,sha256=PV86EYk4SREnQgFdNvDhiaUrVNbTt6ttrwziNiFzVQs,11984
16
- rnet-3.0.0rc8.dist-info/RECORD,,