Optimization: Inline single-use variables guaranteed to execute (O3) #167
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: CI/CD | |
| on: | |
| push: | |
| branches: | |
| - '**' | |
| paths: | |
| - '**.py' | |
| - 'pyproject.toml' | |
| - 'poetry.lock' | |
| - '.github/workflows/build.yml' | |
| - "install_secp256k1.sh" | |
| pull_request: | |
| branches: | |
| - '**' | |
| paths: | |
| - '**.py' | |
| - 'pyproject.toml' | |
| - 'poetry.lock' | |
| - '.github/workflows/build.yml' | |
| - "install_secp256k1.sh" | |
| jobs: | |
| check-run: | |
| # continue-on-error: true # Uncomment once integration is finished | |
| runs-on: ubuntu-latest | |
| # Map a step output to a job output | |
| outputs: | |
| should_skip: ${{ steps.skip_check.outputs.should_skip }} | |
| steps: | |
| - id: skip_check | |
| uses: fkirc/skip-duplicate-actions@v5 | |
| with: | |
| # All of these options are optional, so you can remove them if you are happy with the defaults | |
| concurrent_skipping: 'same_content_newer' | |
| skip_after_successful_duplicate: 'true' | |
| do_not_skip: '["workflow_dispatch", "schedule"]' | |
| build: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] | |
| fail-fast: true | |
| needs: | |
| - check-run | |
| if: needs.check-run.outputs.should_skip != 'true' | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install secp256k1 | |
| run: | | |
| bash install_secp256k1.sh | |
| echo "/usr/local/lib" >> $GITHUB_PATH | |
| echo "LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v6 | |
| - name: Install project | |
| run: | | |
| uv sync --dev | |
| uv run python -c "from importlib.metadata import version; print(version('cbor2'))" > .cbor2_version | |
| CBOR2_VERSION=$(cat .cbor2_version) | |
| CBOR2_BUILD_C_EXTENSION=0 uv pip install --no-binary cbor2 "cbor2==$CBOR2_VERSION" --force-reinstall | |
| - name: Install secp256k1-py | |
| run: uv pip install python-secp256k1-cardano | |
| - name: Verify secp256k1 installation | |
| run: | | |
| uv run python -c "import pysecp256k1; print('secp256k1 installed successfully')" | |
| - name: Run tests and coverage | |
| run: | | |
| uv run black --check . | |
| uv run coverage run --source=uplc -m uplc --help | |
| uv run coverage run --source=uplc -m pytest tests | |
| uv run coverage run -a --source=uplc -m uplc parse examples/fibonacci.uplc | |
| uv run coverage run -a --source=uplc -m uplc dump examples/fibonacci.uplc --dialect legacy-aiken | |
| uv run coverage run -a --source=uplc -m uplc dump examples/fibonacci.uplc --dialect plutus --unique-varnames | |
| uv run coverage run -a --source=uplc -m uplc eval examples/fibonacci.uplc "(con integer 5)" | |
| uv run coverage run -a --source=uplc -m uplc build examples/fibonacci.uplc | |
| uv run coverage run -a --source=uplc -m uplc build examples/fibonacci.uplc -fconstant-folding | |
| uv run coverage run -a --source=uplc -m uplc build examples/fibonacci.uplc -fremove-force-delay | |
| uv run coverage run -a --source=uplc -m uplc build examples/fibonacci.uplc -fdeduplicate | |
| uv run coverage run -a --source=uplc -m uplc build examples/fibonacci.uplc -ffold-apply-lambda-increase 1.2 | |
| uv run coverage run -a --source=uplc -m uplc build examples/fibonacci.uplc -O0 | |
| uv run coverage run -a --source=uplc -m uplc build examples/fibonacci.uplc -O1 | |
| uv run coverage run -a --source=uplc -m uplc build examples/fibonacci.uplc -O2 | |
| uv run coverage run -a --source=uplc -m uplc build examples/fibonacci.uplc -O3 | |
| uv run coverage run -a --source=uplc -m uplc dump build/fibonacci/script.cbor --from-cbor | |
| - name: Upload coverage data to coveralls.io | |
| run: | | |
| uv pip install coveralls | |
| uv run coveralls || true | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| COVERALLS_FLAG_NAME: ${{ matrix.python-version }} | |
| COVERALLS_PARALLEL: true | |
| coveralls: | |
| name: Indicate completion to coveralls.io | |
| needs: | |
| - check-run | |
| - build | |
| if: needs.check-run.outputs.should_skip != 'true' | |
| runs-on: ubuntu-latest | |
| container: python:3-slim | |
| steps: | |
| - name: Install coveralls | |
| run: pip install --upgrade coveralls | |
| - name: Finished | |
| run: coveralls --finish || true | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |