Skip to content

Conversation

@vinod0m
Copy link
Contributor

@vinod0m vinod0m commented Aug 19, 2025

chore: move test_results into test/ and lint handlers

What I changed

  • Moved test_results/ into test/test_results/ to group test artifacts with tests.
  • Applied ruff --fix to src/handlers (small, focused linting commit). No functional changes.
  • Added renamed router modules earlier to avoid mypy duplicate-module collisions.

Why

  • Keeps test artifacts nested under test/ for cleaner repo layout.
  • Small, isolated linting fixes are easier to review and revert if necessary.
  • Renaming router modules prevents future mypy collisions.

Notes for reviewers

  • No runtime behavior changed. This is a repository hygiene change.
  • If you keep CI artifacts in test/test_results/, update any external tooling that referenced test_results/ directly.

Comment on lines 17 to 53
name: Static analysis & unit tests (one python)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies for static
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pytest pytest-cov mypy
- name: Run ruff (lint)
run: |
python -m pip install ruff
python -m ruff check src/
- name: Run unit tests with coverage
run: |
PYTHONPATH=. pytest --cov=src/ --cov-report=xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
files: ./coverage.xml
fail_ci_if_error: false
token: ${{ secrets.CODECOV_TOKEN }}
- name: Run mypy static analysis
run: mypy src/ --ignore-missing-imports --exclude "src/llm/router.py"

tests:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI 3 months ago

Copilot could not generate an autofix suggestion

Copilot could not generate an autofix suggestion for this alert. Try pushing a new commit or if the problem persists contact support.

Comment on lines 54 to 85
name: Run tests matrix
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.11, 3.12]
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m venv .venv_ci
. .venv_ci/bin/activate
pip install --upgrade pip setuptools wheel
pip install -r requirements.txt
- name: Run tests
env:
PYTHONPATH: .
run: |
python -m pytest -q
deepagent-test:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI 3 months ago

Copilot could not generate an autofix suggestion

Copilot could not generate an autofix suggestion for this alert. Try pushing a new commit or if the problem persists contact support.

Comment on lines 86 to 115
name: DeepAgent focused tests (fast)
runs-on: ubuntu-latest
needs: tests
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.12
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-3.12-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install test deps only
run: |
python -m pip install --upgrade pip
python -m venv .venv_ci
. .venv_ci/bin/activate
pip install --upgrade pip setuptools wheel
pip install pytest python-dotenv
- name: Run deepagent unit tests
env:
PYTHONPATH: .
run: |
python -m pytest -q test/unit/test_deepagent.py test/unit/test_deepagent_providers.py
provider-smoke:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI 3 months ago

Copilot could not generate an autofix suggestion

Copilot could not generate an autofix suggestion for this alert. Try pushing a new commit or if the problem persists contact support.

Comment on lines 116 to 145
name: Provider smoke (manual)
runs-on: ubuntu-latest
if: github.event_name == 'workflow_dispatch'
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.12
- name: Install provider packages
run: |
python -m pip install --upgrade pip
python -m venv .venv_ci
. .venv_ci/bin/activate
pip install --upgrade pip setuptools wheel
pip install langchain-google-genai langchain-community langchain-ollama python-dotenv
- name: Cache pip for provider-smoke
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-provider-smoke-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Quick deepagent smoke (dry-run disabled)
env:
PYTHONPATH: .
run: |
python -c "from src.agents import deepagent; a=deepagent.SDLCFlexibleAgent(provider='gemini', model='chat-bison-001', dry_run=True); print('constructed', getattr(a, 'llm', None))"
providers:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI 3 months ago

To fix the problem, add a permissions block to the workflow file .github/workflows/python-test.yml. The block should be placed at the root level (before the jobs: key) so that it applies to all jobs in the workflow, unless a job overrides it. The minimal required permission for this workflow is contents: read, since none of the jobs require write access to repository contents or other privileged scopes. No additional imports or definitions are needed; this is a YAML configuration change only.

Steps:

  • Insert the following block after the workflow name: and before the on: key:
    permissions:
      contents: read
  • This change applies to the entire workflow and all jobs within it.

Suggested changeset 1
.github/workflows/python-test.yml

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/.github/workflows/python-test.yml b/.github/workflows/python-test.yml
--- a/.github/workflows/python-test.yml
+++ b/.github/workflows/python-test.yml
@@ -1,5 +1,8 @@
 name: Python Tests (consolidated)
 
