From a713d3650a7438aaf4560b02dce48eeaacdcaa6a Mon Sep 17 00:00:00 2001 From: Sachin Agarwal Date: Mon, 9 Dec 2024 07:27:24 -0500 Subject: [PATCH 01/11] Improving github actions 1. Default permission restrictions 2. Action version pinning 3. Timeout limits 4. Python dependency version pinning in scripts 5. Adding basic CODEOWNERS 6. More eror handling 7. Concurrency controls (same action cannot be running in parallel) --- .github/workflows/clear-cache.yml | 35 ++++++++++++-------- .github/workflows/notebook-bot.yml | 44 ++++++++++++++---------- .github/workflows/publish-dev-docs.yml | 46 +++++++++++++------------- .github/workflows/publish-test.yml | 18 ++++++---- .github/workflows/publish.yml | 17 ++++++---- .github/workflows/test-doc.yml | 24 +++++++++++--- .github/workflows/test-min.yml | 12 +++++-- .github/workflows/test.yml | 12 +++++-- 8 files changed, 134 insertions(+), 74 deletions(-) diff --git a/.github/workflows/clear-cache.yml b/.github/workflows/clear-cache.yml index 5b96de427..2d25840cf 100644 --- a/.github/workflows/clear-cache.yml +++ b/.github/workflows/clear-cache.yml @@ -2,32 +2,41 @@ name: Clear cache on: - schedule: - - cron: '0 0 1 * *' - workflow_dispatch: + schedule: + - cron: '0 0 1 * *' # Run at midnight on the first day of every month + workflow_dispatch: +# Restrict permissions by default permissions: - actions: write + actions: write # Required for cache management jobs: clear-cache: runs-on: ubuntu-latest + timeout-minutes: 10 steps: - name: Clear cache - uses: actions/github-script@v7 + uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 with: script: | - console.log("About to clear") + console.log("Starting cache cleanup...") const caches = await github.rest.actions.getActionsCacheList({ owner: context.repo.owner, repo: context.repo.repo, }) + + let deletedCount = 0 for (const cache of caches.data.actions_caches) { - console.log(cache) - github.rest.actions.deleteActionsCacheById({ - owner: context.repo.owner, - repo: context.repo.repo, - cache_id: cache.id, - }) + console.log(`Deleting cache: ${cache.key} (${cache.size_in_bytes} bytes)`) + try { + await github.rest.actions.deleteActionsCacheById({ + owner: context.repo.owner, + repo: context.repo.repo, + cache_id: cache.id, + }) + deletedCount++ + } catch (error) { + console.error(`Failed to delete cache ${cache.key}: ${error.message}`) + } } - console.log("Clear completed") + console.log(`Cache cleanup completed. Deleted ${deletedCount} caches.`) diff --git a/.github/workflows/notebook-bot.yml b/.github/workflows/notebook-bot.yml index 17175f3d4..7b22d2d88 100644 --- a/.github/workflows/notebook-bot.yml +++ b/.github/workflows/notebook-bot.yml @@ -4,24 +4,28 @@ on: pull_request_target: types: [opened, reopened] -permissions: - contents: read +# Restrict permissions by default +permissions: {} jobs: comment-welcome: permissions: contents: read - pull-requests: write - + pull-requests: write # Required for commenting on PRs + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: - name: Fetch pull request branch - uses: actions/checkout@v4 + uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 with: repository: ${{ github.event.pull_request.head.repo.full_name }} ref: ${{ github.event.pull_request.head.sha }} + - name: Fetch base develop branch run: git fetch -u "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY" develop:develop + - name: Create message env: HEAD_REPOSITORY: ${{ github.event.pull_request.head.repo.full_name }} @@ -49,16 +53,20 @@ jobs: msg+="If commits are added to the pull request, synchronize your local branch: git pull origin $HEAD_REF\n" fi echo "MESSAGE=$msg" >> $GITHUB_ENV - - name: Post comment - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - ISSUE_URL: ${{ github.event.pull_request.issue_url }} - run: | - # Env var defined in previous step. Escape string for JSON. - body="$(echo -n -e $MESSAGE | python3 -c 'import json,sys; print(json.dumps(sys.stdin.read()))')" - # Add comment to pull request. - curl -X POST \ - -H "Accept: application/vnd.github.v3+json" \ - -H "Authorization: token $GITHUB_TOKEN" \ - "${ISSUE_URL}/comments" \ - --data "{\"body\": $body}" + + - name: Find Comment + uses: peter-evans/find-comment@a54c31d7fa095754bfef525c0c8e5e5674c4b4b1 # v2.4.0 + id: find-comment + with: + issue-number: ${{ github.event.pull_request.number }} + body-includes: Preview and run these notebook edits + comment-author: github-actions[bot] + + - name: Add or update comment + uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0 + if: env.MESSAGE != '' + with: + comment-id: ${{ steps.find-comment.outputs.comment-id }} + issue-number: ${{ github.event.pull_request.number }} + body: ${{ env.MESSAGE }} + edit-mode: replace diff --git a/.github/workflows/publish-dev-docs.yml b/.github/workflows/publish-dev-docs.yml index 0661929e3..d93775d0e 100644 --- a/.github/workflows/publish-dev-docs.yml +++ b/.github/workflows/publish-dev-docs.yml @@ -6,48 +6,48 @@ on: - develop workflow_dispatch: +# Ensure only one concurrent deployment concurrency: group: ${{ github.workflow }}-${{ github.event_name == 'push' && github.ref}} cancel-in-progress: true +# Restrict permissions by default permissions: - contents: write - pages: write - pull-requests: write - + contents: write # Required for committing to gh-pages + pages: write # Required for deploying to Pages + pull-requests: write # Required for PR comments jobs: deploy: runs-on: ubuntu-latest + timeout-minutes: 30 steps: - name: ๐Ÿ”„ Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 with: fetch-depth: 0 + - name: ๐Ÿ Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v5.0.0 with: python-version: '3.10' - - name: ๐Ÿ“ฆ Install mkdocs-material - run: pip install "mkdocs-material" - - name: ๐Ÿ“ฆ Install mkdocstrings[python] - run: pip install "mkdocstrings[python]" - - name: ๐Ÿ“ฆ Install mkdocs-material[imaging] - run: pip install "mkdocs-material[imaging]" - - name: ๐Ÿ“ฆ Install mike - run: pip install "mike" - - name: ๐Ÿ“ฆ Install mkdocs-git-revision-date-localized-plugin - run: pip install "mkdocs-git-revision-date-localized-plugin" - - name: ๐Ÿ“ฆ Install JupyterLab - run: pip install jupyterlab - - name: ๐Ÿ“ฆ Install mkdocs-jupyter - run: pip install mkdocs-jupyter - - name: ๐Ÿ“ฆ Install mkdocs-git-committers-plugin-2 - run: pip install mkdocs-git-committers-plugin-2 + + - name: ๐Ÿ“ฆ Install dependencies + run: | + pip install "mkdocs-material==9.5.2" \ + "mkdocstrings[python]==0.24.0" \ + "mkdocs-material[imaging]==9.5.2" \ + "mike==2.0.0" \ + "mkdocs-git-revision-date-localized-plugin==1.2.1" \ + "jupyterlab==4.0.9" \ + "mkdocs-jupyter==0.24.6" \ + "mkdocs-git-committers-plugin-2==2.2.2" + - name: โš™๏ธ Configure git for github-actions run: | git config --global user.name "github-actions[bot]" git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + - name: ๐Ÿš€ Deploy MkDoc-Material with mike run: | - MKDOCS_GIT_COMMITTERS_APIKEY=${{ secrets.GITHUB_TOKEN }} mike deploy --push develop + MKDOCS_GIT_COMMITTERS_APIKEY=${{ secrets.GITHUB_TOKEN }} mike deploy --push --update-aliases develop latest diff --git a/.github/workflows/publish-test.yml b/.github/workflows/publish-test.yml index 2cd05bf13..2b8504b37 100644 --- a/.github/workflows/publish-test.yml +++ b/.github/workflows/publish-test.yml @@ -1,30 +1,36 @@ name: Publish Supervision Pre-Releases to PyPI and TestPyPI + on: push: tags: - "[0-9]+.[0-9]+[0-9]+.[0-9]+a[0-9]" - "[0-9]+.[0-9]+[0-9]+.[0-9]+b[0-9]" - "[0-9]+.[0-9]+[0-9]+.[0-9]+rc[0-9]" - workflow_dispatch: +# Restrict permissions by default +permissions: {} + jobs: build-and-publish-pre-release-pypi: name: Build and publish to PyPI runs-on: ubuntu-latest environment: test + timeout-minutes: 15 permissions: - id-token: write + id-token: write # Required for PyPI publishing + contents: read # Required for checkout strategy: matrix: python-version: ["3.10"] steps: - name: ๐Ÿ›Ž๏ธ Checkout - uses: actions/checkout@v4 + uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 with: ref: ${{ github.head_ref }} + - name: ๐Ÿ Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 + uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v5.0.0 with: python-version: ${{ matrix.python-version }} @@ -35,9 +41,9 @@ jobs: twine check --strict dist/* - name: ๐Ÿš€ Publish to PyPi - uses: pypa/gh-action-pypi-publish@release/v1.10 + uses: pypa/gh-action-pypi-publish@2f6f737ca5f74c637829c0f5c3acd0e29ea5e8bf # v1.8.11 - name: ๐Ÿš€ Publish to Test-PyPi - uses: pypa/gh-action-pypi-publish@release/v1.10 + uses: pypa/gh-action-pypi-publish@2f6f737ca5f74c637829c0f5c3acd0e29ea5e8bf # v1.8.11 with: repository-url: https://test.pypi.org/legacy/ diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 17c2629a8..bf44ef405 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,27 +1,32 @@ name: Publish Supervision Releases to PyPI and TestPyPI + on: push: tags: - "[0-9]+.[0-9]+[0-9]+.[0-9]" - workflow_dispatch: +permissions: {} # Explicitly remove all permissions by default + jobs: build-and-publish-pre-release: runs-on: ubuntu-latest environment: release + timeout-minutes: 15 permissions: - id-token: write + id-token: write # Required for PyPI publishing + contents: read # Required for checkout strategy: matrix: python-version: ["3.10"] steps: - name: ๐Ÿ›Ž๏ธ Checkout - uses: actions/checkout@v4 + uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 with: ref: ${{ github.head_ref }} + - name: ๐Ÿ Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 + uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v5.0.0 with: python-version: ${{ matrix.python-version }} @@ -32,9 +37,9 @@ jobs: twine check --strict dist/* - name: ๐Ÿš€ Publish to PyPi - uses: pypa/gh-action-pypi-publish@release/v1.10 + uses: pypa/gh-action-pypi-publish@2f6f737ca5f74c637829c0f5c3acd0e29ea5e8bf # v1.8.11 - name: ๐Ÿš€ Publish to Test-PyPi - uses: pypa/gh-action-pypi-publish@release/v1.10 + uses: pypa/gh-action-pypi-publish@2f6f737ca5f74c637829c0f5c3acd0e29ea5e8bf # v1.8.11 with: repository-url: https://test.pypi.org/legacy/ diff --git a/.github/workflows/test-doc.yml b/.github/workflows/test-doc.yml index b15072902..567fe8af3 100644 --- a/.github/workflows/test-doc.yml +++ b/.github/workflows/test-doc.yml @@ -4,18 +4,34 @@ on: pull_request: branches: [main, develop] +# Restrict permissions by default +permissions: + contents: read # Required for checkout + checks: write # Required for test reporting + jobs: docs-build-test: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: ๐Ÿ”„ Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - name: ๐Ÿ Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v5.0.0 with: python-version: '3.10' - - name: ๐Ÿ—๏ธ Install dependencies and Test Docs Build + + - name: ๐Ÿ—๏ธ Install dependencies and Test Docs Build run: | python -m pip install --upgrade pip - pip install "mkdocs-material" "mkdocstrings[python]" "mkdocs-material[imaging]" mike "mkdocs-git-revision-date-localized-plugin" jupyterlab mkdocs-jupyter mkdocs-git-committers-plugin-2 + pip install \ + "mkdocs-material==9.5.2" \ + "mkdocstrings[python]==0.24.0" \ + "mkdocs-material[imaging]==9.5.2" \ + "mike==2.0.0" \ + "mkdocs-git-revision-date-localized-plugin==1.2.1" \ + "jupyterlab==4.0.9" \ + "mkdocs-jupyter==0.24.6" \ + "mkdocs-git-committers-plugin-2==2.2.2" mkdocs build --verbose diff --git a/.github/workflows/test-min.yml b/.github/workflows/test-min.yml index 7a61282c0..cb5d627f8 100644 --- a/.github/workflows/test-min.yml +++ b/.github/workflows/test-min.yml @@ -4,17 +4,25 @@ on: pull_request: branches: [main, develop] +# Restrict permissions by default +permissions: + contents: read # Required for checkout + checks: write # Required for test reporting + jobs: build-min-dep-test: runs-on: ubuntu-latest + timeout-minutes: 20 strategy: matrix: python-version: ["3.8"] + fail-fast: false # Continue with other steps if one fails steps: - name: ๐Ÿ›Ž๏ธ Checkout - uses: actions/checkout@v4 + uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - name: ๐Ÿ Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 + uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v5.0.0 with: python-version: ${{ matrix.python-version }} check-latest: true diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2f814c2ce..e7fef9af2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -4,17 +4,25 @@ on: pull_request: branches: [main, develop] +permissions: + contents: read + checks: write # Required for test reporting + pull-requests: write # Required for PR comments + jobs: build-dev-test: runs-on: ubuntu-latest + timeout-minutes: 30 strategy: matrix: python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + fail-fast: false # Continue with other versions if one fails steps: - name: ๐Ÿ›Ž๏ธ Checkout - uses: actions/checkout@v4 + uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - name: ๐Ÿ Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 + uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v5.0.0 with: python-version: ${{ matrix.python-version }} check-latest: true From f7d7786c56b44662519e7548ff3dbc50115c0ae3 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 12:30:12 +0000 Subject: [PATCH 02/11] =?UTF-8?q?fix(pre=5Fcommit):=20=F0=9F=8E=A8=20auto?= =?UTF-8?q?=20format=20pre-commit=20hooks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/clear-cache.yml | 2 +- .github/workflows/notebook-bot.yml | 8 ++++---- .github/workflows/publish-dev-docs.yml | 8 ++++---- .github/workflows/publish-test.yml | 2 +- .github/workflows/publish.yml | 2 +- .github/workflows/test-doc.yml | 4 ++-- .github/workflows/test-min.yml | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/clear-cache.yml b/.github/workflows/clear-cache.yml index 2d25840cf..38aad5aaf 100644 --- a/.github/workflows/clear-cache.yml +++ b/.github/workflows/clear-cache.yml @@ -24,7 +24,7 @@ jobs: owner: context.repo.owner, repo: context.repo.repo, }) - + let deletedCount = 0 for (const cache of caches.data.actions_caches) { console.log(`Deleting cache: ${cache.key} (${cache.size_in_bytes} bytes)`) diff --git a/.github/workflows/notebook-bot.yml b/.github/workflows/notebook-bot.yml index 7b22d2d88..eb470b3cb 100644 --- a/.github/workflows/notebook-bot.yml +++ b/.github/workflows/notebook-bot.yml @@ -12,20 +12,20 @@ jobs: permissions: contents: read pull-requests: write # Required for commenting on PRs - + runs-on: ubuntu-latest timeout-minutes: 10 - + steps: - name: Fetch pull request branch uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 with: repository: ${{ github.event.pull_request.head.repo.full_name }} ref: ${{ github.event.pull_request.head.sha }} - + - name: Fetch base develop branch run: git fetch -u "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY" develop:develop - + - name: Create message env: HEAD_REPOSITORY: ${{ github.event.pull_request.head.repo.full_name }} diff --git a/.github/workflows/publish-dev-docs.yml b/.github/workflows/publish-dev-docs.yml index d93775d0e..119b6591d 100644 --- a/.github/workflows/publish-dev-docs.yml +++ b/.github/workflows/publish-dev-docs.yml @@ -26,12 +26,12 @@ jobs: uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 with: fetch-depth: 0 - + - name: ๐Ÿ Set up Python uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v5.0.0 with: python-version: '3.10' - + - name: ๐Ÿ“ฆ Install dependencies run: | pip install "mkdocs-material==9.5.2" \ @@ -42,12 +42,12 @@ jobs: "jupyterlab==4.0.9" \ "mkdocs-jupyter==0.24.6" \ "mkdocs-git-committers-plugin-2==2.2.2" - + - name: โš™๏ธ Configure git for github-actions run: | git config --global user.name "github-actions[bot]" git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - + - name: ๐Ÿš€ Deploy MkDoc-Material with mike run: | MKDOCS_GIT_COMMITTERS_APIKEY=${{ secrets.GITHUB_TOKEN }} mike deploy --push --update-aliases develop latest diff --git a/.github/workflows/publish-test.yml b/.github/workflows/publish-test.yml index 2b8504b37..df5c48c49 100644 --- a/.github/workflows/publish-test.yml +++ b/.github/workflows/publish-test.yml @@ -28,7 +28,7 @@ jobs: uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 with: ref: ${{ github.head_ref }} - + - name: ๐Ÿ Set up Python ${{ matrix.python-version }} uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v5.0.0 with: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index bf44ef405..98918255a 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -24,7 +24,7 @@ jobs: uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 with: ref: ${{ github.head_ref }} - + - name: ๐Ÿ Set up Python ${{ matrix.python-version }} uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v5.0.0 with: diff --git a/.github/workflows/test-doc.yml b/.github/workflows/test-doc.yml index 567fe8af3..131accd9c 100644 --- a/.github/workflows/test-doc.yml +++ b/.github/workflows/test-doc.yml @@ -16,12 +16,12 @@ jobs: steps: - name: ๐Ÿ”„ Checkout code uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - + - name: ๐Ÿ Set up Python uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v5.0.0 with: python-version: '3.10' - + - name: ๐Ÿ—๏ธ Install dependencies and Test Docs Build run: | python -m pip install --upgrade pip diff --git a/.github/workflows/test-min.yml b/.github/workflows/test-min.yml index cb5d627f8..47021ea23 100644 --- a/.github/workflows/test-min.yml +++ b/.github/workflows/test-min.yml @@ -20,7 +20,7 @@ jobs: steps: - name: ๐Ÿ›Ž๏ธ Checkout uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - + - name: ๐Ÿ Set up Python ${{ matrix.python-version }} uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v5.0.0 with: From 10f372fe28ed0a4ddc01b4a0e69c5a6d820fb40b Mon Sep 17 00:00:00 2001 From: Alex Norell Date: Wed, 11 Dec 2024 10:46:10 -0800 Subject: [PATCH 03/11] Refactor builds --- .github/dependabot.yml | 6 +- .github/workflows/clear-cache.yml | 2 +- .github/workflows/combine-dependabot-prs.yml | 22 ++ .github/workflows/notebook-bot.yml | 72 ----- .github/workflows/poetry-test.yml | 19 +- .github/workflows/publish-dev-docs.yml | 53 ---- .github/workflows/publish-docs.yml | 59 ++++ .github/workflows/publish-release-docs.yml | 55 ---- .github/workflows/publish-test.yml | 34 +- .github/workflows/publish.yml | 28 +- .github/workflows/test-doc.yml | 19 +- .github/workflows/test-min.yml | 64 ---- .github/workflows/test.yml | 24 +- poetry.lock | 316 +++++++++---------- pyproject.toml | 9 +- 15 files changed, 317 insertions(+), 465 deletions(-) create mode 100644 .github/workflows/combine-dependabot-prs.yml delete mode 100644 .github/workflows/notebook-bot.yml delete mode 100644 .github/workflows/publish-dev-docs.yml create mode 100644 .github/workflows/publish-docs.yml delete mode 100644 .github/workflows/publish-release-docs.yml delete mode 100644 .github/workflows/test-min.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 6de587d18..9df71d0fb 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -4,13 +4,15 @@ updates: - package-ecosystem: "github-actions" directory: "/" schedule: - interval: "daily" + interval: "weekly" commit-message: prefix: โฌ†๏ธ + target-branch: "develop" # Python - package-ecosystem: "pip" directory: "/" schedule: - interval: "daily" + interval: "weekly" commit-message: prefix: โฌ†๏ธ + target-branch: "develop" \ No newline at end of file diff --git a/.github/workflows/clear-cache.yml b/.github/workflows/clear-cache.yml index 38aad5aaf..386b3d703 100644 --- a/.github/workflows/clear-cache.yml +++ b/.github/workflows/clear-cache.yml @@ -16,7 +16,7 @@ jobs: timeout-minutes: 10 steps: - name: Clear cache - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | console.log("Starting cache cleanup...") diff --git a/.github/workflows/combine-dependabot-prs.yml b/.github/workflows/combine-dependabot-prs.yml new file mode 100644 index 000000000..d6ed8a030 --- /dev/null +++ b/.github/workflows/combine-dependabot-prs.yml @@ -0,0 +1,22 @@ +name: Combine Dependabot PRs + +on: + schedule: + - cron: "0 1 * * 3" # Wednesday at 01:00 + workflow_dispatch: # allows you to manually trigger the workflow + +permissions: + contents: write + pull-requests: write + checks: read + +jobs: + combine-prs: + runs-on: ubuntu-latest + + steps: + - name: combine-prs + id: combine-prs + uses: github/combine-prs@2909f404763c3177a456e052bdb7f2e85d3a7cb3 # v5.2.0 + with: + labels: combined-pr diff --git a/.github/workflows/notebook-bot.yml b/.github/workflows/notebook-bot.yml deleted file mode 100644 index eb470b3cb..000000000 --- a/.github/workflows/notebook-bot.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: Notebook Check Pull Request - -on: - pull_request_target: - types: [opened, reopened] - -# Restrict permissions by default -permissions: {} - -jobs: - comment-welcome: - permissions: - contents: read - pull-requests: write # Required for commenting on PRs - - runs-on: ubuntu-latest - timeout-minutes: 10 - - steps: - - name: Fetch pull request branch - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - repository: ${{ github.event.pull_request.head.repo.full_name }} - ref: ${{ github.event.pull_request.head.sha }} - - - name: Fetch base develop branch - run: git fetch -u "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY" develop:develop - - - name: Create message - env: - HEAD_REPOSITORY: ${{ github.event.pull_request.head.repo.full_name }} - HEAD_REF: ${{ github.event.pull_request.head.ref }} - PR_NUM: ${{ github.event.pull_request.number }} - run: | - # Preview links and tool usage only needed for notebook changes. - readarray -t changed_notebooks < <(git diff --name-only develop | grep '\.ipynb$' || true) - if [[ ${#changed_notebooks[@]} == 0 ]]; then - echo "No notebooks modified in this pull request." - else - msg="

