py-spy-asyncio 0.4.2__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.
- py_spy_asyncio-0.4.2/.cargo/config.toml +2 -0
- py_spy_asyncio-0.4.2/.github/dependabot.yml +13 -0
- py_spy_asyncio-0.4.2/.github/release-drafter.yml +43 -0
- py_spy_asyncio-0.4.2/.github/workflows/build.yml +367 -0
- py_spy_asyncio-0.4.2/.github/workflows/linux-binary.yml +27 -0
- py_spy_asyncio-0.4.2/.github/workflows/release-drafter.yml +20 -0
- py_spy_asyncio-0.4.2/.github/workflows/update_python_test.yml +33 -0
- py_spy_asyncio-0.4.2/.gitignore +25 -0
- py_spy_asyncio-0.4.2/.pre-commit-config.yaml +18 -0
- py_spy_asyncio-0.4.2/CHANGELOG.md +154 -0
- py_spy_asyncio-0.4.2/Cargo.lock +1754 -0
- py_spy_asyncio-0.4.2/Cargo.toml +60 -0
- py_spy_asyncio-0.4.2/LICENSE +21 -0
- py_spy_asyncio-0.4.2/PKG-INFO +362 -0
- py_spy_asyncio-0.4.2/README.md +345 -0
- py_spy_asyncio-0.4.2/SECURITY.md +9 -0
- py_spy_asyncio-0.4.2/build.rs +12 -0
- py_spy_asyncio-0.4.2/ci/Vagrantfile +27 -0
- py_spy_asyncio-0.4.2/ci/publish_freebsd.sh +26 -0
- py_spy_asyncio-0.4.2/ci/test_freebsd.sh +28 -0
- py_spy_asyncio-0.4.2/ci/testdata/cython_test.c +5374 -0
- py_spy_asyncio-0.4.2/ci/testdata/cython_test.pyx +12 -0
- py_spy_asyncio-0.4.2/ci/update_python_test_versions.py +142 -0
- py_spy_asyncio-0.4.2/examples/dump_traces.rs +37 -0
- py_spy_asyncio-0.4.2/generate_bindings.py +239 -0
- py_spy_asyncio-0.4.2/pyproject.toml +27 -0
- py_spy_asyncio-0.4.2/setup.cfg +24 -0
- py_spy_asyncio-0.4.2/src/asyncio.rs +742 -0
- py_spy_asyncio-0.4.2/src/binary_parser.rs +353 -0
- py_spy_asyncio-0.4.2/src/chrometrace.rs +122 -0
- py_spy_asyncio-0.4.2/src/config.rs +638 -0
- py_spy_asyncio-0.4.2/src/console_viewer.rs +680 -0
- py_spy_asyncio-0.4.2/src/coredump.rs +499 -0
- py_spy_asyncio-0.4.2/src/cython.rs +277 -0
- py_spy_asyncio-0.4.2/src/dump.rs +215 -0
- py_spy_asyncio-0.4.2/src/flamegraph.rs +102 -0
- py_spy_asyncio-0.4.2/src/lib.rs +60 -0
- py_spy_asyncio-0.4.2/src/main.rs +521 -0
- py_spy_asyncio-0.4.2/src/native_stack_trace.rs +377 -0
- py_spy_asyncio-0.4.2/src/python_bindings/mod.rs +262 -0
- py_spy_asyncio-0.4.2/src/python_bindings/v2_7_15.rs +737 -0
- py_spy_asyncio-0.4.2/src/python_bindings/v3_10_0.rs +1967 -0
- py_spy_asyncio-0.4.2/src/python_bindings/v3_11_0.rs +2099 -0
- py_spy_asyncio-0.4.2/src/python_bindings/v3_12_0.rs +16580 -0
- py_spy_asyncio-0.4.2/src/python_bindings/v3_13_0.rs +13786 -0
- py_spy_asyncio-0.4.2/src/python_bindings/v3_14_0.rs +18405 -0
- py_spy_asyncio-0.4.2/src/python_bindings/v3_3_7.rs +902 -0
- py_spy_asyncio-0.4.2/src/python_bindings/v3_4_8.rs +893 -0
- py_spy_asyncio-0.4.2/src/python_bindings/v3_5_5.rs +938 -0
- py_spy_asyncio-0.4.2/src/python_bindings/v3_6_6.rs +965 -0
- py_spy_asyncio-0.4.2/src/python_bindings/v3_7_0.rs +1082 -0
- py_spy_asyncio-0.4.2/src/python_bindings/v3_8_0.rs +1362 -0
- py_spy_asyncio-0.4.2/src/python_bindings/v3_9_5.rs +1478 -0
- py_spy_asyncio-0.4.2/src/python_data_access.rs +750 -0
- py_spy_asyncio-0.4.2/src/python_interpreters.rs +954 -0
- py_spy_asyncio-0.4.2/src/python_process_info.rs +972 -0
- py_spy_asyncio-0.4.2/src/python_spy.rs +726 -0
- py_spy_asyncio-0.4.2/src/python_threading.rs +137 -0
- py_spy_asyncio-0.4.2/src/sampler.rs +417 -0
- py_spy_asyncio-0.4.2/src/speedscope.rs +318 -0
- py_spy_asyncio-0.4.2/src/stack_trace.rs +404 -0
- py_spy_asyncio-0.4.2/src/timer.rs +73 -0
- py_spy_asyncio-0.4.2/src/utils.rs +82 -0
- py_spy_asyncio-0.4.2/src/version.rs +196 -0
- py_spy_asyncio-0.4.2/tests/integration_test.py +134 -0
- py_spy_asyncio-0.4.2/tests/integration_test.rs +685 -0
- py_spy_asyncio-0.4.2/tests/scripts/asyncio_tasks.py +27 -0
- py_spy_asyncio-0.4.2/tests/scripts/busyloop.py +7 -0
- py_spy_asyncio-0.4.2/tests/scripts/cyrillic.py +7 -0
- py_spy_asyncio-0.4.2/tests/scripts/delayed_launch.sh +2 -0
- py_spy_asyncio-0.4.2/tests/scripts/dump_subprocesses_threads.py +35 -0
- py_spy_asyncio-0.4.2/tests/scripts/local_vars.py +52 -0
- py_spy_asyncio-0.4.2/tests/scripts/longsleep.py +9 -0
- py_spy_asyncio-0.4.2/tests/scripts/negative_linenumber_offsets.py +13 -0
- py_spy_asyncio-0.4.2/tests/scripts/recursive.py +8 -0
- py_spy_asyncio-0.4.2/tests/scripts/subprocesses.py +19 -0
- py_spy_asyncio-0.4.2/tests/scripts/subprocesses_zombie_child.py +12 -0
- py_spy_asyncio-0.4.2/tests/scripts/thread_names.py +13 -0
- py_spy_asyncio-0.4.2/tests/scripts/thread_reuse.py +7 -0
- py_spy_asyncio-0.4.2/tests/scripts/unicode/360/237/222/251.py +9 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Keep GitHub Actions up to date with GitHub's Dependabot...
|
|
2
|
+
# https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot
|
|
3
|
+
# https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#package-ecosystem
|
|
4
|
+
version: 2
|
|
5
|
+
updates:
|
|
6
|
+
- package-ecosystem: github-actions
|
|
7
|
+
directory: /
|
|
8
|
+
groups:
|
|
9
|
+
github-actions:
|
|
10
|
+
patterns:
|
|
11
|
+
- "*" # Group all Actions updates into a single larger pull request
|
|
12
|
+
schedule:
|
|
13
|
+
interval: weekly
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
categories:
|
|
2
|
+
- title: "⚠ Breaking Changes"
|
|
3
|
+
labels:
|
|
4
|
+
- "breaking"
|
|
5
|
+
- title: "🚀 Features"
|
|
6
|
+
labels:
|
|
7
|
+
- "feature"
|
|
8
|
+
- "enhancement"
|
|
9
|
+
- title: "🐛 Bug Fixes"
|
|
10
|
+
labels:
|
|
11
|
+
- "fix"
|
|
12
|
+
- "bugfix"
|
|
13
|
+
- "bug"
|
|
14
|
+
- title: "📄 Documentation"
|
|
15
|
+
labels:
|
|
16
|
+
- "documentation"
|
|
17
|
+
- title: "🧰 Maintenance"
|
|
18
|
+
labels:
|
|
19
|
+
- "chore"
|
|
20
|
+
- "ci"
|
|
21
|
+
- "dependencies"
|
|
22
|
+
|
|
23
|
+
exclude-labels:
|
|
24
|
+
- "skip-changelog"
|
|
25
|
+
|
|
26
|
+
change-template: "- $TITLE @$AUTHOR (#$NUMBER)"
|
|
27
|
+
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
|
28
|
+
version-resolver:
|
|
29
|
+
major:
|
|
30
|
+
labels:
|
|
31
|
+
- "major"
|
|
32
|
+
minor:
|
|
33
|
+
labels:
|
|
34
|
+
- "minor"
|
|
35
|
+
patch:
|
|
36
|
+
labels:
|
|
37
|
+
- "patch"
|
|
38
|
+
default: patch
|
|
39
|
+
|
|
40
|
+
template: |
|
|
41
|
+
## Changes
|
|
42
|
+
|
|
43
|
+
$CHANGES
|
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
name: Build
|
|
2
|
+
permissions:
|
|
3
|
+
contents: read
|
|
4
|
+
pull-requests: write
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
push:
|
|
9
|
+
branches: [master]
|
|
10
|
+
tags:
|
|
11
|
+
- v*
|
|
12
|
+
pull_request:
|
|
13
|
+
branches: [master]
|
|
14
|
+
|
|
15
|
+
env:
|
|
16
|
+
CARGO_TERM_COLOR: always
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
lint:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v6
|
|
23
|
+
- uses: actions/setup-python@v6
|
|
24
|
+
with:
|
|
25
|
+
python-version: 3.11
|
|
26
|
+
- uses: pre-commit/action@v3.0.1
|
|
27
|
+
|
|
28
|
+
build:
|
|
29
|
+
runs-on: ${{ matrix.os }}
|
|
30
|
+
needs: [lint]
|
|
31
|
+
strategy:
|
|
32
|
+
fail-fast: false
|
|
33
|
+
matrix:
|
|
34
|
+
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
35
|
+
steps:
|
|
36
|
+
- uses: actions/checkout@v6
|
|
37
|
+
- uses: Swatinem/rust-cache@v2
|
|
38
|
+
- name: Install Dependencies
|
|
39
|
+
run: sudo apt install libunwind-dev
|
|
40
|
+
if: runner.os == 'Linux'
|
|
41
|
+
- uses: actions/setup-python@v6
|
|
42
|
+
with:
|
|
43
|
+
python-version: 3.9
|
|
44
|
+
- name: Build
|
|
45
|
+
run: cargo build --release --verbose --examples
|
|
46
|
+
- name: Build library
|
|
47
|
+
run: cargo build --release --verbose --lib --no-default-features
|
|
48
|
+
- uses: actions/setup-python@v6
|
|
49
|
+
with:
|
|
50
|
+
python-version: 3.9
|
|
51
|
+
- name: Install optional numpy dependency
|
|
52
|
+
run: pip install numpy>=2
|
|
53
|
+
- name: Test
|
|
54
|
+
id: test
|
|
55
|
+
continue-on-error: true
|
|
56
|
+
run: cargo test --release
|
|
57
|
+
- name: Test (retry#1)
|
|
58
|
+
id: test1
|
|
59
|
+
run: cargo test --release
|
|
60
|
+
if: steps.test.outcome=='failure'
|
|
61
|
+
continue-on-error: true
|
|
62
|
+
- name: Test (retry#2)
|
|
63
|
+
run: cargo test --release
|
|
64
|
+
if: steps.test1.outcome=='failure'
|
|
65
|
+
- name: Build Wheel
|
|
66
|
+
run: |
|
|
67
|
+
pip install --upgrade maturin
|
|
68
|
+
maturin build --release -o dist --all-features
|
|
69
|
+
if: runner.os == 'Windows'
|
|
70
|
+
- name: Build Wheel - universal2
|
|
71
|
+
env:
|
|
72
|
+
DEVELOPER_DIR: /Applications/Xcode.app/Contents/Developer
|
|
73
|
+
SDKROOT: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
|
|
74
|
+
MACOSX_DEPLOYMENT_TARGET: 10.9
|
|
75
|
+
run: |
|
|
76
|
+
rustup target add aarch64-apple-darwin
|
|
77
|
+
rustup target add x86_64-apple-darwin
|
|
78
|
+
pip install --upgrade maturin
|
|
79
|
+
maturin build --release -o dist
|
|
80
|
+
maturin build --release -o dist --target universal2-apple-darwin
|
|
81
|
+
if: matrix.os == 'macos-latest'
|
|
82
|
+
- name: Rename Wheels
|
|
83
|
+
run: |
|
|
84
|
+
python3 -c "import shutil; import glob; wheels = glob.glob('dist/*.whl'); [shutil.move(wheel, wheel.replace('py3', 'py2.py3')) for wheel in wheels if 'py2' not in wheel]"
|
|
85
|
+
if: runner.os != 'Linux'
|
|
86
|
+
- name: Upload Windows Wheels
|
|
87
|
+
uses: actions/upload-artifact@v7
|
|
88
|
+
with:
|
|
89
|
+
name: wheels-windows
|
|
90
|
+
path: dist
|
|
91
|
+
if: runner.os == 'Windows'
|
|
92
|
+
- name: Upload Macos Wheels
|
|
93
|
+
uses: actions/upload-artifact@v7
|
|
94
|
+
with:
|
|
95
|
+
name: wheels-macos
|
|
96
|
+
path: dist
|
|
97
|
+
if: runner.os == 'macOS'
|
|
98
|
+
|
|
99
|
+
build-linux-cross:
|
|
100
|
+
runs-on: ubuntu-latest
|
|
101
|
+
needs: [lint]
|
|
102
|
+
strategy:
|
|
103
|
+
fail-fast: false
|
|
104
|
+
matrix:
|
|
105
|
+
target:
|
|
106
|
+
[
|
|
107
|
+
i686-unknown-linux-musl,
|
|
108
|
+
armv7-unknown-linux-musleabihf,
|
|
109
|
+
aarch64-unknown-linux-musl,
|
|
110
|
+
x86_64-unknown-linux-musl,
|
|
111
|
+
]
|
|
112
|
+
container:
|
|
113
|
+
image: ghcr.io/benfred/rust-musl-cross:${{ matrix.target }}
|
|
114
|
+
env:
|
|
115
|
+
RUSTUP_HOME: /root/.rustup
|
|
116
|
+
CARGO_HOME: /root/.cargo
|
|
117
|
+
steps:
|
|
118
|
+
- uses: actions/checkout@v6
|
|
119
|
+
- uses: Swatinem/rust-cache@v2
|
|
120
|
+
- name: Build
|
|
121
|
+
run: |
|
|
122
|
+
python3 -m pip install --upgrade maturin
|
|
123
|
+
maturin build --release -o dist --target ${{ matrix.target }} --features unwind
|
|
124
|
+
maturin sdist -o dist
|
|
125
|
+
if: ${{ matrix.target != 'i686-unknown-linux-musl' }}
|
|
126
|
+
- name: Build
|
|
127
|
+
run: |
|
|
128
|
+
python3 -m pip install --upgrade maturin
|
|
129
|
+
maturin build --release -o dist --target ${{ matrix.target }}
|
|
130
|
+
maturin sdist -o dist
|
|
131
|
+
if: ${{ matrix.target == 'i686-unknown-linux-musl' }}
|
|
132
|
+
- name: Rename Wheels
|
|
133
|
+
run: |
|
|
134
|
+
python3 -c "import shutil; import glob; wheels = glob.glob('dist/*.whl'); [shutil.move(wheel, wheel.replace('py3', 'py2.py3')) for wheel in wheels if 'py2' not in wheel]"
|
|
135
|
+
- name: Upload wheels
|
|
136
|
+
uses: actions/upload-artifact@v7
|
|
137
|
+
with:
|
|
138
|
+
name: wheels-${{ matrix.target }}
|
|
139
|
+
path: dist
|
|
140
|
+
|
|
141
|
+
build-freebsd:
|
|
142
|
+
runs-on: ubuntu-22.04
|
|
143
|
+
needs: [lint]
|
|
144
|
+
timeout-minutes: 30
|
|
145
|
+
strategy:
|
|
146
|
+
matrix:
|
|
147
|
+
box:
|
|
148
|
+
- freebsd-14
|
|
149
|
+
steps:
|
|
150
|
+
- uses: actions/checkout@v6
|
|
151
|
+
- name: Display CPU info
|
|
152
|
+
run: lscpu
|
|
153
|
+
- name: Install VM tools
|
|
154
|
+
run: |
|
|
155
|
+
sudo apt-get update -qq
|
|
156
|
+
sudo apt-get install -qq -o=Dpkg::Use-Pty=0 moreutils
|
|
157
|
+
sudo chronic apt-get install -qq -o=Dpkg::Use-Pty=0 vagrant virtualbox qemu libvirt-daemon-system
|
|
158
|
+
- name: Set up VM
|
|
159
|
+
shell: sudo bash {0}
|
|
160
|
+
run: |
|
|
161
|
+
vagrant plugin install vagrant-libvirt
|
|
162
|
+
vagrant plugin install vagrant-scp
|
|
163
|
+
ln -sf ci/Vagrantfile Vagrantfile
|
|
164
|
+
vagrant status
|
|
165
|
+
vagrant up --no-tty --provider libvirt ${{ matrix.box }}
|
|
166
|
+
- name: Build and test
|
|
167
|
+
shell: sudo bash {0}
|
|
168
|
+
run: vagrant ssh ${{ matrix.box }} -- bash /vagrant/ci/test_freebsd.sh
|
|
169
|
+
- name: Retrieve build artifacts for caching purposes
|
|
170
|
+
shell: sudo bash {0}
|
|
171
|
+
run: |
|
|
172
|
+
vagrant scp ${{ matrix.box }}:/vagrant/build-artifacts.tar build-artifacts.tar
|
|
173
|
+
ls -ahl build-artifacts.tar
|
|
174
|
+
- name: Prepare binary for upload
|
|
175
|
+
run: |
|
|
176
|
+
tar xf build-artifacts.tar target/release/py-spy
|
|
177
|
+
mv target/release/py-spy py-spy-x86_64-unknown-freebsd
|
|
178
|
+
- name: Upload Binaries
|
|
179
|
+
uses: actions/upload-artifact@v7
|
|
180
|
+
with:
|
|
181
|
+
name: py-spy-x86_64-unknown-freebsd
|
|
182
|
+
path: py-spy-x86_64-unknown-freebsd
|
|
183
|
+
|
|
184
|
+
test-wheels:
|
|
185
|
+
name: Test Wheels
|
|
186
|
+
needs: [build, build-linux-cross]
|
|
187
|
+
runs-on: ${{ matrix.os }}
|
|
188
|
+
strategy:
|
|
189
|
+
fail-fast: false
|
|
190
|
+
# automatically generated by ci/update_python_test_versions.py
|
|
191
|
+
matrix:
|
|
192
|
+
python-version:
|
|
193
|
+
[
|
|
194
|
+
3.6.7,
|
|
195
|
+
3.6.15,
|
|
196
|
+
3.7.1,
|
|
197
|
+
3.7.17,
|
|
198
|
+
3.8.0,
|
|
199
|
+
3.8.18,
|
|
200
|
+
3.9.0,
|
|
201
|
+
3.9.25,
|
|
202
|
+
3.10.0,
|
|
203
|
+
3.10.20,
|
|
204
|
+
3.11.0,
|
|
205
|
+
3.11.15,
|
|
206
|
+
3.12.0,
|
|
207
|
+
3.12.13,
|
|
208
|
+
3.13.0,
|
|
209
|
+
3.13.1,
|
|
210
|
+
3.13.2,
|
|
211
|
+
3.13.3,
|
|
212
|
+
3.13.4,
|
|
213
|
+
3.13.5,
|
|
214
|
+
3.13.6,
|
|
215
|
+
3.13.7,
|
|
216
|
+
3.13.8,
|
|
217
|
+
3.13.9,
|
|
218
|
+
3.13.10,
|
|
219
|
+
3.13.11,
|
|
220
|
+
3.13.12,
|
|
221
|
+
3.13.13,
|
|
222
|
+
3.14.0,
|
|
223
|
+
3.14.1,
|
|
224
|
+
3.14.2,
|
|
225
|
+
3.14.3,
|
|
226
|
+
3.14.4,
|
|
227
|
+
]
|
|
228
|
+
os: [ubuntu-22.04, macos-latest, windows-latest, ubuntu-22.04-arm]
|
|
229
|
+
# some versions of python can't be tested on GHA with osx because of SIP:
|
|
230
|
+
exclude:
|
|
231
|
+
- os: macos-latest
|
|
232
|
+
python-version: 3.6.7
|
|
233
|
+
- os: ubuntu-22.04
|
|
234
|
+
python-version: 3.6.7
|
|
235
|
+
- os: ubuntu-22.04-arm
|
|
236
|
+
python-version: 3.6.7
|
|
237
|
+
- os: macos-latest
|
|
238
|
+
python-version: 3.6.15
|
|
239
|
+
- os: windows-latest
|
|
240
|
+
python-version: 3.6.15
|
|
241
|
+
- os: ubuntu-22.04
|
|
242
|
+
python-version: 3.6.15
|
|
243
|
+
- os: ubuntu-22.04-arm
|
|
244
|
+
python-version: 3.6.15
|
|
245
|
+
- os: macos-latest
|
|
246
|
+
python-version: 3.7.1
|
|
247
|
+
- os: ubuntu-22.04
|
|
248
|
+
python-version: 3.7.1
|
|
249
|
+
- os: ubuntu-22.04-arm
|
|
250
|
+
python-version: 3.7.1
|
|
251
|
+
- os: macos-latest
|
|
252
|
+
python-version: 3.7.17
|
|
253
|
+
- os: windows-latest
|
|
254
|
+
python-version: 3.7.17
|
|
255
|
+
- os: ubuntu-22.04-arm
|
|
256
|
+
python-version: 3.7.17
|
|
257
|
+
- os: macos-latest
|
|
258
|
+
python-version: 3.8.0
|
|
259
|
+
- os: ubuntu-22.04
|
|
260
|
+
python-version: 3.8.0
|
|
261
|
+
- os: ubuntu-22.04-arm
|
|
262
|
+
python-version: 3.8.0
|
|
263
|
+
- os: macos-latest
|
|
264
|
+
python-version: 3.8.18
|
|
265
|
+
- os: windows-latest
|
|
266
|
+
python-version: 3.8.18
|
|
267
|
+
- os: macos-latest
|
|
268
|
+
python-version: 3.9.0
|
|
269
|
+
- os: ubuntu-22.04
|
|
270
|
+
python-version: 3.9.0
|
|
271
|
+
- os: ubuntu-22.04-arm
|
|
272
|
+
python-version: 3.9.0
|
|
273
|
+
- os: macos-latest
|
|
274
|
+
python-version: 3.9.25
|
|
275
|
+
- os: windows-latest
|
|
276
|
+
python-version: 3.9.25
|
|
277
|
+
- os: macos-latest
|
|
278
|
+
python-version: 3.10.0
|
|
279
|
+
- os: ubuntu-22.04
|
|
280
|
+
python-version: 3.10.0
|
|
281
|
+
- os: ubuntu-22.04-arm
|
|
282
|
+
python-version: 3.10.0
|
|
283
|
+
- os: macos-latest
|
|
284
|
+
python-version: 3.10.20
|
|
285
|
+
- os: windows-latest
|
|
286
|
+
python-version: 3.10.20
|
|
287
|
+
- os: macos-latest
|
|
288
|
+
python-version: 3.11.15
|
|
289
|
+
- os: windows-latest
|
|
290
|
+
python-version: 3.11.15
|
|
291
|
+
- os: macos-latest
|
|
292
|
+
python-version: 3.12.13
|
|
293
|
+
- os: windows-latest
|
|
294
|
+
python-version: 3.12.13
|
|
295
|
+
|
|
296
|
+
steps:
|
|
297
|
+
- uses: actions/checkout@v6
|
|
298
|
+
- uses: actions/download-artifact@v8
|
|
299
|
+
with:
|
|
300
|
+
pattern: wheels-*
|
|
301
|
+
merge-multiple: true
|
|
302
|
+
- uses: actions/setup-python@v6
|
|
303
|
+
with:
|
|
304
|
+
python-version: ${{ matrix.python-version }}
|
|
305
|
+
- name: Install wheel
|
|
306
|
+
run: |
|
|
307
|
+
pip install --force-reinstall --no-index --find-links . py-spy-asyncio
|
|
308
|
+
- name: Test Wheel
|
|
309
|
+
id: test
|
|
310
|
+
run: python tests/integration_test.py
|
|
311
|
+
if: runner.os != 'macOS'
|
|
312
|
+
continue-on-error: true
|
|
313
|
+
- name: Test Wheel (Retry#1)
|
|
314
|
+
id: test1
|
|
315
|
+
run: python tests/integration_test.py
|
|
316
|
+
if: steps.test.outcome=='failure'
|
|
317
|
+
continue-on-error: true
|
|
318
|
+
- name: Test Wheel (Retry#2)
|
|
319
|
+
id: test2
|
|
320
|
+
run: python tests/integration_test.py
|
|
321
|
+
if: steps.test1.outcome=='failure'
|
|
322
|
+
- name: Test macOS Wheel
|
|
323
|
+
id: osx_test
|
|
324
|
+
run: sudo "PATH=$PATH" python tests/integration_test.py
|
|
325
|
+
if: runner.os == 'macOS'
|
|
326
|
+
continue-on-error: true
|
|
327
|
+
- name: Test macOS Wheel (Retry#1)
|
|
328
|
+
id: osx_test1
|
|
329
|
+
run: sudo "PATH=$PATH" python tests/integration_test.py
|
|
330
|
+
if: steps.osx_test.outcome=='failure'
|
|
331
|
+
continue-on-error: true
|
|
332
|
+
- name: Test macOS Wheel (Retry#2)
|
|
333
|
+
id: osx_test2
|
|
334
|
+
run: sudo "PATH=$PATH" python tests/integration_test.py
|
|
335
|
+
if: steps.osx_test1.outcome=='failure'
|
|
336
|
+
|
|
337
|
+
release:
|
|
338
|
+
name: Release
|
|
339
|
+
runs-on: ubuntu-latest
|
|
340
|
+
if: "startsWith(github.ref, 'refs/tags/')"
|
|
341
|
+
needs: [test-wheels]
|
|
342
|
+
permissions:
|
|
343
|
+
contents: write
|
|
344
|
+
steps:
|
|
345
|
+
- uses: actions/download-artifact@v8
|
|
346
|
+
with:
|
|
347
|
+
pattern: wheels-*
|
|
348
|
+
merge-multiple: true
|
|
349
|
+
- name: Create GitHub Release
|
|
350
|
+
uses: fnkr/github-action-ghr@v1.3
|
|
351
|
+
env:
|
|
352
|
+
GHR_PATH: .
|
|
353
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
354
|
+
- name: Install Dependencies
|
|
355
|
+
run: sudo apt install libunwind-dev
|
|
356
|
+
if: runner.os == 'Linux'
|
|
357
|
+
- uses: actions/setup-python@v6
|
|
358
|
+
with:
|
|
359
|
+
python-version: 3.9
|
|
360
|
+
- name: Push to PyPi
|
|
361
|
+
env:
|
|
362
|
+
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
|
|
363
|
+
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
|
|
364
|
+
run: |
|
|
365
|
+
pip install --upgrade wheel pip setuptools twine
|
|
366
|
+
twine upload *
|
|
367
|
+
rm *
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
name: Linux Binary
|
|
2
|
+
permissions:
|
|
3
|
+
contents: read
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
push:
|
|
8
|
+
branches: [master]
|
|
9
|
+
tags:
|
|
10
|
+
- v*
|
|
11
|
+
|
|
12
|
+
env:
|
|
13
|
+
CARGO_TERM_COLOR: always
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
build:
|
|
17
|
+
# ponytail: 22.04 for an older glibc baseline, so the binary runs on more distros
|
|
18
|
+
runs-on: ubuntu-22.04
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v6
|
|
21
|
+
- uses: Swatinem/rust-cache@v2
|
|
22
|
+
- name: Build
|
|
23
|
+
run: cargo build --release --target=x86_64-unknown-linux-gnu
|
|
24
|
+
- uses: actions/upload-artifact@v7
|
|
25
|
+
with:
|
|
26
|
+
name: py-spy-x86_64-unknown-linux-gnu
|
|
27
|
+
path: target/x86_64-unknown-linux-gnu/release/py-spy
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# draft release notes with https://github.com/release-drafter/release-drafter
|
|
2
|
+
name: Release Drafter
|
|
3
|
+
permissions:
|
|
4
|
+
contents: write
|
|
5
|
+
pull-requests: write
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
push:
|
|
9
|
+
branches:
|
|
10
|
+
- master
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
update_release_draft:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
# Drafts your next Release notes as Pull Requests are merged into "master"
|
|
18
|
+
- uses: release-drafter/release-drafter@v7
|
|
19
|
+
env:
|
|
20
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
name: Update Python Test Versions
|
|
2
|
+
permissions:
|
|
3
|
+
contents: write
|
|
4
|
+
pull-requests: write
|
|
5
|
+
on:
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
schedule:
|
|
8
|
+
- cron: "0 1 * * *"
|
|
9
|
+
jobs:
|
|
10
|
+
update-dep:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v6
|
|
14
|
+
with:
|
|
15
|
+
ssh-key: ${{ secrets.SSH_PRIVATE_KEY }}
|
|
16
|
+
- uses: actions/setup-python@v6
|
|
17
|
+
with:
|
|
18
|
+
python-version: 3.9
|
|
19
|
+
- name: Install
|
|
20
|
+
run: pip install --upgrade requests pyyaml
|
|
21
|
+
- name: Scan for new python versions
|
|
22
|
+
run: python ci/update_python_test_versions.py
|
|
23
|
+
- name: Format results
|
|
24
|
+
run: npx prettier --write ".github/workflows/update_python_test.yml"
|
|
25
|
+
- name: Create Pull Request
|
|
26
|
+
uses: peter-evans/create-pull-request@v8
|
|
27
|
+
with:
|
|
28
|
+
commit-message: Update tested python versions
|
|
29
|
+
title: Update tested python versions
|
|
30
|
+
branch: update-python-versions
|
|
31
|
+
labels: |
|
|
32
|
+
skip-changelog
|
|
33
|
+
dependencies
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/target
|
|
2
|
+
remoteprocess/target
|
|
3
|
+
**/*.rs.bk
|
|
4
|
+
|
|
5
|
+
# Python Distribution / packaging
|
|
6
|
+
.Python
|
|
7
|
+
env/
|
|
8
|
+
build/
|
|
9
|
+
develop-eggs/
|
|
10
|
+
dist/
|
|
11
|
+
downloads/
|
|
12
|
+
eggs/
|
|
13
|
+
.eggs/
|
|
14
|
+
lib/
|
|
15
|
+
lib64/
|
|
16
|
+
parts/
|
|
17
|
+
sdist/
|
|
18
|
+
var/
|
|
19
|
+
*.egg-info/
|
|
20
|
+
.installed.cfg
|
|
21
|
+
*.egg
|
|
22
|
+
|
|
23
|
+
.vscode/
|
|
24
|
+
**/.vagrant
|
|
25
|
+
*.log
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/codespell-project/codespell
|
|
3
|
+
rev: v2.2.4
|
|
4
|
+
hooks:
|
|
5
|
+
- id: codespell
|
|
6
|
+
additional_dependencies: [tomli]
|
|
7
|
+
args: ["--toml", "pyproject.toml"]
|
|
8
|
+
exclude: (?x)^(ci/testdata.*|images.*)$
|
|
9
|
+
- repo: https://github.com/doublify/pre-commit-rust
|
|
10
|
+
rev: v1.0
|
|
11
|
+
hooks:
|
|
12
|
+
- id: fmt
|
|
13
|
+
- id: cargo-check
|
|
14
|
+
- repo: https://github.com/rbubley/mirrors-prettier
|
|
15
|
+
rev: v3.3.3
|
|
16
|
+
hooks:
|
|
17
|
+
- id: prettier
|
|
18
|
+
types: [yaml]
|