From 2bc0363f334f1f090cdfb2ced42bfaefc0e186a4 Mon Sep 17 00:00:00 2001 From: Vianpyro Date: Mon, 12 May 2025 00:49:16 +0000 Subject: [PATCH 01/14] Refactor Dockerfile and devcontainer.json for improved user setup and pip installation --- .devcontainer/Dockerfile | 17 +++++++++++++---- .devcontainer/devcontainer.json | 3 ++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 03ed08c..ca2580f 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -7,10 +7,19 @@ RUN apk add --no-cache bash git \ # Setup default user ARG USERNAME=vscode ARG USER_UID=1000 -ARG USER_GID=$USER_UID +ARG USER_GID=${USER_UID} -RUN addgroup -g $USER_GID -S $USERNAME && \ - adduser -u $USER_UID -S -G $USERNAME -s /bin/bash $USERNAME +RUN addgroup -g ${USER_GID} -S ${USERNAME} && \ + adduser -u ${USER_UID} -S -G ${USERNAME} -s /bin/bash ${USERNAME} && \ + mkdir -p /home/${USERNAME}/.local && \ + chown -R ${USER_UID}:${USER_GID} /home/${USERNAME}/.local # Switch to the default user -USER $USERNAME +USER ${USERNAME} + +# Set evironment variables for pip user installs +ENV PATH="/home/${USERNAME}/.local/bin:$PATH" +ENV PIP_NO_CACHE_DIR=1 +ENV PYTHONUNBUFFERED=1 +ENV PIP_DISABLE_PIP_VERSION_CHECK=1 +ENV PIP_BREAK_SYSTEM_PACKAGES=1 diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index f36c256..8978bc2 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -14,6 +14,7 @@ ] } }, - "postStartCommand": "pip3 --disable-pip-version-check --no-cache-dir install -r requirements.txt --break-system-packages && python3 -m pytest tests", + "postStartCommand": "pip3 install --user -r requirements.txt", + "postAttachCommand": "python3 -m pytest tests", "remoteUser": "vscode" } From edfc5dd90ce28fa0bba4bf3120f211ec5cc0ed30 Mon Sep 17 00:00:00 2001 From: Vianpyro Date: Mon, 12 May 2025 01:30:21 +0000 Subject: [PATCH 02/14] Remove VS Code settings from .gitignore and add tasks.json for test automation --- .devcontainer/devcontainer.json | 5 ++--- .gitignore | 6 ------ .vscode/settings.json | 16 ++++++++-------- .vscode/tasks.json | 30 ++++++++++++++++++++++++++++++ 4 files changed, 40 insertions(+), 17 deletions(-) create mode 100644 .vscode/tasks.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 8978bc2..0ccbfe3 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -7,14 +7,13 @@ }, "vscode": { "extensions": [ + "gruntfuggly.triggertaskonsave", "ms-python.black-formatter", "ms-python.python", - "ms-python.isort", - "emeraldwalk.RunOnSave" + "ms-python.isort" ] } }, "postStartCommand": "pip3 install --user -r requirements.txt", - "postAttachCommand": "python3 -m pytest tests", "remoteUser": "vscode" } diff --git a/.gitignore b/.gitignore index 5a44d50..1c5f543 100644 --- a/.gitignore +++ b/.gitignore @@ -122,9 +122,3 @@ dmypy.json # Cython debug symbols cython_debug/ - -# VS Code -.vscode/* - -# Except this specific file -!.vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json index 9f40579..dc605d4 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -23,14 +23,14 @@ "--profile", "black" ], - "emeraldwalk.runonsave": { - "commands": [ - { - "match": "tests[/\\\\](.*[/\\\\])?test_.*\\.py$", - "cmd": "python3 -m pytest '${relativeFile}' -v", - "autoShowOutputPanel": "error" - } - ] + "triggerTaskOnSave.tasks": { + "Run on test file": [ + "tests/**/test_*.py" + ], + "Run all tests": [ + "!tests/**", + "**/*.py" + ], }, "python.testing.pytestArgs": [ "tests" diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..b8ca62d --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,30 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "Run all tests", + "type": "shell", + "command": "python3 -m pytest tests", + "group": { + "kind": "test", + "isDefault": true + }, + "problemMatcher": [], + "runOptions": { + "runOn": "folderOpen" + } + }, + { + "label": "Run on test file", + "type": "shell", + "command": "python3 -m pytest '${relativeFile}' -v -x", + "group": { + "kind": "test", + }, + "problemMatcher": [], + "runOptions": { + "runOn": "default" + } + } + ] +} From 90e978b384a368e43020676a546704e9bfd02263 Mon Sep 17 00:00:00 2001 From: Vianpyro Date: Mon, 12 May 2025 22:04:53 +0000 Subject: [PATCH 03/14] Update postStartCommand to run tests after installing dependencies and change task run options to default --- .devcontainer/devcontainer.json | 2 +- .vscode/tasks.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 0ccbfe3..d4cd726 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -14,6 +14,6 @@ ] } }, - "postStartCommand": "pip3 install --user -r requirements.txt", + "postStartCommand": "pip3 install --user -r requirements.txt ; python3 -m pytest tests", "remoteUser": "vscode" } diff --git a/.vscode/tasks.json b/.vscode/tasks.json index b8ca62d..80fe495 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -11,7 +11,7 @@ }, "problemMatcher": [], "runOptions": { - "runOn": "folderOpen" + "runOn": "default" } }, { From c09f8ecc2cde385fab170ddd4cf949ed01d6c3dc Mon Sep 17 00:00:00 2001 From: Vianpyro Date: Mon, 12 May 2025 22:08:26 +0000 Subject: [PATCH 04/14] Add GitHub Actions workflow for creating draft releases --- .github/workflows/draft-release.yml | 90 +++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 .github/workflows/draft-release.yml diff --git a/.github/workflows/draft-release.yml b/.github/workflows/draft-release.yml new file mode 100644 index 0000000..84c4f8e --- /dev/null +++ b/.github/workflows/draft-release.yml @@ -0,0 +1,90 @@ +name: Create a Draft Release + +on: + push: + branches: + - main + workflow_dispatch: + inputs: + trigger_branch: + description: "Branch to monitor for changes" + default: "main" + required: false + file_filter_pattern: + description: "Regex to match changed files" + default: '^(?!tests/).*\.py$' + required: false + +env: + TRIGGER_BRANCH: ${{ github.event.inputs.trigger_branch || 'main' }} + FILE_FILTER_PATTERN: ${{ github.event.inputs.file_filter_pattern || '^(?!tests/).*\.py$' }} + +jobs: + create-release-draft: + runs-on: ubuntu-latest + + steps: + - name: Checkout code and fetch tags + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Check for modified matching files + id: check_changes + run: | + echo "Trigger branch: $TRIGGER_BRANCH" + echo "File filter pattern: $FILE_FILTER_PATTERN" + + git fetch origin $TRIGGER_BRANCH --depth=2 + MODIFIED=$(git diff --name-only HEAD^ HEAD) + + echo "Modified files:" + echo "$MODIFIED" + + MATCHING=$(echo "$MODIFIED" | grep -E "$FILE_FILTER_PATTERN" || true) + + echo "Matching files:" + echo "$MATCHING" + + if [[ -n "$MATCHING" ]]; then + echo "should_trigger=true" >> $GITHUB_OUTPUT + else + echo "should_trigger=false" >> $GITHUB_OUTPUT + fi + + - name: Determine next tag version + id: version + run: | + LATEST=$(git tag --sort=-v:refname | head -n 1) + echo "Latest tag: $LATEST" + + if [[ -z "$LATEST" ]]; then + NEXT_TAG="v0.0.1" + else + [[ "$LATEST" =~ ^v([0-9]+)\.([0-9]+)\.([0-9]+)(-.+)?$ ]] + MAJOR=${BASH_REMATCH[1]} + MINOR=${BASH_REMATCH[2]} + PATCH=${BASH_REMATCH[3]} + SUFFIX=${BASH_REMATCH[4]} + PATCH=$((PATCH + 1)) + NEXT_TAG="v$MAJOR.$MINOR.$PATCH$SUFFIX" + fi + + echo "Next tag: $NEXT_TAG" + echo "tag=$NEXT_TAG" >> $GITHUB_OUTPUT + + - name: Create draft release + if: steps.check_changes.outputs.should_trigger == 'true' + run: | + curl -X POST \ + -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ + -H "Accept: application/vnd.github+json" \ + https://api.github.com/repos/${{ github.repository }}/releases \ + -d '{ + "tag_name": "${{ steps.version.outputs.tag }}", + "target_commitish": "'"$TRIGGER_BRANCH"'", + "name": "${{ steps.version.outputs.tag }}", + "draft": true, + "prerelease": false, + "generate_release_notes": true + }' From bf3607739ca9df37c6412990b54d2ff832e8db20 Mon Sep 17 00:00:00 2001 From: Vianpyro Date: Mon, 12 May 2025 22:11:22 +0000 Subject: [PATCH 05/14] Fix tag versioning logic to increment MINOR instead of PATCH --- .github/workflows/draft-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/draft-release.yml b/.github/workflows/draft-release.yml index 84c4f8e..0073034 100644 --- a/.github/workflows/draft-release.yml +++ b/.github/workflows/draft-release.yml @@ -66,7 +66,7 @@ jobs: MINOR=${BASH_REMATCH[2]} PATCH=${BASH_REMATCH[3]} SUFFIX=${BASH_REMATCH[4]} - PATCH=$((PATCH + 1)) + MINOR=$((MINOR + 1)) NEXT_TAG="v$MAJOR.$MINOR.$PATCH$SUFFIX" fi From f743296558ce89f36dec84e551c0254e7a15bfaf Mon Sep 17 00:00:00 2001 From: Vianpyro Date: Mon, 12 May 2025 22:35:34 +0000 Subject: [PATCH 06/14] Separate postStartCommand and postAttachCommand for clearer execution of dependency installation and testing --- .devcontainer/devcontainer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index d4cd726..35744fd 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -14,6 +14,7 @@ ] } }, - "postStartCommand": "pip3 install --user -r requirements.txt ; python3 -m pytest tests", + "postStartCommand": "pip3 install --user -r requirements.txt", + "postAttachCommand": "python3 -m pytest tests", "remoteUser": "vscode" } From e6cd6ac8925f4769a362b1361beac8f39cc7728b Mon Sep 17 00:00:00 2001 From: Vianpyro Date: Thu, 22 May 2025 13:53:59 +0000 Subject: [PATCH 07/14] Refactor environment variable definitions for pip in Dockerfile for improved readability --- .devcontainer/Dockerfile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index ca2580f..8d0db8c 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -17,9 +17,9 @@ RUN addgroup -g ${USER_GID} -S ${USERNAME} && \ # Switch to the default user USER ${USERNAME} -# Set evironment variables for pip user installs -ENV PATH="/home/${USERNAME}/.local/bin:$PATH" -ENV PIP_NO_CACHE_DIR=1 -ENV PYTHONUNBUFFERED=1 -ENV PIP_DISABLE_PIP_VERSION_CHECK=1 -ENV PIP_BREAK_SYSTEM_PACKAGES=1 +# Set environment variables for pip +ENV PATH="/home/${USERNAME}/.local/bin:$PATH" \ + PIP_BREAK_SYSTEM_PACKAGES=1 \ + PIP_DISABLE_PIP_VERSION_CHECK=1 \ + PIP_NO_CACHE_DIR=1 \ + PYTHONUNBUFFERED=1 From 32573a19781e99bcd185ea0cb8f16e1a9a1689da Mon Sep 17 00:00:00 2001 From: Vianpyro Date: Thu, 22 May 2025 13:54:04 +0000 Subject: [PATCH 08/14] Add GitHub Actions workflow for Python dependencies audit --- .github/workflows/pip-audit.yml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .github/workflows/pip-audit.yml diff --git a/.github/workflows/pip-audit.yml b/.github/workflows/pip-audit.yml new file mode 100644 index 0000000..3fc7dc7 --- /dev/null +++ b/.github/workflows/pip-audit.yml @@ -0,0 +1,32 @@ +name: Python Dependencies Audit + +on: + push: + paths: + - requirements.txt + pull_request: + paths: + - requirements.txt + schedule: + - cron: '0 4 * * 1' # Every Monday at 4:00 UTC + workflow_dispatch: + +jobs: + pip-audit: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install pip-audit + + - name: Run pip-audit + run: pip-audit -r requirements.txt From 510ec994395707ff052000d5e2c47c6176ebd901 Mon Sep 17 00:00:00 2001 From: Vianpyro Date: Thu, 22 May 2025 13:57:39 +0000 Subject: [PATCH 09/14] Update dependencies in requirements.txt for improved security and functionality --- requirements.txt | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/requirements.txt b/requirements.txt index b54e6b7..f09f886 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,11 +1,10 @@ argon2-cffi>=23.1.0 -cryptography>=44.0.2 -Flask>=3.0.3 -Flask-JWT-Extended>=2.8.0 -Flask-Limiter>=3.7.0 -flask-cors>=4.0.1 +cryptography>=45.0.2 +Flask>=3.1.1 +Flask-JWT-Extended>=4.7.1 +Flask-Limiter>=3.12.0 +flask-cors>=6.0.0 PyMySQL>=1.1.1 -requests>=2.32.3 -waitress>=3.0.0 pytest>=8.3.5 -python-dotenv>=1.0.1 +python-dotenv>=1.1.0 +requests>=2.32.3 From 9539a3d3ad22c63ab8466858d6e69a9cbd3e7765 Mon Sep 17 00:00:00 2001 From: Vianpyro Date: Thu, 22 May 2025 14:03:18 +0000 Subject: [PATCH 10/14] Remove unnecessary directory creation and ownership change in Dockerfile user setup --- .devcontainer/Dockerfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 8d0db8c..3816748 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -10,9 +10,7 @@ ARG USER_UID=1000 ARG USER_GID=${USER_UID} RUN addgroup -g ${USER_GID} -S ${USERNAME} && \ - adduser -u ${USER_UID} -S -G ${USERNAME} -s /bin/bash ${USERNAME} && \ - mkdir -p /home/${USERNAME}/.local && \ - chown -R ${USER_UID}:${USER_GID} /home/${USERNAME}/.local + adduser -u ${USER_UID} -S -G ${USERNAME} -s /bin/bash ${USERNAME} # Switch to the default user USER ${USERNAME} From c60116e953a7f15ff864cebc0c79d6e68acc91ef Mon Sep 17 00:00:00 2001 From: Vianney Veremme <10519369+Vianpyro@users.noreply.github.com> Date: Fri, 23 May 2025 06:46:48 -0400 Subject: [PATCH 11/14] Potential fix for code scanning alert no. 9: Workflow does not contain permissions Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --- .github/workflows/pip-audit.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/pip-audit.yml b/.github/workflows/pip-audit.yml index 3fc7dc7..3c38349 100644 --- a/.github/workflows/pip-audit.yml +++ b/.github/workflows/pip-audit.yml @@ -11,6 +11,9 @@ on: - cron: '0 4 * * 1' # Every Monday at 4:00 UTC workflow_dispatch: +permissions: + contents: read + jobs: pip-audit: runs-on: ubuntu-latest From 02c213418c76ffb297186ab8c8cfda65e385233c Mon Sep 17 00:00:00 2001 From: Vianney Veremme <10519369+Vianpyro@users.noreply.github.com> Date: Fri, 23 May 2025 06:47:40 -0400 Subject: [PATCH 12/14] Update draft-release.yml --- .github/workflows/draft-release.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/draft-release.yml b/.github/workflows/draft-release.yml index 0073034..856e2ed 100644 --- a/.github/workflows/draft-release.yml +++ b/.github/workflows/draft-release.yml @@ -1,5 +1,8 @@ name: Create a Draft Release +permissions: + contents: write + on: push: branches: From 009ecc2da9a817f3cffadfd5ec56b59ae53ebc4c Mon Sep 17 00:00:00 2001 From: Vianpyro Date: Fri, 23 May 2025 12:38:20 +0000 Subject: [PATCH 13/14] Add permissions section to workflow files for enhanced security --- .github/workflows/draft-release.yml | 8 ++++---- .github/workflows/pip-audit.yml | 8 ++++---- .github/workflows/pytest.yml | 5 +++-- .github/workflows/super-linter.yml | 6 +++--- .vscode/settings.json | 2 +- 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/.github/workflows/draft-release.yml b/.github/workflows/draft-release.yml index 856e2ed..2d32bcd 100644 --- a/.github/workflows/draft-release.yml +++ b/.github/workflows/draft-release.yml @@ -38,7 +38,7 @@ jobs: echo "Trigger branch: $TRIGGER_BRANCH" echo "File filter pattern: $FILE_FILTER_PATTERN" - git fetch origin $TRIGGER_BRANCH --depth=2 + git fetch origin "$TRIGGER_BRANCH" --depth=2 MODIFIED=$(git diff --name-only HEAD^ HEAD) echo "Modified files:" @@ -50,9 +50,9 @@ jobs: echo "$MATCHING" if [[ -n "$MATCHING" ]]; then - echo "should_trigger=true" >> $GITHUB_OUTPUT + echo "should_trigger=true" >> "$GITHUB_OUTPUT" else - echo "should_trigger=false" >> $GITHUB_OUTPUT + echo "should_trigger=false" >> "$GITHUB_OUTPUT" fi - name: Determine next tag version @@ -74,7 +74,7 @@ jobs: fi echo "Next tag: $NEXT_TAG" - echo "tag=$NEXT_TAG" >> $GITHUB_OUTPUT + echo "tag=$NEXT_TAG" >> "$GITHUB_OUTPUT" - name: Create draft release if: steps.check_changes.outputs.should_trigger == 'true' diff --git a/.github/workflows/pip-audit.yml b/.github/workflows/pip-audit.yml index 3c38349..391adf9 100644 --- a/.github/workflows/pip-audit.yml +++ b/.github/workflows/pip-audit.yml @@ -1,5 +1,8 @@ name: Python Dependencies Audit +permissions: + contents: read + on: push: paths: @@ -11,9 +14,6 @@ on: - cron: '0 4 * * 1' # Every Monday at 4:00 UTC workflow_dispatch: -permissions: - contents: read - jobs: pip-audit: runs-on: ubuntu-latest @@ -22,7 +22,7 @@ jobs: uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.x' diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 767abfb..2e79288 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -1,13 +1,14 @@ name: Pytest CI +permissions: + contents: read + on: push: branches: - main pull_request: -permissions: {} - jobs: test: name: Pytest on ${{ matrix.os }} with Python ${{ matrix.python-version }} diff --git a/.github/workflows/super-linter.yml b/.github/workflows/super-linter.yml index 877dc78..90a7106 100644 --- a/.github/workflows/super-linter.yml +++ b/.github/workflows/super-linter.yml @@ -1,14 +1,14 @@ ---- name: Lint +permissions: + contents: read + on: push: branches: - main pull_request: null -permissions: {} - jobs: build: name: Lint diff --git a/.vscode/settings.json b/.vscode/settings.json index dc605d4..4ed7278 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -30,7 +30,7 @@ "Run all tests": [ "!tests/**", "**/*.py" - ], + ] }, "python.testing.pytestArgs": [ "tests" From 160a760cebb98923b727adb9090fa2a9829cd3f5 Mon Sep 17 00:00:00 2001 From: Vianpyro Date: Fri, 23 May 2025 12:58:23 +0000 Subject: [PATCH 14/14] Refactor workflow files to simplify input handling and improve consistency --- .github/workflows/draft-release.yml | 13 ++----------- .github/workflows/pip-audit.yml | 4 ++-- .vscode/tasks.json | 2 +- 3 files changed, 5 insertions(+), 14 deletions(-) diff --git a/.github/workflows/draft-release.yml b/.github/workflows/draft-release.yml index 2d32bcd..f0fab08 100644 --- a/.github/workflows/draft-release.yml +++ b/.github/workflows/draft-release.yml @@ -8,19 +8,10 @@ on: branches: - main workflow_dispatch: - inputs: - trigger_branch: - description: "Branch to monitor for changes" - default: "main" - required: false - file_filter_pattern: - description: "Regex to match changed files" - default: '^(?!tests/).*\.py$' - required: false env: - TRIGGER_BRANCH: ${{ github.event.inputs.trigger_branch || 'main' }} - FILE_FILTER_PATTERN: ${{ github.event.inputs.file_filter_pattern || '^(?!tests/).*\.py$' }} + TRIGGER_BRANCH: main + FILE_FILTER_PATTERN: '^(?!tests/).*\.py$' jobs: create-release-draft: diff --git a/.github/workflows/pip-audit.yml b/.github/workflows/pip-audit.yml index 391adf9..27f9f6d 100644 --- a/.github/workflows/pip-audit.yml +++ b/.github/workflows/pip-audit.yml @@ -11,7 +11,7 @@ on: paths: - requirements.txt schedule: - - cron: '0 4 * * 1' # Every Monday at 4:00 UTC + - cron: "0 4 * * 1" # Every Monday at 4:00 UTC workflow_dispatch: jobs: @@ -24,7 +24,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.x' + python-version: "3.x" - name: Install dependencies run: | diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 80fe495..040c119 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -19,7 +19,7 @@ "type": "shell", "command": "python3 -m pytest '${relativeFile}' -v -x", "group": { - "kind": "test", + "kind": "test" }, "problemMatcher": [], "runOptions": {