+permissions:
+  contents: read
+
 on:
   push:
     branches: [ main ]
EOF
@@ -1,5 +1,8 @@
name: Python Tests (consolidated)

permissions:
contents: read

on:
push:
branches: [ main ]
Copilot is powered by AI and may make mistakes. Always verify output.
@vinod0m vinod0m committed this autofix suggestion 3 months ago.
Comment on lines 146 to 174
name: Providers matrix (optional)
runs-on: ubuntu-latest
if: github.event_name == 'workflow_dispatch' && github.event.inputs.run_providers == 'true'
strategy:
matrix:
provider: [gemini, openai, ollama]
steps:
- uses: actions/checkout@v4
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-providers-${{ matrix.provider }}-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.12
- name: Install provider packages
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install langchain-google-genai langchain-community langchain-ollama
- name: Run provider smoke for matrix provider
env:
PYTHONPATH: .
run: |
python -c "from src.agents import deepagent; p='${{ matrix.provider }}'; d = deepagent.SDLCFlexibleAgent(provider=p, dry_run=True); print('provider', p, 'dry_run', getattr(d, 'dry_run', False))"

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI 3 months ago

Copilot could not generate an autofix suggestion

Copilot could not generate an autofix suggestion for this alert. Try pushing a new commit or if the problem persists contact support.

Comment on lines 11 to 30
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.12]

steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run tests
env:
PYTHONPATH: .
run: |
python -m pytest -q

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI 3 months ago

To fix the problem, add a permissions block to the workflow file to explicitly set the minimum required permissions for the workflow. Since this workflow only checks out code and runs tests, it does not require any write permissions. The minimal required permission is contents: read, which allows the workflow to read the repository contents. This block should be added at the top level of the workflow file (just after the name field and before on:), so it applies to all jobs in the workflow. No additional imports or definitions are needed.


Suggested changeset 1
.github/workflows/python-tests.yml

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml
--- a/.github/workflows/python-tests.yml
+++ b/.github/workflows/python-tests.yml
@@ -1,3 +1,5 @@
+permissions:
+  contents: read
 name: Python Tests
 
 on:
EOF
@@ -1,3 +1,5 @@
permissions:
contents: read
name: Python Tests

on:
Copilot is powered by AI and may make mistakes. Always verify output.
Copy link
Contributor

@github-advanced-security github-advanced-security bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

check-spelling found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

Copy link
Contributor Author

vinod0m commented Aug 19, 2025

Closing in favor of #27 — consolidated changes were squash-merged into main. If you still need these separate changes, reopen or recreate the PR and reference #27.

This comment was marked as outdated.

@vinod0m vinod0m added this to the 1st MVP milestone Aug 19, 2025
vinod0m and others added 2 commits August 19, 2025 14:19
…ain permissions


yes

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
@vinod0m vinod0m requested a review from Copilot August 19, 2025 12:21
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This is a repository maintenance PR focused on improving project organization and code quality. The changes consolidate test artifacts under the test/ directory and apply automated linting fixes to the handlers module.

Key changes:

  • Moved test_results/ directory into test/test_results/ for better organization
  • Applied automated linting fixes to src/handlers module
  • Added GitHub Actions permissions configuration

@@ -1,5 +1,8 @@
name: Python Tests (consolidated)

permissions:
Copy link

Copilot AI Aug 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding permissions configuration is good practice, but consider being more specific about required permissions. Using 'contents: read' is appropriately restrictive for a test workflow that only needs to read repository contents.

Copilot uses AI. Check for mistakes.
@vinod0m vinod0m merged commit 1fac448 into main Aug 19, 2025
8 of 20 checks passed
@vinod0m vinod0m deleted the chore/move-test-results-and-lint-handlers branch August 19, 2025 12:21
@github-actions

This comment has been minimized.

@github-actions
Copy link
Contributor

@check-spelling-bot Report

🔴 Please review

See the 📂 files view, the 📜action log, or 📝 job summary for details.

Unrecognized words (24660)

Truncated, please see the job summary, log, or artifact if available.

These words are not needed and should be removed

Truncated, please see the job summary, log, or artifact if available.

Some files were automatically ignored 🙈

These sample patterns would exclude them:

