rnet 3.0.0rc7__tar.gz → 3.0.0rc9__tar.gz

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.

Files changed (110) hide show
  1. rnet-3.0.0rc9/.github/assets/capsolver.jpg +0 -0
  2. rnet-3.0.0rc9/.github/assets/hypersolutions.jpg +0 -0
  3. rnet-3.0.0rc9/.github/dependabot.yml +22 -0
  4. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/.github/workflows/ci.yml +126 -28
  5. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/Cargo.lock +53 -47
  6. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/Cargo.toml +4 -3
  7. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/PKG-INFO +23 -3
  8. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/README.md +22 -2
  9. {rnet-3.0.0rc7/src/rt → rnet-3.0.0rc9/src/bridge}/mod.rs +51 -7
  10. {rnet-3.0.0rc7/src/rt → rnet-3.0.0rc9/src/bridge}/sync.rs +3 -6
  11. {rnet-3.0.0rc7/src/rt → rnet-3.0.0rc9/src/bridge}/task.rs +11 -7
  12. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/client/body/mod.rs +4 -3
  13. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/client/body/multipart.rs +4 -3
  14. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/client/mod.rs +1 -1
  15. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/client/nogil.rs +1 -1
  16. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/client/resp/http.rs +1 -1
  17. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/client/resp/stream.rs +1 -1
  18. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/client/resp/ws/mod.rs +1 -1
  19. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/extractor.rs +11 -11
  20. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/lib.rs +52 -28
  21. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/macros.rs +1 -1
  22. rnet-3.0.0rc7/.github/dependabot.yml +0 -11
  23. rnet-3.0.0rc7/src/rt/util.rs +0 -42
  24. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/.github/FUNDING.yml +0 -0
  25. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  26. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  27. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/.github/musl_build.sh +0 -0
  28. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/.gitignore +0 -0
  29. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/LICENSE +0 -0
  30. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/pyproject.toml +0 -0
  31. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/benchmark/README.md +0 -0
  32. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/benchmark/bench.py +0 -0
  33. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/benchmark/benchmark_multi.jpg +0 -0
  34. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/benchmark/benchmark_multi_threaded.jpg +0 -0
  35. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/benchmark/benchmark_results.csv +0 -0
  36. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/benchmark/chart.py +0 -0
  37. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/benchmark/core.py +0 -0
  38. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/benchmark/requirements.txt +0 -0
  39. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/benchmark/server.py +0 -0
  40. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/auth.py +0 -0
  41. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/basic_auth.py +0 -0
  42. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/bearer_auth.py +0 -0
  43. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/blocking/auth.py +0 -0
  44. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/blocking/basic_auth.py +0 -0
  45. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/blocking/bearer_auth.py +0 -0
  46. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/blocking/body.py +0 -0
  47. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/blocking/client.py +0 -0
  48. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/blocking/cookie.py +0 -0
  49. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/blocking/emulation.py +0 -0
  50. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/blocking/form.py +0 -0
  51. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/blocking/get.py +0 -0
  52. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/blocking/json.py +0 -0
  53. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/blocking/multipart.py +0 -0
  54. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/blocking/proxy.py +0 -0
  55. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/blocking/query.py +0 -0
  56. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/blocking/stream.py +0 -0
  57. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/body.py +0 -0
  58. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/client.py +0 -0
  59. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/emulation.py +0 -0
  60. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/exceptions.py +0 -0
  61. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/form.py +0 -0
  62. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/get.py +0 -0
  63. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/header_map.py +0 -0
  64. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/http1_websocket.py +0 -0
  65. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/http2_websocket.py +0 -0
  66. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/json.py +0 -0
  67. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/keylog.py +0 -0
  68. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/multipart.py +0 -0
  69. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/orig_headers.py +0 -0
  70. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/proxy.py +0 -0
  71. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/query.py +0 -0
  72. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/request.py +0 -0
  73. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/examples/stream.py +0 -0
  74. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/rnet/__init__.py +0 -0
  75. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/rnet/__init__.pyi +0 -0
  76. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/rnet/blocking.py +0 -0
  77. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/rnet/cookie.py +0 -0
  78. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/rnet/emulation.py +0 -0
  79. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/rnet/exceptions.py +0 -0
  80. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/rnet/header.py +0 -0
  81. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/rnet/http1.py +0 -0
  82. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/rnet/http2.py +0 -0
  83. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/rnet/py.typed +0 -0
  84. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/python/rnet/tls.py +0 -0
  85. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/buffer.rs +0 -0
  86. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/client/dns.rs +0 -0
  87. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/client/req.rs +0 -0
  88. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/client/resp/history.rs +0 -0
  89. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/client/resp/mod.rs +0 -0
  90. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/client/resp/ws/cmd.rs +0 -0
  91. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/client/resp/ws/msg.rs +0 -0
  92. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/emulation.rs +0 -0
  93. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/error.rs +0 -0
  94. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/http/cookie.rs +0 -0
  95. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/http/header.rs +0 -0
  96. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/http/mod.rs +0 -0
  97. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/http/status.rs +0 -0
  98. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/http1.rs +0 -0
  99. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/http2.rs +0 -0
  100. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/proxy.rs +0 -0
  101. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/tls/identity.rs +0 -0
  102. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/tls/keylog.rs +0 -0
  103. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/tls/mod.rs +0 -0
  104. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/src/tls/store.rs +0 -0
  105. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/tests/cookie_test.py +0 -0
  106. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/tests/header_test.py +0 -0
  107. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/tests/redirect_test.py +0 -0
  108. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/tests/request_test.py +0 -0
  109. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/tests/response_test.py +0 -0
  110. {rnet-3.0.0rc7 → rnet-3.0.0rc9}/tests/tls_test.py +0 -0
