Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 67 additions & 2 deletions .github/workflows/publish-pywry.yml
Original file line number Diff line number Diff line change
Expand Up @@ -443,9 +443,65 @@ jobs:
name: Generate release SBOM
needs: [test]
if: ${{ !cancelled() && (needs.test.result == 'success' || needs.test.result == 'skipped') }}
runs-on: ubuntu-24.04
defaults:
run:
working-directory: pywry
permissions:
contents: read
uses: ./.github/workflows/sbom.yml
steps:
- uses: actions/checkout@v5

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.12'

- name: Set up Node.js
uses: actions/setup-node@v5
with:
node-version: '22'

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install ".[all,dev,freeze]"

- name: Install CycloneDX tools
run: |
pip install cyclonedx-bom
npm ci --ignore-scripts

- name: Generate and validate merged SBOM
shell: bash
run: |
cyclonedx-py environment --pyproject pyproject.toml --output-format JSON --output-file sbom-python.cdx.json
npx @cyclonedx/cyclonedx-npm --package-lock-only --output-format JSON --output-file sbom-node.cdx.json

docker run --rm \
-v "$PWD:/work" \
-w /work \
cyclonedx/cyclonedx-cli:latest \
merge \
--input-files sbom-python.cdx.json sbom-node.cdx.json \
--output-format json \
--output-file sbom.cdx.json

docker run --rm \
-v "$PWD:/work" \
-w /work \
cyclonedx/cyclonedx-cli:latest \
validate \
--input-file sbom.cdx.json \
--input-format json \
--fail-on-errors

- name: Upload SBOM artifact
uses: actions/upload-artifact@v7
with:
name: sbom
path: pywry/sbom.cdx.json
retention-days: 30

# =============================================================================
# Step 3: Merge all artifacts into single dist
Expand Down Expand Up @@ -952,8 +1008,17 @@ jobs:
echo "📦 Publishing to PyPI:"
ls -la dist/

- name: Prepare Python package artifacts
shell: bash
run: |
mkdir -p publish-dist
cp dist/*.whl publish-dist/
cp dist/*.tar.gz publish-dist/
echo "📦 Python package artifacts to publish:"
ls -la publish-dist/

- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: publish-dist
verbose: true

4 changes: 2 additions & 2 deletions claude/desktop-extension/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
[project]
name = "pywry-desktop-extension"
version = "0.1.0"
version = "0.1.1"
description = "PyWry MCP Bundle (.mcpb) for Claude Desktop. Wraps pywry[mcp] so the uv runtime resolves dependencies automatically."
requires-python = ">=3.10"
dependencies = [
"pywry[mcp]>=2.0.0",
"pywry[mcp]>=2.0.1",
]
4 changes: 2 additions & 2 deletions pywry/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "pywry"
version = "2.0.0"
version = "2.0.1"
description = "A lightweight and blazingly fast, cross-platform, WebView rendering engine and desktop UI toolkit for Python. Batteries included."
authors = [{ name = "PyWry", email = "pywry2@gmail.com" }]
license = { text = "Apache 2.0" }
Expand Down Expand Up @@ -54,7 +54,7 @@ test = [
"testcontainers>=4.14.0",
]
lint = [
"ruff>=0.13",
"ruff>=0.15",
]
typecheck = [
"ty>=0.0.1a8",
Expand Down
Loading