Merge pull request #81 from akhundMurad/feat/integrations #12
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Publish to PyPI | |
| on: | |
| push: | |
| tags: | |
| - "v*" | |
| permissions: | |
| contents: write | |
| id-token: write | |
| env: | |
| PROJECT_NAME: typeid-python | |
| jobs: | |
| test-native: | |
| name: Build + import native extension (${{ matrix.os }}, py${{ matrix.python-version }}) | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| python-version: ["3.11"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: astral-sh/setup-uv@v3 | |
| - name: Create .venv + install deps | |
| run: | | |
| uv sync --locked --all-groups | |
| - name: Build & install (maturin develop) | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| command: develop | |
| args: --release | |
| - name: Sanity check (import extension) | |
| run: | | |
| uv run python -c "import typeid; import typeid._base32; print('native ext OK')" | |
| build-wheels: | |
| name: Build wheels (${{ matrix.os }}, ${{ matrix.target || 'native' }}, py${{ matrix.python-version }}) | |
| runs-on: ${{ matrix.os }} | |
| needs: [test-native] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest] | |
| python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] | |
| include: | |
| # macOS ARM64 (native on macos-latest which is ARM) | |
| - os: macos-latest | |
| target: aarch64-apple-darwin | |
| python-version: "3.10" | |
| - os: macos-latest | |
| target: aarch64-apple-darwin | |
| python-version: "3.11" | |
| - os: macos-latest | |
| target: aarch64-apple-darwin | |
| python-version: "3.12" | |
| - os: macos-latest | |
| target: aarch64-apple-darwin | |
| python-version: "3.13" | |
| - os: macos-latest | |
| target: aarch64-apple-darwin | |
| python-version: "3.14" | |
| # macOS x86_64 (cross-compile from ARM runner) | |
| - os: macos-latest | |
| target: x86_64-apple-darwin | |
| python-version: "3.10" | |
| - os: macos-latest | |
| target: x86_64-apple-darwin | |
| python-version: "3.11" | |
| - os: macos-latest | |
| target: x86_64-apple-darwin | |
| python-version: "3.12" | |
| - os: macos-latest | |
| target: x86_64-apple-darwin | |
| python-version: "3.13" | |
| - os: macos-latest | |
| target: x86_64-apple-darwin | |
| python-version: "3.14" | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: ${{ matrix.target }} | |
| # Build typeid-python wheel (includes rust extension) | |
| - name: Build wheels (maturin) | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| command: build | |
| args: --release --out dist -i python${{ matrix.python-version }} | |
| target: ${{ matrix.target }} | |
| manylinux: "2_28" | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-${{ matrix.os }}-${{ matrix.target || 'native' }}-py${{ matrix.python-version }} | |
| path: dist/*.whl | |
| build-sdist: | |
| runs-on: ubuntu-latest | |
| needs: [build-wheels] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Build sdist (maturin) | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| command: sdist | |
| args: --manifest-path rust-base32/Cargo.toml --out dist | |
| - name: Upload sdist | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: sdist | |
| path: dist/*.tar.gz | |
| publish-package: | |
| runs-on: ubuntu-latest | |
| needs: [build-sdist] | |
| permissions: | |
| contents: read | |
| id-token: write | |
| steps: | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: dist | |
| - name: Flatten dist directory | |
| shell: bash | |
| run: | | |
| mkdir -p out | |
| find dist -type f \( -name "*.whl" -o -name "*.tar.gz" \) -maxdepth 4 -print -exec cp {} out/ \; | |
| ls -la out | |
| - name: Publish to PyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| packages-dir: out | |
| publish-docs: | |
| runs-on: ubuntu-latest | |
| needs: [publish-package] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v3 | |
| - name: Sync dependencies (locked) | |
| run: | | |
| uv sync --locked --all-groups | |
| - name: Deploy to Pages | |
| run: uv run mkdocs gh-deploy --force |