(?:^|/)RECORD$
(?:^|/)REQUESTED$
(?:^|/)sample\.json$
(?:^|/)zip-safe$
/handlers/[^/]+$
/integration/api/[^/]+$
/integration/llm/[^/]+$
/pipelines/[^/]+$
/prompt_engineering/[^/]+$
/retrieval/[^/]+$
/skills/[^/]+$
/tools/openapi/[^/]+$
/unit/prompts/[^/]+$
/unit/utils/[^/]+$
/vision_audio/[^/]+$
^\.venv_ci\/lib\/python3\.12\/site\-packages\/numpy\.libs/
^\.venv_ci\/lib\/python3\.12\/site\-packages\/numpy\/lib\/tests\/data/
^\.venv_ci\/lib\/python3\.12\/site\-packages\/pbr\/tests\/testpackage\/data_files/
^\.venv_ci\/lib\/python3\.12\/site\-packages\/pbr\/tests\/testpackage\/pbr_testpackage\/package_data/
^\Q.venv_ci/lib/python3.12/site-packages/_pytest/_py/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/_pytest/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/aiohappyeyeballs/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/aiohttp-3.12.15.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/aiosignal-1.4.0.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/aiosignal/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/annotated_types/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/anyio-4.10.0.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/anyio/_backends/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/anyio/_core/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/anyio/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/anyio/streams/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/attr/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/attrs/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/bandit/blacklists/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/bandit/cli/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/bandit/formatters/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/bandit/plugins/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/cachetools-5.5.2.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/certifi/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/charset_normalizer/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/dataclasses_json/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/frozenlist-1.7.0.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/google/auth/crypt/_helpers.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/google/protobuf/compiler/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/google/protobuf/pyext/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/google/protobuf/testdata/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/google/protobuf/util/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/greenlet/platform/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/httpcore/_backends/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/httpcore/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/httpx/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/httpx_sse-0.4.1.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/httpx_sse/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/idna/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/iniconfig/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/jsonpatch-1.33.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/jsonpointer-3.0.0.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/adapters/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/agents/agent_toolkits/clickup/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/agents/agent_toolkits/conversational_retrieval/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/agents/agent_toolkits/nla/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/agents/chat/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/agents/json_chat/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/agents/openai_functions_agent/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/agents/openai_functions_multi_agent/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/agents/openai_tools/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/agents/structured_chat/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/agents/tool_calling_agent/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/agents/xml/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/chains/api/openapi/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/chains/chat_vector_db/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/chains/graph_qa/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/chains/qa_generation/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/evaluation/exact_match/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/evaluation/parsing/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/evaluation/regex_match/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/retrievers/self_query/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/schema/callbacks/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/schema/callbacks/tracers/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/smith/evaluation/utils.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/tools/ainetwork/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/tools/bearly/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/tools/brave_search/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/tools/clickup/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/tools/e2b_data_analysis/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/tools/nasa/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/tools/openapi/utils/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/tools/reddit_search/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/tools/searx_search/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain/tools/youtube/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/agent_toolkits/amadeus/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/agent_toolkits/clickup/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/agent_toolkits/nla/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/agents/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/chains/openapi/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/chains/pebblo_retrieval/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/memory/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/query_constructors/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/tools/ainetwork/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/tools/bearly/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/tools/brave_search/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/tools/clickup/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/tools/e2b_data_analysis/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/tools/mojeek_search/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/tools/nasa/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/tools/openapi/utils/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/tools/riza/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/tools/searx_search/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_community/tools/youtube/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_core/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_google_genai/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_ollama/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/langchain_text_splitters/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/langsmith/_internal/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/langsmith/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/markdown_it/cli/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/markdown_it/common/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/marshmallow/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/multidict-6.6.4.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypy-1.17.1.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypy/dmypy/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypy/plugins/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypy/server/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypy/test/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypy/test/meta/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypy/typeshed/stdlib/compression/__init__.pyi\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypy/typeshed/stdlib/compression/_common/__init__.pyi\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypy/typeshed/stdlib/concurrent/__init__.pyi\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypy/typeshed/stdlib/distutils/command/bdist_packager.pyi\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypy/typeshed/stdlib/email/mime/__init__.pyi\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypy/typeshed/stdlib/lib2to3/__init__.pyi\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypy/typeshed/stdlib/lib2to3/fixes/__init__.pyi\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypy/typeshed/stdlib/pydoc_data/__init__.pyi\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypy/typeshed/stdlib/urllib/__init__.pyi\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypy/typeshed/stdlib/wsgiref/__init__.pyi\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypy/typeshed/stdlib/xml/etree/__init__.pyi\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypy/typeshed/stdlib/xmlrpc/__init__.pyi\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypyc/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypyc/analysis/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypyc/codegen/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypyc/ir/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypyc/irbuild/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypyc/lower/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypyc/primitives/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypyc/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypyc/test/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/mypyc/transform/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/_core/tests/data/astype_copy.pkl\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/_core/tests/data/recarray_from_file.fits\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/_pyinstaller/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/_pyinstaller/__init__.pyi\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/core/__init__.pyi\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/core/_dtype.pyi\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/core/_dtype_ctypes.pyi\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/fft/__init__.pyi\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/fft/tests/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/lib/tests/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/linalg/tests/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/ma/tests/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/matrixlib/tests/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/polynomial/tests/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/random/tests/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/random/tests/data/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/testing/_private/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/testing/_private/__init__.pyi\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/testing/tests/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/tests/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/numpy/typing/tests/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/ollama/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/orjson/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/packaging/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/pathspec/_meta.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pbr-7.0.0.dist-info/AUTHORS\E$
^\Q.venv_ci/lib/python3.12/site-packages/pbr-7.0.0.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/pbr/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pbr/_compat/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pbr/cmd/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pbr/tests/_compat/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pbr/tests/functional/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pbr/tests/testpackage/extra-file.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/pbr/tests/testpackage/git-extra-file.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/pbr/tests/testpackage/pbr_testpackage/extra.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_internal/operations/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_internal/operations/build/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_internal/resolution/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_internal/utils/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_vendor/cachecontrol/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_vendor/certifi/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_vendor/dependency_groups/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_vendor/distro/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_vendor/idna/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_vendor/packaging/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_vendor/platformdirs/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_vendor/resolvelib/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_vendor/rich/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_vendor/truststore/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pkg_resources/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/pkg_resources/tests/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pkg_resources/tests/data/my-test-package-source/setup.cfg\E$
^\Q.venv_ci/lib/python3.12/site-packages/pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg/EGG-INFO/dependency_links.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg/EGG-INFO/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/pkg_resources/tests/data/my-test-package_zipped-egg/my_test_package-1.0-py3.7.egg\E$
^\Q.venv_ci/lib/python3.12/site-packages/pluggy/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/propcache-0.3.2.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/pyasn1-0.6.1.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/pydantic/_internal/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pydantic/deprecated/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pydantic/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/pydantic/v1/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/pydantic_core/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/pydantic_settings/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/pyflakes/scripts/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pyflakes/test/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pygments/lexers/_cocoa_builtins.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pygments/lexers/_csound_builtins.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pygments/lexers/_lasso_builtins.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pygments/lexers/_scilab_builtins.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pygments/lexers/_stata_builtins.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pygments/lexers/_vim_builtins.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pygments/lexers/apdlexer.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pygments/lexers/freefem.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pygments/lexers/mosel.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/pytest/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/requests_toolbelt/auth/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/requests_toolbelt/cookies/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/requests_toolbelt/downloadutils/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/requests_toolbelt/utils/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/rich/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/ruff/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_distutils/tests/compat/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_distutils/tests/test_versionpredicate.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/autocommand-2.2.2.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/backports/tarfile/compat/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata/compat/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/inflect/compat/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/inflect/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/jaraco.collections-5.1.0.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/jaraco.context-5.3.0.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/jaraco.functools-4.0.1.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/jaraco.text-3.12.1.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/jaraco/collections/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/jaraco/functools/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/jaraco/text/layouts.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/jaraco/text/Lorem ipsum.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/more_itertools/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/packaging/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/platformdirs/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/typeguard-4.3.0.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/typeguard/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/zipp-3.19.2.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/_vendor/zipp/compat/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/compat/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/tests/compat/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/tests/config/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/setuptools/tests/integration/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/sniffio/_tests/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/sniffio/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/sqlalchemy-2.0.43.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/pg_catalog.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/sqlalchemy/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/stevedore-5.4.1.dist-info/AUTHORS\E$
^\Q.venv_ci/lib/python3.12/site-packages/stevedore/example/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/stevedore/example2/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/stevedore/tests/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/stevedore/tests/extension_unimportable.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/tenacity/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/typing_inspection/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/typing_inspection/py.typed\E$
^\Q.venv_ci/lib/python3.12/site-packages/urllib3/contrib/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/wheel/vendored/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/wheel/vendored/packaging/__init__.py\E$
^\Q.venv_ci/lib/python3.12/site-packages/zstandard-0.24.0.dist-info/top_level.txt\E$
^\Q.venv_ci/lib/python3.12/site-packages/zstandard/py.typed\E$
^config/logging_config\.yaml$
^config/model_config\.yaml$
^config/prompt_templates\.yaml$
^Dockerfile$
^examples/basic_completion\.py$
^examples/chain_prompts\.py$
^examples/chat_session\.py$
^setup\.py$
^src/agents/executor\.py$
^src/agents/planner\.py$
^src/fallback/router\.py$
^src/guardrails/pii\.py$
^src/llm/platforms/
^src/llm/schemas\.py$
^src/llm/utils\.py$
^src/memory/
^src/utils/
^test/e2e/test_full_workflow\.py$
^test/test_results/mypy_after_fix\.txt$
^test/test_results/mypy_strict\.txt$
^test/unit/llm/__init__\.py$