@@ -0,0 +1,22 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: "github-actions"
9
+ # Workflow files stored in the
10
+ # default location of `.github/workflows`
11
+ directory: "/"
12
+ schedule:
13
+ interval: "weekly"
14
+ - package-ecosystem: "cargo"
15
+ directory: "/"
16
+ schedule:
17
+ interval: "weekly"
18
+ # todo: if only this worked, see https://github.com/dependabot/dependabot-core/issues/4009
19
+ # only tell us if there's a new 'breaking' change we could upgrade to
20
+ # versioning-strategy: increase-if-necessary
21
+ # disable regular version updates, security updates are unaffected
22
+ open-pull-requests-limit: 0
@@ -20,9 +20,6 @@ on:
20
20
  - 'README.md'
21
21
  workflow_dispatch:
22
22
 
23
- env:
24
- MATURIIN_ARGS: '--find-interpreter'
25
-
26
23
  concurrency:
27
24
  group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.event.pull_request.number || github.sha }}
28
25
  cancel-in-progress: true
@@ -36,7 +33,7 @@ jobs:
36
33
  name: style
37
34
  runs-on: ubuntu-latest
38
35
  steps:
39
- - uses: actions/checkout@v3
36
+ - uses: actions/checkout@v5
40
37
 
41
38
  - uses: actions-rs/toolchain@v1
42
39
  with:
@@ -49,16 +46,17 @@ jobs:
49
46
 
50
47
  - name: Clippy check
51
48
  run: cargo clippy --all-targets --all-features
49
+
52
50
  tests:
53
51
  runs-on: ubuntu-latest
54
52
  steps:
55
- - uses: actions/checkout@v4
56
- - uses: actions/setup-python@v5
53
+ - uses: actions/checkout@v5
54
+ - uses: actions/setup-python@v6
57
55
  with:
58
56
  python-version: 3.x
59
57
  architecture: ${{ matrix.platform.target }}
60
58
  - name: Install the latest version of uv
61
- uses: astral-sh/setup-uv@v5
59
+ uses: astral-sh/setup-uv@v6
62
60
  - name: Set up virtual environment
63
61
  run: |
64
62
  uv venv
@@ -74,11 +72,17 @@ jobs:
74
72
  run: |
75
73
  source .venv/bin/activate
76
74
  pytest
75
+
77
76
  manylinux:
78
77
  runs-on: ${{ matrix.platform.runner }}
79
78
  strategy:
80
79
  fail-fast: false
81
80
  matrix:
