-
Notifications
You must be signed in to change notification settings - Fork 3
PyIsolate Update: Production-Ready Process Isolation for ComfyUI #3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
16ddb98
aee01de
4027e0c
58ba87d
7f2b455
13e5c72
f045210
458d11a
846e4cc
ef0a5d7
9f97425
1a6ef9b
a54aa19
d785fa3
4baa626
8699bfa
e2ad9e7
cd07469
8d83a4b
716f728
dbca9bb
28e7018
e0540f8
fcb2489
b4cdd9a
99e742e
465c72b
029ae2c
2b41358
447a0a1
1b123f6
4875936
809814d
04a14e5
77f7de7
03b087b
0e7b84c
1f7e4c9
3f8bf6c
257244c
619ce36
3a8f05e
1e05fa7
1f4214b
09613c7
c878955
2ec9e0e
7fd0267
2c55eb7
2f23230
7433c94
50a9557
93c6936
9f4ef60
48e313f
3b47c9e
47a6ee0
aeb4698
a7a5a65
80ae924
51dd2f8
8ca943d
39fab22
84ecea1
04efa92
09d7278
937a9f2
02feed0
2c239a2
d688f46
a50a329
0af7562
74a8fcb
9d6fd09
d5e344d
f8a71b8
83fb88e
1a149c1
cc269ea
2c42a56
c50377a
cec8eca
ec7ef92
d52a779
4492d7c
30dffd5
8b2265b
8246ea4
9b06722
f11b651
6afd232
dfe4f23
54ec576
6353304
41e5778
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| [run] | ||
| parallel = True | ||
| sigterm = True | ||
| source = . | ||
| omit = | ||
| tests/* | ||
| .venv/* | ||
| branch = True | ||
|
|
||
| [report] | ||
| show_missing = True | ||
| skip_covered = False |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,152 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| name: Build Wheels | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| on: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| pull_request: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| push: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| branches: [main] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| workflow_dispatch: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| release: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| types: [published] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| permissions: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| contents: read | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| concurrency: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| group: build-wheels-${{ github.workflow }}-${{ github.ref || github.run_id }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cancel-in-progress: false | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| jobs: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| build: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| name: Build ${{ matrix.os }} py${{ matrix.python-version }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| runs-on: ${{ matrix.os }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| timeout-minutes: 20 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| strategy: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fail-fast: false | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| matrix: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| os: [ubuntu-latest, macos-latest, windows-latest] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| python-version: ["3.10", "3.11", "3.12"] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+23
to
+27
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick | 🔵 Trivial 🧩 Analysis chain🏁 Script executed: #!/bin/bash
# Get the repository structure overview
echo "=== Repository structure ==="
git ls-files | head -30
echo -e "\n=== Looking for setup.py, setup.cfg, pyproject.toml ==="
fd -t f -e py -g 'setup.py' -o -g 'setup.cfg' -o -g 'pyproject.toml'
echo -e "\n=== Checking for C/C++ source files ==="
fd -e c -e cpp -e h -e pyx | head -20Repository: Comfy-Org/pyisolate Length of output: 1006 🏁 Script executed: #!/bin/bash
echo "=== Looking for pyproject.toml ==="
find . -maxdepth 2 -name 'pyproject.toml' -type f
echo -e "\n=== Looking for setup.py or setup.cfg ==="
find . -maxdepth 2 -name 'setup.py' -o -name 'setup.cfg' -type f
echo -e "\n=== Checking for C/C++ files ==="
find . -type f \( -name '*.c' -o -name '*.cpp' -o -name '*.h' -o -name '*.pyx' -o -name '*.pxd' \)
echo -e "\n=== Looking for build-related files ==="
find . -maxdepth 2 -name 'build' -o -name 'CMakeLists.txt' -o -name 'Makefile'
echo -e "\n=== Checking MANIFEST.in ==="
cat MANIFEST.inRepository: Comfy-Org/pyisolate Length of output: 469 🏁 Script executed: #!/bin/bash
echo "=== pyproject.toml ==="
cat pyproject.toml
echo -e "\n=== setup.py ==="
cat setup.pyRepository: Comfy-Org/pyisolate Length of output: 4279 🏁 Script executed: #!/bin/bash
echo "=== build-wheels.yml workflow ==="
cat .github/workflows/build-wheels.ymlRepository: Comfy-Org/pyisolate Length of output: 4378 Redundant cross-platform builds for a pure Python package. Pyisolate has no C extensions and uses a standard setuptools build backend, which means Additionally, Python 3.13 (released Oct 2024) should be added to the test matrix if the project supports it, as the 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| steps: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Checkout | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| uses: actions/checkout@v4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Setup Python | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| uses: actions/setup-python@v5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| with: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| python-version: ${{ matrix.python-version }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Install build tooling | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| run: | | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| python -m pip install --upgrade pip | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| python -m pip install build | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Build wheel and sdist | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| run: python -m build | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Upload build artifacts | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| uses: actions/upload-artifact@v4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| with: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| name: dist-${{ matrix.os }}-py${{ matrix.python-version }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| path: dist/* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if-no-files-found: error | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| retention-days: 7 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| smoke-test: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| name: Smoke Test Built Artifacts | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| runs-on: ubuntu-latest | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| timeout-minutes: 15 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| needs: [build] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| steps: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Setup Python | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| uses: actions/setup-python@v5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| with: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| python-version: "3.11" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Download artifacts | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| uses: actions/download-artifact@v4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| with: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| name: dist-ubuntu-latest-py3.11 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| path: artifacts | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Install wheel and run smoke test | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| shell: bash | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| run: | | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| python -m venv .venv | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| source .venv/bin/activate | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| python -m pip install --upgrade pip | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| wheel_path="$(find artifacts -type f -name '*.whl' | head -n 1)" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if [ -z "$wheel_path" ]; then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| echo "No wheel artifact found." | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| exit 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| python -m pip install "$wheel_path" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sdist_path="$(find artifacts -type f -name '*.tar.gz' | head -n 1)" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if [ -z "$sdist_path" ]; then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| echo "No sdist artifact found." | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| exit 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| temp_dir="$(mktemp -d)" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cd "$temp_dir" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| python -c "import pyisolate; print(pyisolate.__version__)" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+86
to
+94
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. sdist is located but never tested. Lines 86-90 find the sdist and fail if absent, but the path is never used — the sdist is neither installed nor verified. Either install it in a separate venv to confirm it builds/imports correctly, or remove this dead check (the publish job already validates sdist presence). ♻️ Option A: Remove dead check python -m pip install "$wheel_path"
- sdist_path="$(find artifacts -type f -name '*.tar.gz' | head -n 1)"
- if [ -z "$sdist_path" ]; then
- echo "No sdist artifact found."
- exit 1
- fi
-
temp_dir="$(mktemp -d)"
cd "$temp_dir"
python -c "import pyisolate; print(pyisolate.__version__)"♻️ Option B: Actually test the sdist sdist_path="$(find artifacts -type f -name '*.tar.gz' | head -n 1)"
if [ -z "$sdist_path" ]; then
echo "No sdist artifact found."
exit 1
fi
temp_dir="$(mktemp -d)"
cd "$temp_dir"
python -c "import pyisolate; print(pyisolate.__version__)"
+
+ # Verify sdist builds and installs correctly
+ python -m venv .venv-sdist
+ source .venv-sdist/bin/activate
+ python -m pip install --upgrade pip
+ python -m pip install "$OLDPWD/$sdist_path"
+ python -c "import pyisolate; print(pyisolate.__version__)"📝 Committable suggestion
Suggested change
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| publish: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| name: Publish To PyPI (Trusted Publishing) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| runs-on: ubuntu-latest | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| timeout-minutes: 10 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| needs: [build, smoke-test] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if: >- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| github.repository == 'Comfy-Org/pyisolate' && | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| github.event_name == 'release' && | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| github.event.action == 'published' && | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| github.event.release.tag_name != '' && | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| startsWith(github.event.release.tag_name, 'v') | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| permissions: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| id-token: write | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| contents: read | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| concurrency: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| group: publish-pypi-${{ github.event.release.tag_name }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cancel-in-progress: false | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| steps: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Download artifacts | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| uses: actions/download-artifact@v4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| with: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| pattern: dist-* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| merge-multiple: false | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| path: downloaded | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Collect distributions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| shell: bash | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| run: | | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| mkdir -p dist | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| find downloaded -type f \( -name "*.whl" -o -name "*.tar.gz" \) -print0 | while IFS= read -r -d '' src; do | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| base="$(basename "$src")" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| dest="dist/$base" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if [ -e "$dest" ]; then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Deduplicate byte-identical files produced in multiple matrix legs. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if cmp -s "$src" "$dest"; then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| continue | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| echo "Conflicting distribution filename with different content: $base" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| exit 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cp "$src" "$dest" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| done | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| wheel_count="$(find dist -maxdepth 1 -type f -name '*.whl' | wc -l)" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sdist_count="$(find dist -maxdepth 1 -type f -name '*.tar.gz' | wc -l)" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if [ "$wheel_count" -eq 0 ] || [ "$sdist_count" -eq 0 ]; then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| echo "Expected at least one wheel and one sdist for publish." | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| exit 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ls -l dist | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+122
to
+148
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick | 🔵 Trivial Correction to previous comment: GitHub Actions' ♻️ More robust alternative using process substitution- find downloaded -type f \( -name "*.whl" -o -name "*.tar.gz" \) -print0 | while IFS= read -r -d '' src; do
+ while IFS= read -r -d '' src; do
base="$(basename "$src")"
dest="dist/$base"
if [ -e "$dest" ]; then
if cmp -s "$src" "$dest"; then
continue
fi
echo "Conflicting distribution filename with different content: $base"
exit 1
fi
cp "$src" "$dest"
- done
+ done < <(find downloaded -type f \( -name "*.whl" -o -name "*.tar.gz" \) -print0)📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents
The 🐛 Proposed fix using process substitution - name: Collect distributions
shell: bash
run: |
+ set -euo pipefail
mkdir -p dist
- find downloaded -type f \( -name "*.whl" -o -name "*.tar.gz" \) -print0 | while IFS= read -r -d '' src; do
+ while IFS= read -r -d '' src; do
base="$(basename "$src")"
dest="dist/$base"
if [ -e "$dest" ]; then
# Deduplicate byte-identical files produced in multiple matrix legs.
if cmp -s "$src" "$dest"; then
continue
fi
echo "Conflicting distribution filename with different content: $base"
exit 1
fi
cp "$src" "$dest"
- done
+ done < <(find downloaded -type f \( -name "*.whl" -o -name "*.tar.gz" \) -print0)
wheel_count="$(find dist -maxdepth 1 -type f -name '*.whl' | wc -l)"🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Publish to PyPI via OIDC | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| uses: pypa/gh-action-pypi-publish@release/v1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| with: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| packages-dir: dist | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+149
to
+152
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🌐 Web query:
💡 Result: For pypa/gh-action-pypi-publish, the latest 2025 release was v1.13.0 (released Sep 4, 2025) [1]. That release corresponds to commit So, Sources: [1] [2] 🌐 Web query:
💡 Result: Why not use branches/tags (e.g.,
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Publish to PyPI via OIDC | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| packages-dir: dist | |
| - name: Publish to PyPI via OIDC | |
| uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0 | |
| with: | |
| packages-dir: dist |
🤖 Prompt for AI Agents
In @.github/workflows/build-wheels.yml around lines 149 - 152, The workflow
currently uses the mutable ref "pypa/gh-action-pypi-publish@release/v1" for the
Publish to PyPI via OIDC step; replace that ref with the specific commit SHA for
the current release to pin the action (use the commit SHA from the action's
repository release you intend to use) and update any other high-risk actions
(actions/checkout@v4, actions/setup-python@v5, actions/upload-artifact@v4,
actions/download-artifact@v4) to their respective commit SHAs as well so the
publish step (and other artifact steps) run a fixed, auditable version instead
of a branch/tag ref.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -14,7 +14,7 @@ jobs: | |
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| python-version: ['3.9', '3.11'] | ||
| python-version: ['3.10', '3.11'] | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
# Check if Python version requirements are documented in pyproject.toml or setup.py
echo "=== Checking pyproject.toml for python-requires ==="
if fd -t f "pyproject.toml" --max-one-result; then
echo "Found pyproject.toml, checking for python requirement..."
fd -t f "pyproject.toml" --exec cat {} \; | grep -E "(requires-python|python)" || echo "No explicit python requirement found in pyproject.toml"
fi
echo ""
echo "=== Checking setup.py for python_requires ==="
if fd -t f "setup.py" --max-one-result; then
echo "Found setup.py, checking for python_requires..."
fd -t f "setup.py" --exec cat {} \; | grep -i "python_requires" || echo "No python_requires found in setup.py"
fi
echo ""
echo "=== Checking setup.cfg for python version constraints ==="
if fd -t f "setup.cfg" --max-one-result; then
echo "Found setup.cfg, checking for python version constraints..."
fd -t f "setup.cfg" --exec cat {} \; | grep -i "python" || echo "No python constraints found"
fi
echo ""
echo "=== Checking README for Python version mentions ==="
if fd -t f "README*" --max-one-result; then
fd -t f "README*" --exec grep -i "python 3\." {} \; || echo "No Python version mentioned in README"
fi
echo ""
echo "=== Checking workflow file to confirm the change ==="
cat -n .github/workflows/pytorch.yml | sed -n '15,20p'Repository: Comfy-Org/pyisolate Length of output: 1474 🏁 Script executed: #!/bin/bash
# Search for any Python version requirements across the repo
echo "=== Searching for Python version mentions in all text files ==="
rg -i "python.*3\.[0-9]" --type py --type toml --type yaml --type md --type txt -B 2 -A 2 || echo "No Python version mentions found"
echo ""
echo "=== Checking if code uses Python 3.10+ specific features ==="
echo "Checking for match statements (Python 3.10+ feature)..."
rg "^\s*match\s+" --type py -l || echo "No match statements found"
echo ""
echo "=== Searching for any .python-version or pyenv files ==="
fd -t f ".python-version" -o "pyenv" --hidden || echo "No python-version or pyenv files"
echo ""
echo "=== Checking git history for the workflow change ==="
git log --oneline --all -- ".github/workflows/pytorch.yml" | head -20 || echo "Cannot access git history"
echo ""
echo "=== Checking file structure for setup/config files ==="
ls -la | grep -E "setup|pyproject|requirements" || echo "No setup/config files found in root"Repository: Comfy-Org/pyisolate Length of output: 4165 Update documentation to reflect Python 3.10+ minimum requirement. The Python version matrix change from
🤖 Prompt for AI Agents |
||
| pytorch-version: ['2.0.0', '2.1.0', '2.2.0', '2.3.0'] | ||
|
|
||
| steps: | ||
|
|
@@ -25,6 +25,9 @@ jobs: | |
| with: | ||
| python-version: ${{ matrix.python-version }} | ||
|
|
||
| - name: Install bubblewrap | ||
| run: sudo apt-get update && sudo apt-get install -y bubblewrap | ||
|
|
||
| - name: Install uv | ||
| uses: astral-sh/setup-uv@v3 | ||
|
|
||
|
|
@@ -71,12 +74,12 @@ jobs: | |
| - name: Install uv | ||
| uses: astral-sh/setup-uv@v3 | ||
|
|
||
| - name: Install NVIDIA GPU drivers | ||
| - name: Install NVIDIA GPU drivers and bubblewrap | ||
| run: | | ||
| # Note: GitHub Actions doesn't have GPU support, but we can still test CUDA builds | ||
| # The tests will run on CPU but with CUDA-enabled PyTorch builds | ||
| sudo apt-get update | ||
| sudo apt-get install -y nvidia-cuda-toolkit | ||
| sudo apt-get install -y nvidia-cuda-toolkit bubblewrap | ||
|
|
||
| - name: Install PyTorch with CUDA | ||
| run: | | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -14,7 +14,7 @@ jobs: | |
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| python-version: ['3.9', '3.10', '3.11', '3.12'] | ||
| python-version: ['3.10', '3.11', '3.12'] | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
# Verify declared Python support in packaging metadata and docs
rg -n --glob '!**/.venv/**' 'python_requires|Programming Language :: Python :: 3\.9|3\.9' pyproject.toml setup.cfg setup.py README* docs* 2>/dev/null || echo "No matches found or files don't exist"Repository: Comfy-Org/pyisolate Length of output: 162 Update README files to reflect minimum Python version change. 🤖 Prompt for AI Agents |
||
|
|
||
| steps: | ||
| - uses: actions/checkout@v4 | ||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -12,8 +12,8 @@ repos: | |||||||||||||||||||||||||||||||||||||
| - id: debug-statements | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| - repo: https://github.com/astral-sh/ruff-pre-commit | ||||||||||||||||||||||||||||||||||||||
| rev: v0.11.8 | ||||||||||||||||||||||||||||||||||||||
| rev: v0.14.0 | ||||||||||||||||||||||||||||||||||||||
| hooks: | ||||||||||||||||||||||||||||||||||||||
| - id: ruff | ||||||||||||||||||||||||||||||||||||||
| args: [--fix] | ||||||||||||||||||||||||||||||||||||||
| args: [--fix, --unsafe-fixes] | ||||||||||||||||||||||||||||||||||||||
| - id: ruff-format | ||||||||||||||||||||||||||||||||||||||
|
Comment on lines
14
to
19
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick | 🔵 Trivial 🧩 Analysis chain🌐 Web query:
💡 Result: Ruff 0.14.0 (released 2025-10-07) — breaking changes:
Sources: 🌐 Web query:
💡 Result: Short answer: enabling --unsafe-fixes in a pre-commit hook can change program semantics or remove comments and therefore can break behavior — treat it as non-automatic and require human review. See official docs: Ruff classifies fixes as safe vs unsafe; unsafe fixes "could lead to a change in runtime behavior, the removal of comments, or both." [1][2]. Key implications and practical recommendations:
If you want, I can:
Sources:
Confirm Ruff v0.14.0 upgrade + unsafe-fix policy. Auto-applying If you want unsafe fixes only on demand, consider gating them behind a manual stage: 🔧 Gate unsafe fixes for manual review - repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.0
hooks:
- id: ruff
- args: [--fix, --unsafe-fixes]
+ args: [--fix]
+ - id: ruff
+ name: ruff-unsafe-fixes
+ args: [--fix, --unsafe-fixes]
+ stages: [manual]
- id: ruff-format📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Consider enabling
cancel-in-progressfor PR builds.With
cancel-in-progress: false, multiple pushes to the same PR branch will queue builds instead of canceling stale runs. This can waste CI minutes during active development. Consider splitting concurrency or using a conditional:♻️ Suggested improvement
concurrency: group: build-wheels-${{ github.workflow }}-${{ github.ref || github.run_id }} - cancel-in-progress: false + cancel-in-progress: ${{ github.event_name == 'pull_request' }}This preserves non-canceling behavior for
mainpushes and releases while canceling superseded PR runs.📝 Committable suggestion
🤖 Prompt for AI Agents