name: Build and Distribute PhotonLibPy permissions: id-token: write # IMPORTANT: this permission is mandatory for trusted publishing on: push: pull_request: concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} cancel-in-progress: true jobs: build-py: runs-on: ubuntu-24.04 steps: - name: Checkout code uses: actions/checkout@v6 with: fetch-depth: 0 - name: Set up Python uses: actions/setup-python@v6 with: python-version: 3.14 - name: Install dependencies run: | python -m pip install --upgrade pip pip install setuptools wheel - name: Build wheel working-directory: ./photon-lib/py run: python setup.py sdist bdist_wheel - name: Upload artifacts uses: actions/upload-artifact@v7 with: name: dist path: ./photon-lib/py/dist/ test-py: needs: build-py runs-on: ubuntu-24.04 steps: - name: Checkout code uses: actions/checkout@v6 with: fetch-depth: 0 - name: Set up Python uses: actions/setup-python@v6 with: python-version: 3.14 - name: Install dependencies run: | python -m pip install --upgrade pip pip install pytest mypy - name: Download artifacts uses: actions/download-artifact@v8 with: name: dist path: dist/ - name: Install package shell: bash run: pip install --no-cache-dir dist/*.whl - name: Run Unit Tests shell: bash run: pytest --import-mode=importlib photon-lib/py/test/ - name: Run mypy type checking run: mypy --show-column-numbers --config-file photon-lib/py/pyproject.toml photon-lib # build-python-examples: # needs: build-py # strategy: # matrix: # os: [ubuntu-24.04, windows-2022, macos-14] # runs-on: ${{ matrix.os }} # steps: # - name: Checkout code # uses: actions/checkout@v6 # with: # fetch-depth: 0 # - name: Set up Python # uses: actions/setup-python@v6 # with: # python-version: 3.14 # - name: Install dependencies # run: | # python -m pip install --upgrade pip # python -m pip install mypy # - name: Download artifacts # uses: actions/download-artifact@v8 # with: # name: dist # path: ./photon-lib/py/dist/ # - name: Install PhotonLibPy package # working-directory: ./photon-lib/py # shell: bash # run: | # pip install --no-cache-dir dist/*.whl # - name: Build Python examples # working-directory: photonlib-python-examples # shell: bash # run: | # for folder in */; # do # echo $folder # ./run.sh $folder # done deploy: # TODO: BRING BACK PYTHON EXAMPLES needs: [test-py] runs-on: ubuntu-24.04 # Only upload on tags if: startsWith(github.ref, 'refs/tags/v') steps: - name: Download artifacts uses: actions/download-artifact@v8 with: name: dist path: dist/ - name: Publish package distributions to PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: packages-dir: ./dist/ permissions: id-token: write # IMPORTANT: this permission is mandatory for trusted publishing