81
+ build_type:
82
+ - name: standard
83
+ maturin_args: "--find-interpreter"
84
+ - name: free-threaded
85
+ maturin_args: "--interpreter 3.13t 3.14t"
82
86
  platform:
83
87
  - runner: ubuntu-latest
84
88
  target: x86_64
@@ -110,8 +114,8 @@ jobs:
110
114
  CXX: arm-linux-gnueabihf-g++
111
115
  CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER: arm-linux-gnueabihf-g++
112
116
  steps:
113
- - uses: actions/checkout@v4
114
- - uses: actions/setup-python@v5
117
+ - uses: actions/checkout@v5
118
+ - uses: actions/setup-python@v6
115
119
  with:
116
120
  python-version: 3.x
117
121
  - name: Install LLVM and Clang
@@ -126,7 +130,7 @@ jobs:
126
130
  with:
127
131
  rust-toolchain: stable
128
132
  target: ${{ matrix.platform.target }}
129
- args: ${{ matrix.platform.target == 'x86_64' && '--release --out dist --zig' || '--release --out dist' }} ${{ env.MATURIIN_ARGS }} --features ${{ matrix.platform.allocator }}
133
+ args: ${{ matrix.platform.target == 'x86_64' && '--release --out dist --zig' || '--release --out dist' }} ${{ matrix.build_type.maturin_args }} --features ${{ matrix.platform.allocator }}
130
134
  sccache: 'false'
131
135
  manylinux: auto
132
136
  container: 'off'
@@ -134,7 +138,7 @@ jobs:
134
138
  - name: Upload wheels
135
139
  uses: actions/upload-artifact@v4
136
140
  with:
137
- name: wheels-linux-${{ matrix.platform.target }}
141
+ name: wheels-linux-${{ matrix.platform.target }}-${{ matrix.build_type.name }}
138
142
  path: dist
139
143
 
140
144
  musllinux:
@@ -142,6 +146,11 @@ jobs:
142
146
  environment: MuslLinux
143
147
  strategy:
144
148
  matrix:
149
+ build_type:
150
+ - name: standard
151
+ maturin_args: "--find-interpreter"
152
+ - name: free-threaded
153
+ maturin_args: "--interpreter 3.13t 3.14t"
145
154
  platform:
146
155
  - runner: ubuntu-22.04
147
156
  target: x86_64-unknown-linux-musl
@@ -156,14 +165,14 @@ jobs:
156
165
  target: i686-unknown-linux-musl
157
166
  allocator: jemalloc
158
167
  steps:
159
- - uses: actions/checkout@v4
168
+ - uses: actions/checkout@v5
160
169
  - name: Build wheels
161
170
  run:
162
- bash .github/musl_build.sh ${{ matrix.platform.target }} "${{ env.MATURIIN_ARGS }}" --features "${{ matrix.platform.allocator }}"
171
+ bash .github/musl_build.sh ${{ matrix.platform.target }} "${{ matrix.build_type.maturin_args }}" --features "${{ matrix.platform.allocator }}"
163
172
  - name: Upload wheels
164
173
  uses: actions/upload-artifact@v4
165
174
  with:
166
- name: wheels-musllinux-${{ matrix.platform.target }}
175
+ name: wheels-musllinux-${{ matrix.platform.target }}-${{ matrix.build_type.name }}
167
176
  path: dist
168
177
 
169
178
  windows:
@@ -171,6 +180,11 @@ jobs:
171
180
  environment: Windows
172
181
  strategy:
173
182
  matrix:
183
+ build_type:
184
+ - name: standard
185
+ maturin_args: "--find-interpreter"
186
+ - name: free-threaded
187
+ maturin_args: "--interpreter 3.13t 3.14t"
174
188
  platform:
175
189
  - runner: windows-latest
176
190
  target: x64
@@ -184,8 +198,8 @@ jobs:
184
198
  target: aarch64
185
199
  allocator: mimalloc
186
200
  steps:
187
- - uses: actions/checkout@v4
188
- - uses: actions/setup-python@v5
201
+ - uses: actions/checkout@v5
202
+ - uses: actions/setup-python@v6
189
203
  with:
190
204
  python-version: 3.x
191
205
  architecture: ${{ matrix.platform.python-architecture || 'x64' }}
