rnet 3.0.0rc8__tar.gz → 3.0.0rc10__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.
- rnet-3.0.0rc10/.github/dependabot.yml +22 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/.github/workflows/ci.yml +126 -28
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/.gitignore +2 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/Cargo.lock +166 -197
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/Cargo.toml +8 -7
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/PKG-INFO +25 -23
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/README.md +24 -22
- rnet-3.0.0rc10/python/benchmark/README.md +73 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/benchmark/bench.py +5 -0
- rnet-3.0.0rc10/python/benchmark/benchmark_multi.jpg +0 -0
- rnet-3.0.0rc10/python/benchmark/benchmark_multi_threaded.jpg +0 -0
- rnet-3.0.0rc10/python/benchmark/benchmark_results.csv +241 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/benchmark/core.py +1 -1
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/benchmark/requirements.txt +4 -1
- rnet-3.0.0rc10/python/examples/auth.py +14 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/body.py +7 -5
- rnet-3.0.0rc10/python/examples/form.py +30 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/keylog.py +1 -5
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/multipart.py +2 -8
- rnet-3.0.0rc8/python/examples/client.py → rnet-3.0.0rc10/python/examples/proxy.py +19 -11
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/rnet/__init__.pyi +10 -1
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/rnet/cookie.py +2 -1
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/rnet/emulation.py +5 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/rnet/http1.py +2 -1
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/rnet/http2.py +10 -1
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/rnet/tls.py +10 -1
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/buffer.rs +7 -2
- rnet-3.0.0rc10/src/client/body/form.rs +45 -0
- rnet-3.0.0rc10/src/client/body/json.rs +59 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/client/body/multipart.rs +7 -4
- rnet-3.0.0rc8/src/client/body/mod.rs → rnet-3.0.0rc10/src/client/body.rs +14 -26
- rnet-3.0.0rc8/src/client/nogil.rs → rnet-3.0.0rc10/src/client/future.rs +18 -20
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/client/req.rs +11 -8
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/client/resp/http.rs +19 -19
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/client/resp/stream.rs +4 -4
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/client/resp/ws/msg.rs +1 -1
- rnet-3.0.0rc8/src/client/resp/ws/mod.rs → rnet-3.0.0rc10/src/client/resp/ws.rs +1 -1
- rnet-3.0.0rc8/src/client/mod.rs → rnet-3.0.0rc10/src/client.rs +8 -9
- {rnet-3.0.0rc8/src/client → rnet-3.0.0rc10/src}/dns.rs +1 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/emulation.rs +1 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/extractor.rs +45 -22
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/http1.rs +4 -2
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/http2.rs +4 -2
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/lib.rs +3 -2
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/macros.rs +1 -0
- {rnet-3.0.0rc8/src/bridge → rnet-3.0.0rc10/src/rt}/sync.rs +68 -31
- {rnet-3.0.0rc8/src/bridge → rnet-3.0.0rc10/src/rt}/task.rs +10 -36
- rnet-3.0.0rc8/src/bridge/mod.rs → rnet-3.0.0rc10/src/rt.rs +99 -80
- rnet-3.0.0rc8/src/tls/mod.rs → rnet-3.0.0rc10/src/tls.rs +4 -2
- rnet-3.0.0rc8/.github/dependabot.yml +0 -11
- rnet-3.0.0rc8/python/benchmark/README.md +0 -41
- rnet-3.0.0rc8/python/benchmark/benchmark_multi.jpg +0 -0
- rnet-3.0.0rc8/python/benchmark/benchmark_multi_threaded.jpg +0 -0
- rnet-3.0.0rc8/python/benchmark/benchmark_results.csv +0 -235
- rnet-3.0.0rc8/python/examples/auth.py +0 -21
- rnet-3.0.0rc8/python/examples/form.py +0 -21
- rnet-3.0.0rc8/python/examples/get.py +0 -16
- rnet-3.0.0rc8/python/examples/proxy.py +0 -23
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/.github/FUNDING.yml +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/.github/assets/capsolver.jpg +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/.github/assets/hypersolutions.jpg +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/.github/musl_build.sh +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/LICENSE +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/pyproject.toml +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/benchmark/chart.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/benchmark/server.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/basic_auth.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/bearer_auth.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/blocking/auth.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/blocking/basic_auth.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/blocking/bearer_auth.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/blocking/body.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/blocking/client.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/blocking/cookie.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/blocking/emulation.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/blocking/form.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/blocking/get.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/blocking/json.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/blocking/multipart.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/blocking/proxy.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/blocking/query.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/blocking/stream.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/emulation.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/exceptions.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/header_map.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/http1_websocket.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/http2_websocket.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/json.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/orig_headers.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/query.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/request.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/examples/stream.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/rnet/__init__.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/rnet/blocking.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/rnet/exceptions.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/rnet/header.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/python/rnet/py.typed +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/client/resp/history.rs +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/client/resp/ws/cmd.rs +0 -0
- /rnet-3.0.0rc8/src/client/resp/mod.rs → /rnet-3.0.0rc10/src/client/resp.rs +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/error.rs +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/http/cookie.rs +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/http/header.rs +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/http/status.rs +0 -0
- /rnet-3.0.0rc8/src/http/mod.rs → /rnet-3.0.0rc10/src/http.rs +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/proxy.rs +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/tls/identity.rs +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/tls/keylog.rs +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/src/tls/store.rs +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/tests/cookie_test.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/tests/header_test.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/tests/redirect_test.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/tests/request_test.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/tests/response_test.py +0 -0
- {rnet-3.0.0rc8 → rnet-3.0.0rc10}/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@
|
|
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@
|
|
56
|
-
- uses: actions/setup-python@
|
|
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@
|
|
59
|
+
uses: astral-sh/setup-uv@v7
|
|
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@
|
|
114
|
-
- uses: actions/setup-python@
|
|
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' }} ${{
|
|
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@
|
|
168
|
+
- uses: actions/checkout@v5
|
|
160
169
|
- name: Build wheels
|
|
161
170
|
run:
|
|
162
|
-
bash .github/musl_build.sh ${{ matrix.platform.target }} "${{
|
|
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@
|
|
188
|
-
- uses: actions/setup-python@
|
|
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' }}
|
|
@@ -197,12 +211,12 @@ jobs:
|
|
|
197
211
|
uses: PyO3/maturin-action@v1
|
|
198
212
|
with:
|
|
199
213
|
target: ${{ matrix.platform.target }}
|
|
200
|
-
args: --release --out dist ${{
|
|
201
|
-
sccache: '
|
|
214
|
+
args: --release --out dist ${{ matrix.build_type.maturin_args }} --features ${{ matrix.platform.allocator || '' }}
|
|
215
|
+
sccache: 'false'
|
|
202
216
|
- name: Upload wheels
|
|
203
217
|
uses: actions/upload-artifact@v4
|
|
204
218
|
with:
|
|
205
|
-
name: wheels-windows-${{ matrix.platform.target }}
|
|
219
|
+
name: wheels-windows-${{ matrix.platform.target }}-${{ matrix.build_type.name }}
|
|
206
220
|
path: dist
|
|
207
221
|
|
|
208
222
|
macos:
|
|
@@ -210,6 +224,11 @@ jobs:
|
|
|
210
224
|
environment: MacOS
|
|
211
225
|
strategy:
|
|
212
226
|
matrix:
|
|
227
|
+
build_type:
|
|
228
|
+
- name: standard
|
|
229
|
+
maturin_args: "--find-interpreter"
|
|
230
|
+
- name: free-threaded
|
|
231
|
+
maturin_args: "--interpreter 3.13t 3.14t"
|
|
213
232
|
platform:
|
|
214
233
|
- runner: macos-13
|
|
215
234
|
target: x86_64
|
|
@@ -218,8 +237,8 @@ jobs:
|
|
|
218
237
|
target: aarch64
|
|
219
238
|
allocator: jemalloc
|
|
220
239
|
steps:
|
|
221
|
-
- uses: actions/checkout@
|
|
222
|
-
- uses: actions/setup-python@
|
|
240
|
+
- uses: actions/checkout@v5
|
|
241
|
+
- uses: actions/setup-python@v6
|
|
223
242
|
with:
|
|
224
243
|
python-version: 3.x
|
|
225
244
|
- uses: actions-rs/toolchain@v1
|
|
@@ -230,18 +249,96 @@ jobs:
|
|
|
230
249
|
uses: PyO3/maturin-action@v1
|
|
231
250
|
with:
|
|
232
251
|
target: ${{ matrix.platform.target }}
|
|
233
|
-
args: --release --out dist ${{
|
|
234
|
-
sccache: '
|
|
252
|
+
args: --release --out dist ${{ matrix.build_type.maturin_args }} --features ${{ matrix.platform.allocator || '' }}
|
|
253
|
+
sccache: 'false'
|
|
235
254
|
- name: Upload wheels
|
|
236
255
|
uses: actions/upload-artifact@v4
|
|
237
256
|
with:
|
|
238
|
-
name: wheels-macos-${{ matrix.platform.target }}
|
|
257
|
+
name: wheels-macos-${{ matrix.platform.target }}-${{ matrix.build_type.name }}
|
|
239
258
|
path: dist
|
|
240
259
|
|
|
260
|
+
android:
|
|
261
|
+
name: Android
|
|
262
|
+
runs-on: ubuntu-latest
|
|
263
|
+
strategy:
|
|
264
|
+
matrix:
|
|
265
|
+
include:
|
|
266
|
+
- thing: arm64-android
|
|
267
|
+
target: aarch64-linux-android
|
|
268
|
+
arch: aarch64
|
|
269
|
+
python_version: 3.14.0
|
|
270
|
+
features: abi3-py314
|
|
271
|
+
- thing: x86_64-android
|
|
272
|
+
target: x86_64-linux-android
|
|
273
|
+
arch: x86_64
|
|
274
|
+
python_version: 3.14.0
|
|
275
|
+
features: abi3-py314
|
|
276
|
+
|
|
277
|
+
steps:
|
|
278
|
+
- uses: actions/checkout@v5
|
|
279
|
+
- uses: actions/setup-python@v6
|
|
280
|
+
with:
|
|
281
|
+
python-version: 3.x
|
|
282
|
+
- name: Set Android Linker path
|
|
283
|
+
if: endsWith(matrix.thing, '-android')
|
|
284
|
+
run: |
|
|
285
|
+
LINKER_PATH="$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/$(echo ${{ matrix.target }} | sed s/armv7/armv7a/)21-clang++"
|
|
286
|
+
echo "CARGO_TARGET_$(echo ${{ matrix.target }} | tr \\-a-z _A-Z)_LINKER=$LINKER_PATH" >> "$GITHUB_ENV"
|
|
287
|
+
echo "$PATH:$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin" >> "$GITHUB_PATH"
|
|
288
|
+
env
|
|
289
|
+
- name: Download and setup Android Python
|
|
290
|
+
run: |
|
|
291
|
+
wget https://www.python.org/ftp/python/${{ matrix.python_version }}/python-${{ matrix.python_version }}-${{ matrix.arch }}-linux-android.tar.gz
|
|
292
|
+
|
|
293
|
+
mkdir -p /tmp/python-android
|
|
294
|
+
tar -xzf python-${{ matrix.python_version }}-${{ matrix.arch }}-linux-android.tar.gz -C /tmp/python-android --strip-components=1
|
|
295
|
+
|
|
296
|
+
mv /tmp/python-android/prefix/lib /tmp/python-android/
|
|
297
|
+
mv /tmp/python-android/prefix/include /tmp/python-android/
|
|
298
|
+
|
|
299
|
+
echo "RUSTFLAGS=-L native=/tmp/python-android/lib" >> "$GITHUB_ENV"
|
|
300
|
+
|
|
301
|
+
echo "=== Root directory after move ==="
|
|
302
|
+
ls -la /tmp/python-android/
|
|
303
|
+
echo "=== Lib directory ==="
|
|
304
|
+
ls -la /tmp/python-android/lib/ | head -10
|
|
305
|
+
echo "=== Include directory ==="
|
|
306
|
+
ls -la /tmp/python-android/include/
|
|
307
|
+
- name: Build wheels
|
|
308
|
+
uses: PyO3/maturin-action@v1
|
|
309
|
+
with:
|
|
310
|
+
rust-toolchain: stable
|
|
311
|
+
target: ${{ matrix.target }}
|
|
312
|
+
args: --release --out dist --no-default-features --features ${{ matrix.features }} --skip-auditwheel
|
|
313
|
+
sccache: 'false'
|
|
314
|
+
container: 'off'
|
|
315
|
+
- name: Fix Android wheel platform tags
|
|
316
|
+
run: |
|
|
317
|
+
cd dist
|
|
318
|
+
for wheel in *.whl; do
|
|
319
|
+
case "$wheel" in
|
|
320
|
+
*linux_aarch64*)
|
|
321
|
+
new_wheel=${wheel/linux_aarch64/android_21_arm64_v8a}
|
|
322
|
+
mv "$wheel" "$new_wheel"
|
|
323
|
+
echo "Renamed: $wheel -> $new_wheel"
|
|
324
|
+
;;
|
|
325
|
+
*linux_x86_64*)
|
|
326
|
+
new_wheel=${wheel/linux_x86_64/android_21_x86_64}
|
|
327
|
+
mv "$wheel" "$new_wheel"
|
|
328
|
+
echo "Renamed: $wheel -> $new_wheel"
|
|
329
|
+
;;
|
|
330
|
+
esac
|
|
331
|
+
done
|
|
332
|
+
- name: Upload wheels
|
|
333
|
+
uses: actions/upload-artifact@v4
|
|
334
|
+
with:
|
|
335
|
+
name: wheels-android-${{ matrix.target }}
|
|
336
|
+
path: dist
|
|
337
|
+
|
|
241
338
|
sdist:
|
|
242
339
|
runs-on: ubuntu-latest
|
|
243
340
|
steps:
|
|
244
|
-
- uses: actions/checkout@
|
|
341
|
+
- uses: actions/checkout@v5
|
|
245
342
|
- name: Build sdist
|
|
246
343
|
uses: PyO3/maturin-action@v1
|
|
247
344
|
with:
|
|
@@ -257,7 +354,7 @@ jobs:
|
|
|
257
354
|
name: Release
|
|
258
355
|
runs-on: ubuntu-latest
|
|
259
356
|
if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
|
|
260
|
-
needs: [manylinux, musllinux, windows, macos, sdist, tests, style]
|
|
357
|
+
needs: [manylinux, musllinux, windows, macos, android, sdist, tests, style]
|
|
261
358
|
permissions:
|
|
262
359
|
# Use to sign the release artifacts
|
|
263
360
|
id-token: write
|
|
@@ -266,9 +363,9 @@ jobs:
|
|
|
266
363
|
# Used to generate artifact attestation
|
|
267
364
|
attestations: write
|
|
268
365
|
steps:
|
|
269
|
-
- uses: actions/download-artifact@
|
|
366
|
+
- uses: actions/download-artifact@v5
|
|
270
367
|
- name: Generate artifact attestation
|
|
271
|
-
uses: actions/attest-build-provenance@
|
|
368
|
+
uses: actions/attest-build-provenance@v3
|
|
272
369
|
with:
|
|
273
370
|
subject-path: 'wheels-*/*'
|
|
274
371
|
- name: Publish to PyPI
|
|
@@ -286,3 +383,4 @@ jobs:
|
|
|
286
383
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
287
384
|
prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') }}
|
|
288
385
|
generate_release_notes: true
|
|
386
|
+
files: wheels-*/*
|