You should consider excluding directory paths (e.g. (?:^|/)vendor/), filenames (e.g. (?:^|/)yarn\.lock$), or file extensions (e.g. \.gz$)

You should consider adding them to:

.github/actions/spelling/excludes.txt

File matching is via Perl regular expressions.

To check these files, more of their words need to be in the dictionary than not. You can use patterns.txt to exclude portions, add items to the dictionary (e.g. by adding them to allow.txt), or fix typos.

Script unavailable

Truncated, please see the job summary, log, or artifact if available.

OR

To have the bot accept them for you, comment in the PR quoting the following line:
@check-spelling-bot apply updates.

Forbidden patterns 🙅 (42)

In order to address this, you could change the content to not match the forbidden patterns (comments before forbidden patterns may help explain why they're forbidden), add patterns for acceptable instances, or adjust the forbidden patterns themselves.

These forbidden patterns matched content:

Should be ; otherwise or . Otherwise

https://study.com/learn/lesson/otherwise-in-a-sentence.html

, [Oo]therwise\b

Should be a

\san (?=(?:[b-df-gj-np-rtv-xz]|h(?!our|sl|tml|ttp)|s(?!sh|vg))[a-z])

Should be self-signed

\bself signed\b

Complete sentences shouldn't be in the middle of another sentence as a parenthetical.

(?<!\.)(?<!\betc)\.\),