@@ -196,13 +210,14 @@ jobs:
196
210
  - name: Build wheels
197
211
  uses: PyO3/maturin-action@v1
198
212
  with:
213
+ maturin-version: v1.9.4
199
214
  target: ${{ matrix.platform.target }}
200
- args: --release --out dist ${{ env.MATURIIN_ARGS }} --features ${{ matrix.platform.allocator || '' }}
201
- sccache: 'true'
215
+ args: --release --out dist ${{ matrix.build_type.maturin_args }} --features ${{ matrix.platform.allocator || '' }}
216
+ sccache: 'false'
202
217
  - name: Upload wheels
203
218
  uses: actions/upload-artifact@v4
204
219
  with:
205
- name: wheels-windows-${{ matrix.platform.target }}
220
+ name: wheels-windows-${{ matrix.platform.target }}-${{ matrix.build_type.name }}
206
221
  path: dist
207
222
 
208
223
  macos:
@@ -210,6 +225,11 @@ jobs:
210
225
  environment: MacOS
211
226
  strategy:
212
227
  matrix:
228
+ build_type:
229
+ - name: standard
230
+ maturin_args: "--find-interpreter"
231
+ - name: free-threaded
232
+ maturin_args: "--interpreter 3.13t 3.14t"
213
233
  platform:
214
234
  - runner: macos-13
215
235
  target: x86_64
@@ -218,8 +238,8 @@ jobs:
218
238
  target: aarch64
219
239
  allocator: jemalloc
220
240
  steps:
221
- - uses: actions/checkout@v4
222
- - uses: actions/setup-python@v5
241
+ - uses: actions/checkout@v5
242
+ - uses: actions/setup-python@v6
223
243
  with:
224
244
  python-version: 3.x
225
245
  - uses: actions-rs/toolchain@v1
@@ -230,18 +250,96 @@ jobs:
230
250
  uses: PyO3/maturin-action@v1
231
251
  with:
232
252
  target: ${{ matrix.platform.target }}
233
- args: --release --out dist ${{ env.MATURIIN_ARGS }} --features ${{ matrix.platform.allocator || '' }}
234
- sccache: 'true'
253
+ args: --release --out dist ${{ matrix.build_type.maturin_args }} --features ${{ matrix.platform.allocator || '' }}
254
+ sccache: 'false'
235
255
  - name: Upload wheels
236
256
  uses: actions/upload-artifact@v4
237
257
  with:
238
- name: wheels-macos-${{ matrix.platform.target }}
258
+ name: wheels-macos-${{ matrix.platform.target }}-${{ matrix.build_type.name }}
239
259
  path: dist
240
260
 
