Skip to content

Support Object Definition in Python #24

Support Object Definition in Python

Support Object Definition in Python #24

Workflow file for this run

name: Release
on:
release:
types: [published]
env:
CIBW_BUILD_VERBOSITY: 3
CIBW_TEST_COMMAND: "python -c \"import mlc\""
CIBW_SKIP: "cp313-win_amd64" # Python 3.13 is not quite ready yet
MLC_CIBW_VERSION: "2.20.0"
MLC_PYTHON_VERSION: "3.9"
MLC_CIBW_WIN_BUILD: "cp3*-win_amd64"
MLC_CIBW_MAC_BUILD: "cp3*-macosx_arm64"
MLC_CIBW_MAC_X86_BUILD: "cp3*-macosx_x86_64"
MLC_CIBW_LINUX_BUILD: "cp3*-manylinux_x86_64"
jobs:
windows:
name: Windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- uses: actions/setup-python@v5
with:
python-version: ${{ env.MLC_PYTHON_VERSION }}
- name: Install cibuildwheel
run: python -m pip install cibuildwheel=="${{ env.MLC_CIBW_VERSION }}"
- name: Build wheels
run: python -m cibuildwheel --output-dir wheelhouse
env:
CIBW_BUILD: ${{ env.MLC_CIBW_WIN_BUILD }}
- name: Show package contents
run: python scripts/show_wheel_content.py wheelhouse
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-windows
path: ./wheelhouse/*.whl
macos:
name: MacOS
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- uses: actions/setup-python@v5
with:
python-version: ${{ env.MLC_PYTHON_VERSION }}
- name: Install cibuildwheel
run: python -m pip install cibuildwheel==${{ env.MLC_CIBW_VERSION }}
- name: Build wheels
run: python -m cibuildwheel --output-dir wheelhouse
env:
CIBW_BUILD: ${{ env.MLC_CIBW_MAC_BUILD }}
- name: Show package contents
run: python scripts/show_wheel_content.py wheelhouse
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos
path: ./wheelhouse/*.whl
macos-x86:
name: MacOS-x86
runs-on: macos-13
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- uses: actions/setup-python@v5
with:
python-version: ${{ env.MLC_PYTHON_VERSION }}
- name: Install cibuildwheel
run: python -m pip install cibuildwheel==${{ env.MLC_CIBW_VERSION }}
- name: Build wheels
run: python -m cibuildwheel --output-dir wheelhouse
env:
CIBW_BUILD: ${{ env.MLC_CIBW_MAC_X86_BUILD }}
- name: Show package contents
run: python scripts/show_wheel_content.py wheelhouse
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos-x86
path: ./wheelhouse/*.whl
linux:
name: Linux
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- uses: actions/setup-python@v5
with:
python-version: ${{ env.MLC_PYTHON_VERSION }}
- name: Install cibuildwheel
run: python -m pip install cibuildwheel==${{ env.MLC_CIBW_VERSION }}
- name: Build wheels
run: python -m cibuildwheel --output-dir wheelhouse
env:
CIBW_BUILD: ${{ env.MLC_CIBW_LINUX_BUILD }}
- name: Show package contents
run: python scripts/show_wheel_content.py wheelhouse
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux
path: ./wheelhouse/*.whl
publish:
name: Publish
runs-on: ubuntu-latest
needs: [windows, macos, linux, macos-x86]
environment:
name: pypi
url: https://pypi.org/p/mlc-python
permissions:
id-token: write
contents: write
steps:
- uses: actions/setup-python@v5
with:
python-version: ${{ env.MLC_PYTHON_VERSION }}
- name: Checkout code
uses: actions/checkout@v4
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: ./wheelhouse
- name: Prepare distribution files
run: |
mkdir -p dist
mv wheelhouse/wheels-macos-x86/*.whl dist/
mv wheelhouse/wheels-macos/*.whl dist/
mv wheelhouse/wheels-linux/*.whl dist/
mv wheelhouse/wheels-windows/*.whl dist/
- name: Upload wheels to release
env:
GITHUB_TOKEN: ${{ secrets.PYMLC_GITHUB_TOKEN }}
run: |
# Get the release ID
release_id=$(gh api repos/${{ github.repository }}/releases/tags/${{ github.ref_name }} --jq '.id')
if [ -z "$release_id" ]; then
echo "Error: Could not find release with tag ${{ github.ref_name }}"
exit 1
fi
upload_url=https://uploads.github.com/repos/${{ github.repository }}/releases/$release_id/assets
echo "Uploading to release ID: $release_id. Upload URL: $upload_url"
for wheel in dist/*.whl; do
echo "⏫ Uploading $(basename $wheel)"
response=$(curl -s -w "%{http_code}" -X POST \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Content-Type: application/octet-stream" \
--data-binary @"$wheel" \
"$upload_url?name=$(basename $wheel)")
http_code=${response: -3}
if [ $http_code -eq 201 ]; then
echo "🎉 Successfully uploaded $(basename $wheel)"
else
echo "❌ Failed to upload $(basename $wheel). HTTP status: $http_code. Error response: ${response%???}"
exit 1
fi
done
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: dist/