Should be cannot (or can't)

See https://www.grammarly.com/blog/cannot-or-can-not/

Don't use can not when you mean cannot. The only time you're likely to see can not written as separate words is when the word can happens to precede some other phrase that happens to start with not.
Can't is a contraction of cannot, and it's best suited for informal writing.
In formal writing and where contractions are frowned upon, use cannot.
It is possible to write can not, but you generally find it only as part of some other construction, such as not only . . . but also.

  • if you encounter such a case, add a pattern for that case to patterns.txt.
\b[Cc]an not\b(?! only\b)

In English, duplicated words are generally mistakes

There are a few exceptions (e.g. "that that").
If the highlighted doubled word pair is in:

  • code, write a pattern to mask it.
  • prose, have someone read the English before you dismiss this error.
\s([A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})\s\g{-1}\s

Should be case-(in)sensitive

\bcase (?:in|)sensitive\b

Should probably be Otherwise,

(?<=\. )Otherwise\s

Should be macOS or Mac OS X or ...

\bMacOS\b

Should be fall back

(?<!\ba )(?<!\bthe )\bfallback(?= to(?! ask))\b

Should be preexisting

[Pp]re[- ]existing

Should be an

(?<!\b[Ii] )\bam\b

Should be (coarse|fine)-grained

\b(?:coarse|fine) grained\b

Do not use (click) here links

For more information, see:

(?i)(?:>|\[)(?:(?:click |)here|link|(?:read |)more)(?:</|\]\()

Should be GitHub

(?<![&*.]|// |\b(?:from|import|type) )\bGithub\b(?![{()])

Should only be one of a, an, or the

\b(?:(?:an?|the)\s+){2,}\b

Should be JavaScript

\bJavascript\b

Should be for its (possessive) or because it is

\bfor it(?:'s| is)\b

Should be for, for, to or to

\b(?:for to|to for)\b

Should be set up (setup is a noun / set up is a verb)

\b[Ss]etup(?= (?:an?|the)\b)

Should be nonexistent

\b[Nn]o[nt][- ]existent\b

Should be its

\bit's(?= (?:child|only purpose|own(?:er|)|parent|sibling)\b)

Should be workaround

(?:(?:[Aa]|[Tt]he|ugly)\swork[- ]around\b|\swork[- ]around\s+for)

Should be TensorFlow

\bTensorflow\b

Should be without (unless out is a modifier of the next word)

\bwith out\b(?!-)

Should be work around

\b[Ww]orkaround(?= an?\b)

Should be equals to is equal to

\bequals to\b

Should be in-depth if used as an adjective (but in depth when used as an adverb)

\bin depth\s(?!rather\b)\w{6,}

Should be prepopulate

[Pp]re[- ]populate

Should be more than or more, then

\bmore then\b

Should be preemptively

[Pp]re[- ]emptively

Should be reentrant

[Rr]e[- ]entrant

Complete sentences in parentheticals should not have a space before the period.

\s\.\)(?!.*\}\})

Should probably be ABCDEFGHIJKLMNOPQRSTUVWXYZ

(?i)(?!ABCDEFGHIJKLMNOPQRSTUVWXYZ)ABC[A-Z]{21}YZ

Should be GitLab

(?<![&*.]|// |\b(?:from|import|type) )\bGitlab\b(?![{()])

Should be log in

\blogin to the

Should be one of

(?<!-)\bon of\b

Should be rather than

\brather then\b

Should be Red Hat

\bRed[Hh]at\b

Should be regardless, ... or regardless of (whether)

\b[Rr]egardless if you\b

Should be socioeconomic

https://dictionary.cambridge.org/us/dictionary/english/socioeconomic

socio-economic

Should be neither/nor (plus rewording the beginning)

This is probably a double negative...

\bnot\b[^.?!"/(]*\bneither\b[^.?!"/(]*\bnor\b
Pattern suggestions ✂️ (30)

You could add these patterns to .github/actions/spelling/patterns/624ea3e8e7133b6868f6fd1d54767a9afac2df11.txt:

# Automatically suggested patterns

# hit-count: 14081 file-count: 1739
# python
\b(?i)py(?!gments|gmy|lon|ramid|ro|th)(?=[a-z]{2,})

# hit-count: 367 file-count: 320
# imports
^import\s+(?:(?:static|type)\s+|)(?:[\w.]|\{\s*\w*?(?:,\s*(?:\w*|\*))+\s*\})+

# hit-count: 355 file-count: 47
# machine learning (?)
\b(?i)ml(?=[a-z]{2,})

# hit-count: 31 file-count: 2
# numerator
\bnumer\b(?=.*denom)

# hit-count: 28 file-count: 4
# URL escaped characters
%[0-9A-F][A-F](?=[A-Za-z])

# hit-count: 27 file-count: 9
# Lorem
# Update Lorem based on your content (requires `ge` and `w` from https://github.com/jsoref/spelling; and `review` from https://github.com/check-spelling/check-spelling/wiki/Looking-for-items-locally )
# grep '^[^#].*lorem' .github/actions/spelling/patterns.txt|perl -pne 's/.*i..\?://;s/\).*//' |tr '|' "\n"|sort -f |xargs -n1 ge|perl -pne 's/^[^:]*://'|sort -u|w|sed -e 's/ .*//'|w|review -
# Warning, while `(?i)` is very neat and fancy, if you have some binary files that aren't proper unicode, you might run into:
# ... Operation "substitution (s///)" returns its argument for non-Unicode code point 0x1C19AE (the code point will vary).
# ... You could manually change `(?i)X...` to use `[Xx]...`
# ... or you could add the files to your `excludes` file (a version after 0.0.19 should identify the file path)
(?:(?:\w|\s|[,.])*\b(?i)(?:amet|consectetur|cursus|dolor|eros|ipsum|lacus|libero|ligula|lorem|magna|neque|nulla|suscipit|tempus)\b(?:\w|\s|[,.])*)

# hit-count: 23 file-count: 5
# perl qr regex
(?<!\$)\bqr(?:\{.*?\}|<.*?>|\(.*?\)|([|!/@#,;']).*?\g{-1})

# hit-count: 19 file-count: 5
# lower URL escaped characters
%[0-9a-f][a-f](?=[a-z]{2,})

# hit-count: 14 file-count: 3
# container images
image: [-\w./:@]+

# hit-count: 13 file-count: 1
# '/"
\\\([ad]q

# hit-count: 6 file-count: 6
# JavaScript regular expressions
# javascript test regex
/.{3,}/[gim]*\.test\(

# hit-count: 6 file-count: 1
# https://www.gnu.org/software/groff/manual/groff.html
# man troff content
\\f[BCIPR]

# hit-count: 5 file-count: 3
# bearer auth
(['"])[Bb]ear[e][r] .{3,}?\g{-1}

# hit-count: 5 file-count: 1
# GitHub SHAs (markdown)
(?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|)

# hit-count: 4 file-count: 4
# node packages
(["'])@[^/'" ]+/[^/'" ]+\g{-1}

# hit-count: 4 file-count: 3
# data url
\bdata:[-a-zA-Z=;:/0-9+]*,\S*

# hit-count: 3 file-count: 3
# https/http/file urls
(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/*%?=~_|!:,.;]+[-A-Za-z0-9+&@#/*%=~_|]

# hit-count: 3 file-count: 2
# data url in quotes
([`'"])data:(?:[^ `'"].*?|)(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,}).*\g{-1}

# hit-count: 3 file-count: 2
# assign regex
= /[^*].*?(?:[a-z]{3,}|[A-Z]{3,}|[A-Z][a-z]{2,}).*/[gim]*(?=\W|$)

# hit-count: 2 file-count: 2
# configure flags
.* \| --\w{2,}.*?(?=\w+\s\w+)

# hit-count: 2 file-count: 1
# Google APIs
\bgoogleapis\.(?:com|dev)/[a-z]+/(?:v\d+/|)[a-z]+/[-@:./?=\w+|&]+

# hit-count: 1 file-count: 1
\w+\@group\.calendar\.google\.com\b

# hit-count: 1 file-count: 1
# Google Cloud regions
(?:us|(?:north|south)america|europe|asia|australia|me|africa)-(?:north|south|east|west|central){1,2}\d+

# hit-count: 1 file-count: 1
# GHSA
GHSA(?:-[0-9a-z]{4}){3}

# hit-count: 1 file-count: 1
# GitHub actions
\buses:\s+[-\w.]+/[-\w./]+@[-\w.]+

# hit-count: 1 file-count: 1
# c99 hex digits (not the full format, just one I've seen)
0x[0-9a-fA-F](?:\.[0-9a-fA-F]*|)[pP]

# hit-count: 1 file-count: 1
# go install
go install(?:\s+[a-z]+\.[-@\w/.]+)+

# hit-count: 1 file-count: 1
# bearer auth
\b[Bb]ear[e][r]:? [-a-zA-Z=;:/0-9+.]{3,}

# hit-count: 1 file-count: 1
# weak e-tag
W/"[^"]+"

# hit-count: 1 file-count: 1
# set arguments
\b(?:bash|sh|set)(?:\s+[-+][abefimouxE]{1,2})*\s+[-+][abefimouxE]{3,}(?:\s+[-+][abefimouxE]+)*

Alternatively, if a pattern suggestion doesn't make sense for this project, add a #
to the beginning of the line in the candidates file with the pattern to stop suggesting it.

Errors, Warnings, and Notices ❌ (8)

See the 📂 files view, the 📜action log, or 📝 job summary for details.

❌ Errors, Warnings, and Notices Count
⚠️ binary-file 319
ℹ️ candidate-pattern 60
❌ check-file-path 9800
❌ forbidden-pattern 1749
⚠️ large-file 1
⚠️ noisy-file 137
❌ slow-file 1
⚠️ token-is-substring 87

See ❌ Event descriptions for more information.

✏️ Contributor please read this

By default the command suggestion will generate a file named based on your commit. That's generally ok as long as you add the file to your commit. Someone can reorganize it later.

If the listed items are:

  • ... misspelled, then please correct them instead of using the command.
  • ... names, please add them to .github/actions/spelling/allow/names.txt.
  • ... APIs, you can add them to a file in .github/actions/spelling/allow/.
  • ... just things you're using, please add them to an appropriate file in .github/actions/spelling/expect/.
  • ... tokens you only need in one place and shouldn't generally be used, you can add an item in an appropriate file in .github/actions/spelling/patterns/.

See the README.md in each directory for more information.

🔬 You can test your commits without appending to a PR by creating a new branch with that extra change and pushing it to your fork. The check-spelling action will run in response to your push -- it doesn't require an open pull request. By using such a branch, you can limit the number of typos your peers see you make. 😉

If the flagged items are 🤯 false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it,
    try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants