Merge pull request #73 from akhundMurad/feat/rust-only #8
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 }}, py${{ matrix.python-version }}) | |
| runs-on: ${{ matrix.os }} | |
| needs: [test-native] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| python-version: ["3.10", "3.11", "3.12", "3.13", "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 | |
| # Build typeid-python wheel (includes rust extension) | |
| - name: Build wheels (maturin) | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| command: build | |
| args: --release --out dist | |
| manylinux: "2_28" | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-${{ matrix.os }}-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 | |
| # Build typeid-python sdist (maturin) | |
| - name: Build sdist (maturin) | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| command: sdist | |
| args: --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 |