diff --git a/.copier-answers.yaml b/.copier-answers.yaml index 6199a074..93dd7c72 100644 --- a/.copier-answers.yaml +++ b/.copier-answers.yaml @@ -1,5 +1,5 @@ # Changes here will be overwritten by Copier -_commit: '4875149' +_commit: b2cdb6d _src_path: https://github.com/python-project-templates/base.git add_docs: false add_extension: js diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index d84e9577..6faba606 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -36,45 +36,79 @@ jobs: node-version: [22.x] steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - - - name: Set up Python - uses: actions-ext/python/setup@main - with: - version: 3.11 - - - name: Set up NodeJS - uses: actions-ext/node/setup@main - with: - version: ${{ matrix.node-version }} - - - name: Install dependencies - run: make develop - - - name: Lint - run: make lint - - - name: Checks - run: make checks - - - name: Build - run: make build - - - name: Make dist - run: make dist - - - uses: actions-ext/python/test-wheel@main - with: - module: csp_gateway - - - uses: actions-ext/python/test-sdist@main - with: - module: csp_gateway - - - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: dist - path: dist + - name: Checkout + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - name: Setup Python + uses: actions-ext/python/setup@6e1b91a408ea89f49bc8aff8724f83826f7b5446 + with: + version: ${{ matrix.python-version }} + + - name: Setup Node.js + uses: actions-ext/node/setup@0ea5bdcd24d2488b28e16bf611b446a2f8e1e12f + with: + version: ${{ matrix.node-version }} + + - name: Install dependencies + run: make develop + + - name: Lint + run: make lint + if: matrix.os == 'ubuntu-latest' + + - name: Checks + run: make checks + if: matrix.os == 'ubuntu-latest' + + - name: Build + run: make build + + - name: Test + run: make coverage + if: matrix.os == 'ubuntu-latest' + + - name: Upload test results + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: test-results-${{ matrix.os }}-${{ matrix.python-version }}-${{ matrix.node-version }} + path: '**/junit.xml' + if: ${{ always() }} + + - name: Publish test results + uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2.24.0 + with: + files: '**/junit.xml' + if: matrix.os == 'ubuntu-latest' + + - name: Upload coverage + uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 + with: + token: ${{ secrets.CODECOV_TOKEN }} + + - name: Build distributions + run: make dist + if: matrix.os == 'ubuntu-latest' + + - name: Test wheel + uses: actions-ext/python/test-wheel@6e1b91a408ea89f49bc8aff8724f83826f7b5446 + with: + module: csp_gateway + if: matrix.os == 'ubuntu-latest' + + - name: Test source distribution + uses: actions-ext/python/test-sdist@6e1b91a408ea89f49bc8aff8724f83826f7b5446 + with: + module: csp_gateway + if: matrix.os == 'ubuntu-latest' + + - name: Upload distributions + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: dist + path: dist + if: matrix.os == 'ubuntu-latest' test: runs-on: ${{ matrix.os }} @@ -82,55 +116,59 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest] - python-version: ["3.9", "3.10", "3.11"] + python-version: ["3.10", "3.11"] exclude: - # No CSP builds for python 3.9 / macos arm64 - - python-version: "3.9" + - python-version: "3.10" os: macos-latest steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - - - name: Set up Python - uses: actions-ext/python/setup@main - with: - version: 3.11 - - - name: Set up NodeJS - uses: actions-ext/node/setup@main - - - name: Install JS dependencies - run: make develop-js - - - name: Download wheels - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 - with: - name: dist - - - name: Install wheels - run: uv pip install `ls csp_gateway-*.whl`[develop] --target . - - - name: Test - run: make coverage - - - name: Upload test results (Python) - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 - with: - name: test-results-${{ matrix.os }}-${{ matrix.python-version }} - path: '**/junit.xml' - if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11' - - - name: Publish Unit Test Results - uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2.24.0 - with: - files: '**/junit.xml' - if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11' - - - name: Upload coverage - uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 - with: - token: ${{ secrets.CODECOV_TOKEN }} - if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11' + - name: Checkout + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - name: Setup Python + uses: actions-ext/python/setup@6e1b91a408ea89f49bc8aff8724f83826f7b5446 + with: + version: ${{ matrix.python-version }} + + - name: Setup Node.js + uses: actions-ext/node/setup@0ea5bdcd24d2488b28e16bf611b446a2f8e1e12f + with: + version: 22.x + + - name: Install JS dependencies + run: make develop-js + + - name: Download wheels + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: dist + + - name: Install wheels + run: uv pip install `ls csp_gateway-*.whl`[develop] --target . + + - name: Test + run: make coverage + + - name: Upload test results (Python) + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + with: + name: test-results-${{ matrix.os }}-${{ matrix.python-version }} + path: '**/junit.xml' + if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11' + + - name: Publish Unit Test Results + uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2.24.0 + with: + files: '**/junit.xml' + if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11' + + - name: Upload coverage + uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 + with: + token: ${{ secrets.CODECOV_TOKEN }} + if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11' import: runs-on: ubuntu-latest @@ -140,48 +178,51 @@ jobs: wheel: ["", "client"] steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - - - name: Set up Python - uses: actions-ext/python/setup@main - with: - version: 3.11 - - - name: Download wheels - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 - with: - name: dist - - - name: Install wheels - run: uv pip install `ls csp_gateway_${{ matrix.wheel }}-*.whl` - if: matrix.wheel != '' - - - name: Install wheels - run: uv pip install `ls csp_gateway-*.whl` - if: matrix.wheel == '' - - - name: Import Client - run: python -c "import csp_gateway.client" - - - name: Import Utils - run: | - python -c "import csp_gateway.utils" - python -c "import csp_gateway.utils.enums" - python -c "import csp_gateway.utils.exceptions" - python -c "import csp_gateway.utils.picklable_queue" - python -c "import csp_gateway.utils.web.filter" - python -c "import csp_gateway.utils.web.query" - - - name: Import Server - run: python -c "import csp_gateway.server" - if: matrix.wheel != 'client' - - - name: Import Utils - run: | - python -c "import csp_gateway.utils" - python -c "import csp_gateway.utils.csp" - python -c "import csp_gateway.utils.fastapi" - python -c "import csp_gateway.utils.id_generator" - python -c "import csp_gateway.utils.struct" - python -c "import csp_gateway.utils.web.controls" - if: matrix.wheel != 'client' + - name: Checkout + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - name: Setup Python + uses: actions-ext/python/setup@6e1b91a408ea89f49bc8aff8724f83826f7b5446 + with: + version: 3.11 + + - name: Download wheels + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: dist + + - name: Install wheels + run: uv pip install `ls csp_gateway_${{ matrix.wheel }}-*.whl` + if: matrix.wheel != '' + + - name: Install wheels + run: uv pip install `ls csp_gateway-*.whl` + if: matrix.wheel == '' + + - name: Import Client + run: python -c "import csp_gateway.client" + + - name: Import Utils + run: | + python -c "import csp_gateway.utils" + python -c "import csp_gateway.utils.enums" + python -c "import csp_gateway.utils.exceptions" + python -c "import csp_gateway.utils.picklable_queue" + python -c "import csp_gateway.utils.web.filter" + python -c "import csp_gateway.utils.web.query" + + - name: Import Server + run: python -c "import csp_gateway.server" + if: matrix.wheel != 'client' + + - name: Import Utils + run: | + python -c "import csp_gateway.utils" + python -c "import csp_gateway.utils.csp" + python -c "import csp_gateway.utils.fastapi" + python -c "import csp_gateway.utils.id_generator" + python -c "import csp_gateway.utils.struct" + python -c "import csp_gateway.utils.web.controls" + if: matrix.wheel != 'client' diff --git a/.github/workflows/copier.yaml b/.github/workflows/copier.yaml index 871b4141..71714117 100644 --- a/.github/workflows/copier.yaml +++ b/.github/workflows/copier.yaml @@ -12,6 +12,7 @@ jobs: pull-requests: write runs-on: ubuntu-latest steps: - - uses: actions-ext/copier-update@main - with: - token: ${{ secrets.WORKFLOW_TOKEN }} + - name: Update from Copier + uses: actions-ext/copier/update@2061209faa6b75ffd4fcecc0b0983772767997f4 + with: + token: ${{ secrets.WORKFLOW_TOKEN }} diff --git a/.github/workflows/wiki.yaml b/.github/workflows/wiki.yaml index 63451d2a..0e78e533 100644 --- a/.github/workflows/wiki.yaml +++ b/.github/workflows/wiki.yaml @@ -20,11 +20,25 @@ jobs: deploy: runs-on: ubuntu-latest steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - - run: cp README.md docs/wiki/Home.md - - uses: actions-ext/python/setup@main - - run: pip install nbconvert - - run: jupyter nbconvert examples/Client.ipynb --to markdown --output ../docs/wiki/Client.md - - uses: Andrew-Chen-Wang/github-wiki-action@1bbb4280446f9630e8e21a18012cbacf3b0f992e # v5.0.6 + - name: Checkout + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - name: Prepare wiki + run: cp README.md docs/wiki/Home.md + + - name: Setup Python + uses: actions-ext/python/setup@6e1b91a408ea89f49bc8aff8724f83826f7b5446 + with: + version: 3.11 + + - name: Install nbconvert and convert notebooks + run: | + pip install nbconvert + jupyter nbconvert examples/Client.ipynb --to markdown --output ../docs/wiki/Client.md + + - name: Publish wiki + uses: Andrew-Chen-Wang/github-wiki-action@1bbb4280446f9630e8e21a18012cbacf3b0f992e # v5.0.6 with: path: docs/wiki