docs: Update projects (#2254) #8
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
| # SPDX-FileCopyrightText: 2026 The RISE Project | |
| # SPDX-License-Identifier: MIT | |
| --- | |
| # This workflow is based on the `linux` job of | |
| # https://github.com/reflex-dev/ruff-format/blob/v0.5.4/.github/workflows/CI.yml | |
| name: Build ruff-format wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/ruff-format.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-ruff-format.yml' | |
| - 'docs/packages/ruff-format.yaml' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-ruff-format.yml' | |
| - 'docs/packages/ruff-format.yaml' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read # to fetch code (actions/checkout) | |
| env: | |
| MANYLINUX_RISCV64_IMAGE: quay.io/pypa/manylinux_2_39_riscv64 | |
| jobs: | |
| setup: | |
| uses: $/.github/workflows/_setup.yml | |
| with: | |
| package: ruff-format | |
| version: ${{ inputs.version }} | |
| build_wheels: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| name: Build ruff-format ${{ matrix.version }} ${{ matrix.tag }}-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 90 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| # tag is a real matrix dimension (not just an include-only key) so | |
| # the two legs below update their own combination instead of | |
| # collapsing into one (gotcha 402). | |
| tag: [cp38-abi3, cp314t] | |
| include: | |
| # pyo3's abi3-py38 feature is on unconditionally (Cargo.toml), so one | |
| # abi3 wheel serves every GIL-ful interpreter; pyo3 disables abi3 | |
| # under Py_GIL_DISABLED, giving the free-threaded build its own | |
| # wheel (matches the cp38-abi3 + cp314-cp314t split upstream | |
| # publishes). cp38 isn't in the manylinux_2_39_riscv64 image (it | |
| # ships cp39-cp315), so the abi3 wheel is built on cp39 instead. | |
| - tag: cp38-abi3 | |
| build: >- | |
| cp39-manylinux_riscv64 cp310-manylinux_riscv64 | |
| cp311-manylinux_riscv64 cp312-manylinux_riscv64 | |
| cp313-manylinux_riscv64 cp314-manylinux_riscv64 | |
| - tag: cp314t | |
| build: cp314t-manylinux_riscv64 | |
| env: | |
| RUFF_FORMAT_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Checkout ruff-format v${{ env.RUFF_FORMAT_VERSION }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: reflex-dev/ruff-format | |
| ref: v${{ env.RUFF_FORMAT_VERSION }} | |
| persist-credentials: false | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0 | |
| with: | |
| output-dir: wheelhouse/ | |
| env: | |
| # musllinux is dropped: rustup.rs ships no riscv64 musl toolchain. | |
| CIBW_BUILD: ${{ matrix.build }} | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| # ruff-format ships no [tool.cibuildwheel], so the Rust toolchain | |
| # its maturin backend needs is installed in-container here. | |
| CIBW_BEFORE_ALL_LINUX: >- | |
| curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y | |
| CIBW_ENVIRONMENT_LINUX: PATH="$PATH:$HOME/.cargo/bin" | |
| # Upstream ships no test suite at all; exercise the three bound | |
| # functions against known-good outputs (verified against the | |
| # upstream ruff CLI) instead of an import-only smoke test. | |
| # ruff-format is a pure-Rust maturin project (no python-source in | |
| # pyproject.toml), so maturin wraps the extension in a generated | |
| # ruff_format/__init__.py ("from .ruff_format import *") rather than | |
| # shipping it as a flat top-level .so (gotcha 308) - probe the | |
| # compiled submodule via sys.modules, not the package's own | |
| # __file__, which is the shim. | |
| CIBW_TEST_COMMAND: >- | |
| python -c "import ruff_format as m, importlib.metadata as md, sys; | |
| assert sys.modules['ruff_format.ruff_format'].__file__.endswith('.so'), sys.modules['ruff_format.ruff_format'].__file__; | |
| assert any(str(p).endswith('licenses/LICENSE') for p in md.files('ruff-format')); | |
| assert m.is_valid_syntax('x = 1'); | |
| assert not m.is_valid_syntax('def f(:'); | |
| m.parse_code('x = 1'); | |
| assert m.format_string('def hello( x,y, z ):\n print( x+y+z )\n') == 'def hello(x, y, z):\n print(x + y + z)\n'; | |
| assert m.format_string('result = some_function_name(argument_one, argument_two, argument_three, argument_four)\n') == 'result = some_function_name(\n argument_one, argument_two, argument_three, argument_four\n)\n'; | |
| assert m.format_string('result = some_function_name(argument_one, argument_two, argument_three, argument_four)\n', line_width=120) == 'result = some_function_name(argument_one, argument_two, argument_three, argument_four)\n'" | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: ruff-format-${{ env.RUFF_FORMAT_VERSION }}-${{ matrix.tag }}-manylinux_riscv64 | |
| path: wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish ruff-format ${{ matrix.version }} | |
| needs: [setup, build_wheels] | |
| if: needs.setup.outputs.versions != '[]' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| uses: $/.github/workflows/_publish-wheel.yml | |
| secrets: | |
| app-private-key: ${{ secrets.RISEPROJECT_APP_PRIVATE_KEY }} | |
| with: | |
| artifact-pattern: ruff-format-${{ matrix.version }}-*-manylinux_riscv64 |