Preview

\n" - msg+="Preview and run these notebook edits with Google Colab:\n\n" - - reviewnb_url="https://app.reviewnb.com/${GITHUB_REPOSITORY}/pull/${PR_NUM}/files/" - msg+="Rendered notebook diffs available on ReviewNB.com.\n" - - msg+="If commits are added to the pull request, synchronize your local branch: git pull origin $HEAD_REF\n" - fi - echo "MESSAGE=$msg" >> $GITHUB_ENV - - - name: Find Comment - uses: peter-evans/find-comment@a54c31d7fa095754bfef525c0c8e5e5674c4b4b1 # v2.4.0 - id: find-comment - with: - issue-number: ${{ github.event.pull_request.number }} - body-includes: Preview and run these notebook edits - comment-author: github-actions[bot] - - - name: Add or update comment - uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0 - if: env.MESSAGE != '' - with: - comment-id: ${{ steps.find-comment.outputs.comment-id }} - issue-number: ${{ github.event.pull_request.number }} - body: ${{ env.MESSAGE }} - edit-mode: replace diff --git a/.github/workflows/poetry-test.yml b/.github/workflows/poetry-test.yml index 52f324f22..07b2aadbf 100644 --- a/.github/workflows/poetry-test.yml +++ b/.github/workflows/poetry-test.yml @@ -2,12 +2,12 @@ name: ๐Ÿ”ง Poetry Check and Installation Test Workflow on: push: paths: - - 'poetry.lock' - - 'pyproject.toml' + - "poetry.lock" + - "pyproject.toml" pull_request: paths: - - 'poetry.lock' - - 'pyproject.toml' + - "poetry.lock" + - "pyproject.toml" workflow_dispatch: jobs: @@ -20,15 +20,15 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: ๐Ÿ“ฅ Checkout the repository - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: ๐Ÿ Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 + uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 with: python-version: ${{ matrix.python-version }} - - name: ๐Ÿ“ฆ Install the base dependencies - run: python -m pip install --upgrade poetry + - name: ๐Ÿ“œ Setup Poetry + uses: abatilo/actions-poetry@e78f54a89cb052fff327414dd9ff010b5d2b4dbd # v3.0.1 - name: ๐Ÿ” Check the correctness of the project config run: poetry check @@ -38,6 +38,3 @@ jobs: - name: ๐Ÿงช Run the Import test run: poetry run python -c "import supervision; from supervision import assets; from supervision import metrics; print(supervision.__version__)" - - - name: ๐Ÿงช Run the pytests - run: poetry run python -m pytest ./test diff --git a/.github/workflows/publish-dev-docs.yml b/.github/workflows/publish-dev-docs.yml deleted file mode 100644 index 119b6591d..000000000 --- a/.github/workflows/publish-dev-docs.yml +++ /dev/null @@ -1,53 +0,0 @@ -name: Docs WorkFlow - Develop Tag ๐Ÿ“š - -on: - push: - branches: - - develop - workflow_dispatch: - -# Ensure only one concurrent deployment -concurrency: - group: ${{ github.workflow }}-${{ github.event_name == 'push' && github.ref}} - cancel-in-progress: true - -# Restrict permissions by default -permissions: - contents: write # Required for committing to gh-pages - pages: write # Required for deploying to Pages - pull-requests: write # Required for PR comments - -jobs: - deploy: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - name: ๐Ÿ”„ Checkout code - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - fetch-depth: 0 - - - name: ๐Ÿ Set up Python - uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v5.0.0 - with: - python-version: '3.10' - - - name: ๐Ÿ“ฆ Install dependencies - run: | - pip install "mkdocs-material==9.5.2" \ - "mkdocstrings[python]==0.24.0" \ - "mkdocs-material[imaging]==9.5.2" \ - "mike==2.0.0" \ - "mkdocs-git-revision-date-localized-plugin==1.2.1" \ - "jupyterlab==4.0.9" \ - "mkdocs-jupyter==0.24.6" \ - "mkdocs-git-committers-plugin-2==2.2.2" - - - name: โš™๏ธ Configure git for github-actions - run: | - git config --global user.name "github-actions[bot]" - git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - - - name: ๐Ÿš€ Deploy MkDoc-Material with mike - run: | - MKDOCS_GIT_COMMITTERS_APIKEY=${{ secrets.GITHUB_TOKEN }} mike deploy --push --update-aliases develop latest diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml new file mode 100644 index 000000000..f9a67f46c --- /dev/null +++ b/.github/workflows/publish-docs.yml @@ -0,0 +1,59 @@ +name: Build and Publish Docs + +on: + push: + branches: + - develop + workflow_dispatch: + release: + types: [published] + +# Ensure only one concurrent deployment +concurrency: + group: ${{ github.workflow }}-${{ github.event_name == 'push' && github.ref}} + cancel-in-progress: true + +# Restrict permissions by default +permissions: + contents: write # Required for committing to gh-pages + pages: write # Required for deploying to Pages + pull-requests: write # Required for PR comments + +jobs: + deploy: + runs-on: ubuntu-latest + timeout-minutes: 30 + strategy: + matrix: + python-version: ["3.10"] + steps: + - name: ๐Ÿ“ฅ Checkout the repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: ๐Ÿ Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 + with: + python-version: ${{ matrix.python-version }} + + - name: ๐Ÿ“œ Setup Poetry + uses: abatilo/actions-poetry@e78f54a89cb052fff327414dd9ff010b5d2b4dbd # v3.0.1 + + - name: ๐Ÿ“ฆ Install dependencies + run: | + poetry install --with=docs + + - name: โš™๏ธ Configure git for github-actions + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + + - name: ๐Ÿš€ Deploy Development Docs + if: github.event_name == 'push' && github.ref == 'refs/heads/develop' + run: | + MKDOCS_GIT_COMMITTERS_APIKEY=${{ secrets.GITHUB_TOKEN }} mike deploy --push --update-aliases develop + + - name: ๐Ÿš€ Deploy Release Docs + if: github.event_name == 'release' && github.event.action == 'published' + run: | + latest_tag=$(git describe --tags `git rev-list --tags --max-count=1`) + MKDOCS_GIT_COMMITTERS_APIKEY=${{ secrets.GITHUB_TOKEN }} mike deploy --push --update-aliases $latest_tag latest diff --git a/.github/workflows/publish-release-docs.yml b/.github/workflows/publish-release-docs.yml deleted file mode 100644 index 227100332..000000000 --- a/.github/workflows/publish-release-docs.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: Supervision Release Documentation Workflow ๐Ÿ“š -on: - workflow_dispatch: - -concurrency: - group: ${{ github.workflow }}-${{ github.event_name == 'push' && github.ref}} - cancel-in-progress: true - -permissions: - contents: write - pages: write - pull-requests: write - - -jobs: - doc-build-deploy: - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ["3.10"] - steps: - - name: ๐Ÿ›Ž๏ธ Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - ref: ${{ github.head_ref }} - - - name: ๐Ÿ Set up Python - uses: actions/setup-python@v5 - with: - python-version: '3.10' - - name: ๐Ÿ“ฆ Install mkdocs-material - run: pip install "mkdocs-material" - - name: ๐Ÿ“ฆ Install mkdocstrings[python] - run: pip install "mkdocstrings[python]" - - name: ๐Ÿ“ฆ Install mkdocs-material[imaging] - run: pip install "mkdocs-material[imaging]" - - name: ๐Ÿ“ฆ Install mike - run: pip install "mike" - - name: ๐Ÿ“ฆ Install mkdocs-git-revision-date-localized-plugin - run: pip install "mkdocs-git-revision-date-localized-plugin" - - name: ๐Ÿ“ฆ Install JupyterLab - run: pip install jupyterlab - - name: ๐Ÿ“ฆ Install mkdocs-jupyter - run: pip install mkdocs-jupyter - - name: ๐Ÿ“ฆ Install mkdocs-git-committers-plugin-2 - run: pip install mkdocs-git-committers-plugin-2 - - name: โš™๏ธ Configure git for github-actions ๐Ÿ‘ท - run: | - git config --global user.name "github-actions[bot]" - git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - - name: ๐Ÿš€ Deploy MkDoc-Material ๐Ÿ“š - run: | - latest_tag=$(git describe --tags `git rev-list --tags --max-count=1`) - MKDOCS_GIT_COMMITTERS_APIKEY=${{ secrets.GITHUB_TOKEN }} mike deploy --push --update-aliases $latest_tag latest diff --git a/.github/workflows/publish-test.yml b/.github/workflows/publish-test.yml index df5c48c49..722a899b1 100644 --- a/.github/workflows/publish-test.yml +++ b/.github/workflows/publish-test.yml @@ -8,42 +8,44 @@ on: - "[0-9]+.[0-9]+[0-9]+.[0-9]+rc[0-9]" workflow_dispatch: -# Restrict permissions by default -permissions: {} +permissions: {} # Explicitly remove all permissions by default jobs: - build-and-publish-pre-release-pypi: - name: Build and publish to PyPI + build-and-publish-pre-release: runs-on: ubuntu-latest - environment: test + environment: release timeout-minutes: 15 permissions: - id-token: write # Required for PyPI publishing - contents: read # Required for checkout + id-token: write # Required for PyPI publishing + contents: read # Required for checkout strategy: matrix: python-version: ["3.10"] steps: - - name: ๐Ÿ›Ž๏ธ Checkout - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: ${{ github.head_ref }} + - name: ๐Ÿ“ฅ Checkout the repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: ๐Ÿ Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v5.0.0 + uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 with: python-version: ${{ matrix.python-version }} + - name: ๐Ÿ“œ Setup Poetry + uses: abatilo/actions-poetry@e78f54a89cb052fff327414dd9ff010b5d2b4dbd # v3.0.1 + - name: ๐Ÿ—๏ธ Build source and wheel distributions run: | - python -m pip install --upgrade build twine - python -m build + poetry install --with=build + poetry build twine check --strict dist/* - name: ๐Ÿš€ Publish to PyPi - uses: pypa/gh-action-pypi-publish@2f6f737ca5f74c637829c0f5c3acd0e29ea5e8bf # v1.8.11 + uses: pypa/gh-action-pypi-publish@67339c736fd9354cd4f8cb0b744f2b82a74b5c70 # v1.12.3 + with: + attestations: true - name: ๐Ÿš€ Publish to Test-PyPi - uses: pypa/gh-action-pypi-publish@2f6f737ca5f74c637829c0f5c3acd0e29ea5e8bf # v1.8.11 + uses: pypa/gh-action-pypi-publish@67339c736fd9354cd4f8cb0b744f2b82a74b5c70 # v1.12.3 with: repository-url: https://test.pypi.org/legacy/ + attestations: true diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 98918255a..c03789b9a 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -6,7 +6,7 @@ on: - "[0-9]+.[0-9]+[0-9]+.[0-9]" workflow_dispatch: -permissions: {} # Explicitly remove all permissions by default +permissions: {} # Explicitly remove all permissions by default jobs: build-and-publish-pre-release: @@ -14,32 +14,36 @@ jobs: environment: release timeout-minutes: 15 permissions: - id-token: write # Required for PyPI publishing - contents: read # Required for checkout + id-token: write # Required for PyPI publishing + contents: read # Required for checkout strategy: matrix: python-version: ["3.10"] steps: - - name: ๐Ÿ›Ž๏ธ Checkout - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: ${{ github.head_ref }} + - name: ๐Ÿ“ฅ Checkout the repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: ๐Ÿ Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v5.0.0 + uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 with: python-version: ${{ matrix.python-version }} + - name: ๐Ÿ“œ Setup Poetry + uses: abatilo/actions-poetry@e78f54a89cb052fff327414dd9ff010b5d2b4dbd # v3.0.1 + - name: ๐Ÿ—๏ธ Build source and wheel distributions run: | - python -m pip install --upgrade build twine - python -m build + poetry install --with=build + poetry build twine check --strict dist/* - name: ๐Ÿš€ Publish to PyPi - uses: pypa/gh-action-pypi-publish@2f6f737ca5f74c637829c0f5c3acd0e29ea5e8bf # v1.8.11 + uses: pypa/gh-action-pypi-publish@67339c736fd9354cd4f8cb0b744f2b82a74b5c70 # v1.12.3 + with: + attestations: true - name: ๐Ÿš€ Publish to Test-PyPi - uses: pypa/gh-action-pypi-publish@2f6f737ca5f74c637829c0f5c3acd0e29ea5e8bf # v1.8.11 + uses: pypa/gh-action-pypi-publish@67339c736fd9354cd4f8cb0b744f2b82a74b5c70 # v1.12.3 with: repository-url: https://test.pypi.org/legacy/ + attestations: true diff --git a/.github/workflows/test-doc.yml b/.github/workflows/test-doc.yml index 131accd9c..3b7772109 100644 --- a/.github/workflows/test-doc.yml +++ b/.github/workflows/test-doc.yml @@ -22,16 +22,13 @@ jobs: with: python-version: '3.10' - - name: ๐Ÿ—๏ธ Install dependencies and Test Docs Build + - name: ๐Ÿ“œ Setup Poetry + uses: abatilo/actions-poetry@e78f54a89cb052fff327414dd9ff010b5d2b4dbd # v3.0.1 + + - name: ๐Ÿ—๏ธ Install dependencies + run: | + python install --group docs + + - name: ๐Ÿงช Test Docs Build run: | - python -m pip install --upgrade pip - pip install \ - "mkdocs-material==9.5.2" \ - "mkdocstrings[python]==0.24.0" \ - "mkdocs-material[imaging]==9.5.2" \ - "mike==2.0.0" \ - "mkdocs-git-revision-date-localized-plugin==1.2.1" \ - "jupyterlab==4.0.9" \ - "mkdocs-jupyter==0.24.6" \ - "mkdocs-git-committers-plugin-2==2.2.2" mkdocs build --verbose diff --git a/.github/workflows/test-min.yml b/.github/workflows/test-min.yml deleted file mode 100644 index 47021ea23..000000000 --- a/.github/workflows/test-min.yml +++ /dev/null @@ -1,64 +0,0 @@ -name: Python 3.8 - Min Dep Test WorkFlow - -on: - pull_request: - branches: [main, develop] - -# Restrict permissions by default -permissions: - contents: read # Required for checkout - checks: write # Required for test reporting - -jobs: - build-min-dep-test: - runs-on: ubuntu-latest - timeout-minutes: 20 - strategy: - matrix: - python-version: ["3.8"] - fail-fast: false # Continue with other steps if one fails - steps: - - name: ๐Ÿ›Ž๏ธ Checkout - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - - name: ๐Ÿ Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v5.0.0 - with: - python-version: ${{ matrix.python-version }} - check-latest: true - - - name: ๐Ÿ“ฆ Install dependencies - run: | - python -m pip install --upgrade pip - pip install \ - attrs==23.1.0 \ - certifi==2023.7.22 \ - charset-normalizer==2.0.12 \ - cycler==0.12.1 \ - exceptiongroup==1.1.3 \ - fonttools==4.43.1 \ - idna==3.4 \ - iniconfig==2.0.0 \ - kiwisolver==1.4.5 \ - matplotlib==3.5.0 \ - numpy==1.21.2 \ - opencv-python==4.5.5.64 \ - Pillow==10.1.0 \ - packaging==23.2 \ - pluggy==1.3.0 \ - pyparsing==3.1.1 \ - pytest==7.2.0 \ - python-dateutil==2.8.2 \ - PyYAML==5.3 \ - requests==2.26.0 \ - scipy==1.10.0 \ - setuptools-scm==8.0.4 \ - six==1.16.0 \ - tomli==2.0.1 \ - tqdm==4.62.3 \ - typing_extensions==4.8.0 \ - urllib3==1.26.18 \ - defusedxml==0.7.1 - - - name: ๐Ÿงช Test - run: "python -m pytest ./test" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e7fef9af2..e929cc0b6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -6,8 +6,8 @@ on: permissions: contents: read - checks: write # Required for test reporting - pull-requests: write # Required for PR comments + checks: write # Required for test reporting + pull-requests: write # Required for PR comments jobs: build-dev-test: @@ -16,7 +16,7 @@ jobs: strategy: matrix: python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] - fail-fast: false # Continue with other versions if one fails + fail-fast: false # Continue with other versions if one fails steps: - name: ๐Ÿ›Ž๏ธ Checkout uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 @@ -27,11 +27,19 @@ jobs: python-version: ${{ matrix.python-version }} check-latest: true + - name: ๐Ÿ“œ Setup Poetry + uses: abatilo/actions-poetry@e78f54a89cb052fff327414dd9ff010b5d2b4dbd # v3.0.1 + - name: ๐Ÿ“ฆ Install dependencies run: | - python -m pip install --upgrade pip - pip install . - pip install pytest + poetry install --with=test - - name: ๐Ÿงช PyTest - run: "python -m pytest ./test" + - name: Run pytest + uses: pavelzw/pytest-action@510c5e90c360a185039bea56ce8b3e7e51a16507 # v2.2.0 + with: + verbose: true + emoji: true + job-summary: true + custom-arguments: "-q" + click-to-expand: true + report-title: "Test Report" diff --git a/poetry.lock b/poetry.lock index 780a70765..09afe1de3 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "anyio" @@ -1038,61 +1038,61 @@ typing = ["typing-extensions (>=4.12.2)"] [[package]] name = "fonttools" -version = "4.55.0" +version = "4.55.3" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.55.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:51c029d4c0608a21a3d3d169dfc3fb776fde38f00b35ca11fdab63ba10a16f61"}, - {file = "fonttools-4.55.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bca35b4e411362feab28e576ea10f11268b1aeed883b9f22ed05675b1e06ac69"}, - {file = "fonttools-4.55.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ce4ba6981e10f7e0ccff6348e9775ce25ffadbee70c9fd1a3737e3e9f5fa74f"}, - {file = "fonttools-4.55.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31d00f9852a6051dac23294a4cf2df80ced85d1d173a61ba90a3d8f5abc63c60"}, - {file = "fonttools-4.55.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e198e494ca6e11f254bac37a680473a311a88cd40e58f9cc4dc4911dfb686ec6"}, - {file = "fonttools-4.55.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7208856f61770895e79732e1dcbe49d77bd5783adf73ae35f87fcc267df9db81"}, - {file = "fonttools-4.55.0-cp310-cp310-win32.whl", hash = "sha256:e7e6a352ff9e46e8ef8a3b1fe2c4478f8a553e1b5a479f2e899f9dc5f2055880"}, - {file = "fonttools-4.55.0-cp310-cp310-win_amd64.whl", hash = "sha256:636caaeefe586d7c84b5ee0734c1a5ab2dae619dc21c5cf336f304ddb8f6001b"}, - {file = "fonttools-4.55.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fa34aa175c91477485c44ddfbb51827d470011e558dfd5c7309eb31bef19ec51"}, - {file = "fonttools-4.55.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:37dbb3fdc2ef7302d3199fb12468481cbebaee849e4b04bc55b77c24e3c49189"}, - {file = "fonttools-4.55.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5263d8e7ef3c0ae87fbce7f3ec2f546dc898d44a337e95695af2cd5ea21a967"}, - {file = "fonttools-4.55.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f307f6b5bf9e86891213b293e538d292cd1677e06d9faaa4bf9c086ad5f132f6"}, - {file = "fonttools-4.55.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f0a4b52238e7b54f998d6a56b46a2c56b59c74d4f8a6747fb9d4042190f37cd3"}, - {file = "fonttools-4.55.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3e569711464f777a5d4ef522e781dc33f8095ab5efd7548958b36079a9f2f88c"}, - {file = "fonttools-4.55.0-cp311-cp311-win32.whl", hash = "sha256:2b3ab90ec0f7b76c983950ac601b58949f47aca14c3f21eed858b38d7ec42b05"}, - {file = "fonttools-4.55.0-cp311-cp311-win_amd64.whl", hash = "sha256:aa046f6a63bb2ad521004b2769095d4c9480c02c1efa7d7796b37826508980b6"}, - {file = "fonttools-4.55.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:838d2d8870f84fc785528a692e724f2379d5abd3fc9dad4d32f91cf99b41e4a7"}, - {file = "fonttools-4.55.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f46b863d74bab7bb0d395f3b68d3f52a03444964e67ce5c43ce43a75efce9246"}, - {file = "fonttools-4.55.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33b52a9cfe4e658e21b1f669f7309b4067910321757fec53802ca8f6eae96a5a"}, - {file = "fonttools-4.55.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:732a9a63d6ea4a81b1b25a1f2e5e143761b40c2e1b79bb2b68e4893f45139a40"}, - {file = "fonttools-4.55.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7dd91ac3fcb4c491bb4763b820bcab6c41c784111c24172616f02f4bc227c17d"}, - {file = "fonttools-4.55.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1f0e115281a32ff532118aa851ef497a1b7cda617f4621c1cdf81ace3e36fb0c"}, - {file = "fonttools-4.55.0-cp312-cp312-win32.whl", hash = "sha256:6c99b5205844f48a05cb58d4a8110a44d3038c67ed1d79eb733c4953c628b0f6"}, - {file = "fonttools-4.55.0-cp312-cp312-win_amd64.whl", hash = "sha256:f8c8c76037d05652510ae45be1cd8fb5dd2fd9afec92a25374ac82255993d57c"}, - {file = "fonttools-4.55.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8118dc571921dc9e4b288d9cb423ceaf886d195a2e5329cc427df82bba872cd9"}, - {file = "fonttools-4.55.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01124f2ca6c29fad4132d930da69158d3f49b2350e4a779e1efbe0e82bd63f6c"}, - {file = "fonttools-4.55.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81ffd58d2691f11f7c8438796e9f21c374828805d33e83ff4b76e4635633674c"}, - {file = "fonttools-4.55.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5435e5f1eb893c35c2bc2b9cd3c9596b0fcb0a59e7a14121562986dd4c47b8dd"}, - {file = "fonttools-4.55.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d12081729280c39d001edd0f4f06d696014c26e6e9a0a55488fabc37c28945e4"}, - {file = "fonttools-4.55.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a7ad1f1b98ab6cb927ab924a38a8649f1ffd7525c75fe5b594f5dab17af70e18"}, - {file = "fonttools-4.55.0-cp313-cp313-win32.whl", hash = "sha256:abe62987c37630dca69a104266277216de1023cf570c1643bb3a19a9509e7a1b"}, - {file = "fonttools-4.55.0-cp313-cp313-win_amd64.whl", hash = "sha256:2863555ba90b573e4201feaf87a7e71ca3b97c05aa4d63548a4b69ea16c9e998"}, - {file = "fonttools-4.55.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:00f7cf55ad58a57ba421b6a40945b85ac7cc73094fb4949c41171d3619a3a47e"}, - {file = "fonttools-4.55.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f27526042efd6f67bfb0cc2f1610fa20364396f8b1fc5edb9f45bb815fb090b2"}, - {file = "fonttools-4.55.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e67974326af6a8879dc2a4ec63ab2910a1c1a9680ccd63e4a690950fceddbe"}, - {file = "fonttools-4.55.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61dc0a13451143c5e987dec5254d9d428f3c2789a549a7cf4f815b63b310c1cc"}, - {file = "fonttools-4.55.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:b2e526b325a903868c62155a6a7e24df53f6ce4c5c3160214d8fe1be2c41b478"}, - {file = "fonttools-4.55.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:b7ef9068a1297714e6fefe5932c33b058aa1d45a2b8be32a4c6dee602ae22b5c"}, - {file = "fonttools-4.55.0-cp38-cp38-win32.whl", hash = "sha256:55718e8071be35dff098976bc249fc243b58efa263768c611be17fe55975d40a"}, - {file = "fonttools-4.55.0-cp38-cp38-win_amd64.whl", hash = "sha256:553bd4f8cc327f310c20158e345e8174c8eed49937fb047a8bda51daf2c353c8"}, - {file = "fonttools-4.55.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3f901cef813f7c318b77d1c5c14cf7403bae5cb977cede023e22ba4316f0a8f6"}, - {file = "fonttools-4.55.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8c9679fc0dd7e8a5351d321d8d29a498255e69387590a86b596a45659a39eb0d"}, - {file = "fonttools-4.55.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd2820a8b632f3307ebb0bf57948511c2208e34a4939cf978333bc0a3f11f838"}, - {file = "fonttools-4.55.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23bbbb49bec613a32ed1b43df0f2b172313cee690c2509f1af8fdedcf0a17438"}, - {file = "fonttools-4.55.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a656652e1f5d55b9728937a7e7d509b73d23109cddd4e89ee4f49bde03b736c6"}, - {file = "fonttools-4.55.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f50a1f455902208486fbca47ce33054208a4e437b38da49d6721ce2fef732fcf"}, - {file = "fonttools-4.55.0-cp39-cp39-win32.whl", hash = "sha256:161d1ac54c73d82a3cded44202d0218ab007fde8cf194a23d3dd83f7177a2f03"}, - {file = "fonttools-4.55.0-cp39-cp39-win_amd64.whl", hash = "sha256:ca7fd6987c68414fece41c96836e945e1f320cda56fc96ffdc16e54a44ec57a2"}, - {file = "fonttools-4.55.0-py3-none-any.whl", hash = "sha256:12db5888cd4dd3fcc9f0ee60c6edd3c7e1fd44b7dd0f31381ea03df68f8a153f"}, - {file = "fonttools-4.55.0.tar.gz", hash = "sha256:7636acc6ab733572d5e7eec922b254ead611f1cdad17be3f0be7418e8bfaca71"}, + {file = "fonttools-4.55.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1dcc07934a2165ccdc3a5a608db56fb3c24b609658a5b340aee4ecf3ba679dc0"}, + {file = "fonttools-4.55.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f7d66c15ba875432a2d2fb419523f5d3d347f91f48f57b8b08a2dfc3c39b8a3f"}, + {file = "fonttools-4.55.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27e4ae3592e62eba83cd2c4ccd9462dcfa603ff78e09110680a5444c6925d841"}, + {file = "fonttools-4.55.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62d65a3022c35e404d19ca14f291c89cc5890032ff04f6c17af0bd1927299674"}, + {file = "fonttools-4.55.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d342e88764fb201286d185093781bf6628bbe380a913c24adf772d901baa8276"}, + {file = "fonttools-4.55.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:dd68c87a2bfe37c5b33bcda0fba39b65a353876d3b9006fde3adae31f97b3ef5"}, + {file = "fonttools-4.55.3-cp310-cp310-win32.whl", hash = "sha256:1bc7ad24ff98846282eef1cbeac05d013c2154f977a79886bb943015d2b1b261"}, + {file = "fonttools-4.55.3-cp310-cp310-win_amd64.whl", hash = "sha256:b54baf65c52952db65df39fcd4820668d0ef4766c0ccdf32879b77f7c804d5c5"}, + {file = "fonttools-4.55.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8c4491699bad88efe95772543cd49870cf756b019ad56294f6498982408ab03e"}, + {file = "fonttools-4.55.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5323a22eabddf4b24f66d26894f1229261021dacd9d29e89f7872dd8c63f0b8b"}, + {file = "fonttools-4.55.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5480673f599ad410695ca2ddef2dfefe9df779a9a5cda89503881e503c9c7d90"}, + {file = "fonttools-4.55.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da9da6d65cd7aa6b0f806556f4985bcbf603bf0c5c590e61b43aa3e5a0f822d0"}, + {file = "fonttools-4.55.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e894b5bd60d9f473bed7a8f506515549cc194de08064d829464088d23097331b"}, + {file = "fonttools-4.55.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:aee3b57643827e237ff6ec6d28d9ff9766bd8b21e08cd13bff479e13d4b14765"}, + {file = "fonttools-4.55.3-cp311-cp311-win32.whl", hash = "sha256:eb6ca911c4c17eb51853143624d8dc87cdcdf12a711fc38bf5bd21521e79715f"}, + {file = "fonttools-4.55.3-cp311-cp311-win_amd64.whl", hash = "sha256:6314bf82c54c53c71805318fcf6786d986461622dd926d92a465199ff54b1b72"}, + {file = "fonttools-4.55.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f9e736f60f4911061235603a6119e72053073a12c6d7904011df2d8fad2c0e35"}, + {file = "fonttools-4.55.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7a8aa2c5e5b8b3bcb2e4538d929f6589a5c6bdb84fd16e2ed92649fb5454f11c"}, + {file = "fonttools-4.55.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07f8288aacf0a38d174445fc78377a97fb0b83cfe352a90c9d9c1400571963c7"}, + {file = "fonttools-4.55.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8d5e8916c0970fbc0f6f1bece0063363bb5857a7f170121a4493e31c3db3314"}, + {file = "fonttools-4.55.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ae3b6600565b2d80b7c05acb8e24d2b26ac407b27a3f2e078229721ba5698427"}, + {file = "fonttools-4.55.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:54153c49913f45065c8d9e6d0c101396725c5621c8aee744719300f79771d75a"}, + {file = "fonttools-4.55.3-cp312-cp312-win32.whl", hash = "sha256:827e95fdbbd3e51f8b459af5ea10ecb4e30af50221ca103bea68218e9615de07"}, + {file = "fonttools-4.55.3-cp312-cp312-win_amd64.whl", hash = "sha256:e6e8766eeeb2de759e862004aa11a9ea3d6f6d5ec710551a88b476192b64fd54"}, + {file = "fonttools-4.55.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a430178ad3e650e695167cb53242dae3477b35c95bef6525b074d87493c4bf29"}, + {file = "fonttools-4.55.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:529cef2ce91dc44f8e407cc567fae6e49a1786f2fefefa73a294704c415322a4"}, + {file = "fonttools-4.55.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e75f12c82127486fac2d8bfbf5bf058202f54bf4f158d367e41647b972342ca"}, + {file = "fonttools-4.55.3-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:859c358ebf41db18fb72342d3080bce67c02b39e86b9fbcf1610cca14984841b"}, + {file = "fonttools-4.55.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:546565028e244a701f73df6d8dd6be489d01617863ec0c6a42fa25bf45d43048"}, + {file = "fonttools-4.55.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:aca318b77f23523309eec4475d1fbbb00a6b133eb766a8bdc401faba91261abe"}, + {file = "fonttools-4.55.3-cp313-cp313-win32.whl", hash = "sha256:8c5ec45428edaa7022f1c949a632a6f298edc7b481312fc7dc258921e9399628"}, + {file = "fonttools-4.55.3-cp313-cp313-win_amd64.whl", hash = "sha256:11e5de1ee0d95af4ae23c1a138b184b7f06e0b6abacabf1d0db41c90b03d834b"}, + {file = "fonttools-4.55.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:caf8230f3e10f8f5d7593eb6d252a37caf58c480b19a17e250a63dad63834cf3"}, + {file = "fonttools-4.55.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b586ab5b15b6097f2fb71cafa3c98edfd0dba1ad8027229e7b1e204a58b0e09d"}, + {file = "fonttools-4.55.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a8c2794ded89399cc2169c4d0bf7941247b8d5932b2659e09834adfbb01589aa"}, + {file = "fonttools-4.55.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf4fe7c124aa3f4e4c1940880156e13f2f4d98170d35c749e6b4f119a872551e"}, + {file = "fonttools-4.55.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:86721fbc389ef5cc1e2f477019e5069e8e4421e8d9576e9c26f840dbb04678de"}, + {file = "fonttools-4.55.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:89bdc5d88bdeec1b15af790810e267e8332d92561dce4f0748c2b95c9bdf3926"}, + {file = "fonttools-4.55.3-cp38-cp38-win32.whl", hash = "sha256:bc5dbb4685e51235ef487e4bd501ddfc49be5aede5e40f4cefcccabc6e60fb4b"}, + {file = "fonttools-4.55.3-cp38-cp38-win_amd64.whl", hash = "sha256:cd70de1a52a8ee2d1877b6293af8a2484ac82514f10b1c67c1c5762d38073e56"}, + {file = "fonttools-4.55.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bdcc9f04b36c6c20978d3f060e5323a43f6222accc4e7fcbef3f428e216d96af"}, + {file = "fonttools-4.55.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c3ca99e0d460eff46e033cd3992a969658c3169ffcd533e0a39c63a38beb6831"}, + {file = "fonttools-4.55.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22f38464daa6cdb7b6aebd14ab06609328fe1e9705bb0fcc7d1e69de7109ee02"}, + {file = "fonttools-4.55.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed63959d00b61959b035c7d47f9313c2c1ece090ff63afea702fe86de00dbed4"}, + {file = "fonttools-4.55.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5e8d657cd7326eeaba27de2740e847c6b39dde2f8d7cd7cc56f6aad404ddf0bd"}, + {file = "fonttools-4.55.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:fb594b5a99943042c702c550d5494bdd7577f6ef19b0bc73877c948a63184a32"}, + {file = "fonttools-4.55.3-cp39-cp39-win32.whl", hash = "sha256:dc5294a3d5c84226e3dbba1b6f61d7ad813a8c0238fceea4e09aa04848c3d851"}, + {file = "fonttools-4.55.3-cp39-cp39-win_amd64.whl", hash = "sha256:aedbeb1db64496d098e6be92b2e63b5fac4e53b1b92032dfc6988e1ea9134a4d"}, + {file = "fonttools-4.55.3-py3-none-any.whl", hash = "sha256:f412604ccbeee81b091b420272841e5ec5ef68967a9790e80bffd0e30b8e2977"}, + {file = "fonttools-4.55.3.tar.gz", hash = "sha256:3983313c2a04d6cc1fe9251f8fc647754cf49a61dac6cb1e7249ae67afaafc45"}, ] [package.extras] @@ -1218,13 +1218,13 @@ trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" -version = "0.28.0" +version = "0.28.1" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpx-0.28.0-py3-none-any.whl", hash = "sha256:dc0b419a0cfeb6e8b34e85167c0da2671206f5095f1baa9663d23bcfd6b535fc"}, - {file = "httpx-0.28.0.tar.gz", hash = "sha256:0858d3bab51ba7e386637f22a61d8ccddaeec5f3fe4209da3a6168dbb91573e0"}, + {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, + {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, ] [package.dependencies] @@ -1751,13 +1751,13 @@ test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (> [[package]] name = "jupyterlab" -version = "4.2.6" +version = "4.3.3" description = "JupyterLab computational environment" optional = false python-versions = ">=3.8" files = [ - {file = "jupyterlab-4.2.6-py3-none-any.whl", hash = "sha256:78dd42cae5b460f377624b03966a8730e3b0692102ddf5933a2a3730c1bc0a20"}, - {file = "jupyterlab-4.2.6.tar.gz", hash = "sha256:625f3ac19da91f9706baf66df25723b2f1307c1159fc7293035b066786d62a4a"}, + {file = "jupyterlab-4.3.3-py3-none-any.whl", hash = "sha256:32a8fd30677e734ffcc3916a4758b9dab21b02015b668c60eb36f84357b7d4b1"}, + {file = "jupyterlab-4.3.3.tar.gz", hash = "sha256:76fa39e548fdac94dc1204af5956c556f54c785f70ee26aa47ea08eda4d5bbcd"}, ] [package.dependencies] @@ -1773,15 +1773,15 @@ jupyter-server = ">=2.4.0,<3" jupyterlab-server = ">=2.27.1,<3" notebook-shim = ">=0.2" packaging = "*" -setuptools = ">=40.1.0" +setuptools = ">=40.8.0" tomli = {version = ">=1.2.2", markers = "python_version < \"3.11\""} tornado = ">=6.2.0" traitlets = "*" [package.extras] -dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.3.5)"] -docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"] -docs-screenshots = ["altair (==5.3.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.2)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.1.post2)", "matplotlib (==3.8.3)", "nbconvert (>=7.0.0)", "pandas (==2.2.1)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"] +dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.6.9)"] +docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<8.1.0)", "sphinx-copybutton"] +docs-screenshots = ["altair (==5.4.1)", "ipython (==8.16.1)", "ipywidgets (==8.1.5)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.2.post3)", "matplotlib (==3.9.2)", "nbconvert (>=7.0.0)", "pandas (==2.2.3)", "scipy (==1.14.1)", "vega-datasets (==0.9.0)"] test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)", "pyyaml-include (<3.0)", "tomli-w (<2.0)"] @@ -2473,13 +2473,13 @@ pygments = ">2.12.0" [[package]] name = "mkdocs-material" -version = "9.5.47" +version = "9.5.48" description = "Documentation that simply works" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material-9.5.47-py3-none-any.whl", hash = "sha256:53fb9c9624e7865da6ec807d116cd7be24b3cb36ab31b1d1d1a9af58c56009a2"}, - {file = "mkdocs_material-9.5.47.tar.gz", hash = "sha256:fc3b7a8e00ad896660bd3a5cc12ca0cb28bdc2bcbe2a946b5714c23ac91b0ede"}, + {file = "mkdocs_material-9.5.48-py3-none-any.whl", hash = "sha256:b695c998f4b939ce748adbc0d3bff73fa886a670ece948cf27818fa115dc16f8"}, + {file = "mkdocs_material-9.5.48.tar.gz", hash = "sha256:a582531e8b34f4c7ed38c29d5c44763053832cf2a32f7409567e0c74749a47db"}, ] [package.dependencies] @@ -2770,18 +2770,18 @@ files = [ [[package]] name = "notebook" -version = "7.2.2" +version = "7.3.1" description = "Jupyter Notebook - A web-based notebook environment for interactive computing" optional = false python-versions = ">=3.8" files = [ - {file = "notebook-7.2.2-py3-none-any.whl", hash = "sha256:c89264081f671bc02eec0ed470a627ed791b9156cad9285226b31611d3e9fe1c"}, - {file = "notebook-7.2.2.tar.gz", hash = "sha256:2ef07d4220421623ad3fe88118d687bc0450055570cdd160814a59cf3a1c516e"}, + {file = "notebook-7.3.1-py3-none-any.whl", hash = "sha256:212e1486b2230fe22279043f33c7db5cf9a01d29feb063a85cb139747b7c9483"}, + {file = "notebook-7.3.1.tar.gz", hash = "sha256:84381c2a82d867517fd25b86e986dae1fe113a70b98f03edff9b94e499fec8fa"}, ] [package.dependencies] jupyter-server = ">=2.4.0,<3" -jupyterlab = ">=4.2.0,<4.3" +jupyterlab = ">=4.3.2,<4.4" jupyterlab-server = ">=2.27.1,<3" notebook-shim = ">=0.2,<0.3" tornado = ">=6.2.0" @@ -2884,66 +2884,66 @@ files = [ [[package]] name = "numpy" -version = "2.1.3" +version = "2.2.0" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.10" files = [ - {file = "numpy-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c894b4305373b9c5576d7a12b473702afdf48ce5369c074ba304cc5ad8730dff"}, - {file = "numpy-2.1.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b47fbb433d3260adcd51eb54f92a2ffbc90a4595f8970ee00e064c644ac788f5"}, - {file = "numpy-2.1.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:825656d0743699c529c5943554d223c021ff0494ff1442152ce887ef4f7561a1"}, - {file = "numpy-2.1.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:6a4825252fcc430a182ac4dee5a505053d262c807f8a924603d411f6718b88fd"}, - {file = "numpy-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e711e02f49e176a01d0349d82cb5f05ba4db7d5e7e0defd026328e5cfb3226d3"}, - {file = "numpy-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78574ac2d1a4a02421f25da9559850d59457bac82f2b8d7a44fe83a64f770098"}, - {file = "numpy-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c7662f0e3673fe4e832fe07b65c50342ea27d989f92c80355658c7f888fcc83c"}, - {file = "numpy-2.1.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fa2d1337dc61c8dc417fbccf20f6d1e139896a30721b7f1e832b2bb6ef4eb6c4"}, - {file = "numpy-2.1.3-cp310-cp310-win32.whl", hash = "sha256:72dcc4a35a8515d83e76b58fdf8113a5c969ccd505c8a946759b24e3182d1f23"}, - {file = "numpy-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:ecc76a9ba2911d8d37ac01de72834d8849e55473457558e12995f4cd53e778e0"}, - {file = "numpy-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4d1167c53b93f1f5d8a139a742b3c6f4d429b54e74e6b57d0eff40045187b15d"}, - {file = "numpy-2.1.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c80e4a09b3d95b4e1cac08643f1152fa71a0a821a2d4277334c88d54b2219a41"}, - {file = "numpy-2.1.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:576a1c1d25e9e02ed7fa5477f30a127fe56debd53b8d2c89d5578f9857d03ca9"}, - {file = "numpy-2.1.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:973faafebaae4c0aaa1a1ca1ce02434554d67e628b8d805e61f874b84e136b09"}, - {file = "numpy-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:762479be47a4863e261a840e8e01608d124ee1361e48b96916f38b119cfda04a"}, - {file = "numpy-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc6f24b3d1ecc1eebfbf5d6051faa49af40b03be1aaa781ebdadcbc090b4539b"}, - {file = "numpy-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:17ee83a1f4fef3c94d16dc1802b998668b5419362c8a4f4e8a491de1b41cc3ee"}, - {file = "numpy-2.1.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15cb89f39fa6d0bdfb600ea24b250e5f1a3df23f901f51c8debaa6a5d122b2f0"}, - {file = "numpy-2.1.3-cp311-cp311-win32.whl", hash = "sha256:d9beb777a78c331580705326d2367488d5bc473b49a9bc3036c154832520aca9"}, - {file = "numpy-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:d89dd2b6da69c4fff5e39c28a382199ddedc3a5be5390115608345dec660b9e2"}, - {file = "numpy-2.1.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f55ba01150f52b1027829b50d70ef1dafd9821ea82905b63936668403c3b471e"}, - {file = "numpy-2.1.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:13138eadd4f4da03074851a698ffa7e405f41a0845a6b1ad135b81596e4e9958"}, - {file = "numpy-2.1.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a6b46587b14b888e95e4a24d7b13ae91fa22386c199ee7b418f449032b2fa3b8"}, - {file = "numpy-2.1.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:0fa14563cc46422e99daef53d725d0c326e99e468a9320a240affffe87852564"}, - {file = "numpy-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8637dcd2caa676e475503d1f8fdb327bc495554e10838019651b76d17b98e512"}, - {file = "numpy-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2312b2aa89e1f43ecea6da6ea9a810d06aae08321609d8dc0d0eda6d946a541b"}, - {file = "numpy-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a38c19106902bb19351b83802531fea19dee18e5b37b36454f27f11ff956f7fc"}, - {file = "numpy-2.1.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02135ade8b8a84011cbb67dc44e07c58f28575cf9ecf8ab304e51c05528c19f0"}, - {file = "numpy-2.1.3-cp312-cp312-win32.whl", hash = "sha256:e6988e90fcf617da2b5c78902fe8e668361b43b4fe26dbf2d7b0f8034d4cafb9"}, - {file = "numpy-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:0d30c543f02e84e92c4b1f415b7c6b5326cbe45ee7882b6b77db7195fb971e3a"}, - {file = "numpy-2.1.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96fe52fcdb9345b7cd82ecd34547fca4321f7656d500eca497eb7ea5a926692f"}, - {file = "numpy-2.1.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f653490b33e9c3a4c1c01d41bc2aef08f9475af51146e4a7710c450cf9761598"}, - {file = "numpy-2.1.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:dc258a761a16daa791081d026f0ed4399b582712e6fc887a95af09df10c5ca57"}, - {file = "numpy-2.1.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:016d0f6f5e77b0f0d45d77387ffa4bb89816b57c835580c3ce8e099ef830befe"}, - {file = "numpy-2.1.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c181ba05ce8299c7aa3125c27b9c2167bca4a4445b7ce73d5febc411ca692e43"}, - {file = "numpy-2.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5641516794ca9e5f8a4d17bb45446998c6554704d888f86df9b200e66bdcce56"}, - {file = "numpy-2.1.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ea4dedd6e394a9c180b33c2c872b92f7ce0f8e7ad93e9585312b0c5a04777a4a"}, - {file = "numpy-2.1.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0df3635b9c8ef48bd3be5f862cf71b0a4716fa0e702155c45067c6b711ddcef"}, - {file = "numpy-2.1.3-cp313-cp313-win32.whl", hash = "sha256:50ca6aba6e163363f132b5c101ba078b8cbd3fa92c7865fd7d4d62d9779ac29f"}, - {file = "numpy-2.1.3-cp313-cp313-win_amd64.whl", hash = "sha256:747641635d3d44bcb380d950679462fae44f54b131be347d5ec2bce47d3df9ed"}, - {file = "numpy-2.1.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:996bb9399059c5b82f76b53ff8bb686069c05acc94656bb259b1d63d04a9506f"}, - {file = "numpy-2.1.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:45966d859916ad02b779706bb43b954281db43e185015df6eb3323120188f9e4"}, - {file = "numpy-2.1.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:baed7e8d7481bfe0874b566850cb0b85243e982388b7b23348c6db2ee2b2ae8e"}, - {file = "numpy-2.1.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:a9f7f672a3388133335589cfca93ed468509cb7b93ba3105fce780d04a6576a0"}, - {file = "numpy-2.1.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7aac50327da5d208db2eec22eb11e491e3fe13d22653dce51b0f4109101b408"}, - {file = "numpy-2.1.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4394bc0dbd074b7f9b52024832d16e019decebf86caf909d94f6b3f77a8ee3b6"}, - {file = "numpy-2.1.3-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:50d18c4358a0a8a53f12a8ba9d772ab2d460321e6a93d6064fc22443d189853f"}, - {file = "numpy-2.1.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:14e253bd43fc6b37af4921b10f6add6925878a42a0c5fe83daee390bca80bc17"}, - {file = "numpy-2.1.3-cp313-cp313t-win32.whl", hash = "sha256:08788d27a5fd867a663f6fc753fd7c3ad7e92747efc73c53bca2f19f8bc06f48"}, - {file = "numpy-2.1.3-cp313-cp313t-win_amd64.whl", hash = "sha256:2564fbdf2b99b3f815f2107c1bbc93e2de8ee655a69c261363a1172a79a257d4"}, - {file = "numpy-2.1.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4f2015dfe437dfebbfce7c85c7b53d81ba49e71ba7eadbf1df40c915af75979f"}, - {file = "numpy-2.1.3-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:3522b0dfe983a575e6a9ab3a4a4dfe156c3e428468ff08ce582b9bb6bd1d71d4"}, - {file = "numpy-2.1.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c006b607a865b07cd981ccb218a04fc86b600411d83d6fc261357f1c0966755d"}, - {file = "numpy-2.1.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e14e26956e6f1696070788252dcdff11b4aca4c3e8bd166e0df1bb8f315a67cb"}, - {file = "numpy-2.1.3.tar.gz", hash = "sha256:aa08e04e08aaf974d4458def539dece0d28146d866a39da5639596f4921fd761"}, + {file = "numpy-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1e25507d85da11ff5066269d0bd25d06e0a0f2e908415534f3e603d2a78e4ffa"}, + {file = "numpy-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a62eb442011776e4036af5c8b1a00b706c5bc02dc15eb5344b0c750428c94219"}, + {file = "numpy-2.2.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:b606b1aaf802e6468c2608c65ff7ece53eae1a6874b3765f69b8ceb20c5fa78e"}, + {file = "numpy-2.2.0-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:36b2b43146f646642b425dd2027730f99bac962618ec2052932157e213a040e9"}, + {file = "numpy-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fe8f3583e0607ad4e43a954e35c1748b553bfe9fdac8635c02058023277d1b3"}, + {file = "numpy-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:122fd2fcfafdefc889c64ad99c228d5a1f9692c3a83f56c292618a59aa60ae83"}, + {file = "numpy-2.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3f2f5cddeaa4424a0a118924b988746db6ffa8565e5829b1841a8a3bd73eb59a"}, + {file = "numpy-2.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7fe4bb0695fe986a9e4deec3b6857003b4cfe5c5e4aac0b95f6a658c14635e31"}, + {file = "numpy-2.2.0-cp310-cp310-win32.whl", hash = "sha256:b30042fe92dbd79f1ba7f6898fada10bdaad1847c44f2dff9a16147e00a93661"}, + {file = "numpy-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:54dc1d6d66f8d37843ed281773c7174f03bf7ad826523f73435deb88ba60d2d4"}, + {file = "numpy-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9874bc2ff574c40ab7a5cbb7464bf9b045d617e36754a7bc93f933d52bd9ffc6"}, + {file = "numpy-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0da8495970f6b101ddd0c38ace92edea30e7e12b9a926b57f5fabb1ecc25bb90"}, + {file = "numpy-2.2.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0557eebc699c1c34cccdd8c3778c9294e8196df27d713706895edc6f57d29608"}, + {file = "numpy-2.2.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:3579eaeb5e07f3ded59298ce22b65f877a86ba8e9fe701f5576c99bb17c283da"}, + {file = "numpy-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40deb10198bbaa531509aad0cd2f9fadb26c8b94070831e2208e7df543562b74"}, + {file = "numpy-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2aed8fcf8abc3020d6a9ccb31dbc9e7d7819c56a348cc88fd44be269b37427e"}, + {file = "numpy-2.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a222d764352c773aa5ebde02dd84dba3279c81c6db2e482d62a3fa54e5ece69b"}, + {file = "numpy-2.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4e58666988605e251d42c2818c7d3d8991555381be26399303053b58a5bbf30d"}, + {file = "numpy-2.2.0-cp311-cp311-win32.whl", hash = "sha256:4723a50e1523e1de4fccd1b9a6dcea750c2102461e9a02b2ac55ffeae09a4410"}, + {file = "numpy-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:16757cf28621e43e252c560d25b15f18a2f11da94fea344bf26c599b9cf54b73"}, + {file = "numpy-2.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cff210198bb4cae3f3c100444c5eaa573a823f05c253e7188e1362a5555235b3"}, + {file = "numpy-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58b92a5828bd4d9aa0952492b7de803135038de47343b2aa3cc23f3b71a3dc4e"}, + {file = "numpy-2.2.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:ebe5e59545401fbb1b24da76f006ab19734ae71e703cdb4a8b347e84a0cece67"}, + {file = "numpy-2.2.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e2b8cd48a9942ed3f85b95ca4105c45758438c7ed28fff1e4ce3e57c3b589d8e"}, + {file = "numpy-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57fcc997ffc0bef234b8875a54d4058afa92b0b0c4223fc1f62f24b3b5e86038"}, + {file = "numpy-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ad7d11b309bd132d74397fcf2920933c9d1dc865487128f5c03d580f2c3d03"}, + {file = "numpy-2.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cb24cca1968b21355cc6f3da1a20cd1cebd8a023e3c5b09b432444617949085a"}, + {file = "numpy-2.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0798b138c291d792f8ea40fe3768610f3c7dd2574389e37c3f26573757c8f7ef"}, + {file = "numpy-2.2.0-cp312-cp312-win32.whl", hash = "sha256:afe8fb968743d40435c3827632fd36c5fbde633b0423da7692e426529b1759b1"}, + {file = "numpy-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:3a4199f519e57d517ebd48cb76b36c82da0360781c6a0353e64c0cac30ecaad3"}, + {file = "numpy-2.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f8c8b141ef9699ae777c6278b52c706b653bf15d135d302754f6b2e90eb30367"}, + {file = "numpy-2.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0f0986e917aca18f7a567b812ef7ca9391288e2acb7a4308aa9d265bd724bdae"}, + {file = "numpy-2.2.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:1c92113619f7b272838b8d6702a7f8ebe5edea0df48166c47929611d0b4dea69"}, + {file = "numpy-2.2.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5a145e956b374e72ad1dff82779177d4a3c62bc8248f41b80cb5122e68f22d13"}, + {file = "numpy-2.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18142b497d70a34b01642b9feabb70156311b326fdddd875a9981f34a369b671"}, + {file = "numpy-2.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7d41d1612c1a82b64697e894b75db6758d4f21c3ec069d841e60ebe54b5b571"}, + {file = "numpy-2.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a98f6f20465e7618c83252c02041517bd2f7ea29be5378f09667a8f654a5918d"}, + {file = "numpy-2.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e09d40edfdb4e260cb1567d8ae770ccf3b8b7e9f0d9b5c2a9992696b30ce2742"}, + {file = "numpy-2.2.0-cp313-cp313-win32.whl", hash = "sha256:3905a5fffcc23e597ee4d9fb3fcd209bd658c352657548db7316e810ca80458e"}, + {file = "numpy-2.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:a184288538e6ad699cbe6b24859206e38ce5fba28f3bcfa51c90d0502c1582b2"}, + {file = "numpy-2.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7832f9e8eb00be32f15fdfb9a981d6955ea9adc8574c521d48710171b6c55e95"}, + {file = "numpy-2.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f0dd071b95bbca244f4cb7f70b77d2ff3aaaba7fa16dc41f58d14854a6204e6c"}, + {file = "numpy-2.2.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:b0b227dcff8cdc3efbce66d4e50891f04d0a387cce282fe1e66199146a6a8fca"}, + {file = "numpy-2.2.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ab153263a7c5ccaf6dfe7e53447b74f77789f28ecb278c3b5d49db7ece10d6d"}, + {file = "numpy-2.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e500aba968a48e9019e42c0c199b7ec0696a97fa69037bea163b55398e390529"}, + {file = "numpy-2.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:440cfb3db4c5029775803794f8638fbdbf71ec702caf32735f53b008e1eaece3"}, + {file = "numpy-2.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a55dc7a7f0b6198b07ec0cd445fbb98b05234e8b00c5ac4874a63372ba98d4ab"}, + {file = "numpy-2.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4bddbaa30d78c86329b26bd6aaaea06b1e47444da99eddac7bf1e2fab717bd72"}, + {file = "numpy-2.2.0-cp313-cp313t-win32.whl", hash = "sha256:30bf971c12e4365153afb31fc73f441d4da157153f3400b82db32d04de1e4066"}, + {file = "numpy-2.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d35717333b39d1b6bb8433fa758a55f1081543de527171543a2b710551d40881"}, + {file = "numpy-2.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e12c6c1ce84628c52d6367863773f7c8c8241be554e8b79686e91a43f1733773"}, + {file = "numpy-2.2.0-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:b6207dc8fb3c8cb5668e885cef9ec7f70189bec4e276f0ff70d5aa078d32c88e"}, + {file = "numpy-2.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a50aeff71d0f97b6450d33940c7181b08be1441c6c193e678211bff11aa725e7"}, + {file = "numpy-2.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:df12a1f99b99f569a7c2ae59aa2d31724e8d835fc7f33e14f4792e3071d11221"}, + {file = "numpy-2.2.0.tar.gz", hash = "sha256:140dd80ff8981a583a60980be1a655068f8adebf7a45a06a6858c873fcdcd4a0"}, ] [[package]] @@ -3372,13 +3372,13 @@ xmp = ["defusedxml"] [[package]] name = "pkginfo" -version = "1.11.2" +version = "1.12.0" description = "Query metadata from sdists / bdists / installed packages." optional = false python-versions = ">=3.8" files = [ - {file = "pkginfo-1.11.2-py3-none-any.whl", hash = "sha256:9ec518eefccd159de7ed45386a6bb4c6ca5fa2cb3bd9b71154fae44f6f1b36a3"}, - {file = "pkginfo-1.11.2.tar.gz", hash = "sha256:c6bc916b8298d159e31f2c216e35ee5b86da7da18874f879798d0a1983537c86"}, + {file = "pkginfo-1.12.0-py3-none-any.whl", hash = "sha256:dcd589c9be4da8973eceffa247733c144812759aa67eaf4bbf97016a02f39088"}, + {file = "pkginfo-1.12.0.tar.gz", hash = "sha256:8ad91a0445a036782b9366ef8b8c2c50291f83a553478ba8580c73d3215700cf"}, ] [package.extras] @@ -3446,13 +3446,13 @@ virtualenv = ">=20.10.0" [[package]] name = "prometheus-client" -version = "0.21.0" +version = "0.21.1" description = "Python client for the Prometheus monitoring system." optional = false python-versions = ">=3.8" files = [ - {file = "prometheus_client-0.21.0-py3-none-any.whl", hash = "sha256:4fa6b4dd0ac16d58bb587c04b1caae65b8c5043e85f778f42f5f632f6af2e166"}, - {file = "prometheus_client-0.21.0.tar.gz", hash = "sha256:96c83c606b71ff2b0a433c98889d275f51ffec6c5e267de37c7a2b5c9aa9233e"}, + {file = "prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301"}, + {file = "prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb"}, ] [package.extras] @@ -4266,29 +4266,29 @@ files = [ [[package]] name = "ruff" -version = "0.8.1" +version = "0.8.2" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.8.1-py3-none-linux_armv6l.whl", hash = "sha256:fae0805bd514066f20309f6742f6ee7904a773eb9e6c17c45d6b1600ca65c9b5"}, - {file = "ruff-0.8.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b8a4f7385c2285c30f34b200ca5511fcc865f17578383db154e098150ce0a087"}, - {file = "ruff-0.8.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:cd054486da0c53e41e0086e1730eb77d1f698154f910e0cd9e0d64274979a209"}, - {file = "ruff-0.8.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2029b8c22da147c50ae577e621a5bfbc5d1fed75d86af53643d7a7aee1d23871"}, - {file = "ruff-0.8.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2666520828dee7dfc7e47ee4ea0d928f40de72056d929a7c5292d95071d881d1"}, - {file = "ruff-0.8.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:333c57013ef8c97a53892aa56042831c372e0bb1785ab7026187b7abd0135ad5"}, - {file = "ruff-0.8.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:288326162804f34088ac007139488dcb43de590a5ccfec3166396530b58fb89d"}, - {file = "ruff-0.8.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b12c39b9448632284561cbf4191aa1b005882acbc81900ffa9f9f471c8ff7e26"}, - {file = "ruff-0.8.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:364e6674450cbac8e998f7b30639040c99d81dfb5bbc6dfad69bc7a8f916b3d1"}, - {file = "ruff-0.8.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b22346f845fec132aa39cd29acb94451d030c10874408dbf776af3aaeb53284c"}, - {file = "ruff-0.8.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b2f2f7a7e7648a2bfe6ead4e0a16745db956da0e3a231ad443d2a66a105c04fa"}, - {file = "ruff-0.8.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:adf314fc458374c25c5c4a4a9270c3e8a6a807b1bec018cfa2813d6546215540"}, - {file = "ruff-0.8.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a885d68342a231b5ba4d30b8c6e1b1ee3a65cf37e3d29b3c74069cdf1ee1e3c9"}, - {file = "ruff-0.8.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d2c16e3508c8cc73e96aa5127d0df8913d2290098f776416a4b157657bee44c5"}, - {file = "ruff-0.8.1-py3-none-win32.whl", hash = "sha256:93335cd7c0eaedb44882d75a7acb7df4b77cd7cd0d2255c93b28791716e81790"}, - {file = "ruff-0.8.1-py3-none-win_amd64.whl", hash = "sha256:2954cdbe8dfd8ab359d4a30cd971b589d335a44d444b6ca2cb3d1da21b75e4b6"}, - {file = "ruff-0.8.1-py3-none-win_arm64.whl", hash = "sha256:55873cc1a473e5ac129d15eccb3c008c096b94809d693fc7053f588b67822737"}, - {file = "ruff-0.8.1.tar.gz", hash = "sha256:3583db9a6450364ed5ca3f3b4225958b24f78178908d5c4bc0f46251ccca898f"}, + {file = "ruff-0.8.2-py3-none-linux_armv6l.whl", hash = "sha256:c49ab4da37e7c457105aadfd2725e24305ff9bc908487a9bf8d548c6dad8bb3d"}, + {file = "ruff-0.8.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ec016beb69ac16be416c435828be702ee694c0d722505f9c1f35e1b9c0cc1bf5"}, + {file = "ruff-0.8.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:f05cdf8d050b30e2ba55c9b09330b51f9f97d36d4673213679b965d25a785f3c"}, + {file = "ruff-0.8.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60f578c11feb1d3d257b2fb043ddb47501ab4816e7e221fbb0077f0d5d4e7b6f"}, + {file = "ruff-0.8.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cbd5cf9b0ae8f30eebc7b360171bd50f59ab29d39f06a670b3e4501a36ba5897"}, + {file = "ruff-0.8.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b402ddee3d777683de60ff76da801fa7e5e8a71038f57ee53e903afbcefdaa58"}, + {file = "ruff-0.8.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:705832cd7d85605cb7858d8a13d75993c8f3ef1397b0831289109e953d833d29"}, + {file = "ruff-0.8.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:32096b41aaf7a5cc095fa45b4167b890e4c8d3fd217603f3634c92a541de7248"}, + {file = "ruff-0.8.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e769083da9439508833cfc7c23e351e1809e67f47c50248250ce1ac52c21fb93"}, + {file = "ruff-0.8.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fe716592ae8a376c2673fdfc1f5c0c193a6d0411f90a496863c99cd9e2ae25d"}, + {file = "ruff-0.8.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:81c148825277e737493242b44c5388a300584d73d5774defa9245aaef55448b0"}, + {file = "ruff-0.8.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d261d7850c8367704874847d95febc698a950bf061c9475d4a8b7689adc4f7fa"}, + {file = "ruff-0.8.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:1ca4e3a87496dc07d2427b7dd7ffa88a1e597c28dad65ae6433ecb9f2e4f022f"}, + {file = "ruff-0.8.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:729850feed82ef2440aa27946ab39c18cb4a8889c1128a6d589ffa028ddcfc22"}, + {file = "ruff-0.8.2-py3-none-win32.whl", hash = "sha256:ac42caaa0411d6a7d9594363294416e0e48fc1279e1b0e948391695db2b3d5b1"}, + {file = "ruff-0.8.2-py3-none-win_amd64.whl", hash = "sha256:2aae99ec70abf43372612a838d97bfe77d45146254568d94926e8ed5bbb409ea"}, + {file = "ruff-0.8.2-py3-none-win_arm64.whl", hash = "sha256:fb88e2a506b70cfbc2de6fae6681c4f944f7dd5f2fe87233a7233d888bad73e8"}, + {file = "ruff-0.8.2.tar.gz", hash = "sha256:b84f4f414dda8ac7f75075c1fa0b905ac0ff25361f42e6d5da681a465e0f78e5"}, ] [[package]] @@ -4474,13 +4474,13 @@ type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.12 [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] [[package]] @@ -4740,13 +4740,13 @@ types-setuptools = "*" [[package]] name = "types-python-dateutil" -version = "2.9.0.20241003" +version = "2.9.0.20241206" description = "Typing stubs for python-dateutil" optional = false python-versions = ">=3.8" files = [ - {file = "types-python-dateutil-2.9.0.20241003.tar.gz", hash = "sha256:58cb85449b2a56d6684e41aeefb4c4280631246a0da1a719bdbe6f3fb0317446"}, - {file = "types_python_dateutil-2.9.0.20241003-py3-none-any.whl", hash = "sha256:250e1d8e80e7bbc3a6c99b907762711d1a1cdd00e978ad39cb5940f6f0a87f3d"}, + {file = "types_python_dateutil-2.9.0.20241206-py3-none-any.whl", hash = "sha256:e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53"}, + {file = "types_python_dateutil-2.9.0.20241206.tar.gz", hash = "sha256:18f493414c26ffba692a72369fea7a154c502646301ebfe3d56a04b3767284cb"}, ] [[package]] @@ -5047,4 +5047,4 @@ metrics = ["pandas", "pandas"] [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "6d745f512b187236f021aa37a9350d8d330baf2eeddf905ed3116ed7e5b67811" +content-hash = "0c0b4c90836b0ca79844bc9ca1bccd6752f374f6690f3a2d9531ff615212fae1" diff --git a/pyproject.toml b/pyproject.toml index 24fe30629..306157cc5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -85,8 +85,8 @@ tqdm = ">=4.62.3" # pandas: picked lowest major version that supports Python 3.8 # pandas 2.2.3 has been released with support for Python 3.13 pandas = [ - { version = ">=2.0.0", python = "<3.13",optional = true }, - { version = ">=2.2.3", python = ">=3.13",optional = true }, + { version = ">=2.0.0", python = "<3.13", optional = true }, + { version = ">=2.2.3", python = ">=3.13", optional = true }, ] opencv-python = ">=4.5.5.64" @@ -94,6 +94,9 @@ opencv-python = ">=4.5.5.64" [tool.poetry.extras] metrics = ["pandas"] +[tool.poetry.group.test.dependencies] +pytest = ">=7.2.2,<9.0.0" + [tool.poetry.group.dev.dependencies] twine = ">=5.1.1,<7.0.0" pytest = ">=7.2.2,<9.0.0" @@ -133,6 +136,8 @@ types-requests = "^2.32.0.20240712" types-tqdm = "^4.66.0.20240417" pandas-stubs = ">=2.0.0.230412" +[tool.poetry.group.build.dependencies] +twine = ">=5.1.1,<7.0.0" [tool.bandit] target = ["test", "supervision"] From 7c5320409cc69f283449632fed533afa000ae0f2 Mon Sep 17 00:00:00 2001 From: Alex Norell Date: Wed, 11 Dec 2024 10:55:04 -0800 Subject: [PATCH 04/11] Change timeouts and bump action versions --- .github/workflows/clear-cache.yml | 5 ++--- .github/workflows/poetry-test.yml | 1 + .github/workflows/publish-docs.yml | 2 +- .github/workflows/publish-test.yml | 2 +- .github/workflows/publish.yml | 2 +- .github/workflows/test-doc.yml | 23 +++++++++++++---------- .github/workflows/test.yml | 9 ++++----- 7 files changed, 23 insertions(+), 21 deletions(-) diff --git a/.github/workflows/clear-cache.yml b/.github/workflows/clear-cache.yml index 386b3d703..9bef93792 100644 --- a/.github/workflows/clear-cache.yml +++ b/.github/workflows/clear-cache.yml @@ -1,14 +1,13 @@ - name: Clear cache on: schedule: - - cron: '0 0 1 * *' # Run at midnight on the first day of every month + - cron: "0 0 1 * *" # Run at midnight on the first day of every month workflow_dispatch: # Restrict permissions by default permissions: - actions: write # Required for cache management + actions: write # Required for cache management jobs: clear-cache: diff --git a/.github/workflows/poetry-test.yml b/.github/workflows/poetry-test.yml index 07b2aadbf..139409d59 100644 --- a/.github/workflows/poetry-test.yml +++ b/.github/workflows/poetry-test.yml @@ -12,6 +12,7 @@ on: jobs: poetry-tests: + timeout-minutes: 10 strategy: fail-fast: false matrix: diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml index f9a67f46c..3b658ff88 100644 --- a/.github/workflows/publish-docs.yml +++ b/.github/workflows/publish-docs.yml @@ -22,7 +22,7 @@ permissions: jobs: deploy: runs-on: ubuntu-latest - timeout-minutes: 30 + timeout-minutes: 10 strategy: matrix: python-version: ["3.10"] diff --git a/.github/workflows/publish-test.yml b/.github/workflows/publish-test.yml index 722a899b1..b28354ec8 100644 --- a/.github/workflows/publish-test.yml +++ b/.github/workflows/publish-test.yml @@ -14,7 +14,7 @@ jobs: build-and-publish-pre-release: runs-on: ubuntu-latest environment: release - timeout-minutes: 15 + timeout-minutes: 10 permissions: id-token: write # Required for PyPI publishing contents: read # Required for checkout diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index c03789b9a..96d78ac6d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -12,7 +12,7 @@ jobs: build-and-publish-pre-release: runs-on: ubuntu-latest environment: release - timeout-minutes: 15 + timeout-minutes: 10 permissions: id-token: write # Required for PyPI publishing contents: read # Required for checkout diff --git a/.github/workflows/test-doc.yml b/.github/workflows/test-doc.yml index 3b7772109..109929748 100644 --- a/.github/workflows/test-doc.yml +++ b/.github/workflows/test-doc.yml @@ -6,29 +6,32 @@ on: # Restrict permissions by default permissions: - contents: read # Required for checkout - checks: write # Required for test reporting + contents: read # Required for checkout + checks: write # Required for test reporting jobs: docs-build-test: runs-on: ubuntu-latest - timeout-minutes: 15 + timeout-minutes: 10 + strategy: + matrix: + python-version: ["3.10"] steps: - - name: ๐Ÿ”„ Checkout code - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - name: ๐Ÿ“ฅ Checkout the repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - name: ๐Ÿ Set up Python - uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v5.0.0 + - name: ๐Ÿ Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 with: - python-version: '3.10' + python-version: ${{ matrix.python-version }} - name: ๐Ÿ“œ Setup Poetry uses: abatilo/actions-poetry@e78f54a89cb052fff327414dd9ff010b5d2b4dbd # v3.0.1 - + - name: ๐Ÿ—๏ธ Install dependencies run: | python install --group docs - + - name: ๐Ÿงช Test Docs Build run: | mkdocs build --verbose diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e929cc0b6..c1a1fdae3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,20 +12,19 @@ permissions: jobs: build-dev-test: runs-on: ubuntu-latest - timeout-minutes: 30 + timeout-minutes: 10 strategy: matrix: python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] fail-fast: false # Continue with other versions if one fails steps: - - name: ๐Ÿ›Ž๏ธ Checkout - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - name: ๐Ÿ“ฅ Checkout the repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: ๐Ÿ Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v5.0.0 + uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 with: python-version: ${{ matrix.python-version }} - check-latest: true - name: ๐Ÿ“œ Setup Poetry uses: abatilo/actions-poetry@e78f54a89cb052fff327414dd9ff010b5d2b4dbd # v3.0.1 From c257221fe00e8ffbb6142435e54f75d08cebf7fa Mon Sep 17 00:00:00 2001 From: Alex Norell Date: Wed, 11 Dec 2024 10:57:58 -0800 Subject: [PATCH 05/11] Fix EOF --- .github/dependabot.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 9df71d0fb..42aa0e9c6 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -15,4 +15,4 @@ updates: interval: "weekly" commit-message: prefix: โฌ†๏ธ - target-branch: "develop" \ No newline at end of file + target-branch: "develop" From 3d62caf4f3c8e2101d8425bf0be03d5004015570 Mon Sep 17 00:00:00 2001 From: Alex Norell Date: Wed, 11 Dec 2024 11:08:56 -0800 Subject: [PATCH 06/11] Update workflows --- .github/workflows/test-doc.yml | 2 +- .github/workflows/test.yml | 1 + pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-doc.yml b/.github/workflows/test-doc.yml index 109929748..24fd6e8c6 100644 --- a/.github/workflows/test-doc.yml +++ b/.github/workflows/test-doc.yml @@ -30,7 +30,7 @@ jobs: - name: ๐Ÿ—๏ธ Install dependencies run: | - python install --group docs + poetry install --with=docs - name: ๐Ÿงช Test Docs Build run: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c1a1fdae3..93aca8d17 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -42,3 +42,4 @@ jobs: custom-arguments: "-q" click-to-expand: true report-title: "Test Report" + custom-pytest: "poetry run pytest" diff --git a/pyproject.toml b/pyproject.toml index 306157cc5..770317bf8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -121,7 +121,7 @@ mkdocstrings = ">=0.25.2,<0.27.0" mkdocstrings-python = "^1.10.9" mike = "^2.0.0" # For Documentation Development use Python 3.10 or above -#ย Use Latest mkdocs-jupyter min 0.24.6 for Jupyter Notebook Theme support +# Use Latest mkdocs-jupyter min 0.24.6 for Jupyter Notebook Theme support mkdocs-jupyter = "^0.24.3" mkdocs-git-committers-plugin-2 = "^2.4.1" mkdocs-git-revision-date-localized-plugin = "^1.2.4" From 40340ef8a69ff8b71b3092ae13cf6955c080fbca Mon Sep 17 00:00:00 2001 From: Alex Norell Date: Wed, 11 Dec 2024 11:14:11 -0800 Subject: [PATCH 07/11] Update builds and tests --- .github/workflows/publish-docs.yml | 4 ++-- .github/workflows/test-doc.yml | 2 +- poetry.lock | 34 +++++++++++++++++++++++++++--- pyproject.toml | 2 ++ 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml index 3b658ff88..041ef34e5 100644 --- a/.github/workflows/publish-docs.yml +++ b/.github/workflows/publish-docs.yml @@ -50,10 +50,10 @@ jobs: - name: ๐Ÿš€ Deploy Development Docs if: github.event_name == 'push' && github.ref == 'refs/heads/develop' run: | - MKDOCS_GIT_COMMITTERS_APIKEY=${{ secrets.GITHUB_TOKEN }} mike deploy --push --update-aliases develop + MKDOCS_GIT_COMMITTERS_APIKEY=${{ secrets.GITHUB_TOKEN }} poetry run mike deploy --push develop - name: ๐Ÿš€ Deploy Release Docs if: github.event_name == 'release' && github.event.action == 'published' run: | latest_tag=$(git describe --tags `git rev-list --tags --max-count=1`) - MKDOCS_GIT_COMMITTERS_APIKEY=${{ secrets.GITHUB_TOKEN }} mike deploy --push --update-aliases $latest_tag latest + MKDOCS_GIT_COMMITTERS_APIKEY=${{ secrets.GITHUB_TOKEN }} poetry run mike deploy --push --update-aliases $latest_tag latest diff --git a/.github/workflows/test-doc.yml b/.github/workflows/test-doc.yml index 24fd6e8c6..507196627 100644 --- a/.github/workflows/test-doc.yml +++ b/.github/workflows/test-doc.yml @@ -34,4 +34,4 @@ jobs: - name: ๐Ÿงช Test Docs Build run: | - mkdocs build --verbose + poetry run mkdocs build --verbose diff --git a/poetry.lock b/poetry.lock index 551e9931e..ac6f913e1 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "anyio" @@ -1762,7 +1762,7 @@ files = [ [package.dependencies] async-lru = ">=1.0.0" -httpx = ">=0.28.0,<0.29.0" +httpx = ">=0.25.0" importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} importlib-resources = {version = ">=1.4", markers = "python_version < \"3.9\""} ipykernel = ">=6.5.0" @@ -3636,6 +3636,34 @@ tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +[[package]] +name = "pytest-emoji" +version = "0.2.0" +description = "A pytest plugin that adds emojis to your test result report" +optional = false +python-versions = ">=3.4" +files = [ + {file = "pytest-emoji-0.2.0.tar.gz", hash = "sha256:e1bd4790d87649c2d09c272c88bdfc4d37c1cc7c7a46583087d7c510944571e8"}, + {file = "pytest_emoji-0.2.0-py3-none-any.whl", hash = "sha256:6e34ed21970fa4b80a56ad11417456bd873eb066c02315fe9df0fafe6d4d4436"}, +] + +[package.dependencies] +pytest = ">=4.2.1" + +[[package]] +name = "pytest-md" +version = "0.2.0" +description = "Plugin for generating Markdown reports for pytest results" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pytest-md-0.2.0.tar.gz", hash = "sha256:3b248d5b360ea5198e05b4f49c7442234812809a63137ec6cdd3643a40cf0112"}, + {file = "pytest_md-0.2.0-py3-none-any.whl", hash = "sha256:4c4cd16fea6d1485e87ee254558712c804a96d2aa9674b780e7eb8fb6526e1d1"}, +] + +[package.dependencies] +pytest = ">=4.2.1" + [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -5047,4 +5075,4 @@ metrics = ["pandas", "pandas"] [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "0c0b4c90836b0ca79844bc9ca1bccd6752f374f6690f3a2d9531ff615212fae1" +content-hash = "621eea8ec013d7be2bb4b7d7093f81e57b74b6e668379de34488e34bcd88ab87" diff --git a/pyproject.toml b/pyproject.toml index 770317bf8..f5106d33c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -96,6 +96,8 @@ metrics = ["pandas"] [tool.poetry.group.test.dependencies] pytest = ">=7.2.2,<9.0.0" +pytest-md = "^0.2.0" +pytest-emoji = "^0.2.0" [tool.poetry.group.dev.dependencies] twine = ">=5.1.1,<7.0.0" From 517b25f27f1f59d539c8cf784eef387ea52a60ce Mon Sep 17 00:00:00 2001 From: Alex Norell Date: Wed, 11 Dec 2024 11:16:51 -0800 Subject: [PATCH 08/11] Run tests on all platforms --- .github/workflows/test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 93aca8d17..52ac6888e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,12 +11,13 @@ permissions: jobs: build-dev-test: - runs-on: ubuntu-latest timeout-minutes: 10 strategy: matrix: + os: [ubuntu-latest, windows-latest, macos-latest] python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] fail-fast: false # Continue with other versions if one fails + runs-on: ${{ matrix.os }} steps: - name: ๐Ÿ“ฅ Checkout the repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 From c9ea75e3cae1a668cdc10e16f41a6646122b6b77 Mon Sep 17 00:00:00 2001 From: Alex Norell Date: Wed, 11 Dec 2024 11:27:39 -0800 Subject: [PATCH 09/11] Add workflow job names --- .github/workflows/clear-cache.yml | 1 + .github/workflows/combine-dependabot-prs.yml | 2 +- .github/workflows/poetry-test.yml | 1 + .github/workflows/publish-docs.yml | 3 ++- .github/workflows/publish-test.yml | 1 + .github/workflows/publish.yml | 1 + .github/workflows/test-doc.yml | 1 + .github/workflows/test.yml | 3 ++- 8 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/clear-cache.yml b/.github/workflows/clear-cache.yml index 9bef93792..a9cf4544f 100644 --- a/.github/workflows/clear-cache.yml +++ b/.github/workflows/clear-cache.yml @@ -11,6 +11,7 @@ permissions: jobs: clear-cache: + name: Clear cache runs-on: ubuntu-latest timeout-minutes: 10 steps: diff --git a/.github/workflows/combine-dependabot-prs.yml b/.github/workflows/combine-dependabot-prs.yml index d6ed8a030..803f2e1c1 100644 --- a/.github/workflows/combine-dependabot-prs.yml +++ b/.github/workflows/combine-dependabot-prs.yml @@ -12,8 +12,8 @@ permissions: jobs: combine-prs: + name: Combine runs-on: ubuntu-latest - steps: - name: combine-prs id: combine-prs diff --git a/.github/workflows/poetry-test.yml b/.github/workflows/poetry-test.yml index 139409d59..e8570d41a 100644 --- a/.github/workflows/poetry-test.yml +++ b/.github/workflows/poetry-test.yml @@ -12,6 +12,7 @@ on: jobs: poetry-tests: + name: Poetry install and check timeout-minutes: 10 strategy: fail-fast: false diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml index 041ef34e5..e57063a9e 100644 --- a/.github/workflows/publish-docs.yml +++ b/.github/workflows/publish-docs.yml @@ -21,6 +21,7 @@ permissions: jobs: deploy: + name: Publish Docs runs-on: ubuntu-latest timeout-minutes: 10 strategy: @@ -48,7 +49,7 @@ jobs: git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - name: ๐Ÿš€ Deploy Development Docs - if: github.event_name == 'push' && github.ref == 'refs/heads/develop' + if: (github.event_name == 'push' && github.ref == 'refs/heads/develop') || github.event_name == 'workflow_dispatch') run: | MKDOCS_GIT_COMMITTERS_APIKEY=${{ secrets.GITHUB_TOKEN }} poetry run mike deploy --push develop diff --git a/.github/workflows/publish-test.yml b/.github/workflows/publish-test.yml index b28354ec8..4b969a210 100644 --- a/.github/workflows/publish-test.yml +++ b/.github/workflows/publish-test.yml @@ -12,6 +12,7 @@ permissions: {} # Explicitly remove all permissions by default jobs: build-and-publish-pre-release: + name: Publish Pre-releasePackage runs-on: ubuntu-latest environment: release timeout-minutes: 10 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 96d78ac6d..ebc2ff228 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -10,6 +10,7 @@ permissions: {} # Explicitly remove all permissions by default jobs: build-and-publish-pre-release: + name: Publish Release Package runs-on: ubuntu-latest environment: release timeout-minutes: 10 diff --git a/.github/workflows/test-doc.yml b/.github/workflows/test-doc.yml index 507196627..6d12dd9f4 100644 --- a/.github/workflows/test-doc.yml +++ b/.github/workflows/test-doc.yml @@ -11,6 +11,7 @@ permissions: jobs: docs-build-test: + name: Test docs build runs-on: ubuntu-latest timeout-minutes: 10 strategy: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 52ac6888e..a5167958c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,7 +10,8 @@ permissions: pull-requests: write # Required for PR comments jobs: - build-dev-test: + pytest: + name: PyTest timeout-minutes: 10 strategy: matrix: From 47c98173eaff1ab3abdb98e8dcd8a2f78dfa75b5 Mon Sep 17 00:00:00 2001 From: Sachin Agarwal Date: Mon, 9 Dec 2024 08:56:51 -0500 Subject: [PATCH 10/11] Added codeowners --- .github/CODEOWNERS | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 000000000..b43a59073 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,6 @@ +# These owners will be the default owners for everything in +# the repo. They will be requested for review when someone +# opens a pull request. +* @SkalskiP @LinasKo @onuralpszr + + From 06f678e5d2d0e9a28aeafa29ebc84af18e3c39d4 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 16:48:58 +0000 Subject: [PATCH 11/11] =?UTF-8?q?fix(pre=5Fcommit):=20=F0=9F=8E=A8=20auto?= =?UTF-8?q?=20format=20pre-commit=20hooks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/CODEOWNERS | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b43a59073..b5d52a996 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,6 +1,4 @@ # These owners will be the default owners for everything in -# the repo. They will be requested for review when someone +# the repo. They will be requested for review when someone # opens a pull request. * @SkalskiP @LinasKo @onuralpszr - -