261
+ android:
262
+ name: Android
263
+ runs-on: ubuntu-latest
264
+ strategy:
265
+ matrix:
266
+ include:
267
+ - thing: arm64-android
268
+ target: aarch64-linux-android
269
+ arch: aarch64
270
+ python_version: 3.14.0
271
+ features: abi3-py314
272
+ - thing: x86_64-android
273
+ target: x86_64-linux-android
274
+ arch: x86_64
275
+ python_version: 3.14.0
276
+ features: abi3-py314
277
+
278
+ steps:
279
+ - uses: actions/checkout@v4
280
+ - uses: actions/setup-python@v6
281
+ with:
282
+ python-version: 3.x
283
+ - name: Set Android Linker path
284
+ if: endsWith(matrix.thing, '-android')
285
+ run: |
286
+ LINKER_PATH="$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/$(echo ${{ matrix.target }} | sed s/armv7/armv7a/)21-clang++"
287
+ echo "CARGO_TARGET_$(echo ${{ matrix.target }} | tr \\-a-z _A-Z)_LINKER=$LINKER_PATH" >> "$GITHUB_ENV"
288
+ echo "$PATH:$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin" >> "$GITHUB_PATH"
289
+ env
290
+ - name: Download and setup Android Python
291
+ run: |
292
+ wget https://www.python.org/ftp/python/${{ matrix.python_version }}/python-${{ matrix.python_version }}-${{ matrix.arch }}-linux-android.tar.gz
293
+
294
+ mkdir -p /tmp/python-android
295
+ tar -xzf python-${{ matrix.python_version }}-${{ matrix.arch }}-linux-android.tar.gz -C /tmp/python-android --strip-components=1
296
+
297
+ mv /tmp/python-android/prefix/lib /tmp/python-android/
298
+ mv /tmp/python-android/prefix/include /tmp/python-android/
299
+
300
+ echo "RUSTFLAGS=-L native=/tmp/python-android/lib" >> "$GITHUB_ENV"
301
+
302
+ echo "=== Root directory after move ==="
303
+ ls -la /tmp/python-android/
304
+ echo "=== Lib directory ==="
305
+ ls -la /tmp/python-android/lib/ | head -10
306
+ echo "=== Include directory ==="
307
+ ls -la /tmp/python-android/include/
308
+ - name: Build wheels
309
+ uses: PyO3/maturin-action@v1
310
+ with:
311
+ rust-toolchain: stable
312
+ target: ${{ matrix.target }}
313
+ args: --release --out dist --no-default-features --features ${{ matrix.features }} --skip-auditwheel
314
+ sccache: 'false'
315
+ container: 'off'
316
+ - name: Fix Android wheel platform tags
317
+ run: |
318
+ cd dist
319
+ for wheel in *.whl; do
320
+ case "$wheel" in
321
+ *linux_aarch64*)
322
+ new_wheel=${wheel/linux_aarch64/android_21_arm64_v8a}
323
+ mv "$wheel" "$new_wheel"
324
+ echo "Renamed: $wheel -> $new_wheel"
325
+ ;;
326
+ *linux_x86_64*)
327
+ new_wheel=${wheel/linux_x86_64/android_21_x86_64}
328
+ mv "$wheel" "$new_wheel"
329
+ echo "Renamed: $wheel -> $new_wheel"
330
+ ;;
331
+ esac
332
+ done
333
+ - name: Upload wheels
334
+ uses: actions/upload-artifact@v4
335
+ with:
336
+ name: wheels-android-${{ matrix.target }}
337
+ path: dist
338
+
241
339
  sdist:
242
340
  runs-on: ubuntu-latest
243
341
  steps:
244
- - uses: actions/checkout@v4
342
+ - uses: actions/checkout@v5
245
343
  - name: Build sdist
246
344
  uses: PyO3/maturin-action@v1
247
345
  with:
@@ -257,7 +355,7 @@ jobs:
257
355
  name: Release
258
356
  runs-on: ubuntu-latest
259
357
  if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
260
- needs: [manylinux, musllinux, windows, macos, sdist, tests, style]
358
+ needs: [manylinux, musllinux, windows, macos, android, sdist, tests, style]
261
359
  permissions:
262
360
  # Use to sign the release artifacts
263
361
  id-token: write
@@ -266,9 +364,9 @@ jobs:
266
364
  # Used to generate artifact attestation
267
365
  attestations: write
268
366
  steps:
269
- - uses: actions/download-artifact@v4
367
+ - uses: actions/download-artifact@v5
270
368
  - name: Generate artifact attestation
271
- uses: actions/attest-build-provenance@v1
369
+ uses: actions/attest-build-provenance@v3
272
370
  with:
273
371
  subject-path: 'wheels-*/*'
274
372
  - name: Publish to PyPI
@@ -61,9 +61,9 @@ checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
61
61
 
62
62
  [[package]]
63
63
  name = "async-compression"
64
- version = "0.4.31"
64
+ version = "0.4.32"
65
65
  source = "registry+https://github.com/rust-lang/crates.io-index"
