Revert "Add 3.14 wheels, call this -post5" #66
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: artifact | |
| on: push | |
| env: | |
| CARGO_UNSTABLE_SPARSE_REGISTRY: "true" | |
| PIP_DISABLE_PIP_VERSION_CHECK: "1" | |
| RUST_TOOLCHAIN: "nightly-2025-01-07" | |
| UNSAFE_PYO3_BUILD_FREE_THREADED: "1" | |
| UNSAFE_PYO3_SKIP_VERSION_CHECK: "1" | |
| UV_LINK_MODE: "copy" | |
| jobs: | |
| sdist: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 10 | |
| strategy: | |
| fail-fast: false | |
| env: | |
| RUST_TOOLCHAIN: "1.82" # MSRV | |
| steps: | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.13" | |
| - name: rustup stable | |
| run: | | |
| curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain "${RUST_TOOLCHAIN}" -y | |
| rustup default "${RUST_TOOLCHAIN}" | |
| - uses: actions/checkout@v4 | |
| - name: Cargo.toml and pyproject.toml version must match | |
| run: ./script/check-version | |
| - run: python3 -m pip install --user --upgrade pip "maturin>=1,<2" wheel | |
| - name: Vendor dependencies | |
| run: | | |
| maturin build | |
| cargo fetch | |
| mkdir .cargo | |
| cp ci/sdist.toml .cargo/config.toml | |
| cargo vendor include/cargo --versioned-dirs | |
| - run: maturin sdist --out=dist | |
| - run: python3 -m pip install --user dist/orjson*.tar.gz | |
| env: | |
| CARGO_NET_OFFLINE: "true" | |
| - run: python3 -m pip install --user -r test/requirements.txt -r integration/requirements.txt mypy | |
| - run: pytest -v test | |
| env: | |
| PYTHONMALLOC: "debug" | |
| - run: ./integration/run thread | |
| - run: ./integration/run http | |
| - run: ./integration/run init | |
| - run: ./integration/run typestubs | |
| - name: Store sdist | |
| if: "startsWith(github.ref, 'refs/tags/')" | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: orjson_sdist | |
| path: dist | |
| overwrite: true | |
| retention-days: 1 | |
| manylinux_amd64: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 10 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python: [ | |
| { interpreter: 'python3.13t', package: 'python3.13-freethreading', compatibility: "manylinux_2_34", publish: false }, | |
| { interpreter: 'python3.13', package: 'python3.13', compatibility: "manylinux_2_17", publish: true }, | |
| { interpreter: 'python3.12', package: 'python3.12', compatibility: "manylinux_2_17", publish: true }, | |
| { interpreter: 'python3.11', package: 'python3.11', compatibility: "manylinux_2_17", publish: true }, | |
| { interpreter: 'python3.10', package: 'python3.10', compatibility: "manylinux_2_17", publish: true }, | |
| { interpreter: 'python3.9', package: 'python3.9', compatibility: "manylinux_2_17", publish: true }, | |
| { interpreter: 'python3.8', package: 'python3.8', compatibility: "manylinux_2_17", publish: true }, | |
| ] | |
| arch: [ | |
| { | |
| cc: "clang", | |
| cflags: "-Os -fstrict-aliasing -fno-plt -flto=full -emit-llvm", | |
| features: "avx512,unstable-simd,yyjson", | |
| ldflags: "-fuse-ld=lld -Wl,-plugin-opt=also-emit-llvm -Wl,--as-needed -Wl,-zrelro,-znow", | |
| rustflags: "-C linker=clang -C link-arg=-fuse-ld=lld -C linker-plugin-lto -C lto=fat -C link-arg=-Wl,-zrelro,-znow -Z mir-opt-level=4 -Z threads=4 -D warnings", | |
| tag: null, | |
| target: "x86_64-unknown-linux-gnu", | |
| }, | |
| ] | |
| env: | |
| CARGO_TARGET_DIR: "/tmp/orjson" | |
| CC: "${{ matrix.arch.cc }}" | |
| CFLAGS: "${{ matrix.arch.cflags }}" | |
| COMPATIBILITY: "${{ matrix.python.compatibility }}" | |
| FEATURES: "${{ matrix.arch.features }}" | |
| LDFLAGS: "${{ matrix.arch.ldflags }}" | |
| PYTHON: "${{ matrix.python.interpreter }}" | |
| PYTHON_PACKAGE: "${{ matrix.python.package }}" | |
| RUSTFLAGS: "${{ matrix.arch.rustflags }}" | |
| TARGET: "${{ matrix.arch.target }}" | |
| VENV: ".venv" | |
| steps: | |
| - name: cpuinfo | |
| run: cat /proc/cpuinfo | |
| - uses: actions/checkout@v4 | |
| - name: setup-qemu-container | |
| uses: sandervocke/setup-qemu-container@v1 | |
| with: | |
| container: registry.fedoraproject.org/fedora:42 | |
| arch: ${{ matrix.arch.tag }} | |
| initial_delay: 5s | |
| podman_args: "-v .:/orjson -v /tmp:/tmp --workdir /orjson" | |
| - name: setup-shell-wrapper | |
| uses: sandervocke/setup-shell-wrapper@v1 | |
| - name: Build and test | |
| shell: wrap-shell {0} | |
| env: | |
| WRAP_SHELL: run-in-container.sh | |
| run: | | |
| set -eou pipefail | |
| mkdir dist | |
| export PATH="/root/.cargo/bin:/home/runner/work/orjson/orjson/.venv:/home/runner/.cargo/bin:$PATH" | |
| ./script/install-fedora | |
| source "${VENV}/bin/activate" | |
| maturin build --release --strip \ | |
| --features="${FEATURES}" \ | |
| --compatibility="${COMPATIBILITY}" \ | |
| --interpreter="${PYTHON}" \ | |
| --target="${TARGET}" | |
| uv pip install ${CARGO_TARGET_DIR}/wheels/orjson*.whl | |
| pytest -v test | |
| ./integration/run thread | |
| ./integration/run http | |
| ./integration/run init | |
| cp ${CARGO_TARGET_DIR}/wheels/orjson*.whl dist | |
| - name: Store wheels | |
| if: "startsWith(github.ref, 'refs/tags/') && matrix.python.publish == true" | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: orjson_manylinux_2_17_amd64_${{ matrix.python.interpreter }} | |
| path: dist | |
| overwrite: true | |
| retention-days: 1 | |
| manylinux_aarch64: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 45 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python: [ | |
| { interpreter: 'python3.13', package: 'python3.13', compatibility: "manylinux_2_17" }, | |
| ] | |
| arch: [ | |
| { | |
| cc: "clang", | |
| cflags: "-Os -fstrict-aliasing -fno-plt -flto=full -emit-llvm", | |
| features: "unstable-simd,yyjson", | |
| ldflags: "-fuse-ld=lld -Wl,-plugin-opt=also-emit-llvm -Wl,--as-needed -Wl,-zrelro,-znow", | |
| rustflags: "-C linker=clang -C link-arg=-fuse-ld=lld -C linker-plugin-lto -C lto=fat -C link-arg=-Wl,-zrelro,-znow -Z mir-opt-level=4 -Z threads=4 -D warnings", | |
| tag: "aarch64", | |
| target: "aarch64-unknown-linux-gnu", | |
| }, | |
| ] | |
| env: | |
| CARGO_TARGET_DIR: "/tmp/orjson" | |
| CC: "${{ matrix.arch.cc }}" | |
| CFLAGS: "${{ matrix.arch.cflags }}" | |
| COMPATIBILITY: "${{ matrix.python.compatibility }}" | |
| FEATURES: "${{ matrix.arch.features }}" | |
| LDFLAGS: "${{ matrix.arch.ldflags }}" | |
| PYTHON: "${{ matrix.python.interpreter }}" | |
| PYTHON_PACKAGE: "${{ matrix.python.package }}" | |
| RUSTFLAGS: "${{ matrix.arch.rustflags }}" | |
| TARGET: "${{ matrix.arch.target }}" | |
| VENV: ".venv" | |
| steps: | |
| - name: cpuinfo | |
| run: cat /proc/cpuinfo | |
| - uses: actions/checkout@v4 | |
| - name: setup-qemu-container | |
| uses: sandervocke/setup-qemu-container@v1 | |
| with: | |
| container: registry.fedoraproject.org/fedora:42 | |
| arch: ${{ matrix.arch.tag }} | |
| podman_args: "-v .:/orjson -v /tmp:/tmp --workdir /orjson" | |
| - name: setup-shell-wrapper | |
| uses: sandervocke/setup-shell-wrapper@v1 | |
| - name: Build and test | |
| shell: wrap-shell {0} | |
| env: | |
| WRAP_SHELL: run-in-container.sh | |
| run: | | |
| set -eou pipefail | |
| mkdir dist | |
| export PATH="/root/.cargo/bin:/home/runner/work/orjson/orjson/.venv:/home/runner/.cargo/bin:$PATH" | |
| ./script/install-fedora | |
| source "${VENV}/bin/activate" | |
| maturin build --release --strip \ | |
| --features="${FEATURES}" \ | |
| --compatibility="${COMPATIBILITY}" \ | |
| --interpreter="${PYTHON}" \ | |
| --target="${TARGET}" | |
| uv pip install ${CARGO_TARGET_DIR}/wheels/orjson*.whl | |
| pytest -v test | |
| cp ${CARGO_TARGET_DIR}/wheels/orjson*.whl dist | |
| - name: Store wheels | |
| if: "startsWith(github.ref, 'refs/tags/')" | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: orjson_manylinux_aarch64_${{ matrix.python.interpreter }} | |
| path: dist | |
| overwrite: true | |
| retention-days: 1 | |
| musllinux: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 10 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python: [ | |
| { version: '3.13' }, | |
| { version: '3.12' }, | |
| { version: '3.11' }, | |
| { version: '3.10' }, | |
| { version: '3.9' }, | |
| { version: '3.8' }, | |
| ] | |
| platform: | |
| - target: aarch64-unknown-linux-musl | |
| arch: aarch64 | |
| platform: linux/arm64 | |
| features: unstable-simd,unwind,yyjson | |
| - target: armv7-unknown-linux-musleabihf | |
| arch: armv7l | |
| platform: linux/arm/v7 | |
| features: unstable-simd,yyjson | |
| - target: x86_64-unknown-linux-musl | |
| arch: x86_64 | |
| platform: linux/amd64 | |
| features: avx512,unstable-simd,unwind,yyjson | |
| - target: i686-unknown-linux-musl | |
| arch: i686 | |
| platform: linux/386 | |
| features: unstable-simd,unwind,yyjson | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: build-std | |
| run: | | |
| mkdir .cargo | |
| cp ci/config.toml .cargo/config.toml | |
| - name: Build | |
| uses: PyO3/maturin-action@v1 | |
| env: | |
| CC: "gcc" | |
| CFLAGS: "-Os" | |
| LDFLAGS: "-Wl,--as-needed" | |
| RUSTFLAGS: "-C lto=fat -Z mir-opt-level=4 -Z threads=2 -D warnings -C target-feature=-crt-static" | |
| with: | |
| rust-toolchain: "${{ env.RUST_TOOLCHAIN }}" | |
| rustup-components: rust-src | |
| target: "${{ matrix.platform.target }}" | |
| manylinux: musllinux_1_2 | |
| args: --release --strip --out=dist --features=${{ matrix.platform.features }} -i python${{ matrix.python.version }} | |
| - name: QEMU | |
| if: matrix.platform.arch != 'x86_64' | |
| uses: docker/setup-qemu-action@v3 | |
| with: | |
| image: tonistiigi/binfmt:qemu-v8.1.5 | |
| platforms: ${{ matrix.platform.platform }} | |
| - name: Test | |
| uses: addnab/docker-run-action@v3 | |
| with: | |
| image: quay.io/pypa/musllinux_1_2_${{ matrix.platform.arch }}:latest | |
| options: -v ${{ github.workspace }}:/io -w /io | |
| run: | | |
| apk add tzdata | |
| sed -i '/^psutil/d' test/requirements.txt # missing 3.11, 3.12 wheels | |
| sed -i '/^numpy/d' test/requirements.txt | |
| python${{ matrix.python.version }} -m venv venv | |
| venv/bin/pip install -U pip wheel | |
| venv/bin/pip install -r test/requirements.txt | |
| venv/bin/pip install orjson --no-index --find-links dist/ --force-reinstall | |
| venv/bin/python -m pytest -v test | |
| - name: Store wheels | |
| if: "startsWith(github.ref, 'refs/tags/')" | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: orjson_musllinux_${{ matrix.platform.arch }}_${{ matrix.python.version }} | |
| path: dist | |
| overwrite: true | |
| retention-days: 1 | |
| manylinux_non_amd64: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 20 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python: [ | |
| { version: '3.12', abi: 'cp312-cp312' }, | |
| { version: '3.11', abi: 'cp311-cp311' }, | |
| { version: '3.10', abi: 'cp310-cp310' }, | |
| { version: '3.9', abi: 'cp39-cp39' }, | |
| { version: '3.8', abi: 'cp38-cp38' }, | |
| ] | |
| target: [ | |
| { | |
| arch: 'aarch64', | |
| cflags: '-Os -flto=full -fstrict-aliasing', | |
| features: 'unstable-simd,yyjson', | |
| rustflags: '-Z mir-opt-level=4 -C lto=fat -D warnings', | |
| target: 'aarch64-unknown-linux-gnu', | |
| }, | |
| { | |
| arch: 'i686', | |
| cflags: '-Os -flto -fstrict-aliasing', | |
| features: 'unstable-simd,yyjson', | |
| rustflags: '-Z mir-opt-level=4 -C lto=fat -D warnings', | |
| target: 'i686-unknown-linux-gnu', | |
| }, | |
| { | |
| arch: 'armv7', | |
| cflags: '-Os -flto=full -fstrict-aliasing', | |
| features: 'yyjson', # no SIMD | |
| rustflags: '-Z mir-opt-level=4 -C lto=fat -D warnings -C opt-level=s', | |
| target: 'armv7-unknown-linux-gnueabihf', | |
| }, | |
| { | |
| arch: 'ppc64le', | |
| cflags: '-Os -flto=full -fstrict-aliasing', | |
| features: 'unstable-simd,yyjson', | |
| rustflags: '-Z mir-opt-level=4 -C lto=fat -D warnings', | |
| target: 'powerpc64le-unknown-linux-gnu', | |
| }, | |
| { | |
| arch: 's390x', | |
| cflags: '-Os -flto=full -fstrict-aliasing -march=z10', | |
| features: 'yyjson', | |
| rustflags: '-Z mir-opt-level=4 -C lto=fat -D warnings -C target-cpu=z10', | |
| target: 's390x-unknown-linux-gnu', | |
| }, | |
| ] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: build-std | |
| run: | | |
| mkdir .cargo | |
| cp ci/config.toml .cargo/config.toml | |
| - name: Build | |
| uses: PyO3/maturin-action@v1 | |
| env: | |
| PYO3_CROSS_LIB_DIR: "/opt/python/${{ matrix.python.abi }}" | |
| CFLAGS: "${{ matrix.target.cflags }}" | |
| LDFLAGS: "-Wl,--as-needed" | |
| RUSTFLAGS: "${{ matrix.target.rustflags }}" | |
| with: | |
| target: "${{ matrix.target.target }}" | |
| rust-toolchain: "${{ env.RUST_TOOLCHAIN }}" | |
| rustup-components: rust-src | |
| manylinux: auto | |
| args: --release --strip --out=dist --features=${{ matrix.target.features }} -i python${{ matrix.python.version }} | |
| - name: Store wheels | |
| if: "startsWith(github.ref, 'refs/tags/')" | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: orjson_manylinux_2_17_${{ matrix.target.arch }}_${{ matrix.python.version }} | |
| path: dist | |
| overwrite: true | |
| retention-days: 1 | |
| macos_aarch64: | |
| runs-on: macos-15 | |
| timeout-minutes: 10 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python: [ | |
| { version: '3.13', macosx_target: "10.15" }, | |
| { version: '3.12', macosx_target: "10.15" }, | |
| { version: '3.11', macosx_target: "10.15" }, | |
| { version: '3.10', macosx_target: "10.15" }, | |
| ] | |
| env: | |
| CC: "clang" | |
| CFLAGS: "-Os -fstrict-aliasing -flto=full" | |
| LDFLAGS: "-Wl,--as-needed" | |
| CFLAGS_x86_64_apple_darwin: "-O2 -fstrict-aliasing -flto=full -march=x86-64-v2 -mtune=generic" | |
| CFLAGS_aarch64_apple_darwin: "-O2 -fstrict-aliasing -flto=full -mcpu=apple-m1 -mtune=generic" | |
| RUSTFLAGS: "-C lto=fat -Z mir-opt-level=4 -Z threads=3 -D warnings" | |
| PATH: "/Users/runner/work/orjson/orjson/.venv/bin:/Users/runner/.cargo/bin:/usr/local/opt/curl/bin:/usr/local/bin:/usr/local/sbin:/Users/runner/bin:/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/bin:/bin:/usr/sbin:/sbin" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "${{ matrix.python.version }}" | |
| - uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: "${{ env.RUST_TOOLCHAIN }}" | |
| targets: "aarch64-apple-darwin, x86_64-apple-darwin" | |
| components: "rust-src" | |
| - name: Build environment | |
| run: | | |
| cargo fetch --target aarch64-apple-darwin & | |
| export PATH=$HOME/.cargo/bin:$HOME/.local/bin:$PATH | |
| curl -LsSf https://astral.sh/uv/install.sh | sh | |
| uv venv --python python${{ matrix.python.version }} | |
| uv pip install --upgrade "maturin>=1,<2" -r test/requirements.txt -r integration/requirements.txt | |
| mkdir .cargo | |
| cp ci/config.toml .cargo/config.toml | |
| - name: maturin | |
| run: | | |
| export PATH=$HOME/.cargo/bin:$HOME/.local/bin:$PATH | |
| MACOSX_DEPLOYMENT_TARGET="${{ matrix.python.macosx_target }}" \ | |
| PYO3_CROSS_LIB_DIR=$(python -c "import sysconfig;print(sysconfig.get_config_var('LIBDIR'))") \ | |
| maturin build --release --strip \ | |
| --features=unstable-simd,yyjson \ | |
| --interpreter python${{ matrix.python.version }} \ | |
| --target=universal2-apple-darwin | |
| uv pip install target/wheels/orjson*.whl | |
| - run: pytest -v test | |
| env: | |
| PYTHONMALLOC: "debug" | |
| - run: source .venv/bin/activate && ./integration/run thread | |
| - run: source .venv/bin/activate && ./integration/run http | |
| - run: source .venv/bin/activate && ./integration/run init | |
| - name: Store wheels | |
| if: "startsWith(github.ref, 'refs/tags/')" | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: orjson_universal2_aarch64_${{ matrix.python.version }} | |
| path: target/wheels | |
| overwrite: true | |
| retention-days: 1 | |
| macos_amd64: | |
| runs-on: macos-13 | |
| timeout-minutes: 10 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python: [ | |
| { version: '3.9', macosx_target: "10.15" }, | |
| { version: '3.8', macosx_target: "10.15" }, | |
| ] | |
| env: | |
| CC: "clang" | |
| CFLAGS: "-Os -fstrict-aliasing -flto=full" | |
| LDFLAGS: "-Wl,--as-needed" | |
| CFLAGS_x86_64_apple_darwin: "-O2 -fstrict-aliasing -flto=full -march=x86-64-v2 -mtune=generic" | |
| CFLAGS_aarch64_apple_darwin: "-O2 -fstrict-aliasing -flto=full -mcpu=apple-m1 -mtune=generic" | |
| RUSTFLAGS: "-C lto=fat -Z mir-opt-level=4 -Z threads=3 -D warnings" | |
| PATH: "/Users/runner/work/orjson/orjson/.venv/bin:/Users/runner/.cargo/bin:/usr/local/opt/curl/bin:/usr/local/bin:/usr/local/sbin:/Users/runner/bin:/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/bin:/bin:/usr/sbin:/sbin" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "${{ matrix.python.version }}" | |
| - uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: "${{ env.RUST_TOOLCHAIN }}" | |
| targets: "aarch64-apple-darwin, x86_64-apple-darwin" | |
| components: "rust-src" | |
| - name: Build environment | |
| run: | | |
| cargo fetch --target aarch64-apple-darwin & | |
| export PATH=$HOME/.cargo/bin:$HOME/.local/bin:$PATH | |
| curl -LsSf https://astral.sh/uv/install.sh | sh | |
| uv venv --python python${{ matrix.python.version }} | |
| uv pip install --upgrade "maturin>=1,<2" -r test/requirements.txt -r integration/requirements.txt | |
| mkdir .cargo | |
| cp ci/config.toml .cargo/config.toml | |
| - name: maturin | |
| run: | | |
| export PATH=$HOME/.cargo/bin:$HOME/.local/bin:$PATH | |
| MACOSX_DEPLOYMENT_TARGET="${{ matrix.python.macosx_target }}" \ | |
| PYO3_CROSS_LIB_DIR=$(python -c "import sysconfig;print(sysconfig.get_config_var('LIBDIR'))") \ | |
| maturin build --release --strip \ | |
| --features=unstable-simd,yyjson \ | |
| --interpreter python${{ matrix.python.version }} \ | |
| --target=universal2-apple-darwin | |
| uv pip install target/wheels/orjson*.whl | |
| - run: pytest -v test | |
| env: | |
| PYTHONMALLOC: "debug" | |
| - run: source .venv/bin/activate && ./integration/run thread | |
| - run: source .venv/bin/activate && ./integration/run http | |
| - run: source .venv/bin/activate && ./integration/run init | |
| - name: Store wheels | |
| if: "startsWith(github.ref, 'refs/tags/')" | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: orjson_universal2_amd64_${{ matrix.python.version }} | |
| path: target/wheels | |
| overwrite: true | |
| retention-days: 1 | |
| windows: | |
| runs-on: windows-2022 | |
| timeout-minutes: 10 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python: [ | |
| { version: '3.13' }, | |
| { version: '3.12' }, | |
| { version: '3.11' }, | |
| { version: '3.10' }, | |
| { version: '3.9' }, | |
| { version: '3.8' }, | |
| ] | |
| platform: [ | |
| { arch: "x64", target: "x86_64-pc-windows-msvc" }, | |
| { arch: "x86", target: "i686-pc-windows-msvc" }, | |
| ] | |
| env: | |
| CFLAGS: "-Os" | |
| LDFLAGS: "-Wl,--as-needed" | |
| RUSTFLAGS: "-C lto=fat -Z mir-opt-level=4 -D warnings" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "${{ matrix.python.version }}" | |
| architecture: "${{ matrix.platform.arch }}" | |
| - uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: "${{ env.RUST_TOOLCHAIN }}" | |
| targets: "${{ matrix.platform.target }}" | |
| components: "rust-src" | |
| - name: Build environment | |
| run: | | |
| cargo fetch --target "${{ matrix.platform.target }}" & | |
| python.exe -m pip install --upgrade pip "maturin>=1,<2" wheel | |
| python.exe -m pip install -r test\requirements.txt -r integration\requirements.txt | |
| mkdir .cargo | |
| cp ci\config.toml .cargo\config.toml | |
| - name: maturin | |
| run: | | |
| maturin.exe build --release --strip --features=unstable-simd,yyjson --target="${{ matrix.platform.target }}" | |
| python.exe -m pip install orjson --no-index --find-links target\wheels | |
| - run: python.exe -m pytest -s -rxX -v test | |
| env: | |
| PYTHONMALLOC: "debug" | |
| - name: Store wheels | |
| if: "startsWith(github.ref, 'refs/tags/')" | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: orjson_windows_${{ matrix.platform.arch }}_${{ matrix.python.version }} | |
| path: target\wheels | |
| overwrite: true | |
| retention-days: 1 | |
| pypi: | |
| name: PyPI | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 10 | |
| if: "startsWith(github.ref, 'refs/tags/')" | |
| needs: [ | |
| macos_aarch64, | |
| macos_amd64, | |
| manylinux_aarch64, | |
| manylinux_amd64, | |
| manylinux_non_amd64, | |
| musllinux, | |
| sdist, | |
| windows, | |
| ] | |
| environment: | |
| name: pypi | |
| url: https://pypi.org/p/orjson | |
| permissions: | |
| id-token: write | |
| steps: | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| merge-multiple: true | |
| path: dist/ | |
| pattern: orjson_* | |
| - run: ls -1 dist/ | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Publish distribution to PyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| attestations: true | |
| packages-dir: dist | |
| skip-existing: true | |
| verbose: true |