66
- checksum = "9611ec0b6acea03372540509035db2f7f1e9f04da5d27728436fa994033c00a0"
66
+ checksum = "5a89bce6054c720275ac2432fbba080a66a2106a44a1b804553930ca6909f4e0"
67
67
  dependencies = [
68
68
  "compression-codecs",
69
69
  "compression-core",
@@ -204,9 +204,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
204
204
 
205
205
  [[package]]
206
206
  name = "cc"
207
- version = "1.2.38"
207
+ version = "1.2.40"
208
208
  source = "registry+https://github.com/rust-lang/crates.io-index"
209
- checksum = "80f41ae168f955c12fb8960b057d70d0ca153fb83182b57d86380443527be7e9"
209
+ checksum = "e1d05d92f4b1fd76aad469d46cdd858ca761576082cd37df81416691e50199fb"
210
210
  dependencies = [
211
211
  "find-msvc-tools",
212
212
  "jobserver",
@@ -251,9 +251,9 @@ dependencies = [
251
251
 
252
252
  [[package]]
253
253
  name = "compression-codecs"
254
- version = "0.4.30"
254
+ version = "0.4.31"
255
255
  source = "registry+https://github.com/rust-lang/crates.io-index"
256
- checksum = "485abf41ac0c8047c07c87c72c8fb3eb5197f6e9d7ded615dfd1a00ae00a0f64"
256
+ checksum = "ef8a506ec4b81c460798f572caead636d57d3d7e940f998160f52bd254bf2d23"
257
257
  dependencies = [
258
258
  "brotli",
259
259
  "compression-core",
@@ -408,15 +408,15 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
408
408
 
409
409
  [[package]]
410
410
  name = "find-msvc-tools"
411
- version = "0.1.2"
411
+ version = "0.1.3"
412
412
  source = "registry+https://github.com/rust-lang/crates.io-index"
413
- checksum = "1ced73b1dacfc750a6db6c0a0c3a3853c8b41997e2e2c563dc90804ae6867959"
413
+ checksum = "0399f9d26e5191ce32c498bebd31e7a3ceabc2745f0ac54af3f335126c3f24b3"
414
414
 
415
415
  [[package]]
416
416
  name = "flate2"
417
- version = "1.1.2"
417
+ version = "1.1.4"
418
418
  source = "registry+https://github.com/rust-lang/crates.io-index"
419
- checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d"
419
+ checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9"
420
420
  dependencies = [
421
421
  "crc32fast",
422
422
  "miniz_oxide",
@@ -650,7 +650,7 @@ dependencies = [
650
650
  "once_cell",
651
651
  "rand",
652
652
  "ring",
653
- "thiserror 2.0.16",
653
+ "thiserror 2.0.17",
654
654
  "tinyvec",
655
655
  "tokio",
656
656
  "tracing",
@@ -673,7 +673,7 @@ dependencies = [
673
673
  "rand",
674
674
  "resolv-conf",
675
675
  "smallvec",
676
- "thiserror 2.0.16",
676
+ "thiserror 2.0.17",
677
677
  "tokio",
678
678
  "tracing",
679
679
  ]
@@ -979,11 +979,10 @@ checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956"
979
979
 
980
980
  [[package]]
981
981
  name = "lock_api"
982
- version = "0.4.13"
982
+ version = "0.4.14"
983
983
  source = "registry+https://github.com/rust-lang/crates.io-index"
984
- checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765"
984
+ checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
985
985
  dependencies = [
986
- "autocfg",
987
986
  "scopeguard",
988
987
  ]
989
988
 
@@ -1046,6 +1045,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1046
1045
  checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
1047
1046
  dependencies = [
1048
1047
  "adler2",
1048
+ "simd-adler32",
1049
1049
  ]
1050
1050
 
1051
1051
  [[package]]
@@ -1125,9 +1125,9 @@ dependencies = [
1125
1125
 
1126
1126
  [[package]]
1127
1127
  name = "parking_lot"
1128
- version = "0.12.4"
1128
+ version = "0.12.5"
1129
1129
  source = "registry+https://github.com/rust-lang/crates.io-index"
1130
- checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13"
1130
+ checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
1131
1131
  dependencies = [
1132
1132
  "lock_api",
1133
1133
  "parking_lot_core",
@@ -1135,15 +1135,15 @@ dependencies = [
1135
1135
 
1136
1136
  [[package]]
1137
1137
  name = "parking_lot_core"
1138
- version = "0.9.11"
1138
+ version = "0.9.12"
1139
1139
  source = "registry+https://github.com/rust-lang/crates.io-index"
1140
- checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5"
1140
+ checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
1141
1141
  dependencies = [
1142
1142
  "cfg-if",
1143
1143
  "libc",
1144
1144
  "redox_syscall",
1145
1145
  "smallvec",
1146
- "windows-targets 0.52.6",
1146
+ "windows-link",
1147
1147
  ]
1148
1148
 
1149
1149
  [[package]]
@@ -1284,9 +1284,9 @@ dependencies = [
1284
1284
 
1285
1285
  [[package]]
1286
1286
  name = "quote"
1287
- version = "1.0.40"
1287
+ version = "1.0.41"
1288
1288
  source = "registry+https://github.com/rust-lang/crates.io-index"
1289
- checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
1289
+ checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1"
1290
1290
  dependencies = [
1291
1291
  "proc-macro2",
1292
1292
  ]
@@ -1328,9 +1328,9 @@ dependencies = [
1328
1328
 
1329
1329
  [[package]]
1330
1330
  name = "redox_syscall"
1331
- version = "0.5.17"
1331
+ version = "0.5.18"
1332
1332
  source = "registry+https://github.com/rust-lang/crates.io-index"
1333
- checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77"
1333
+ checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
1334
1334
  dependencies = [
1335
1335
  "bitflags",
1336
1336
  ]
@@ -1386,7 +1386,7 @@ dependencies = [
1386
1386
 
1387
1387
  [[package]]
1388
1388
  name = "rnet"
1389
- version = "3.0.0-rc7"
1389
+ version = "3.0.0-rc9"
1390
1390
  dependencies = [
1391
1391
  "arc-swap",
1392
1392
  "bytes",
@@ -1471,9 +1471,9 @@ checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
1471
1471
 
1472
1472
  [[package]]
1473
1473
  name = "serde"
1474
- version = "1.0.227"
1474
+ version = "1.0.228"
1475
1475
  source = "registry+https://github.com/rust-lang/crates.io-index"
1476
- checksum = "80ece43fc6fbed4eb5392ab50c07334d3e577cbf40997ee896fe7af40bba4245"
1476
+ checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
1477
1477
  dependencies = [
1478
1478
  "serde_core",
1479
1479
  "serde_derive",
@@ -1481,18 +1481,18 @@ dependencies = [
1481
1481
 
1482
1482
  [[package]]
1483
1483
  name = "serde_core"
1484
- version = "1.0.227"
1484
+ version = "1.0.228"
1485
1485
  source = "registry+https://github.com/rust-lang/crates.io-index"
1486
- checksum = "7a576275b607a2c86ea29e410193df32bc680303c82f31e275bbfcafe8b33be5"
1486
+ checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
1487
1487
  dependencies = [
1488
1488
  "serde_derive",
1489
1489
  ]
1490
1490
 
1491
1491
  [[package]]
1492
1492
  name = "serde_derive"
1493
- version = "1.0.227"
1493
+ version = "1.0.228"
1494
1494
  source = "registry+https://github.com/rust-lang/crates.io-index"
1495
- checksum = "51e694923b8824cf0e9b382adf0f60d4e05f348f357b38833a3fa5ed7c2ede04"
1495
+ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
1496
1496
  dependencies = [
1497
1497
  "proc-macro2",
1498
1498
  "quote",
@@ -1541,6 +1541,12 @@ version = "1.3.0"
1541
1541
  source = "registry+https://github.com/rust-lang/crates.io-index"
1542
1542
  checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
1543
1543
 
1544
+ [[package]]
1545
+ name = "simd-adler32"
1546
+ version = "0.3.7"
1547
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1548
+ checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
1549
+
1544
1550
  [[package]]
1545
1551
  name = "slab"
1546
1552
  version = "0.4.11"
@@ -1575,9 +1581,9 @@ dependencies = [
1575
1581
 
1576
1582
  [[package]]
1577
1583
  name = "stable_deref_trait"
1578
- version = "1.2.0"
1584
+ version = "1.2.1"
1579
1585
  source = "registry+https://github.com/rust-lang/crates.io-index"
1580
- checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
1586
+ checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
1581
1587
 
1582
1588
  [[package]]
1583
1589
  name = "strum"
@@ -1651,11 +1657,11 @@ dependencies = [
1651
1657
 
1652
1658
  [[package]]
1653
1659
  name = "thiserror"
1654
- version = "2.0.16"
1660
+ version = "2.0.17"
1655
1661
  source = "registry+https://github.com/rust-lang/crates.io-index"
1656
- checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0"
1662
+ checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
1657
1663
  dependencies = [
1658
- "thiserror-impl 2.0.16",
1664
+ "thiserror-impl 2.0.17",
1659
1665
  ]
1660
1666
 
1661
1667
  [[package]]
@@ -1671,9 +1677,9 @@ dependencies = [
1671
1677
 
1672
1678
  [[package]]
1673
1679
  name = "thiserror-impl"
1674
- version = "2.0.16"
1680
+ version = "2.0.17"
1675
1681
  source = "registry+https://github.com/rust-lang/crates.io-index"
1676
- checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960"
1682
+ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
1677
1683
  dependencies = [
1678
1684
  "proc-macro2",
1679
1685
  "quote",
@@ -1918,7 +1924,7 @@ dependencies = [
1918
1924
  "log",
1919
1925
  "rand",
1920
1926
  "sha1",
1921
- "thiserror 2.0.16",
1927
+ "thiserror 2.0.17",
1922
1928
  "utf-8",
1923
1929
  ]
1924
1930
 
@@ -1944,9 +1950,9 @@ dependencies = [
1944
1950
 
1945
1951
  [[package]]
1946
1952
  name = "typenum"
1947
- version = "1.18.0"
1953
+ version = "1.19.0"
1948
1954
  source = "registry+https://github.com/rust-lang/crates.io-index"
1949
- checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
1955
+ checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
1950
1956
 
1951
1957
  [[package]]
1952
1958
  name = "unicase"
@@ -2107,18 +2113,18 @@ dependencies = [
2107
2113
 
2108
2114
  [[package]]
2109
2115
  name = "webpki-root-certs"
2110
- version = "1.0.2"
2116
+ version = "1.0.3"
2111
2117
  source = "registry+https://github.com/rust-lang/crates.io-index"
2112
- checksum = "4e4ffd8df1c57e87c325000a3d6ef93db75279dc3a231125aac571650f22b12a"
2118
+ checksum = "05d651ec480de84b762e7be71e6efa7461699c19d9e2c272c8d93455f567786e"
2113
2119
  dependencies = [
2114
2120
  "rustls-pki-types",
2115
2121
  ]
2116
2122
 
2117
2123
  [[package]]
2118
2124
  name = "widestring"
2119
- version = "1.2.0"
2125
+ version = "1.2.1"
2120
2126
  source = "registry+https://github.com/rust-lang/crates.io-index"
2121
- checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d"
2127
+ checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471"
2122
2128
 
2123
2129
  [[package]]
2124
2130
  name = "winapi"
@@ -2144,9 +2150,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
2144
2150
 
2145
2151
  [[package]]
2146
2152
  name = "windows-link"
2147
- version = "0.2.0"
2153
+ version = "0.2.1"
2148
2154
  source = "registry+https://github.com/rust-lang/crates.io-index"
2149
- checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65"
2155
+ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
2150
2156
 
2151
2157
  [[package]]
2152
2158
  name = "windows-sys"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "rnet"
3
- version = "3.0.0-rc7"
3
+ version = "3.0.0-rc9"
4
4
  description = "A blazing-fast Python HTTP client with TLS fingerprint"
5
5
  license = "Apache-2.0"
6
6
  readme = "README.md"
@@ -16,12 +16,13 @@ crate-type = ["cdylib"]
16
16
  doctest = false
17
17
 
18
18
  [features]
19
- default = ["abi3"]
19
+ default = ["abi3-py311"]
20
20
  jemalloc = ["dep:tikv-jemallocator"]
21
21
  mimalloc = ["dep:mimalloc"]
22
22
 
23
23
  # we build cp311-abi3 and cp310 wheels now, move this to pyo3 after we drop cp310
24
- abi3 = ["pyo3/abi3-py311"]
24
+ abi3-py311 = ["pyo3/abi3-py311"]
25
+ abi3-py314 = ["pyo3/abi3-py314"]
25
26
 
26
27
  [dependencies]
27
28
  tokio = { version = "1.47.1", features = ["sync", "rt", "rt-multi-thread", "time"]}